Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux: ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 31

Автор ДСнис ΠšΠΎΠ»ΠΈΡΠ½ΠΈΡ‡Π΅Π½ΠΊΠΎ

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ шаблона ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ символы Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ΠΎΠ³Π΄Π° ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π½Π΅ приступила ΠΊ ΠΈΡ… Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ:

$ touch \* # создаст Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ "*". Волько Π½Π΅

           # удаляйтС Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ rm * !

$ rm Glava0\[3\,8\] # ΡƒΠ΄Π°Π»ΠΈΡ‚ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Glava0[3,8],

                    # Π° Π½Π΅ Glava03 ΠΈ Glava08.

3.4.6. ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Как я ΡƒΠΆΠ΅ сказал, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ процСссу сопоставлСна Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Ρ€ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ заняты всСгда: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΈ (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² UNIX Ρ„Π°ΠΉΠ» β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…?) для Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ диагностичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ:

♦ 0 β€” стандартный Π²Π²ΠΎΠ΄ (stdin),

♦ 1 β€” стандартный Π²Ρ‹Π²ΠΎΠ΄ (stdout),

♦ 2 β€” стандартный ΠΏΠΎΡ‚ΠΎΠΊ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… (stderr).

Π‘ΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° эти ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ дСскрипторам. 0, 1 ΠΈ 2 β€” это ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ дСскрипторы.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с консолью, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½ процСсс: стандартный Π²Π²ΠΎΠ΄ β€” с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” с экраном (рис. 3.5, ΠΏΠΎΡ‚ΠΎΠΊΠΈ cmd1).

ВсС ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π½Π° дискС, Ρ„Π°ΠΉΠ» устройства (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ ΠΈΠ»ΠΈ /dev/null) ΠΈΠ»ΠΈ стандартный ΠΏΠΎΡ‚ΠΎΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса.

Для пСрСнаправлСния стандартного Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ > («большС»). Если мСстом назначСния слуТит Ρ„Π°ΠΉΠ», Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, Π° ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ (append) Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ†. Для Ρ‚Π°ΠΊΠΎΠ³ΠΎ пСрСнаправлСния примСняСтся символ >>.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ пСрСнаправляСтся символом < («мСньшС»).

Для пСрСнаправлСния стандартного ΠΏΠΎΡ‚ΠΎΠΊΠ° ошибок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция 2>. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ stderr ΠΊ stdout ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… вмСстС, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ пСрСадрСсациСй 2>&1.

Для направлСния стандартного Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° стандартный Π²Π²ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ примСняСтся символ | β€” ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Π²Π°ΠΌ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

Битуация, изобраТСнная Π½Π° рис. 3.5, ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ послС выполнСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

cmd2 < file1.txt | cmd3 2>&1 > file2.txt

cmd4 2> /dev/null | tee file3.txt file4.txt file5.txt

Рис. 3.5. ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Команда-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ tee ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ со своСго стандартного Π²Π²ΠΎΠ΄Π° Π² стандартный Π²Ρ‹Π²ΠΎΠ΄, дублируя ΠΈΡ… ΠΏΡ€ΠΈ этом Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π΅ΠΉ Ρ„Π°ΠΉΠ»Ρ‹.

3.4.7. Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄

ΠšΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ², ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π² списки. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π²ΠΈΠ΄ списка β€” нСсколько ΠΊΠΎΠΌΠ°Π½Π΄, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой:

$ lpr myfile.txt ; lpq

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΌ спискС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ: сначала Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° постановки задания Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ состояниС ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΆΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ (синхронный Ρ€Π΅ΠΆΠΈΠΌ).

Π’ списки ΠΌΠΎΠΆΠ½ΠΎ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΠΎ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹:

$ ps -ef | head -n 1; ps -ef | grep httpd


UID    PID   PPID  Π‘ STIME TTY TIME     CMD

root   13565 1     0 13:11 ?   00:00:00 /usr/local/sbin/httpd

nobody 13566 13565 0 13:11 ?   00:00:00 /usr/local/sbin/httpd

nobody 13567 13565 0 13:11 ?   00:00:00 /usr/local/sbin/httpd

nobody 13642 13565 0 13:16 ?   00:00:00 /usr/local/sbin/httpd

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚ ΠΈΠ· списка процСссов Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π΅ΠΌΠΎΠ½Π΅ httpd.

Если трСбуСтся Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° Π·Π°Π΄Π½Π΅ΠΌ ΠΏΠ»Π°Π½Π΅ ΠΈ Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ Π΅Π΅ выполнСния (асинхронный Ρ€Π΅ΠΆΠΈΠΌ), Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ &:

$ du --human-readable --total /home > diakusage.txt &

