Raj*_*eev 1 linux awk command sed find
您好,我正在尝试在远程计算机上执行以下命令,我该怎么做
ssh login.com find /nfs/repo/ -name ".user_repo.log" | \
xargs cat | awk '{$NF=""; print $0}' | \
sed "1i Owner RepoName CreatedDate" | column -t
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
cat: /nfs/repo/new1/info/.user_repo.log: No such file or directory
cat: /nfs/repo/new2/info/.user_repo.log: No such file or directory
Run Code Online (Sandbox Code Playgroud)
cat 命令试图在本地系统上查找文件,而这些文件存在于远程计算机上。我该如何处理这个问题
如果你这样做:
ssh host command1 | command2
Run Code Online (Sandbox Code Playgroud)
然后 shell 将在管道处中断,因此您将得到“ssh host command1”作为一个命令运行(即远程),然后“command2”作为另一命令运行(即本地)。您可以强制所有命令通过用引号引起来远程运行:
ssh host "command1 | command2"
Run Code Online (Sandbox Code Playgroud)
请注意,由于命令中已经有引号,因此您可能必须在转义方面发挥创意。
或者,您可以将所有这些命令放入一个简短的 shell 脚本中,然后运行该脚本:
ssh host myscript.sh
Run Code Online (Sandbox Code Playgroud)