我需要在执行一些本地 shell 命令后自动退出 lftp。例如。我需要找到一些文件并退出。
lftp -e "!find . -maxdepth 3 -name \"index.*\" -type f;exit" sftp://user:pass@mysite.com:22
执行此命令时,它使我处于 lftp 环境中,因此我需要发送额外的“再见”命令才能离开应用程序。但是我需要在执行 shell 命令时自动执行它。
我试过了
lftp -e "!find . -maxdepth 3 -name \"index.*\" -type f;exit;bye" sftp://user:pass@mysite.com:22
但它不起作用(似乎“bye”是在本地 shell 上下文而不是 lftp shell 中执行的)。
是否有机会从本地 shell 模式退出回到 lftp 命令模式,然后在同一 session 中执行“再见”?
最佳答案
请注意,您尝试的操作不会产生有用的效果 -- local shell 在您运行的地方是本地的 lftp
,所以你正在运行 find
与客户端而不是服务器在同一台机器上。 因此没有理由运行 find
里面lftp
而不是在它之外。
尽管如此,并回答了字面上的问题——您可以将命令分成多行; $'\n'
是换行符的文字,或者换行符可以按字面意义添加到单行字符串中。因此:
lftp -c '
open sftp://user:pass@mysite.com:22
!find . -maxdepth 3 -name "index.*" -type f
' </dev/null
不需要 exit
或 bye
使用 -c
而不是 -e
导致连接关闭,lftp 在所有命令运行后自动退出。使用 </dev/null
还确保即使您确实使用了-e
, 尝试从 stdin 读取更多命令将返回 EOF(因此同样表示退出)。
关于linux - 执行本地 shell 命令后退出 lftp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927303/