ls 是否可以保持其输入的顺序

ls 是否可以保持其输入的顺序

如果我这样做,它会向我显示我的/usr/bin/which --all git所有发生的情况,git$PATH其中第一行显示有效行

从下图来看,git中的版本/home/kmodi/stowed/bin/git为有效版本。

现在我想知道结果的真实文件名。

所以对于/home/kmodi/stowed/bin/git符号链接,我想知道它指向什么。

执行/usr/bin/which --all git | xargs \ls -Fpl显示符号链接引用。但输出令人困惑..列出文件的原始顺序不保留!因此,现在查看该输出(如下),人们可能会认为其中的版本/cad/..是有效的git二进制路径。

有没有办法xargs保留该订单?

在此输入图像描述


如果重要的话,我正在使用tcshshell。


感谢约翰的提示-n 1,我终于有了一个我喜欢的解决方案。很乱..那些引言!(感谢tcsh),但它有效。

alias whichall '/usr/bin/which --all \!* \\
                | xargs -n 1 \ls -Fpl --color=always \\
                | awk -v OFS="" '"'"'{$1=$2=$3=$4=$5=$6=$7=$8=""; print $0}'"'"' \\
                | \sed '"'"'/^$/d'"'"'; \\
               '

现在whichall git给出:在此输入图像描述

答案1

xargs命令确实保持了其参数的顺序 - 但它将所有参数传递给 的一个实例ls,这会按字母顺序为您提供输出,默认情况下也是如此。要获得您想要的行为,请-n 1向命令添加一个参数以一次xargs仅传递一行输出,或者如果使用 的 GNU 实现,请添加一个选项以告诉它不要对文件列表进行排序。lsls-U

的行为ls

$ ls -lad /usr/bin /etc
drwxr-xr-x. 146 root root 12288 May 18 09:46 /etc
dr-xr-xr-x.   2 root root 57344 Dec 12 15:30 /usr/bin

相关内容