这是ls -al
命令输出:
total 280K
drwxrwxr-x 2 enan enan 4.0K Jun 28 09:59 ranger/
drwxrwxr-x 2 enan enan 4.0K Jun 8 23:26 scripts/
-rw-rw-r-- 1 enan enan 49 Jun 4 18:19 caps_to_ctrl.sh
-rw-rw-r-- 1 enan enan 739 Jun 4 18:19 cmus.theme
-rw-rw-r-- 1 enan enan 8.6K Jun 4 18:19 compton.conf
-rw-rw-r-- 1 enan enan 5.9K Jun 22 09:39 config
-rw-rw-r-- 1 enan enan 859 Jun 14 12:13 i3blocks.conf
-rw-rw-r-- 1 enan enan 4.7K Jun 14 12:13 init.el
-rw-rw-r-- 1 enan enan 8.7K Jun 28 11:22 init.vim
-rw-rw-r-- 1 enan enan 815 Jun 14 12:13 install.sh
-rwxrwxr-x 1 enan enan 142 Jun 4 18:19 lock.sh*
-rw-rw-r-- 1 enan enan 1.1K Jun 21 13:30 README.md
-rw-rw-r-- 1 enan enan 197K Jun 14 12:13 screenshot.png
-rw-rw-r-- 1 enan enan 1.2K Jun 20 21:51 Session.vim
-rw-rw-r-- 1 enan enan 427 Jun 9 13:46 tmux.sh
-rw-rw-r--
您可以看到文件权限和文件所有者之间有一个数字enan
。该数字是文件的硬链接数。在输出中显示可能对某些情况有用,但现在,我不需要它,有时它会分散我的注意力。你可以看到,我有办法从输出中删除最后修改的日期,ls -al
因为我现在不需要它。
那么,如何从ls -al
命令输出中删除硬链接的数量?在命令的输出中显示硬链接的数量和最后修改日期的重要性是什么?我的意思是,如果你们中的任何人使用这些信息,请告诉我为什么以及如何这样做,因为我不想无意中影响我应该使用的行为。
如果您不想看到第二列中的链接,则可以通过管道
ls -al
将awk
其删除:在这种情况下,这将使用标准分隔符打印除第二列之外的所有列,即空格。
在我的环境中,最后修改日期的列是 6、7 和 8,使用空格作为分隔符,以便摆脱它们和第二列:
如果您不需要或不想看到某些列,那么您可以使用上面的语法作为模型来删除您想要的任何列。它不会伤害任何东西。如果您只想查看所有列以免错过任何内容,请使用标准:
如果需要别名,请将以下内容添加到 ~/.bashrc:
这是一个行为方式相同的函数,无需考虑和转义单引号和双引号。我使用
la
asll
给出了一个语法错误,因为它在我的环境中已经是一个别名。要从输出中删除硬链接计数,
ls -l
同时仍保持该行的其余部分完好无损:替换将
sed
删除第一行之后的每一行中的第一组数字及其之前的任何空格(第一行包含total
)。作为一个函数
在
ls -l
通过sed
.通过使用
command ls
,我们确保,如果您稍后决定将函数重命名为ls
,该函数不会递归调用自身。例子:
除非您使用,否则该功能的变体完全一样:
ls
ls -l
该函数执行自己的命令行解析以检测是否
-l
使用了该选项(并且以后也不会通过使用禁用-1
)。如果是,我们设置一个标志。稍后,如果设置了标志,我们过滤ls
through的输出sed
。如果未设置标志,我们只需将输出原样通过cat
.使用 ast-open (如果它已被包含并且在 in 之前,也是 ksh93的内置
ls
函数),您可以完全指定输出格式并省略那里的链接数():ls
/opt/ast/bin
/bin
$PATH
%3(nlink)u