はじめまして。
Linuxのコマンドについて質問させてください。
環境
リモート:Ubuntu 20.04
ローカル:macOS
目的
SSHを使用して、ローカルとリモート間でファイルの受け渡しがしたいため、標準出力を渡す・受け取るためのコマンドを記述しました。
行ったこと
waifu2xという画像処理を行うライブラリを使用するために、ローカルの画像ファイルを標準出力でリモートに送信しました。その後、処理が完了した画像ファイルをローカルへパイプラインで渡しています。
リモートのホームディレクトリには、ローカルから受け取った「old.png」と、ライブラリによって新しく生成された「new.png」がそれぞれ存在している状態です。
shell
1cat ./local_image.png | ssh server@ip "cat - > old.png; waifu2x -i old.png -n 1 -s 2 -o ./new.png; cat new.png" | cat - > ./compleat.png
上記のコマンドで、うまくリモートに存在する「new.png」を受け取ることが出来ます。
しかし、当初考えていた以下のコマンドでは、「old.png」が帰ってきてしまいます。
shell
1cat ./local_image.png | ssh server@ip "cat | tee old.png; waifu2x -i old.png -n 1 -s 2 -o ./new.png; cat new.png" | cat - > ./compleat.png
質問
コマンドの差異は、リモートで受け取った標準出力を「cat」コマンドでリダイレクトしているか、「cat」コマンドから「tee」コマンドへパイプしているかですが、なぜ挙動が変わってしまうのかわかりません。
ご教授頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/19 22:23
2021/03/20 02:57