LXF97:Bash
Guria (обсуждение | вклад) (Подправил врезку) |
|||
(не показаны 3 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
+ | {{Цикл/Bash}} | ||
+ | [[Категория:Учебники]] | ||
== Bash: Используем командную строку == | == Bash: Используем командную строку == | ||
''Часть 2 Хотите проводить в командной строке больше времени? '''Рэйчел Проберт''' | ''Часть 2 Хотите проводить в командной строке больше времени? '''Рэйчел Проберт''' | ||
Строка 43: | Строка 45: | ||
команду logout. | команду logout. | ||
− | === Часть 1: По | + | === Часть 1: По Grep`у! === |
+ | {{Врезка | ||
+ | |Заголовок=Помощь по grep | ||
+ | |Содержание= | ||
+ | Поскольку grep производит поиск соответствий по шаблонам, вы | ||
+ | должны предоставить ему регулярное выражение для этого шаблона. | ||
+ | Регулярные выражения бывают простыми и сложными. Наиболее распространенные (и простые) типы регулярных выражений выглядят так: | ||
+ | *abc Соответствует строкам, которые содержат "abc" в любом месте. | ||
+ | *^abc Соответствует строкам, начинающимся с "abc". | ||
+ | |Ширина=200px}} | ||
Вот теперь повеселимся! Grep – команда, которая находит слова в | Вот теперь повеселимся! Grep – команда, которая находит слова в | ||
файлах. Охотно сказала бы, что ее название произошло от слова | файлах. Охотно сказала бы, что ее название произошло от слова | ||
Строка 100: | Строка 111: | ||
опцией -i и без -i и посмотрите, как это повлияет на результаты поиска. | опцией -i и без -i и посмотрите, как это повлияет на результаты поиска. | ||
<code> | <code> | ||
− | probert@ubuntu:~/Work$ grep -r -i | + | probert@ubuntu:~/Work$ grep -r -i 'CompanyABC' /home/ |
probert/Work | probert/Work | ||
</code> | </code> |
Текущая версия на 10:33, 17 ноября 2008
|
|
|
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
[править] Bash: Используем командную строку
Часть 2 Хотите проводить в командной строке больше времени? Рэйчел Проберт расскажет о grep, pipe и других командах, которые обязательно надо знать.
В прошлый раз мы говорили о действиях, потенциально способных
отобрать много времени: например, необходимо быстро найти отчет,
написанный когда-то давно. Вы забыли имя файла, но помните, что
темой отчета было соглашение с компанией ABC. После обнаружения
документа его содержимое нужно отправить коллеге или шефу.
grep -r -i -H CompanyABC /home/rjprobert/work cat filename | mail colleague@work.com
Для начала мы разомнемся с помощью нескольких команд для
опытных пользователей. Они вряд ли пригодятся обычным пользователям для каждодневной работы, но если вы администратор системы
и устанавливаете программы для своих пользователей, значение этих
команд повышается.
Команда whoami не вовлечет вас в философские дискуссии по
самопознанию, но напомнит, под каким именем пользователя вы вошли в систему; очень удобно, когда вы работаете с несколькими учетными записями, используемыми для решения различных задач, и постоянно переключаетесь между ними. Похожая команда, whatis, позволит
понять, что делает та или иная программа. В Linux сотни программ, и
невозможно запомнить, что делает каждая из них. Например, напечатав whatis grep, вы увидите:
grep (1) - print lines matching a pattern
Команда whereis поможет найти другие нужные вам команды или
программы. Если вы загружаете из Интернета программу, для работы
которой нужна другая программа, вам захочется узнать, установлена
ли она в вашей системе. Чтобы выяснить местонахождение программы
и ее man-страницы, наберите whereis [имя программы]. Так, например,
находится расположение популярного текстового редактора vi:
whereis vi
Echo – небольшая команда, повторяющая все, что вы ни напечатали. Например, если набрать echo hello, на экране появится слово "hello". Вообще говоря, обычно это делать незачем: команда echo может пригодиться вам в будущем, если вы начнете писать скрипты. (Скрипт – это небольшая программа, позволяющая выполнить несколько команд за один раз.) В скриптах echo может использоваться для отображения действий скрипта в каждый момент времени, или чтобы попросить пользователя что-нибудь сделать, например, ввести текст. Команда last выведет список пользователей, заходивших сегодня в систему, и терминалы, которые они используют (использовали). Набрав exit, вы завершите сеанс работы с терминалом. Если нужно зайти в систему под другим пользователем, используйте вместо нее команду logout.
[править] Часть 1: По Grep`у!
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Вот теперь повеселимся! Grep – команда, которая находит слова в
файлах. Охотно сказала бы, что ее название произошло от слова
"поиск" по-клингонски, но это было бы неправдой и только укрепило бы стереотип, что все технари любят Star Trek! На самом деле
название команды – сокращение от "Глобальный Парсер Регулярных
Выражений" (Global Regular Expression Parser), что означает "глобальный поиск строк, соответствующих регулярному выражению, и их
вывод на экран". Название команды происходит от команды текстового
редактора ed g/re/p, выполняющей подобные действия.
Начнем с создания специального каталога, где будем размещать новые
файлы. Чтобы убедиться, что каталог создан, используйте команду ls.
probert@ubuntu:~$ mkdir Work probert@ubuntu:~$ ls Bin Desktop Examples LAN Music Work
Откроем текстовый редактор и создадим новый файл report1.txt:
probert@ubuntu:~$ pico report1.txt
Pico – это текстовый редактор, который я использовала при написании
этой статьи. В дистрибутив Linux включено несколько текстовых редакторов; выбор одного из них определяется лишь вашими предпочтениями и наличием у редактора специальных функций, которые помогут
в решении именно вашей задачи. Когда текстовый редактор откроется,
напечатайте слово CompanyABC. Затем точно так же создайте второй
файл с именем report2.txt, который будет содержать слово companyabc.
Закончив, введите команду ls, и вы увидите примерно такой список:
probert@ubuntu:~$ ls Bin Desktop Examples LAN Music report1.txt report2.txt Work
Обратите внимание, что файлы, которые мы создали, находятся рядом
с каталогом Work. Давайте переместим их в нужный каталог:
probert@ubuntu:~$ mv report*.txt /home/probert/Work probert@ubuntu:~$ ls Bin Desktop Examples LAN Music Work
Звездочка (*) – это специальный символ, который позволяет нам
делать все, что мы хотим, с файлами, название которых начинается со
слова report; каждый из таких файлов включается в команду. У меня
есть правила именования файлов и разделения их на категории, которых я строго придерживаюсь. Например, названия всех файлов отчетов
начинаются со слова report, счетов – со слова invoice и т.д. Пускай это
выглядит как ритуальные действия безнадежно больного ОКР, зато при
наличии методичного подхода нужные вещи находятся очень быстро!
Переместимся в каталог Work и снова используем ls, чтобы убедиться,
что все файлы перемещены:
probert@ubuntu:~$ cd Work probert@ubuntu:~/Work$ ls report1.txt report2.txt
Сейчас мы сделаем следующий шаг в поисках этого крайне важного
файла для нашего коллеги. Команда grep обладает множеством опций
(их список выведет команда man grep). Опция -r позволяет выполнить
рекурсивный поиск файлов, начиная с названного каталога, а опция -i
выполнит поиск без учета регистра. Попробуйте следующие команды с
опцией -i и без -i и посмотрите, как это повлияет на результаты поиска.
probert@ubuntu:~/Work$ grep -r -i 'CompanyABC' /home/ probert/Work
Результат будет примерно таким:
/home/probert/Work/report1.txt:CompanyABC /home/probert/Work/report2.txt:companyabc
Итак, мы нашли этот неуловимый файл; что же дальше?
[править] Часть 2: Стандартный ввод-вывод
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Стандартный ввод/вывод позволяет вводить данные в программу из
любого источника и выводить данные в любой источник. Таким образом, можно направить вывод одной команды непосредственно на ввод
другой команды... правда, мило? Linux предоставляет три канала ввода/вывода, более известных как потоки ввода/вывода. По умолчанию стандартный ввод подразумевает клавиатуру, стандартный вывод – экран.
Третий поток ввода/вывода – это на самом деле поток вывода для сообщений об ошибках, предупреждений и оповещений: так легче отличить
сообщения об ошибках от остальных сообщений. Поток ошибок обычно
также выводится на экран, но (как и каждый из трех стандартных потоков) может быть перенаправлен. Этим мы сейчас и займемся.
Есть два основных способа перенаправления потоков данных; мы
можем использовать > или | (перенаправление и каналы соответственно). Если нужно просто направить стандартный вывод в файл, можно
напечатать команда > файл. Давайте попробуем это на реальном примере: найдем все файлы с именем passwd в каталоге /etc. Наберите
find /etc -name passwd
Результат будет примерно таким (он зависит от особенностей вашего
дистрибутива Linux):
probert@ubuntu:~$ find /etc -name passwd find: /etc/ssl/private: Permission denied /etc/passwd /etc/pam.d/passwd find: /etc/cups/ssl: Permission denied
Обратите внимание, что команда генерирует как стандартный поток
вывода, так и поток ошибок. Сейчас мы создадим файл findresult и
перенаправим стандартный поток вывода в этот файл, оставив на экране только ошибки.
probert@ubuntu:~$ find /etc -name passwd > findresult find: /etc/ssl/private: Permission denied find: /etc/cups/ssl: Permission denied
Перенаправим эти ошибки в другой файл, finderrors, используя 2>.
probert@ubuntu:~$ find /etc -name passwd 2> finderrors /etc/passwd /etc/pam.d/passwd
Наберите ls, и вы получите результат, похожий на мой.
probert@ubuntu:~$ ls Bin Desktop Examples finderrors findresult LAN Music
Чтобы прочитать содержимое этих файлов, можно открыть их в текстовом редакторе pico:
probert@ubuntu:~$ pico findresult
Я предпочитаю просматривать небольшие файлы с помощью команды
cat. Ниже я использовала эту команду для просмотра результатов поиска в файлах findresult и finderrors.
probert@ubuntu:~$ cat findresult /etc/passwd /etc/pam.d/passwd probert@ubuntu:~$ cat finderrors find: /etc/ssl/private: Permission denied find: /etc/cups/ssl: Permission denied
Вы также можете добавить информацию в файл с помощью команды
>>. Давайте перенаправим стандартный вывод, чтобы добавить информацию в наш первый файл findresult следующим образом:
probert@ubuntu:~$ find /etc -name passwd 2>> findresult
Вы можете снова проверить результаты с помощью команды cat
findresult. Второй способ перенаправления потоков – вывод одной
команды прямо на вход другой (канализация). Давайте проверим
содержимое каталога /usr/lib, где находятся объектные файлы, библиотеки и системные двоичные файлы. В моем каталоге /usr/lib примерно полторы тысячи файлов – многовато, чтобы прокручивать этот
список один за другим! Если мы перенаправим вывод ls на ввод команды less, то получим список, в котором можно перемещаться по страницам, в удобном для нас темпе. Попробуйте:
ls /usr/lib | less
Достигнув конца документа, нажмите клавишу Q, чтобы вернуться в
командную строку. Вы также можете предварительно отсортировать
этот список по убыванию, например, таким образом:
ls /usr/lib | sort -r | less
Краеугольный камень философии Unix заключается в том, чтобы каждая программа делала что-то одно по-настоящему хорошо, позволяя
использовать свой вывод как ввод другой программы. Использование
каналов позволяет провести этот принцип в жизнь, создавая очень
эффективные цепочки команд.
Теперь, разузнав, как работают grep и каналы, сведем их вместе для
поиска того самого отчета и отправим его нашему коллеге:
grep -r -i -H CompanyABC /home/rjprobert/work cat report1.txt | mail colleague@work.com
Миссия завершена!
Через месяц Moнтирование, создание резервных копий, распаковка файлов из tar и zip.