Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于包含额外信息的目录列表的bash脚本_Bash - Fatal编程技术网

用于包含额外信息的目录列表的bash脚本

用于包含额外信息的目录列表的bash脚本,bash,Bash,我需要知道如何在bash脚本中使用哪些命令,这些命令会给我这样一个目录列表(请注意末尾的额外行) 标准的ls命令无法做到这一点,因此我想知道我可以在bash脚本中使用什么来实现这一点。您可以尝试使用以下命令: $ ls -l 我想你要找的是: ls-al您想要使用的基本命令是ls-l,但是您需要对输出进行后处理以获得最后四行 例如,这里有一个可以得到前三项加上第四项,我假设这是为所有者设置了执行位的常规文件数: #!/usr/bin/bash tmpfile=/tmp/tmpfile.$$ l

我需要知道如何在
bash
脚本中使用哪些命令,这些命令会给我这样一个目录列表(请注意末尾的额外行)


标准的
ls
命令无法做到这一点,因此我想知道我可以在
bash
脚本中使用什么来实现这一点。

您可以尝试使用以下命令:

$ ls -l

我想你要找的是:
ls-al

您想要使用的基本命令是
ls-l
,但是您需要对输出进行后处理以获得最后四行

例如,这里有一个可以得到前三项加上第四项,我假设这是为所有者设置了执行位的常规文件数:

#!/usr/bin/bash
tmpfile=/tmp/tmpfile.$$
ls -l | tee ${tmpfile}
echo
echo "Total bytes:" $(awk '{sum += $5} END {print sum}' ${tmpfile})
echo "Total files:" $(grep -v '^total ' ${tmpfile} | grep -v '^d' | wc -l)
echo "Directories:" $(grep -v '^total ' ${tmpfile} | grep '^d' | wc -l)
echo "And scripts:" $(grep -v '^total ' ${tmpfile} | grep '^-..x' | wc -l)
rm -f ${tmpfile}
哪些产出:

total 1589
-rwxr-xr-x   1 pax root      57 Oct  3 14:24 Cygwin.bat
-rw-r--r--   1 pax root    7022 Oct  3 14:24 Cygwin.ico
drwxr-xr-x+  1 pax root 1048576 Oct  3 14:20 bin
dr-xr-xr-x   4 pax None       0 Nov  3 17:06 cygdrive
drwxrwxr-x+  1 pax None       0 Oct  3 14:05 dev
drwxr-xr-x+  1 pax root   32768 Oct  3 14:20 etc
drwxrwxrwt+  1 pax root       0 Oct  3 14:13 home
drwxr-xr-x+  1 pax root  524288 Oct  3 14:19 lib
drwxr-xr-x+  1 pax root       0 Oct  3 13:35 opt
dr-xr-xr-x  10 pax None       0 Nov  3 17:06 proc
drwxr-xr-x+  1 pax root       0 Oct  3 13:59 sbin
drwxr-xr-x+  1 pax None       0 Oct  3 14:10 srv
drwxrwxrwt+  1 pax root    4096 Nov  3 17:06 tmp
drwxr-xr-x+  1 pax root    4096 Oct  3 14:10 usr
drwxr-xr-x+  1 pax root    4096 Oct  3 14:20 var

Total bytes: 1624999
Total files: 2
Directories: 13
And scripts: 1

但是,我不完全确定您是如何决定脚本的。如果它与我假设的不同,它仍然是可行的,你只需要找出实际的命令是什么(告诉我们你想要测量什么来获得值)。

不,我不认为这是不合适的。这显然需要一个脚本来完成这项工作(即编程)。没有标准的
ls
参数可以将最后一部分与总计相加。你必须做一个脚本来为你做。谢谢你的回答。我刚从linux期中考试回来,它真的帮助了我!
total 1589
-rwxr-xr-x   1 pax root      57 Oct  3 14:24 Cygwin.bat
-rw-r--r--   1 pax root    7022 Oct  3 14:24 Cygwin.ico
drwxr-xr-x+  1 pax root 1048576 Oct  3 14:20 bin
dr-xr-xr-x   4 pax None       0 Nov  3 17:06 cygdrive
drwxrwxr-x+  1 pax None       0 Oct  3 14:05 dev
drwxr-xr-x+  1 pax root   32768 Oct  3 14:20 etc
drwxrwxrwt+  1 pax root       0 Oct  3 14:13 home
drwxr-xr-x+  1 pax root  524288 Oct  3 14:19 lib
drwxr-xr-x+  1 pax root       0 Oct  3 13:35 opt
dr-xr-xr-x  10 pax None       0 Nov  3 17:06 proc
drwxr-xr-x+  1 pax root       0 Oct  3 13:59 sbin
drwxr-xr-x+  1 pax None       0 Oct  3 14:10 srv
drwxrwxrwt+  1 pax root    4096 Nov  3 17:06 tmp
drwxr-xr-x+  1 pax root    4096 Oct  3 14:10 usr
drwxr-xr-x+  1 pax root    4096 Oct  3 14:20 var

Total bytes: 1624999
Total files: 2
Directories: 13
And scripts: 1