コマンドを実行し、コマンドをファイルにのみ書き込む方法

コマンドを実行し、コマンドをファイルにのみ書き込む方法

コマンドを実行し、そのコマンドをファイルにのみ書き込もうとしています。試してみましたが動作exec 4>test|command >&4|exec 4>&-しません。コマンドを単独で実行すると機能しますが、コマンドの出力のみを記録します。これに比べて次もcommand | tee -a test発見しました。command|& ts |tee -a testただし、管理者権限がないため、何もインストールできません。また、スクリプトを書いたり、コマンドの履歴や出力を保存したくありません。好ましくは、ライナーがコマンドをファイルに書き込んでから正常に実行することをお勧めします。以下はいくつかの関連質問です。 https://stackoverflow.com/questions/70677322/in-linux-how-to-save-only-the-command-into-file-without-output コマンドのみファイルに書き込みます。

答え1

シェルスクリプト環境にある場合は、指定されたパラメータを実行する次の関数を生成できます。

log_and_execute_command() {
    printf '%(%FT%T%z)T\t%s\n' -1 "$*" >> my_logging_file
    "$@"
}

タイムスタンプを記録する必要がない場合は、状況が簡単になります。この例は、標準入力からシェルにコマンドを渡すと、そのコマンドが実行されるという事実を利用します。

printf '%s' 'my_command' | tee -a my_logging_file | sh

何かをパイプしたいがtsパイプがない場合は、同様の代替として次のシェルスクリプトを使用できます。

#!/bin/bash
while read -r line; do
    printf '%(%FT%T%z)T\t%s\n' -1 "$line"
done

関連情報