我正在使用 Ubuntu 12。当我在终端中输入时stat -
,我得到以下输出:
File: ‘-’
Size: 0 Blocks: 0 IO Block: 1024 character special file
Device: ch/12d Inode: 3 Links: 1 Device type: 88,0
Access: (0620/crw--w----) Uid: ( 1000/ anotherguy) Gid: ( 5/ tty)
Access: 2014-12-19 18:04:40.454800919 -0600
Modify: 2014-12-19 18:04:40.454800919 -0600
Change: 2014-12-19 16:55:48.454800919 -0600
Birth: -
用该函数看不到这样的文件ls
,而且无论我在哪个目录中,stat
仍然可以看到这个“文件”。但是,用 替换时,-
结果./-
却是“没有这样的文件或目录”。
这种奇怪的行为类似于cd
函数使用“-”选项,本质上将该选项视为参数,使其成为上一个目录。
答案1
-
不是文件名——不同的程序会以不同的方式处理它。例如,cd 解释-
为 cd $OLDPWD,而许多其他程序则将-
其解释为/dev/stdout
(此处所选答案提供的信息略多)。
如果您尝试,stat -f -
您将收到以下错误:
stat: using ‘-’ to denote standard input does not work in file system mode
那么,这是什么stat -
?我在多个 Linux 发行版以及 Mac OS X 上对其进行了测试。stat -
相当于stat $(tty)
,并且似乎是对与您的终端会话关联的字符设备文件的引用。
答案2
虽然它不在其手册页中,但使用文件名表示标准输入(或有时是标准输出)stat
的约定,因此您会发现以下两个命令是等效的:-
stat ExistingFile
stat - < ExistingFile