代码如下:
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
中的效用;你能解释一下吗?
行按修改时间升序列出当前目录下的所有文件。管道操作符将目录列表的结果发送给while循环,该循环将ls命令中的每一行读入变量"line"。当我做这类事情时,我通常使用foreach循环,但两种方法都可以。
你的代码只是打印当前文件夹中的所有可执行文件,按修改时间排序。
一般来说,shell脚本编写是非常危险的,因为您可能编写出非常容易出错或风格不好的代码,而实际上却没有意识到这一点。或者即使你做了,你也可能对问题没有正确的理解。为了达到同样的目的,我会这样写:
find . -maxdepth 1 -type f -executable -printf '%T@ %p ' | sort -zk 1nr | sed -z 's/^[^ ]* //'