在分离的屏幕中运行两个命令

adr*_*TNT 7 shell gnu-screen wget

我正在尝试下载一个文件,wget但在后台和分离的屏幕内...

我最初的命令是:

wget http://www.example.com/file.zip -O temp/file.zip; mv temp/file.zip downloads/file.zip;
Run Code Online (Sandbox Code Playgroud)

一旦下载,这将很好地移动文件,防止我在downloads/文件仍在后台下载时处理文件。

现在我需要在带有屏幕的 backgorund 中运行它,所以我运行并分离它:

screen -dm wget http://www.example.com/file.zip -O temp/file.zip;
Run Code Online (Sandbox Code Playgroud)

但是我怎么能仍然传递移动命令并在第一个完成时运行呢?

编辑:我尝试引用基于 DopeGhoti 的回答:

 screen -dm 'wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; mv 1.bin 2.bin'
 cannot identify account 'wget http:'.
Run Code Online (Sandbox Code Playgroud)

和这个:

 screen 'wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; mv 1.bin 2.bin'
 cannot exec 'wget http://mirror[...] no such file or directory
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试使用完整/usr/bin/wget/usr/bin/mv路径,它抱怨缺少会话名称,我用 给了它会话名称-S foo,现在它静默退出,没有这样的屏幕可以恢复,也没有下载文件:

screen -dm -S foo '/usr/bin/wget http://mirror.leaseweb.com/speedtest/100mb.bin -O 1.bin; /usr/bin/mv 1.bin 2.bin'
Run Code Online (Sandbox Code Playgroud)

adr*_*TNT 13

如果我指定bash -c 就可以了

screen -dm bash -c 'command1; command2;'
Run Code Online (Sandbox Code Playgroud)

用户meuh在评论中提供了这个解决方案,谢谢。