たとえば、次の2つのコマンドを実行してローカルに出力を取得できます。
ssh [email protected] ls > testhistory.txt
ssh [email protected] "cat .bash_history" > testhistory.txt
ただし、次のコマンドを実行すると、ローカル出力は常に空になります。
ssh [email protected] history > testhistory.txt
ssh
リモート宛先に到達した後にコマンドを実行すると、history
予想される出力が得られます。
インライン実行時にhistory
結果出力がないのにコマンドが正しく機能するのはなぜですか?ファイルを使用せずにコマンドを実行したかのように、コマンドが結果をローカルファイルに出力するようにするには、何を変更する必要がありますか?ssh
ls
history
ls
cat
.bash_history
ベストアンサー1
history
history
bashの内部コマンドなので、実行可能ファイルを実行したくありませんbash
。ls
これは一般的に/bin/ls
。
これに加えて、bashはリモートコマンドを実行するときと同様に、デフォルトでは非対話型シェルで履歴を無効にします。
リモートシステムでシェルスクリプトを生成して、それを有効にして履歴を実行できます。たとえば、次のようになります。
#!/usr/bin/bash
HISTFILE=~/.bash_history
set -o history
history
または、SSH呼び出しを介してこれらすべての操作を実際に実行するには、次のようにします。
ssh [email protected] 'echo -e "HISTFILE=~/.bash_history\nset -o history\nhistory" | bash'
HISTTIMEFORMAT
リモートシステムで使用している場合は、その変数も考慮されませんので、それに合わせて計画を立ててください。