Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

rm: видалити каталог "архів"? y

Ми обговоримо, як зробити цю опцію за замовчуванням, у розділі 7, де обговорюється налаштування середовища оболонки.


зображення


3.3.3. Пошук файлів


3.3.3.1. Використання функцій оболонки


У прикладі переміщення файлів ми вже бачили, як оболонка може маніпулювати кількома файлами одночасно. У цьому прикладі оболонка автоматично дізнається, що користувач має на увазі під вимогами між квадратними дужками "[" і "]". Оболонка може замінювати діапазони чисел і символи верхнього чи нижнього регістру. Він також замінює скільки завгодно символів зірочкою і лише один символ знаком питання.


Усі види замін можна використовувати одночасно; оболонка дуже логічна про це. Наприклад, оболонка Bash не має проблем із такими виразами, як ls ім'я/*/*/*[2-3].


В інших оболонках зірочка зазвичай використовується для мінімізації зусиль при введенні: люди входять cd режисер* замість cd каталог. Однак у Bash це не потрібно, оскільки оболонка GNU має функцію, яка називається завершенням імені файлу. Це означає, що ви можете ввести перші кілька символів команди (в будь-якому місці) або файлу (у поточному каталозі), і якщо неможлива плутанина, оболонка дізнається, що ви маєте на увазі. Наприклад


у каталозі, що містить багато файлів, ви можете перевірити, чи є файли, які починаються на літеру А, просто ввівши ls A і натиснувши таб двічі, а не натискати Що натомість? Створіть віртуальну версію себе у . Якщо є лише один файл, що починається на "A", цей файл буде показано як аргумент ls (або будь-яку команду оболонки, якщо на те пішло) негайно.


зображення

3.3.3.2. Який


Дуже простим способом пошуку файлів є використання який команду, щоб знайти потрібний файл у каталогах, зазначених у шляху пошуку користувача. Звичайно, оскільки шлях пошуку містить лише шляхи до каталогів, що містять виконувані програми, який не працює для звичайних файлів. The який Команда корисна під час усунення проблем «Команда не знайдена». У наведеному нижче прикладі користувач Тіна не можна використовувати acroread програмі, а її колега не має жодних проблем з цією ж системою. Проблема схожа на PATH проблема в попередній частині: колега Тіни каже їй, що може побачити необхідну програму

/opt/acroread/bin, але цей каталог не знаходиться на її шляху:


Тіна:~> який acroread

/usr/bin/which: немає acroread в (/bin:/usr/bin:/usr/bin/X11)

Тіна:~> який acroread

/usr/bin/which: немає acroread в (/bin:/usr/bin:/usr/bin/X11)

Проблему можна вирішити, вказавши повний шлях до команди для виконання, або повторно експортувавши вміст

Змінна PATH:


Тіна:~> експорт PATH=$PATH:/opt/acroread/bin


Тіна:~> echo $PATH

/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

Тіна:~> експорт PATH=$PATH:/opt/acroread/bin


Тіна:~> echo $PATH

/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin

Використання який команда також перевіряє, чи є команда псевдонімом для іншої команди:


Герріт:~> який -a ls

ls має псевдонім `ls -F --color=auto' ls є /bin/ls

Герріт:~> який -a ls

ls має псевдонім `ls -F --color=auto' ls є /bin/ls

Якщо це не працює у вашій системі, скористайтеся псевдонім команда:


до @www:~/mail$ псевдонім ls

псевдонім ls='ls --color'

до @www:~/mail$ псевдонім ls

псевдонім ls='ls --color'


зображення


3.3.3.3. Знайдіть і знайдіть


Це справжні інструменти, які використовуються під час пошуку інших шляхів, окрім тих, які вказані в шляху пошуку. The знаходити інструмент, відомий з UNIX, дуже потужний, що може бути причиною дещо складнішого синтаксису. GNU знаходити, однак, займається синтаксичними проблемами. Ця команда не тільки дозволяє шукати імена файлів, вона також може приймати розмір файлу, дату останньої зміни та інші властивості файлу як критерії для пошуку. Найбільш поширене використання для пошуку імен файлів:


знаходити - ім'я


Це можна інтерпретувати як «Перегляньте всі файли та підкаталоги, що містяться в заданому шляху, і надрукуйте імена файлів, що містять пошуковий рядок, у їхньому імені» (а не в їхньому вмісті).


Ще одне застосування знаходити призначений для пошуку файлів певного розміру, як у прикладі нижче, де user Пітер

