在我开始编写(可能很简单)脚本之前,是否有一个命令可以执行以下操作:
[:~/software/scripts] % ls -ld / /usr /usr/bin /usr/bin/tee
drwxr-xr-x 21 root root 4096 Mar 31 08:48 /
drwxr-xr-x 11 root root 4096 Jan 30 09:48 /usr
drwxr-xr-x 2 root root 73728 Apr 14 07:54 /usr/bin
-rwxr-xr-x 1 root root 26308 Jan 16 2013 /usr/bin/tee
Run Code Online (Sandbox Code Playgroud)
无需手动输入所有部分路径?这个想法是能够说
ls --this-new-flag /usr/bin/tee
Run Code Online (Sandbox Code Playgroud)
或者
command -l /usr/bin/tee
Run Code Online (Sandbox Code Playgroud)
并具有上面的输出 --- 显示了通向最终路径的所有部分路径的详细列表。可以输出/ /usr /usr/bin /usr/bin/tee给定的shell 扩展技巧也可以/usr/bin/tee。
ls -ld `echo 'path/to/file' | sed ':0 p;s!/[^/]*$!!;t0' | sort -u`
Run Code Online (Sandbox Code Playgroud)
sed部分:
:0标签0;p打印;s!p!r!p用替换替换模式r;/[^/]*$搜索/,然后搜索任何 not- 序列/直到行尾;t0如果s!!!执行替换,则转到 label 0。评论后由OP编辑
我做了以下操作(感谢评论,尤其是 Jander 和 Andrey 的评论):
explode() {echo "$1" | sed -n ':0 p;s![^/]\+/*$!!;t0' | sort -u}
Run Code Online (Sandbox Code Playgroud)
到我.zshrc的然后我可以使用
ls -ld $(explode /path/to/file)
Run Code Online (Sandbox Code Playgroud)
并具有所需的输出。
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |