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

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

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

`User$ find / -name '*sh' > result &`&#x20;

`[1] 3345`&#x20;

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

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

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

`user$ find / -name '*sh' > result & ls`&#x20;

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

`user$ ls; date`

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

`user$ (ls; date) > content`&#x20;

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

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

`user$ команда1 && команда2`&#x20;

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

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

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2F5BNf2SepW9zYvO5ZiML1%2Fimage.png?alt=media&#x26;token=1264d3bc-63f8-43d7-af29-75141eb1a60e" alt=""><figcaption><p>Выполнение команд</p></figcaption></figure>

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

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

<figure><img src="https://1475196942-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUQ5Utaeg7lWvTKSyoVP7%2Fuploads%2Fa5ShozVDUgSzT8xD9cyd%2Fimage.png?alt=media&#x26;token=b6d62bfd-c1be-4805-817f-5e66b7e748cd" alt=""><figcaption></figcaption></figure>

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

* Каталог **/** - корневой каталог системы
* Каталог **\~** - аналогичен каталогу **/home/\*username\*** и обозначает домашний каталог пользователя.&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://antons-organization-1.gitbook.io/administrirovanie-linux/vvedenie-v-disciplinu/obshie-svedeniya-o-rabote-v-komandnoi-obolochke-linux/vypolnenie-komand.-prosteishie-komandy-dlya-raboty-s-katalogami.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
