- 6 операторов для цепочек командной строки оболочки Bash
- Вступление
- 1. && Оператор (AND оператор)
- 2. OR Оператор (||)
- 3. Оператор AND & OR (&& и ||)
- 4. Оператор PIPE (|)
- 5. Оператор точка с запятой (;)
- 6. Амперсанд Оператор (&)
- Объединения команд и обработка выходных данных в shell
- выполнение команд последовательно в bash
- 20 приёмов работы в командной строке Linux, которые сэкономят уйму времени
- Приёмы работы в командной строке Linux и экономия времени
- 0. Автозавершение команд с использованием клавиши Tab
- 1. Переход в последнюю рабочую директорию
- 2. Возврат в домашнюю директорию
- 3. Вывод на экран содержимого директории
- 4. Вызов нескольких команд в одной строке
- 5. Выполнение нескольких команд в одной строке и условие на успешное завершение предыдущей команды
- 6. Простой поиск и использование ранее введённых команд
- 7. Разблокировка терминала после случайного нажатия Ctrl + S
- 8. Перемещение к началу или концу строки
- 9. Чтение лог-файлов в режиме реального времени
- 10. Чтение сжатых лог-файлов без их распаковки
- 11. Использование команды less для чтения файлов
- 12. Повторное использование последнего элемента из предыдущей команды с помощью !$
- 13. Использование предыдущей команды в текущей команде с помощью !!
- 14. Использование псевдонимов для исправления ошибок ввода
- 15. Копирование и вставка в терминале Linux
- 16. Завершение работы команды или процесса
- 17. Использование команды yes для автоматизации интерактивных команд или скриптов
- 18. Очистка содержимого файла без удаления самого файла
- 19. Выяснение наличия в директории файлов, содержащих определённый текст
- 20. Вызов справки для любой команды
- Итоги: делитесь полезными советами!
6 операторов для цепочек командной строки оболочки Bash
Вступление
Теперь давайте обсудим каждый Оператор один за другим.
1. && Оператор (AND оператор)
Синтаксис использования оператора AND:
Оператор выполнит вторую команду только в том случае, если команда 1 успешно выполнена.
Теперь рассмотрим синтаксис выше.
Здесь команда 2 будет выполняться только в том случае, если команда 1 выполнена успешно. Например :
Здесь, как вы можете видеть ниже, первая команда успешно завершена, тогда выполняется вторая команда df -h.
Теперь давайте проверим оператор AND по-другому.
Здесь я не буду выполнять первую команду и посмотрю, выполняется ли вторая команда или нет.
Как вы можете видеть выше, первая команда не работает, поэтому вторая команда не выполняется.
2. OR Оператор (||)
Синтаксис использования оператора OR:
OR полностью противоположна оператору &&.
OR выполнит вторую команду только в том случае, если первая команда провалится.
Теперь давайте приведем пример:
Как вы можете видеть выше, вторая команда выполнена, то есть «df -h», когда первая команда не удалась.
3. Оператор AND & OR (&& и ||)
Комбинация оператора && и OR (||) довольно интересна и даст вам хороший результат, если вы используете его правильно.
Комбинация этих двух операторов, как например, if … else в программировании.
Давайте приведем пример, чтобы вы получили больше представлений по этому поводу:
Как вы можете видеть выше, наша первая команда успешно выполнена, поэтому мы можем получить требуемое сообщение.
4. Оператор PIPE (|)
PIPE – это своего рода оператор, который может использоваться для отображения вывода первой команды, принимая ввод второй команды.
Например, вы хотите проверить все текущие системные процессы, используя команду ps -ef. но поскольку список процессов настолько длинный, что его нельзя охватить на одном экране.
В этом случае вы можете использовать фильтр с командой more.
5. Оператор точка с запятой (;)
Оператор точка с запятой выполняет несколько команд одновременно последовательно, как упоминалось, и обеспечивает вывод без зависимости от успеха и отказа других команд, таких как && и OR (||).
Посмотрите пример ниже:
6. Амперсанд Оператор (&)
Оператор Амперсанда – это своего рода оператор, который выполняет заданные команды в фоновом режиме.
Вы можете использовать этот оператор для одновременного выполнения нескольких команд.
Вы также можете выполнять несколько команд с помощью оператора Ampersand. См. Команду ниже.
Источник
Объединения команд и обработка выходных данных в shell
Дата добавления: 07 апреля 2010
Объединение команд это очень полезная операция которую я сам очень часто применяю в терминале. Допустим вам нужно куда-то срочно уйти, но вы хотите скомпилировать что-либо. Вы знаете, что сначала нужно ввести ./configure потом make и только потом make install, при том окончание работы make иногда приходиться ждать час. В таких моментах придет объединение команд. Зная этот прием, вы введете ./configure && make && make install и уйдете по своим делам в то время как все нужные команды выполняться сами и полностью завершат компиляцию.
Можно даже добавить команду shutdown -h now в конец для отключения компьютера после выполнения всех операций.
Последовательное выполнение команд вне зависимости от исхода работы предыдущей.
Выполнить сколько угодно команд последовательно можно путем разделение команд символом ; (точка с запятой).
Пример:
./configure ; make ; make install
-выполняться все команды последовательно вне зависимости от исхода предыдущих.
То есть, если в ./configure будет выведено сообщение об ошибки, то интерпретатор все равно попробует выполнить make и make install .
Последовательное выполнение команд при условии успешного завершения предыдущих.
Символы && (два амперсанда) позволяют выполнять действие подобные предыдущей конструкции, но при не успешном завершении команды интерпретатор прекратит выполнение всего сценария.
Например:
./configure && make && make install
-если в ./configure будет ошибка, то последующие команды не будут исполняться. Если же все прошло удачно, то начнут выполняться make и make install притом если в make будет ошибка, то make install выполняться тоже не будет.
Выполнение команды, если предыдущая завершилась ошибкой.
Можно выполнить команды не только при успешном завершении предыдущей, но и при ошибочном завершении предыдущей с помощью символов || (две прямых черты).
Пример:
make install || echo ‘Ошибка!’
-выведется слово ошибка при неудачном завершении команды make install , иначе это слово выводиться не будет.
Использование выходных данных одной команды при вызове другой.
Давайте посмотрим на пример:
touch $(uname -r)
Эта команда создаст файл имя которого будет версия текущего ядра linux.
Команде touch передается с помощью конструкции $() команда выходные данные которой можно использовать для аргумента первой команды.
Источник
выполнение команд последовательно в bash
Следующий bash позволяет запускать команды 1,2,3 во всех папках с именами, включенными в файл «list.txt»,
Команды 1,2,3 в коде объединены во всех папках с именами, включенными в файл «list.txt». Как команды могут запускаться один за другим во всех папках (т.е. когда первая команда заканчивает второй запуск команды и т. Д.). Я пытался использовать «wait» между командами, но это не сработало! Решение, предлагаемое здесь. Выполнение команд consequtively по нескольким папкам не сработало! Я ищу другое решение
Если вы хотите запустить все каталоги одновременно (с командой 1 через 3, оставаясь последовательной), замените:
Если вы просто хотите запустить их последовательно, но все еще в фоновом режиме, и вам не нужно возвращать значение каждой команды, вы можете сделать это:
Если вы хотите, чтобы command2 запускался, если command1 была успешной, вы можете использовать && :
Если вы хотите запускать все синхронно и на переднем плане, просто удалите & allogether:
Удалите & чтобы следующая команда была выполнена после завершения предыдущего.
Если вы хотите, чтобы остальные команды выполнялись только в том случае, если предыдущие выполнялись, то оператор && – это путь.
то command 2 будет выполняться только в том случае, если command 1 возвращает 0 (это успешно), а command 3 будет выполняться только в том случае, если command 2 возвращает 0. И это означает, что command 2 ждет завершения command 1 .
Источник
20 приёмов работы в командной строке Linux, которые сэкономят уйму времени
Тема полезных приёмов работы в терминале Linux неисчерпаема. Казалось бы — всё устроено очень просто: приглашение оболочки, да введённые с клавиатуры команды. Однако, в этой простоте кроется бездна неочевидных, но полезных возможностей. Именно поэтому мы регулярно публикуем материалы, посвящённые особенностям работы в командной строке Linux. В частности, сегодня это будет перевод статьи, автор которой увлечён экономией времени через повышение продуктивности труда.
Если вас интересует работа в командной строке Linux — вот некоторые из наших материалов на эту тему:
Приёмы работы в командной строке Linux и экономия времени
Вам когда-нибудь доводилось видеть, как коллега использует некие простые команды Linux для решения задач, решение которых занимает у вас несколько строк? Должно быть, когда подобное случалось, вы только и могли сказать себе: «Ну ничего ж себе! Я и не знал, что это можно сделать так просто».
В этом материале я покажу вам некоторые профессиональные приёмы работы в командной строке Linux, которые сэкономят вам уйму времени и в некоторых случаях избавят от плохого настроения. Мало того, что ваши друзья или коллеги скажут: «Ну надо же!», глядя на вас. Эти приёмы, кроме того, помогут вам увеличить личную продуктивность, так как вам понадобится вводить меньше команд и даже делать меньше щелчков мышью.
Нельзя сказать, что эти советы по Linux предназначены только для начинающих. Вполне возможно, что даже опытные пользователи найдут здесь что-нибудь полезное, то, о чём они не знали несмотря на то, что пользовались Linux многие годы. Linux изучают на основе опыта. Тут сгодится и собственный опыт, и опыт других людей.
Прежде чем мы начнём, хочется отметить, что некоторые из приведённых здесь методов зависят от настройки командной оболочки.
0. Автозавершение команд с использованием клавиши Tab
Я начну с кое-чего вполне очевидного, но весьма важного: с автозавершения команд с помощью клавиши Tab .
Когда вы начинаете набирать что-то в терминале Linux, вы можете нажать клавишу Tab , после чего будет выведена подсказка, содержащая набор вариантов продолжения ввода, начинающихся с только что введённых символов.
Например, собираясь скопировать файл с именем my_best_file_1.txt , вы можете просто ввести cp m и нажать Tab для того, чтобы увидеть возможные варианты продолжения команды.
Использование клавиши Tab для автозавершения ввода
Клавишу Tab можно использовать и для автозавершения команд.
1. Переход в последнюю рабочую директорию
Представьте, что вы работали в директории, до которой не так уж и просто добраться, а потом перешли в другую директорию, расположенную совершенно в другом месте. Потом вы поняли, что вам нужно вернуться в предыдущую директорию. В этом случае достаточно воспользоваться следующей командой:
Она позволит вам оказаться в последней рабочей директории. Теперь в подобных ситуациях вам не нужно больше будет вводить длинные пути, или пользоваться копированием и вставкой.
Простое переключение между директориями
2. Возврат в домашнюю директорию
Этот приём тоже весьма очевиден. Вы можете использовать нижеприведённую команду для того, чтобы вернуться в домашнюю директорию из любого места:
Однако, в домашнюю директорию можно вернуться ещё быстрее — с помощью команды cd .
В большинстве современных дистрибутивов Linux оболочка предварительно настроена на именно такое восприятие команды cd . Это сэкономит вам пару нажатий клавиш на клавиатуре.
Самый быстрый способ перехода в домашнюю директорию
3. Вывод на экран содержимого директории
Возможно, вы зададитесь вопросом о том, в чём состоит тонкость использования команды для вывода содержимого директории. Все знают, что для этой цели служит команда ls -l .
Но в том-то всё и дело. Практически все используют команду ls -l для вывода содержимого директорий, в то время как то же самое можно сделать с помощью следующей команды:
Работоспособность этой команды зависит от дистрибутива Linux и от настройки оболочки, но весьма вероятно, что вы сможете воспользоваться ей в большинстве дистрибутивов.
Использование команды ll вместо команды ls -l
4. Вызов нескольких команд в одной строке
Представьте, что вам нужно последовательно выполнить несколько команд. Наверное, вы вводите одну команду, потом ждёте, когда она завершится, дальше — вводите следующую?
В подобной ситуации полезным окажется разделитель команд ; (точка с запятой). При таком подходе вы можете ввести несколько команд в одной строке. При этом, в отличие от обычного ввода команд, для выполнения следующей команды не надо ждать завершения предыдущей.
5. Выполнение нескольких команд в одной строке и условие на успешное завершение предыдущей команды
Только что мы рассмотрели способ вызова нескольких команд в одной строке. Это экономит время. Но что если вам нужно, скажем, при вызове двух команд, чтобы следующая команда была выполнена только в том случае, если предыдущая завершится без ошибок?
Представьте себе, что хотите собрать код, а затем, если сборка оказалась успешной, вызвать make ?
В подобной ситуации можно использовать разделитель && . Этот разделитель позволяет гарантировать то, что следующая команда будет выполнена лишь в том случае, если предыдущая отработает успешно.
Вот хороший пример использования && :
6. Простой поиск и использование ранее введённых команд
Представьте себе, что вы, пару минут или пару часов назад, вводили длинную команду, и вам снова нужна эта команда. Причём, проблема заключается в том, что вспомнить точно эту команду вы не можете.
В подобной ситуации вас спасёт обратный поиск. Данная методика позволяет проводить поиск в истории команд по ключевому слову. Тут достаточно использовать комбинацию клавиш Ctrl + R для запуска обратного поиска и ввести что-то, имеющее отношение к команде. Система просмотрит историю команд и покажет команды, соответствующие введённому запросу.
По умолчанию показан будет лишь один результат. Для того, чтобы увидеть больше результатов, соответствующих запросу, вам понадобится использовать комбинацию клавиш Ctrl + R снова и снова. Для того, чтобы выйти из режима обратного поиска, нажмите Ctrl + C .
Обратный поиск по истории команд
Обратите внимание на то, что в некоторых оболочках Bash для перебора результатов поиска можно пользоваться клавишами Page Up и Page Down .
7. Разблокировка терминала после случайного нажатия Ctrl + S
Возможно, вы привыкли пользоваться комбинацией клавиш Ctrl + S для сохранения файлов. Но если нажать эти клавиши в терминале Linux, вы его заблокируете.
Если раньше вы, для того, чтобы исправить положение, вынуждены были закрывать и снова запускать терминал — теперь может вздохнуть спокойно, больше вам этого делать не придётся. Для того, чтобы привести терминал в рабочее состояние, просто воспользуйтесь комбинацией клавиш Ctrl + Q .
8. Перемещение к началу или концу строки
Представьте себе, что вы вводите длинную команду и где-нибудь посередине понимаете, что должны что-нибудь изменить в её начале. Вероятно, вы используете клавиши-стрелки для того, чтобы сначала переместиться в начало строки, а потом вернуться в конец.
Конечно, в подобной ситуации можно использовать клавиши Home и End , но, как вариант, с помощью комбинации клавиш Ctrl + A можно перейти в начало строки, а с помощью комбинации Ctrl + E — в конец.
Перемещение к началу или концу строки
Мне такой способ кажется удобнее, чем использование клавиш Home и End , особенно когда я работаю на ноутбуке.
9. Чтение лог-файлов в режиме реального времени
Когда вам нужно проанализировать файлы журналов, в которые, во время анализа, пишет данные какое-нибудь работающее приложение, вы можете использовать команду tail с опцией -f .
Кроме того, вы можете использовать команду grep в её обычном виде для отображения только тех строк, которые вас интересуют:
Также тут можно задействовать опцию F . Это приведёт к тому, что утилита tail продолжит работать даже в том случае, если просматриваемый лог-файл будет удалён. При таком подходе, если этот файл снова будет создан, tail продолжит выводить данные из него на экран.
10. Чтение сжатых лог-файлов без их распаковки
Серверные журналы обычно сжаты с помощью gzip для экономии места на диске. Это может привести к некоторым неудобствам при анализе логов разработчиками или системными администраторами. Вам может понадобиться использовать команду scp для копирования файла в свою локальную директорию, а после этого извлечь файл из архива для того, чтобы его просмотреть, так как у вас может не быть разрешения на запись туда, где хранится интересующий вас файл.
Тут нам на помощью приходит группа команд, имя которых начинается с буквы «z». Эти команды являются альтернативой обычным командам, которые используются для работы с файлами журналов. Среди них — less , cat , grep , и другие.
Итак, используя команды zless , zcat , zgrep и подобные им, вам не придётся явным образом распаковывать сжатые файлы. Подробности об этих командах можно посмотреть здесь.
Кстати, когда я рассказал об этих «секретных» командах коллеге, мне досталась чашка кофе.
11. Использование команды less для чтения файлов
Если вам нужно просмотреть файл, особенно — большой, можно попробовать команду cat , но гораздо лучше поискать что-нибудь другое. Дело в том, что cat выведет на экран весь файл, что не так уж и удобно.
Для просмотра файлов можно воспользоваться редакторами вроде Vi или Vim, работающими в терминале, но если вам просто нужно прочесть файл, очень кстати окажется команда less .
Во время сеанса работы с less можно искать нужные фрагменты текста по ключевым словам, перемещаться по страницам, выводить данные с номерами строк, и так далее.
12. Повторное использование последнего элемента из предыдущей команды с помощью !$
Во многих ситуациях очень кстати оказывается возможность использования аргумента предыдущей команды.
Предположим, вам нужно создать директорию, а потом в неё перейти. Тут можно воспользоваться опцией !$ , вводя команду перехода после команды создания директории.
Применение !$ для использования аргумента последней команды
Ещё лучше то же самое делается с помощью сочетания клавиш Alt +. (точка). Точку можно использовать несколько раз для перебора опций последней команды.
13. Использование предыдущей команды в текущей команде с помощью !!
С помощью !! можно вызвать всю предыдущую команду. Этот приём оказывается особенно полезным, когда вам нужно выполнить команду и оказывается, что для её выполнения нужны привилегии суперпользователя. Например, на рисунке ниже показана ситуация, в которой команда sudo !! позволяет сэкономить немало времени.
Воспользуйтесь. для подстановки последней команды в качестве аргумента
14. Использование псевдонимов для исправления ошибок ввода
Возможно, вы уже знакомы с командой alias . Её можно использовать для исправления ошибок во введённых командах.
Например, может случиться так, что вы часто вводите gerp вместо grep . Если с вредной привычкой справиться никак не удаётся, запишите псевдоним в свой файл bashrc следующим образом:
Теперь вам не придётся перенабирать эту команду если вы введёте её имя неправильно.
15. Копирование и вставка в терминале Linux
Этот совет несколько неоднозначен, так как он зависит от дистрибутива Linux и от терминала.
Но обычно команды копирования и вставки можно вызывать следующим образом:
- Выделите текст, который надо скопировать, и щёлкните правой кнопкой мыши для его вставки (работает в Putty и других SSH-клиентах для Windows).
- Выделите текст, который надо скопировать, после чего щёлкните центральной кнопкой мыши (колесом прокрутки) для того, чтобы его вставить.
- Используйте комбинации клавиш Ctrl + Shift + C для копирования, и Ctrl + Shift + V для вставки.
16. Завершение работы команды или процесса
Возможно, то, что я тут хочу посоветовать, совершенно очевидно, однако, всё равно об этом расскажу. Если команда выполняется на переднем плане и вы хотите из неё выйти, можете нажать клавиши Ctrl + C для того, чтобы её остановить.
17. Использование команды yes для автоматизации интерактивных команд или скриптов
Если вам приходится работать с некоторыми командами или скриптами, которые предусматривают взаимодействие с пользователем, и вы знаете, что будете вводить Y в ответ на каждый вопрос программы, можете автоматизировать этот процесс с помощью команды yes . Делается это так:
18. Очистка содержимого файла без удаления самого файла
Если вы хотите очистить содержимое текстового файла, не удаляя сам файл, можете использовать следующую команду:
19. Выяснение наличия в директории файлов, содержащих определённый текст
Командная строка Linux поддерживает множество способов поиска информации. Однако, если вам просто нужно узнать, имеются ли в некоей директории файлы, которые содержат определённый текст, вы можете воспользоваться такой командой:
Однако я советую всем, кому нужен поиск в Linux, разобраться как следует с командой find .
20. Вызов справки для любой команды
Хочу завершить этот материал одним весьма очевидным, но, тем не менее, очень важным «трюком», который заключается в вызове справки для команды или инструмента командной строки.
Практически все средства командной строки содержат справочную информацию, раскрывающую особенности их использования. Обычно чтение справки помогает разобраться с основами команды. Вызвать справку можно так:
Итоги: делитесь полезными советами!
Я намеренно не включил в этот материал команды вроде fuck, так как они не из тех стандартных средств, которые можно найти буквально повсюду. То, о чём я тут рассказал, может принести пользу при работе практически со всеми дистрибутивами Linux и оболочками командной строки без необходимости установки новых программ.
Уважаемые читатели! Возможно, вы уже знакомы с некоторыми из приведённых здесь методов использования команд Linux, а может и знаете их все. В любом случае, приглашаем вас поделиться вашими любимыми приёмами в комментариях.
Источник