特にcrontab
./t.sh> /devを呼び出すときに、スクリプトによっては次の形式のコマンド呼び出しが見つかることがよくあります。 /null 2>& 1 ./t.sh> /dev /nullの前半はわかりやすいので、2> 1の背後には何があるのでしょうか。
この問題を説明するには、ファイルのリダイレクトについて言及する必要があります。 >と<がファイルのリダイレクトであることはわかっています。それで、1と2は何ですか?シェルでは、各プロセスは、標準入力stdin、標準出力stdout、および標準エラーstderrの3つのシステムファイルに関連付けられています。したがって、2>& 1は標準エラーも標準出力に出力されることを意味します。
以下は、2>& 1がどのような効果をもたらすかを示す例です。
1234 $ cat ./t.sh#!/usr/bin/zshttttttecho" test"
t.shには2つのコマンドが含まれていますが、ttttttは存在しないコマンドであり、実行するとエラーが報告されますデフォルトでは、エラーはstderrに出力されます。エコーは正しく実行され、文字列情報を標準出力に出力することができます。ここの標準出力は/dev /nullにリダイレクトされています。その後、標準エラーも/dev /nullに出力されます。
2>& 1を後で書く必要があるのはなぜですか。
まず、./t.sh> /dev /null 2> 1は標準出力を/dev /nullにリダイレクトします。2> 1は標準出力の動作をコピーする標準エラーです。つまり、ファイルにもリダイレクトされ、最終的には標準出力とエラーがファイルにリダイレクトされます。 ./t.sh 2>& 1> /dev /null 2>& 1標準エラーは標準出力の動作をコピーしますが、標準出力は依然として端末にあります。 > /dev /null出力は/dev /nullにリダイレクトされますが、それでも標準エラーは/dev /nullに変更されません。
テスト結果は次のとおりです。
1234567891011121314→ワークスペース./t.sh ./t.sh:2:コマンドが見つかりません:ttttttest→ワークスペース./t.sh> /dev/null./t.sh:2:コマンドが見つかりません:ttttt ➜ワークスペース./t.sh ./t.sh:2:コマンドが見つかりません:ttttttest Dワークスペース./t.sh> /dev/null./t.sh:2:コマンドが見つかりません:ttttt➜ワークスペース./T.sh> /dev /null 2> 1&1; workspace ./t.sh 2>&1; /dev/null./t.sh:2:コマンドが見つかりません:ttttttest
現在、非常に深刻なBashの脆弱性がインターネット上に公開されており、ハッカーがリモートコマンドをサーバーに送信して個人情報を盗むことを容易に可能にします。記事はあ
実験ボード上の2つのデジタルチューブを使って00から99までの数字の実験を表示し、最初に必要なハードウェア部品を完成させます。 デジタルチューブはコモンインとコモンヤンの区別があり、シングルチップマイ
I.概要: Linuxカーネルにプログラムを追加するには、3つの作業が必要です。 1. Linuxカーネルのソースコードの対応するディレクトリにソースコードをコピーする。 2.ディレクトリのKconf
シェルを作成するときには、次のようなシナリオがあります。
例:passwdファイルをバックアップし、それをbak_path =&rdquo; /mnt /sql_bak /&rdquo;にバックアップします。
そしてファイル名はbakですか?
このようにシェルに慣れてください。
#!/bin /shbak_path =&quot; /mnt /bak /&quot; cp $ /etc
Grep java