格式化字符%s品牌stat打印以字节为单位的文件大小
# stat -c'%A %h %U %G %s %n' /bin/foo
-rw-r--r-- 1 root root 45112 /bin/foo
Run Code Online (Sandbox Code Playgroud)
ls可以配置为使用“千分隔符”打印字节大小数字,即45,112代替通常的45112.
# BLOCK_SIZE="'1" ls -lA
-rw-r--r-- 1 root root 45,112 Nov 15 2014
Run Code Online (Sandbox Code Playgroud)
我可以类似地格式化 stat 的输出,以便文件大小有千位分隔符吗?
我stat首先使用的原因是,我需要输出 like ls,但没有时间,因此-c'%A %h %U %G %s %n'.
或者有没有其他方法可以在ls没有时间的情况下打印类似输出?
今天我发现在 OS X 上sudo ls显示隐藏文件(即名称以 开头的文件.)。这让我感到非常惊讶,以至于我问了一个关于这种行为的问题,我仍然觉得有些奇怪和意外。
事实证明,这种行为可以追溯到1979 年的 2BSD。
鉴于此,现在我想问以下问题。为什么ls在 Linux 上不这样做?
是否有一段时间ls在某些其他类型的 *nixes 上有这种行为?是否有任何文档、提交消息、电子邮件解释谁以及为什么决定根本不应该复制此功能,或者如果最初复制它应该删除它?
从ls --help, 中dir --help,vdir --help我注意到除了程序名称(“用法:”行和底部的几行)之外没有任何区别。但是vdir似乎是 的某种别名ls -l,而dir似乎没有区别。谁能告诉我它们之间的确切区别是什么?
请考虑以下命令:
cd /
mkdir -p ~/a/b
touch ~/a/content
# Removes dir 'b' and stops at 'a' because it's non-empty.
# (This is the expected behavior.)
rmdir -p --ignore-fail-on-non-empty ~/a/b
rm ~/a/content
mkdir -p ~/a/b
# Fails with error: "rmdir: failed to remove directory '/home/myhome'".
rmdir -p --ignore-fail-on-non-empty ~/a/b
Run Code Online (Sandbox Code Playgroud)
为什么rmdir最后一步会失败?为什么它试图删除非空 $HOME而不是停止?
从联机帮助页rsync,
Run Code Online (Sandbox Code Playgroud)-a, --archive这相当于
-rlptgoD. 这是一种表示您想要递归并想要保留几乎所有内容的快捷方式(-H 是一个明显的遗漏)。上述等价的唯一例外是指定 --files-from 时,在这种情况下不暗示 -r。请注意, -a 不保留硬链接,因为查找多重链接的文件很昂贵。您必须单独指定 -H。
什么是最接近的cp对rsync -a,在文件拷贝输入和结果方面,忽略了传输速度?
cp -arl错过与什么相比rsync -a?只有-D的rsync?
除了它错过的那些方面外,cp -arl行为是否相同rsync -a?
谢谢。
在一种stat格式(至少是我从 Linux 上的 bash 获得的格式)中,可以使用格式修饰符:例如,%010s将强制大小字段至少为 10 个字符,并在左侧填充零(顺便说一句,这是否记录在某处?)
是否有等效的技巧来限制字段的长度?我想在 %xyz 格式中删除秒的小数部分。或者我是否必须使用 sed/awk 对输出进行后处理?
coreutils 手册说
tsort 将其输入读取为由空格分隔的字符串对,表示部分排序。输出是对应于给定偏序的全序。例如
Run Code Online (Sandbox Code Playgroud)tsort <<EOF a b c d e f b c d e EOF将产生输出
Run Code Online (Sandbox Code Playgroud)a b c d e f
“tsort 将其输入读取为字符串对”是什么意思,这对输入有什么要求?在这个例子中,所做的第一行a b c没什么意思本身,而是a和b配对,所以是c和d?
为什么这不起作用?
$ tsort <<EOF
> a b c
> b c d e
> EOF
tsort: -: input contains an odd number of tokens
Run Code Online (Sandbox Code Playgroud) coreutils 手册说
tsort 将其输入读取为由空格分隔的字符串对,表示部分排序。
如果一个字符串里面有一个空格,根据手册,我不能在它和其他字符串上使用 tsort 。我如何仍然在字符串和其他字符串上使用 tsort ?谢谢。
移动目录而不修改时间戳表示 mv 更改目录的时间戳。
当我mv将文件从外部硬盘驱动器传输到另一个外部硬盘驱动器时,它也会更改目录的时间戳。
当我mv在本地文件系统中创建目录时,它不会更改目录的时间戳。
何时mv更改文件的时间戳和其他属性,何时不更改?谢谢。
我找不到任何关于这种行为改变的参考
\n$ mkdir --version\nmkdir (GNU coreutils) 9.0\nCopyright (C) 2021 Free Software Foundation, Inc.\nLicense GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by David MacKenzie.\nRun Code Online (Sandbox Code Playgroud)\n所有文件夹都不存在。
\n$ mkdir asdfg/qwerty\nmkdir: created directory 'asdfg'\nmkdir: created directory 'asdfg/qwerty'\nRun Code Online (Sandbox Code Playgroud)\n但是,对于 mkdir (GNU coreutils) 8.25,行为符合预期。
\n\xe2\x9e\x9c ~ mkdir asdfg/qwerty\nmkdir: cannot create directory \xe2\x80\x98asdfg/qwerty\xe2\x80\x99: No such file or directory\nRun Code Online (Sandbox Code Playgroud)\n