Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ /dev/null?
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π³Π»ΡΠ±ΠΆΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² – ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ Unix Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΎΡΠΊΡΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΡΠΈ:
- 0 – ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²Ρ ΠΎΠ΄ (stdin)
- 1 – Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ (stdout)
- 2 – Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° (stderr)
ΠΡΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π Π°Π·Π±ΠΎΡ /dev/null 2>&1
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ /dev/null 2>&1:
- /dev/null: ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π½ΡΠ»Π΅Π²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅.
- 2>: ΠΡΠ° ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. 2 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ (stderr), Π° ΡΠΈΠΌΠ²ΠΎΠ» > ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, 2> ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ “ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ”.
- &1: ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ stderr (2) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π² ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠ½ΠΊΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΈ stdout (1). ΠΠ½Π°ΠΊ & ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° Π½ΠΈΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ ΡΠ°ΠΉΠ»Π°, Π° Π½Π΅ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
- ΠΡΠ»ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅, ΡΠΎ /dev/null 2>&1 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ “ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ (stdout) ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ (stderr) Π² /dev/null, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ±ΡΠΎΡΠΈΠ² Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ Π²ΡΠ²ΠΎΠ΄Π΅ ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ ”.
π§ ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Bash ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ β IT is good
1. ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½ΠΎ Π²Π°Ρ Π½Π΅ Π²ΠΎΠ»Π½ΡΠ΅Ρ Π΅Π΅ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ /dev/null 2>&1 ΡΠΎΡ ΡΠ°Π½ΠΈΡ Π²Π°Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΡΠΈΡΡΡΠΌ:
some-command >/dev/null 2>&1
2. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΠΎΡΠΈΠ±ΠΎΠΊ, Π° Π½Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ stderr Π² ΡΠ°ΠΉΠ», Π° stdout ΠΎΡΠ±ΡΠΎΡΠΈΡΡ:
some-command > /dev/null 2> error.log
3. ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ²
ΠΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ ΠΎΡΠ΅ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΡΠΎΠ±Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π² /dev/null ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΡΠΎΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π° /dev/null 2>&1 – ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Bash, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠΎΠ½ΡΠ², ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈ ΡΠΈΡΡΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Ρ ΠΎΡΠΈΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΡΠΊΡΠΈΠΏΡΡ, Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ /dev/null 2>&1 ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.