以下是代码:
if test $# -eq 1
then
if test $1 = "--exec"
then
ls -t . | while read line
do
if test -f $line -a -x $line
then
echo $line
fi
done
fi
fi
我不明白.
中 ls -t . | while read line
的效用。你能解释一下吗?
答案 0 :(得分:1)
该行按修改时间的升序列出当前目录中的所有文件。管道运算符将目录列表的结果发送到while循环,该循环从ls命令读取每一行到变量" line"。当我做这种事情时,我通常使用foreach循环,但无论哪种方式都有效。
答案 1 :(得分:1)
您的代码只是打印出当前文件夹中的所有可执行文件,按修改时间排序。
一般来说,shell脚本编写非常危险,因为您可以编写非常容易出错或样式错误的代码而无需实际实现它。或者即使你这样做,也可能无法正确理解这些问题。
要实现相同的目标,我会写下以下内容:
find . -maxdepth 1 -type f -executable -printf '%T@ %p\0' | sort -zk 1nr | sed -z 's/^[^ ]* //'
它简洁明了,没有错误的余地。