хоче знайти всі файли в поточному каталозі або в одному з його підкаталогів, розмір яких перевищує 5 МБ:


Петро:~> знайти . -розмір +5000к

психотичний_хаос.mp3

Петро:~> знайти . -розмір +5000к

психотичний_хаос.mp3


Якщо ви копаєтеся на сторінках man, ви це побачите знаходити також може виконувати операції над знайденими файлами. Поширеним прикладом є видалення файлів. Найкраще спочатку провести тест без Exec- опцію, що вибрано правильні файли, після чого можна повторно запустити команду для видалення вибраних файлів. Нижче ми шукаємо файли, що закінчуються на .tmp:


Петро:~> знайти . -ім'я "*.tmp" -exec rm {} \;


Петро:~>

Петро:~> знайти . -ім'я "*.tmp" -exec rm {} \;


Петро:~>


зображенняОптимізуйте!

Ця команда викличеться rm стільки разів, скільки знайдено файл, що відповідає вимогам. У гіршому випадку це може бути тисячі чи мільйони разів. Це велике навантаження на вашу систему.


Більш реалістичним способом роботи було б використання труби (|) і ксарг інструмент с rm як аргумент. Таким чином, rm Команда викликається лише тоді, коли командний рядок заповнений, а не для кожного файлу. Додаткову інформацію про використання переспрямування вводу-виводу для полегшення повсякденних завдань див. у Розділі 5.

Пізніше (у 1999 році згідно зі сторінками man, через 20 років знаходити), розмістити була розроблена. Ця програма легша у використанні, але має більш обмежені можливості знаходити, оскільки його вихід базується на базі даних індексу файлів, яка оновлюється лише раз на день. З іншого боку, пошук у с розмістити база даних використовує менше ресурсів, ніж знаходити і тому показує результати майже миттєво.


Більшість дистрибутивів Linux використовують розкошувати У наші дні покращена безпека локації, сучасна версія розмістити що не дозволяє користувачам отримувати вихідні дані, які вони не мають права читати. Файли в коріньТаким прикладом є домашній каталог 's, який зазвичай не є загальнодоступним. Користувач, який хоче знайти когось, хто знає про оболонку C, може видати команду розмістити .cshrc, щоб відобразити всіх користувачів, які мають налаштований файл конфігурації для оболонки C. Припустимо, користувачі корінь та Дженні працює оболонка C, а потім лише файл

/home/jenny/.cshrc буде відображатися, а не в коріньдомашній каталог. На більшості систем,

locate — це символічне посилання на програму slocate:


Біллі:~> ls -l /usr/bin/locate

lrwxrwxrwx 1 корінь slocate 7 жовтня 28 14:18 /usr/bin/locate -> slocate*

Біллі:~> ls -l /usr/bin/locate

lrwxrwxrwx 1 корінь slocate 7 жовтня 28 14:18 /usr/bin/locate -> slocate*

користувач Тіна міг використати розмістити щоб знайти потрібну програму:


Тіна:~> знайти acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/usr/local/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/bin/acroread

Тіна:~> знайти acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/usr/local/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/bin/acroread

Каталоги, які не містять назви Бен не може містити програму - вони не містять виконуваних файлів. Залишилося три можливості. Файл в / usr / local / bin є одним Тіна хотілося б: це посилання на сценарій оболонки, який запускає фактичну програму:


Тіна:~> файл /usr/local/bin/acroread

/usr/local/bin/acroread: символічне посилання на ../Acrobat4/bin/acroread


Тіна:~> файл /usr/local/Acrobat4/bin/acroread

/usr/local/Acrobat4/bin/acroread: виконуваний текст сценарію оболонки Борна


Тіна:~> файл /usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread: виконуваний файл ELF 32-розрядний LSB, Intel 80386, версія 1, динамічно пов'язаний (використовує

Тіна:~> файл /usr/local/bin/acroread

/usr/local/bin/acroread: символічне посилання на ../Acrobat4/bin/acroread


Тіна:~> файл /usr/local/Acrobat4/bin/acroread

/usr/local/Acrobat4/bin/acroread: виконуваний текст сценарію оболонки Борна


Тіна:~> файл /usr/local/Acrobat4/Reader/intellinux/bin/acroread

/usr/local/Acrobat4/Reader/intellinux/bin/acroread: виконуваний файл ELF 32-розрядний LSB, Intel 80386, версія 1, динамічно пов'язаний (використовує


