通常,对于具有相同扩展名的文件串联,我们使用 cat *.txt
。但如果我们位于不同的目录中并尝试连接另一个目录的文件该怎么办?我写了一个 shell 脚本,其中包含以下语句
cat /home/tarakaramji/*.txt
错误:
cat /home/tarakaramji/*.txt no such file or directory
与删除相同扩展名的多个文件相同:
rm /home/tarakaramji/*.txt
答案1
听起来您.txt
指定的目录中没有任何文件,或者您完全得到了错误的目录。这里发生的情况是,默认情况下,如果 shell 找不到任何文件,它将使用文字/home/tarakaramji/*.txt
作为cat
.由于也不存在具有该名称的文件,这就是您收到错误的原因。
您始终可以通过执行第一个操作来准确查看要使用的文件echo
,例如
echo /home/tarakaramji/*.txt
应该只显示/home/tarakaramji/*.txt
.如果设置nullglob
shell 选项,则会阻止使用文字,因此实际上不会有参数:
shopt -s nullglob
echo /home/tarakaramji/*.txt
在这种情况下cat
不会给出错误,它只会从stdin
.