Команда du сообщаСт, сколько мСста Π½Π° дискС занято Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΈ: ΠΈΡ… ΠΈΠΌΠ΅Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΎΠ΄Π½ΠΈΠΌ минусом, Π° двумя. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‚Π°ΠΊ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ β€” с осмыслСнными, Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Напоминаю, Ρ‡Ρ‚ΠΎ список ΠΈ значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cmd ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Π΅Π΅ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ --help ΠΈΠ»ΠΈ --usage.

ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ (ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹) Π² спискС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ && ΠΈ ||, получая «список И» ΠΈΠ»ΠΈ «список Π˜Π›Π˜Β» соотвСтствСнно:

cmd1 && cmd2 cmd3 || cmd4

Вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² «спискС И» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠΉ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” созданиС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² Π½Π΅Π³ΠΎ:

$ mkdir mydir && cd mydir

Вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² «спискС Π˜Π›Π˜Β» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠΉ (Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Сю Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ значСния):

$ my_command || echo "Команда my_command нС найдСна" | mail den

Вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€) Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ посылаСт письмо с ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠΌ ΠΎ нСуспСхС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ den.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» Π²Ρ‹Π²ΠΎΠ΄ всСх ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· списка, Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ вСсь список Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки:

$ ( date; free; who; ) > logfile

Бписок, взятый Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, выполняСтся Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ собствСнныС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³:

$ pwd; ( cd / tmp ; pwd ) ; pwd;

/home/den

/tmp

/home/den

$

Если Π½ΡƒΠΆΠ½ΠΎ часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

$ function morning_report {

> date;

> free;

> W;

> }

$ morning_report | mail root

ИмСна ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. НСльзя ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСанса Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ bash. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ сСансС, Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΡ… Π² тСкстовый Ρ„Π°ΠΉΠ», Π° ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ понадобятся, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ этот Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° встроСнной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ source:

$ cat > foo

myvar="Моя пСрСмСнная"

function myfun {

 echo $myvar

}

^D

$ source foo

$ myfun

Моя пСрСмСнная

$

Команда source выполняСт инструкции, содСрТащиСся Π² Ρ„Π°ΠΉΠ»Π΅, Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ исполнСния Ρ„Π°ΠΉΠ»Π°, содСрТащСго сцСнарий: Ρ‚ΠΎΡ‚ выполняСтся Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ myvar ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ myfun ΠΈΠ· памяти ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ unset, сдСлайтС Ρ„Π°ΠΉΠ» foo исполняСмым ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ chmod (ΠΏ.3.4.3) ΠΈ исполнитС Π΅Π³ΠΎ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ послС Π΅Π³ΠΎ выполнСния пСрСмСнная myvar ΠΈ функция myfun ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.

3.4.8. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ bash

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния становятся извСстны ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ bash ΠΈΠ· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ сразу послС своСго запуска. Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ .bash_profile ΠΈ .bashrc (Π² порядкС чтСния ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ) ΠΈ бСрутся ΠΈΠ· домашнСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² этих Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ общСсистСмный Ρ„Π°ΠΉΠ» настроСк /etc/bashrc. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ свои Π»ΠΈΡ‡Π½Ρ‹Π΅ настройки, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π½ΡƒΠΆΠ½Ρ‹Π΅ Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ псСвдонимы.

ΠŸΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ сСанса Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ ~/.bash_logout. Π’ΡƒΠ΄Π° Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя окончания своСго сСанса Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ Π² письмС Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ установки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ CDPATH, рассмотрСнной Π² ΠΏ.3.4.3, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² .bash_profile, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСанса Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² bash.

Π“Π»Π°Π²Π° 4

Π Π°Π±ΠΎΡ‡Π΅Π΅ мСсто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою ОБ Linux, Ρ‚ΠΎ вашим Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ мСстом станСт консоль, Π° срСдой обитания β€” командная строка. Для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΆΠ΅ людСй ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ β€” Π½Π΅ Ρ…ΠΎΠ±Π±ΠΈ, Π° инструмСнт для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡. Π—Π°Π΄Π°Ρ‡ΠΈ эти Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Π½Π΅ срСдствами ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ОБ сСмСйства Windows. Π‘Ρ€Π΅Π΄ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

♦ ΠΎΡ„исный Π½Π°Π±ΠΎΡ€: тСкстовый процСссор, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ элСктронных Ρ‚Π°Π±Π»ΠΈΡ†, систСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;

♦ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° просмотра ΠΈ рСдактирования графичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ;

♦ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° общСния с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ (элСктронная ΠΏΠΎΡ‡Ρ‚Π°, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΠ΅ΠΉΠ΄ΠΆΠ΅Ρ€);

♦ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°: Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ftp-ΠΊΠ»ΠΈΠ΅Π½Ρ‚;

♦ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для воспроизвСдСния Π°ΡƒΠ΄ΠΈΠΎ- ΠΈ видСозаписСй;

♦ ΡƒΠ·ΠΊΠΎΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹: матСматичСскиС, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅, бухгалтСрскиС, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Ρ‚.ΠΏ.