在我的 ZSH 自定义配置中,我有这个功能:
cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}'; }
它输出:
➜ test cll
total 32
644 -rw-r--r-- 1 work admin 0B Oct 7 18:55 .hidden
644 -rw-r--r-- 1 work admin 480B Aug 22 2016 gulpfile.js
644 -rw-r--r-- 1 work admin 149B Jan 7 2017 index.php
755 drwxr-xr-x 247 work admin 8.2K Aug 22 2016 node_modules
644 -rw-r--r-- 1 work admin 1.0K Aug 22 2016 test.less
644 -rw-r--r-- 1 work admin 664B Aug 22 2016 test.min.css
755 -rwxr-xr-x 1 work admin 0B Oct 7 18:54 try
它还支持颜色,所以我的可执行文件等有漂亮的颜色:)
我想-rw-r--r--
从中删除权限细分列(例如:)。所以我希望它看起来像这样:
644 1 work admin 0B Oct 7 18:55 .hidden
644 1 work admin 480B Aug 22 2016 gulpfile.js
644 1 work admin 149B Jan 7 2017 index.php
755 247 work admin 8.2K Aug 22 2016 node_modules
644 1 work admin 1.0K Aug 22 2016 test.less
644 1 work admin 664B Aug 22 2016 test.min.css
755 1 work admin 0B Oct 7 18:54 try
我曾试图扰乱它,但我所做的一切,都破坏了它。我愿意采用完全不同的方法(不是通过管道awk
)。
最终解决方案:
感谢@Skaperen 引起cut
我的注意。我对这个函数进行了双重管道传输,效果非常好!这是现在的输出:
➜ test cll
total
644 work admin 0B Oct 7 18:55 .hidden
644 work admin 480B Aug 22 2016 gulpfile.js
644 work admin 149B Jan 7 2017 index.php
755 work admin 8.2K Aug 22 2016 node_modules
644 work admin 1.0K Aug 22 2016 test.less
644 work admin 664B Aug 22 2016 test.min.css
755 work admin 0B Oct 7 18:54 try
这是我的功能aliases.zsh
(自定义配置):
cll() { ls -AlhG "$@" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(" %0o ",k);print}' | cut -c 1-5,21-; }
唯一可以使其完美的是,如果我可以添加自定义列来解析它是否是“目录”,“文件”,“符号链接”等。
答案1
通过命令管道它cut -c 1-3,14-
。如果需要调整,请调整数字。做man cut
更多细节。