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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 58

Автор Шоттс Уильям

ИспользованиС rsync для копирования ΠΏΠΎ сСти

Одно ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… достоинств rsync β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ копирования Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ сСти, ΠΎΠ± этом Π½Π°ΠΌ Β«Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Β» Π±ΡƒΠΊΠ²Π° r Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ rsync, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ remote (удалСнная). Π£Π΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ систСмами, Π³Π΄Π΅ установлСна rsync ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, такая ΠΊΠ°ΠΊ ssh. Допустим, Ρ‡Ρ‚ΠΎ Π² локальной сСти имССтся другая систСма с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ объСмом дискового пространства ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту систСму для хранСния Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ вмСсто внСшнСго диска. Если Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² этой систСмС ΡƒΠΆΠ΅ имССтся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /backup, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ наши Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊ:

[[email protected] ~]$ sudo rsync -av --delete --rsh=ssh /etc /home /usr/local remotesys:/backup

ΠœΡ‹ внСсли Π΄Π²Π° измСнСния Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ сСти. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --rsh=ssh, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ rsync ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ssh. Благодаря этому для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· локальной систСмы Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ SSH. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ имя ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ remote-sys) ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ использования rsync для синхронизации Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ сСти Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании сСрвСра rysnc. rsync ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ входящиС запросы Π½Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для зСркалирования ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… систСм. НапримСр, компания Red Hat Software ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… для Π΅Π΅ дистрибутива Fedora. Для спСциалистов, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ…ΡΡ тСстированиСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ этой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Ρ…ΠΎΠ΄Π΅ этапа тСстирования, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ этапу выпуска дистрибутива. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ достаточно часто (ΠΏΠΎΡ€ΠΎΠΉ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π· Π² дСнь), Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ локального Π·Π΅Ρ€ΠΊΠ°Π»Π° вмСсто копирования всСго объСма рСпозитория. Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² хранится Π² унивСрситСтС Georgia Tech; ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π΅Ρ€ΠΊΠ°Π»ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ локальной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ rsync ΠΈ сСрвСра rsync Π² Georgia Tech:

[[email protected] ~]$ mkdir fedora-devel

