【发布时间】:2015-10-25 03:27:55
【问题描述】:
代码如下:
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 的用处;你能解释一下吗?
【问题讨论】:
-
ls -t .列出当前目录 (.) 中的所有非隐藏项,按最后修改日期降序排列 (-t) - explainshell.com/explain?cmd=ls+-t+。 -
ls -t 的所有输出。被重定向到读取行的输入。
-
mywiki.wooledge.org/ParsingLs 在你知道代码是关于什么之后,你应该知道你不应该使用
ls解析文件名 -
所以。与 ls 相关联?
-
如果您的文件名都不包含换行符,您可以(并且应该)在
$line的每个实例周围使用双引号(例如echo "$line"),以防止出现问题和误解。如果您的任何文件名包含换行符,您的代码会将该文件名误解为两个名称——这通常会导致不愉快。在此上下文中,ls之后的.是可选的;如果您不指定要处理的文件或目录,ls将打印当前目录中的文件。