1ヶ月前、私はstdinでMACとIPアドレスをマッピングするPythonスクリプトを書いていました。 2日前に覚えていて、出力フィルタリングに使用しましたが、誤字が原因でtcpdump
エラーが発生しました。私は入った
tcpdump -ne > ./mac_ip.py
出力は何もありません。ただし、入力を解析できない場合は、出力が「不明」である必要があるため、そうしてプログラムの代わりにすべてのcat ./mac_ip.py
データを見つけました。tcpdump
それから使用すべきことに気づきました。
tcpdump -ne | ./mac_ip.py
プログラムを復元する方法はありますか?とにかくプログラムを書き換えることができますが、より重要なプログラムでこのようなことが再び発生した場合は、何かを行うことができなければなりません。または、ファイルを確認して実行可能かどうかを警告するように出力リダイレクトを指示する方法はありますか?
ベストアンサー1
リダイレクトが原因で既存のファイルを上書きしないようにするには、POSIXに似たシェルのオプションを>
使用します(ここでは/代わりに機能が実際に発生する場所でもあります)。その後、ファイルを強制的に置き換える必要がある場合は、リダイレクト演算子(in)を使用してください。noclobber
bash
(t)csh
set noclobber
set -o noclobber
set -C
>|
>!
(t)csh
例:
$ echo abc > file
$ set -o noclobber
$ echo xyz > file
bash: file: cannot overwrite existing file
$ echo xyz >| file
$ cat file
xyz
ただし、以下を使用して現在の設定を確認できますset -o
。
$ set -o
...
monitor on
noclobber on
noexec off
...