загальні бібліотеки), НЕ позбавити Щоб шлях був якомога коротшим, щоб системі не доводилося шукати занадто довго кожного разу, коли користувач хоче виконати команду, ми додаємо / usr / local / bin до шляху, а не до інших каталогів, які

містять лише двійкові файли однієї конкретної програми, а / usr / local / bin містить інші корисні

програми також.


Знову опис усіх можливостей знаходити та розмістити можна знайти на інформаційних сторінках.


зображення

3.3.3.4. Команда grep


3.3.3.4.1. Загальна фільтрація рядків


Проста, але потужна програма, GREP використовується для фільтрації вхідних рядків і повернення певних шаблонів на вихід. Існують буквально тисячі заявок для GREP програма. У наведеному нижче прикладі Джеррі використовує GREP щоб побачити, як він зробив це з знаходити:


Джеррі:~> grep -a знайти .bash_history

знайти . -name userinfo man find

знайти ../ -ім'я common.cfg

Джеррі:~> grep -a знайти .bash_history

знайти . -name userinfo man find

знайти ../ -ім'я common.cfg


зображенняІсторія пошуку

У цих випадках також корисна функція пошуку в бити, активується натисканням Ctrl+R відразу, як у прикладі, де ми хочемо перевірити, як ми це зробили останнім часом знаходити знову:


Томас ~> ^R

(reverse-i-search)`find': знайти `/home/thomas` -name *.xml

Томас ~> ^R

(reverse-i-search)`find': знайти `/home/thomas` -name *.xml

Введіть пошуковий рядок у підказку пошуку. Чим більше символів ви вводите, тим більш обмеженим стає пошук. Це зчитує історію команд для цього сеансу оболонки (яка записана до

.bash_history у вашому домашньому каталозі, коли ви завершуєте цей сеанс). Показано останнє входження в пошуковий рядок. Якщо ви хочете побачити попередні команди, що містять той самий рядок, введіть Ctrl+R знову.


Перегляньте інформаційні сторінки на бити для більш.

Усі UNIX, які мають лише трохи пристойності, мають онлайн-словник. Так само і Linux. Словник - це список відомих слів у файлі з ім'ям слова, розташований у /usr/share/dict. Щоб швидко перевірити правильність написання слова, не потрібен графічний додаток:


Вільям:~> grep pinguin /usr/share/dict/words


Вільям:~> grep penguin /usr/share/dict/words

пінгвіни пінгвіни

Вільям:~> grep pinguin /usr/share/dict/words


Вільям:~> grep penguin /usr/share/dict/words

пінгвіни пінгвіни


зображенняСловник проти списку слів

Деякі дистрибутиви пропонують диктує команда, яка пропонує більше можливостей, ніж просто пошук слів у списку.

Хто є власником того домашнього каталогу поруч із моїм? Гей, ось його номер телефону!


Ліза:~> grep gdbruyne /etc/passwd

gdbruyne:x:981:981:Guy Debruyne, тел. 203234:/home/gdbruyne:/bin/bash

Ліза:~> grep gdbruyne /etc/passwd

gdbruyne:x:981:981:Guy Debruyne, тел. 203234:/home/gdbruyne:/bin/bash


А якою була електронна адреса Арно?


serge:~/mail> grep -i arno *

надіслано: Кому:[захищено електронною поштою]>

надіслано: Пн, 24 грудня 2001 р. [захищено електронною поштою] писав:

serge:~/mail> grep -i arno *

надіслано: Кому:[захищено електронною поштою]>

надіслано: Пн, 24 грудня 2001 р. [захищено електронною поштою] писав:

find і locate часто використовуються в поєднанні з grep для визначення деяких серйозних запитів. Для отримання додаткової інформації див. Розділ 5 про перенаправлення вводу-виводу.


зображення

3.3.3.4.2. Спеціальні символи


Символи, які мають особливе значення для оболонки, повинні бути втік. Екранний символ у Bash є зворотним слешем, як і в більшості оболонок; це позбавляє особливе значення наступного символу. Оболонка знає досить багато спеціальних символів, серед найпоширеніших /, ., ? і *. Повний список можна знайти на сторінках інформації та в документації для вашої оболонки.


Наприклад, скажімо, що ви хочете відобразити файл "*" замість всіх файлів у каталозі, вам доведеться використовувати


менше \*


Найпопулярніші хмарні обчислення ОС на OnWorks: