【发布时间】:2018-02-27 16:34:33
【问题描述】:
我曾尝试通过 ssh 进行 tar 归档,但我认为在这项任务中对我来说没有什么棘手的。但是然后我需要从包含最近更改目录的路径中提取文件。为此,我正在使用这样的命令:
cd "$(\ls -1dt ./*/ | head -n 1)"
整个命令如下:
ssh root@$ip "cd /dir1/dir2/ && cd "$(\ls -1dt ./*/ | head -n 1)" && cd /dir3/ && tar -cpf - *.log" > $dir/out.tar
不幸的是,我得到:
./Recent/: 没有这样的文件或目录
我已尝试将\ls -1dt ./*/ | head -n 1 更改为\ls -1dt /*/ | head -n 1
然后我得到了:
cd: dir3/: 没有这样的文件或目录
/dir1/dir2/ 中的所有目录,我正在搜索最近更改的目录,都包含 dir3 目录,这就是为什么以前的错误是不可能的。
另外,如果我通过 ssh 手动转到我的远程计算机并一一执行每个命令(不同的 cd、搜索、tar),搜索将正常工作而不会出错,但在我的情况下,我需要“整个字符串”命令,因为它只是我整个自动化脚本的一部分。
如何解决?
谢谢
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。
-
@jww 我的印象是
bash被认为是一种编程语言(维基百科将它列为除了 shell 之外的“命令语言”),我检查了 metaSO 看是否有反争论,但the first question I found 似乎支持我的观点;你有没有其他说明的其他来源? (我的部分动机是避免对原本非常好的答案投反对票,而且很可能你是最近投反对票的人,但我希望这不会降低问题的有效性) -
Bash 脚本,是的。 Bash 中的命令,没有。
-
@jww 不就是一个脚本,只不过是一个命令序列吗?如果(单个但组合的)命令位于
.sh文件中,您认为这个问题会更合适吗?这里的问题来自对如何解析代码缺乏了解,这似乎是一种可以在 SO 上讨论的语言特性,无论它是在单个命令中使用还是在 100 行脚本中使用。这显然是一个菜鸟问题,可以作为 this one 的副本关闭(希望有点...... -
...除了解释关系之外的解释),但我觉得关闭它,因为离题对于为新人提出合理质量问题的提问者是不公平的。我不希望你撤回任何接近或反对的投票,但我的印象是社区最近对新人特别苛刻,虽然可以通过增加不良问题的数量来合理解释我觉得我们应该小心,不要反应过度而失去吸引那些后来可能成为社区资产的人的机会