2

gnu/Linux では、すべてのコマンド出力を 1 つの特定のファイルに記録したいと考えています。端末で言って、私は入力しています

echo "Hi this is a dude"

すべてのコマンドでリダイレクトを使用せずに、以前に指定したファイル名で出力する必要があります。

4

5 に答える 5

6
$ script x1
Script started, file is x1
$ echo "Hi this is a dude"
Hi this is a dude
$ echo "done"
done
$ exit
exit
Script done, file is x1

次に、ファイル x1 の内容は次のとおりです。

Script started on Thu Jun 13 14:51:29 2013
$ echo "Hi this is a dude"
Hi this is a dude
$ echo "done"
done
$ exit
exit

Script done on Thu Jun 13 14:51:52 2013

基本的なシェル スクリプトを使用して、独自のコマンドと開始/終了行を簡単に編集できます (grep -v特に、Unix プロンプトに独特の部分文字列パターンがある場合)。

于 2013-06-13T18:52:45.870 に答える
3

シェルから起動されたコマンドは、シェルからの標準出力に使用するファイル記述子を継承します。典型的な対話型シェルでは、標準出力は端末です。exec次のコマンドを使用して変更できます。

exec > output.txt

そのコマンドに続いて、シェル自体がその標準出力を output.txt というファイルに書き込みます。別の方法でリダイレクトされない限り、シェル自体が生成するコマンドも同様に行います。を使用して、いつでも端末への出力を「復元」できます

exec > /dev/tty

シェル プロンプトと、プロンプトで入力したテキストは引き続き画面に表示されることに注意してください (シェルはこれらの両方を標準出力ではなく標準エラーに出力するため)。

于 2013-06-13T19:12:57.747 に答える
0

出力リダイレクトは bash で実現できます>: bash リダイレクトの詳細については、このリンクを参照してください。

移植された出力を使用して任意のプログラムを実行でき、そのすべての出力はファイルに出力されます。次に例を示します。

$ ls > out
$ cat out
Desktop
Documents
Downloads
eclipse
Firefox_wallpaper.png
...

したがって、移植された出力を使用して新しいシェル セッションを開きたい場合は、そのまま実行してください。

$ bash > outfile

すべての stdout をそのファイルに移植する新しい bash セッションを開始します。

$ bash &> outfile

stdout と stderr のすべてをそのファイルに移植します (つまり、ターミナルにプロンプ​​トが表示されなくなります)

例えば:

$ bash > outfile
$ echo "hello"
$ echo "this is an outfile"
$ cd asdsd
bash: cd: asdsd: No such file or directory
$ exit
exit
$ cat outfile
hello
this is an outfile
$

$ bash &> outfile
echo "hi"
echo "this saves everythingggg"
cd asdfasdfasdf
exit
$ cat outfile
hi
this saves everythingggg
bash: line 3: cd: asdfasdfasdf: No such file or directory
$
于 2013-06-13T19:01:34.030 に答える
0
{ command1 ; command2 ; command3 ; } > outfile.txt
于 2013-06-13T19:02:28.673 に答える