Выполнение команд. Простейшие команды для работы с каталогами

Обычно для запуска команды необходимо ввести ее имя. В командной строке можно указать сколько угодно специальных символов, которые будут интерпретированы bash еще до запуска команды. Таким же образом можно запускать команды в фоновом режиме, охватывать с помощью подстановочных символов (джокеров) одновременно много похожих имен файлов (например *.tex), подставлять результаты выполнения одной команды в список параметров другой команды и т. д.

Фоновые процессы. Важнейший и самый востребованный подстановочный символ — &. Если указать его в конце командной строки, bash запустит программу в фоновом режиме. Это имеет смысл в первую очередь тогда, когда на выполнение команды уходит много времени, чтобы можно было продолжать работу, не дожидаясь окончания выполнения такой программы.

User$ find / -name '*sh' > result &

[1] 3345

Вышеуказанная команда ищет по всей файловой системе файлы, названия которых оканчиваются на sh. Список найденных файлов записывается в файле result. Поскольку команда выполняется в фоновом режиме, работу можно не прерывать. Вывод [1] 3345 означает, что фоновый процесс имеет номер PID 3345. Здесь PID означает идентификатор процесса (process ID). Номер PID интересен в том случае, когда процесс был аварийно завершен командой kill. Номер в квадратных скобках — это номер фонового процесса, запущенного в bash. Как правило, этот номер не важен.

Если при запуске команды вы забудете поставить символ &, не следует ни дожидаться окончания выполнения программы, ни принудительно завершать программу нажатием Ctrl+C. Гораздо лучше приостановить выполнение программы, нажав Ctrl+Z, а затем продолжить ее работу в виде фонового процесса с помощью команды bg.

Выполнение нескольких команд. После символа & вы также можете указать следующую команду. В таком случае первая команда будет выполняться в фоновом режиме, а вторая — на виду. В следующем примере рассмотренная выше команда find вновь запускается в фоновом режиме. Однако ls одновременно выводит содержание текущего каталога:

user$ find / -name '*sh' > result & ls

Если вместо символа & поставить точку с запятой, то bash поочередно выполнит команды в фоновом режиме:

user$ ls; date

Эта команда сначала отображает содержание текущего каталога, а затем выводит текущий файл. Если необходимо перенаправить всю эту информацию в файл с помощью >, то обе команды ставятся в круглых скобках. В таком случае они выполняются одной и той же оболочкой.

user$ (ls; date) > content

В файле content теперь находится список файлов, созданный ls, а также текущая дата, выясненная date. Благодаря круглым скобкам обе команды выполняются одной и той же оболочкой и выдают общий результат (как правило, ситуация иная — при запуске каждой новой команды активируется новая оболочка).

Используя сочетания символов && и ||, можно выполнять команды относительно, то есть в зависимости от результата другой команды.

user$ команда1 && команда2

Выполняет команду1. Только в случае, если эта команда была выполнена успешно (без ошибки, без выдачи 0 в качестве возвращаемого значения), выполняется команда2.

user$ команда1 || команда2

Другие возможности для создания условий и ветвления команд связаны с использованием оболочковой команды if, которая, однако, будет интересна лишь тем, кто собирается заниматься программированием на языке оболочки.

Простейшие команды для работы с каталогами. Хотя при работе с KDE и Gnome в вашем распоряжении есть современные файловые менеджеры, опытные пользователи Linux охотнее работают с текстовыми командами. В след. табл. приведены самые важные из таких команд.

Также, приведу краткую информацию по некоторым каталогам:

  • Каталог / - корневой каталог системы

  • Каталог ~ - аналогичен каталогу /home/*username* и обозначает домашний каталог пользователя.

Last updated