LXF97:Bash
OWeRQ (обсуждение | вклад) (Новая: == Bash: Используем == ''Часть 2 Хотите проводить в командной строке больше времени? '''Рэйчел Проберт''' расс...) |
|||
(не показаны 12 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
− | == Bash: Используем == | + | {{Цикл/Bash}} |
+ | [[Категория:Учебники]] | ||
+ | == Bash: Используем командную строку == | ||
''Часть 2 Хотите проводить в командной строке больше времени? '''Рэйчел Проберт''' | ''Часть 2 Хотите проводить в командной строке больше времени? '''Рэйчел Проберт''' | ||
расскажет о grep, pipe и других командах, которые обязательно надо знать.'' | расскажет о grep, pipe и других командах, которые обязательно надо знать.'' | ||
Строка 13: | Строка 15: | ||
</code> | </code> | ||
Для начала мы разомнемся с помощью нескольких команд для | Для начала мы разомнемся с помощью нескольких команд для | ||
− | опытных пользователей. Они вряд ли пригодятся обычным | + | опытных пользователей. Они вряд ли пригодятся обычным пользователям для каждодневной работы, но если вы администратор системы |
− | + | ||
и устанавливаете программы для своих пользователей, значение этих | и устанавливаете программы для своих пользователей, значение этих | ||
команд повышается. | команд повышается. | ||
Команда whoami не вовлечет вас в философские дискуссии по | Команда whoami не вовлечет вас в философские дискуссии по | ||
− | самопознанию, но напомнит, под каким именем пользователя вы | + | самопознанию, но напомнит, под каким именем пользователя вы вошли в систему; очень удобно, когда вы работаете с несколькими учетными записями, используемыми для решения различных задач, и постоянно переключаетесь между ними. Похожая команда, whatis, позволит |
− | + | ||
− | + | ||
− | + | ||
понять, что делает та или иная программа. В Linux сотни программ, и | понять, что делает та или иная программа. В Linux сотни программ, и | ||
− | невозможно запомнить, что делает каждая из них. Например, | + | невозможно запомнить, что делает каждая из них. Например, напечатав whatis grep, вы увидите: |
− | + | ||
<code> | <code> | ||
grep (1) - print lines matching a pattern | grep (1) - print lines matching a pattern | ||
Строка 37: | Строка 34: | ||
whereis vi | whereis vi | ||
</code> | </code> | ||
− | Echo – небольшая команда, повторяющая все, что вы ни | + | Echo – небольшая команда, повторяющая все, что вы ни напечатали. Например, если набрать echo hello, на экране появится слово "hello". |
− | + | Вообще говоря, обычно это делать незачем: команда echo может пригодиться вам в будущем, если вы начнете писать скрипты. (Скрипт – это | |
− | Вообще говоря, обычно это делать незачем: команда echo может | + | |
− | + | ||
небольшая программа, позволяющая выполнить несколько команд за | небольшая программа, позволяющая выполнить несколько команд за | ||
один раз.) В скриптах echo может использоваться для отображения | один раз.) В скриптах echo может использоваться для отображения | ||
действий скрипта в каждый момент времени, или чтобы попросить | действий скрипта в каждый момент времени, или чтобы попросить | ||
пользователя что-нибудь сделать, например, ввести текст. | пользователя что-нибудь сделать, например, ввести текст. | ||
− | Команда last выведет список пользователей, заходивших | + | Команда last выведет список пользователей, заходивших сегодня в систему, и терминалы, которые они используют (использовали). |
− | + | ||
Набрав exit, вы завершите сеанс работы с терминалом. Если нужно | Набрав exit, вы завершите сеанс работы с терминалом. Если нужно | ||
зайти в систему под другим пользователем, используйте вместо нее | зайти в систему под другим пользователем, используйте вместо нее | ||
команду logout. | команду logout. | ||
+ | === Часть 1: По Grep`у! === | ||
+ | {{Врезка | ||
+ | |Заголовок=Помощь по grep | ||
+ | |Содержание= | ||
+ | Поскольку grep производит поиск соответствий по шаблонам, вы | ||
+ | должны предоставить ему регулярное выражение для этого шаблона. | ||
+ | Регулярные выражения бывают простыми и сложными. Наиболее распространенные (и простые) типы регулярных выражений выглядят так: | ||
+ | *abc Соответствует строкам, которые содержат "abc" в любом месте. | ||
+ | *^abc Соответствует строкам, начинающимся с "abc". | ||
+ | |Ширина=200px}} | ||
+ | Вот теперь повеселимся! Grep – команда, которая находит слова в | ||
+ | файлах. Охотно сказала бы, что ее название произошло от слова | ||
+ | "поиск" по-клингонски, но это было бы неправдой и только укрепило бы стереотип, что все технари любят Star Trek! На самом деле | ||
+ | название команды – сокращение от "Глобальный Парсер Регулярных | ||
+ | Выражений" (Global Regular Expression Parser), что означает "глобальный поиск строк, соответствующих регулярному выражению, и их | ||
+ | вывод на экран". Название команды происходит от команды текстового | ||
+ | редактора ed g/re/p, выполняющей подобные действия. | ||
+ | Начнем с создания специального каталога, где будем размещать новые | ||
+ | файлы. Чтобы убедиться, что каталог создан, используйте команду ls. | ||
+ | <code> | ||
+ | probert@ubuntu:~$ mkdir Work | ||
+ | probert@ubuntu:~$ ls | ||
+ | Bin Desktop Examples LAN Music Work | ||
+ | </code> | ||
+ | Откроем текстовый редактор и создадим новый файл report1.txt: | ||
+ | <code> | ||
+ | probert@ubuntu:~$ pico report1.txt | ||
+ | </code> | ||
+ | Pico – это текстовый редактор, который я использовала при написании | ||
+ | этой статьи. В дистрибутив Linux включено несколько текстовых редакторов; выбор одного из них определяется лишь вашими предпочтениями и наличием у редактора специальных функций, которые помогут | ||
+ | в решении именно вашей задачи. Когда текстовый редактор откроется, | ||
+ | напечатайте слово CompanyABC. Затем точно так же создайте второй | ||
+ | файл с именем report2.txt, который будет содержать слово companyabc. | ||
+ | Закончив, введите команду ls, и вы увидите примерно такой список: | ||
+ | <code> | ||
+ | probert@ubuntu:~$ ls | ||
+ | Bin Desktop Examples LAN Music report1.txt report2.txt Work | ||
+ | </code> | ||
+ | Обратите внимание, что файлы, которые мы создали, находятся рядом | ||
+ | с каталогом Work. Давайте переместим их в нужный каталог: | ||
+ | <code> | ||
+ | probert@ubuntu:~$ mv report*.txt /home/probert/Work | ||
+ | probert@ubuntu:~$ ls | ||
+ | Bin Desktop Examples LAN Music Work | ||
+ | </code> | ||
+ | Звездочка (*) – это специальный символ, который позволяет нам | ||
+ | делать все, что мы хотим, с файлами, название которых начинается со | ||
+ | слова report; каждый из таких файлов включается в команду. У меня | ||
+ | есть правила именования файлов и разделения их на категории, которых я строго придерживаюсь. Например, названия всех файлов отчетов | ||
+ | начинаются со слова report, счетов – со слова invoice и т.д. Пускай это | ||
+ | выглядит как ритуальные действия безнадежно больного ОКР, зато при | ||
+ | наличии методичного подхода нужные вещи находятся очень быстро! | ||
+ | Переместимся в каталог Work и снова используем ls, чтобы убедиться, | ||
+ | что все файлы перемещены: | ||
+ | <code> | ||
+ | probert@ubuntu:~$ cd Work | ||
+ | probert@ubuntu:~/Work$ ls | ||
+ | report1.txt report2.txt | ||
+ | </code> | ||
+ | Сейчас мы сделаем следующий шаг в поисках этого крайне важного | ||
+ | файла для нашего коллеги. Команда grep обладает множеством опций | ||
+ | (их список выведет команда man grep). Опция -r позволяет выполнить | ||
+ | рекурсивный поиск файлов, начиная с названного каталога, а опция -i | ||
+ | выполнит поиск без учета регистра. Попробуйте следующие команды с | ||
+ | опцией -i и без -i и посмотрите, как это повлияет на результаты поиска. | ||
+ | <code> | ||
+ | probert@ubuntu:~/Work$ grep -r -i 'CompanyABC' /home/ | ||
+ | probert/Work | ||
+ | </code> | ||
+ | Результат будет примерно таким: | ||
+ | <code> | ||
+ | /home/probert/Work/report1.txt:CompanyABC | ||
+ | /home/probert/Work/report2.txt:companyabc | ||
+ | </code> | ||
+ | Итак, мы нашли этот неуловимый файл; что же дальше? | ||
+ | |||
+ | === Часть 2: Стандартный ввод-вывод === | ||
+ | {{Врезка|Заголовок=Мини-проект: команды для умных| | ||
+ | Содержание=Есть несколько общих команд, о которых | ||
+ | полезно знать. Привожу некоторые из них без | ||
+ | объяснений; эти команды можно использовать | ||
+ | независимо от дополнительных опций. | ||
+ | Наберите их и посмотрите на результат. | ||
+ | {{{!}} | ||
+ | {{!}}date | ||
+ | {{!}}df | ||
+ | {{!}}- | ||
+ | {{!}}date +%D | ||
+ | {{!}}free | ||
+ | {{!}}- | ||
+ | {{!}}date +%T | ||
+ | {{!}}du | ||
+ | {{!}}- | ||
+ | {{!}}cal | ||
+ | {{!}}top | ||
+ | {{!}}- | ||
+ | {{!}}cal 1066 | ||
+ | {{!}}ps | ||
+ | {{!}}} | ||
+ | | Ширина=300px}} | ||
+ | Стандартный ввод/вывод позволяет вводить данные в программу из | ||
+ | любого источника и выводить данные в любой источник. Таким образом, можно направить вывод одной команды непосредственно на ввод | ||
+ | другой команды... правда, мило? Linux предоставляет три канала ввода/вывода, более известных как потоки ввода/вывода. По умолчанию стандартный ввод подразумевает клавиатуру, стандартный вывод – экран. | ||
+ | Третий поток ввода/вывода – это на самом деле поток вывода для сообщений об ошибках, предупреждений и оповещений: так легче отличить | ||
+ | сообщения об ошибках от остальных сообщений. Поток ошибок обычно | ||
+ | также выводится на экран, но (как и каждый из трех стандартных потоков) может быть перенаправлен. Этим мы сейчас и займемся. | ||
+ | Есть два основных способа перенаправления потоков данных; мы | ||
+ | можем использовать > или | (перенаправление и каналы соответственно). Если нужно просто направить стандартный вывод в файл, можно | ||
+ | напечатать команда > файл. Давайте попробуем это на реальном примере: найдем все файлы с именем passwd в каталоге /etc. Наберите | ||
+ | <code> | ||
+ | find /etc -name passwd | ||
+ | </code> | ||
+ | Результат будет примерно таким (он зависит от особенностей вашего | ||
+ | дистрибутива Linux): | ||
+ | <code> | ||
+ | probert@ubuntu:~$ find /etc -name passwd | ||
+ | find: /etc/ssl/private: Permission denied | ||
+ | /etc/passwd | ||
+ | /etc/pam.d/passwd | ||
+ | find: /etc/cups/ssl: Permission denied | ||
+ | </code> | ||
+ | Обратите внимание, что команда генерирует как стандартный поток | ||
+ | вывода, так и поток ошибок. Сейчас мы создадим файл findresult и | ||
+ | перенаправим стандартный поток вывода в этот файл, оставив на экране только ошибки. | ||
+ | <code> | ||
+ | probert@ubuntu:~$ find /etc -name passwd > findresult | ||
+ | find: /etc/ssl/private: Permission denied | ||
+ | find: /etc/cups/ssl: Permission denied | ||
+ | </code> | ||
+ | Перенаправим эти ошибки в другой файл, finderrors, используя 2>. | ||
+ | <code> | ||
+ | probert@ubuntu:~$ find /etc -name passwd 2> finderrors | ||
+ | /etc/passwd | ||
+ | /etc/pam.d/passwd | ||
+ | </code> | ||
+ | Наберите ls, и вы получите результат, похожий на мой. | ||
+ | <code> | ||
+ | probert@ubuntu:~$ ls | ||
+ | Bin Desktop Examples finderrors findresult LAN Music | ||
+ | </code> | ||
+ | |||
+ | Чтобы прочитать содержимое этих файлов, можно открыть их в текстовом редакторе pico: | ||
+ | <code> | ||
+ | probert@ubuntu:~$ pico findresult | ||
+ | </code> | ||
+ | Я предпочитаю просматривать небольшие файлы с помощью команды | ||
+ | cat. Ниже я использовала эту команду для просмотра результатов поиска в файлах findresult и finderrors. | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | Вы также можете добавить информацию в файл с помощью команды | ||
+ | >>. Давайте перенаправим стандартный вывод, чтобы добавить информацию в наш первый файл findresult следующим образом: | ||
+ | <code> | ||
+ | probert@ubuntu:~$ find /etc -name passwd 2>> findresult | ||
+ | </code> | ||
+ | Вы можете снова проверить результаты с помощью команды cat | ||
+ | findresult. Второй способ перенаправления потоков – вывод одной | ||
+ | команды прямо на вход другой (канализация). Давайте проверим | ||
+ | содержимое каталога /usr/lib, где находятся объектные файлы, библиотеки и системные двоичные файлы. В моем каталоге /usr/lib примерно полторы тысячи файлов – многовато, чтобы прокручивать этот | ||
+ | список один за другим! Если мы перенаправим вывод ls на ввод команды less, то получим список, в котором можно перемещаться по страницам, в удобном для нас темпе. Попробуйте: | ||
+ | <code> | ||
+ | ls /usr/lib | less | ||
+ | </code> | ||
+ | Достигнув конца документа, нажмите клавишу Q, чтобы вернуться в | ||
+ | командную строку. Вы также можете предварительно отсортировать | ||
+ | этот список по убыванию, например, таким образом: | ||
+ | <code> | ||
+ | ls /usr/lib | sort -r | less | ||
+ | </code> | ||
+ | Краеугольный камень философии Unix заключается в том, чтобы каждая программа делала что-то одно по-настоящему хорошо, позволяя | ||
+ | использовать свой вывод как ввод другой программы. Использование | ||
+ | каналов позволяет провести этот принцип в жизнь, создавая очень | ||
+ | эффективные цепочки команд. | ||
+ | Теперь, разузнав, как работают grep и каналы, сведем их вместе для | ||
+ | поиска того самого отчета и отправим его нашему коллеге: | ||
+ | <code> | ||
+ | grep -r -i -H CompanyABC /home/rjprobert/work | ||
+ | cat report1.txt | mail colleague@work.com | ||
+ | </code> | ||
+ | Миссия завершена! | ||
---- | ---- | ||
− | + | Через месяц Moнтирование, создание резервных копий, распаковка файлов из tar и zip. |
Текущая версия на 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.