[[email protected] ~]$ rsync -av -delete rsync://rsync.gtlib.gatech.edu/fedora-linux-core/development/i386/os fedora-devel

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ URI ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра rsync, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» (rsync://), имя ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° (rsync.gtlib.gatech.edu) ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ.

19. РСгулярныС выраТСния

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³Π»Π°Π²Π°Ρ… ΠΌΡ‹ познакомимся с инструмСнтами для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстом. Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Linux. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ исслСдованию возмоТностСй этих инструмСнтов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ познакомится с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, которая часто ассоциируСтся с самыми слоТными случаями использования этих инструмСнтов β€” рСгулярными выраТСниями.

Π—Π½Π°ΠΊΠΎΠΌΡΡΡŒ со свойствами ΠΈ особСнностями ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΌΡ‹ ΡƒΠΆΠ΅ встрСчали Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ-настоящСму таинствСнныС свойства ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ подстановки ΠΈ экранирования, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш ΠΈ история ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π΅ говоря ΡƒΠΆΠ΅ ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ vi. РСгулярныС выраТСния ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ этот список ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ (ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ) самым Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈΠ· всСх инструмСнтов. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСмя Π½Π° ΠΈΡ… ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½ΠΎ Π²ΠΏΡƒΡΡ‚ΡƒΡŽ. Как Ρ€Π°Π· Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ настоящиС чудСса, хотя истинная ΠΈΡ… Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСгулярныС выраТСния?

РСгулярныС выраТСния β€” это всСго лишь символичСская Ρ„ΠΎΡ€ΠΌΠ° записи, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ шаблонов Π² тСкстС. Они, Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Π΅ символы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для Π²Ρ‹Π±ΠΎΡ€Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ, Π½ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅. РСгулярныС выраТСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ инструмСнтами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ языков программирования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡, связанных с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ тСкста. Однако ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС рСгулярныС выраТСния ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹; Ρ€Π°Π·Π½Ρ‹Π΅ инструмСнты ΠΈ языки программирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнныС Β«Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹Β» рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Для Ρ†Π΅Π»Π΅ΠΉ нашСго обсуТдСния ΠΌΡ‹ ограничимся рСгулярными выраТСниями, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² стандартС POSIX (ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ инструмСнтов ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки) Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠΌ языкам программирования (особСнно это относится ΠΊ Perl), Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ ΠΈ Π±ΠΎΠ³Π°Ρ‚Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ записи.

grep β€” поиск Π² тСкстС

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с рСгулярными выраТСниями ΠΌΡ‹ Π² основном Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π΄ΠΎΠ±Ρ€ΡƒΡŽ ΠΏΡ€ΠΈΡΡ‚Π΅Π»ΡŒΠ½ΠΈΡ†Ρƒ β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ grep. НазваниС grep Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΎΡ‚ Ρ„Ρ€Π°Π·Ρ‹ Β«global regular expression printΒ» (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ поиск с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярного выраТСния ΠΈ Π²Ρ‹Π²ΠΎΠ΄), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡ‚Π΅, grep ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ рСгулярным выраТСниям. Π’ сущности, grep просматриваСт тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ Π² поисках совпадСний с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² стандартный Π²Ρ‹Π²ΠΎΠ΄ всС строки с Ρ‚Π°ΠΊΠΈΠΌΠΈ совпадСниями.

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ grep фиксированныС строки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

[[email protected] ~]$ ls /usr/bin | grep zip

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /usr/bin, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТат подстроку zip.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° grep ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

grep [ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹] рСгулярноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ [Ρ„Π°ΠΉΠ»...]

Π’ Ρ‚Π°Π±Π». 19.1 пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ grep.

Π’Π°Π±Π»ΠΈΡ†Π° 19.1. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

ОписаниС

-i

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистр символов. Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ символы Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --ignore-case

-v

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строки с совпадСниями. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ заставляСт grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строки, Π½Π΅ содСрТащиС совпадСний. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --invert-match

-c

ВывСсти число совпадСний (ΠΈΠ»ΠΈ «нСсовпадСний») Π² присутствии ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -v вмСсто самих тСкстовых строк. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --count

-l

ВмСсто строк с совпадСниями Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ строками. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --files-with-matches

-L

ДСйствуСт ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ -l, Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π³Π΄Π΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ совпадСния. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --files-without-match

-n

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки с совпадСниСм вывСсти Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ„Π°ΠΉΠ»Π΅. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --line-number

-h

ΠŸΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΈ поискС ΠΏΠΎ нСскольким Ρ„Π°ΠΉΠ»Π°ΠΌ. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --no-filename

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим нСсколько тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ нашС исслСдованиС grep стало Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ:

[[email protected] ~]$ ls /bin > dirlist-bin.txt

[[email protected] ~]$ ls /usr/bin > dirlist-usr-bin.txt

[[email protected] ~]$ ls /sbin > dirlist-sbin.txt

[[email protected] ~]$ ls /usr/sbin > dirlist-usr-sbin.txt

[[email protected] ~]$ ls dirlist*.txt

dirlist-bin.txtΒ Β Β dirlist-sbin.txtΒ Β Β dirlist-usr-sbin.txt

dirlist-usr-bin.txt

НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ простой поиск Π² нашСм спискС Ρ„Π°ΠΉΠ»ΠΎΠ²:

[[email protected] ~]$ grep bzip dirlist*.txt

dirlist-bin.txt:bzip2

dirlist-bin.txt:bzip2recover

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ grep просматриваСт всС пСрСчислСнныС Ρ„Π°ΠΉΠ»Ρ‹ Π² поисках строки bzip ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π΄Π²Π° совпадСния, ΠΎΠ±Π° Π² Ρ„Π°ΠΉΠ»Π΅ dirlist-bin.txt. Если Π±Ρ‹ Π½Π°ΠΌ достаточно Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с совпадСниями, Π° Π½Π΅ сами совпадСния, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -l:

[[email protected] ~]$ grep -l bzip dirlist*.txt

dirlist-bin.txt

Напротив, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ содСрТащих совпадСний, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ: