Современные файловые системы – это древовидные каталоги с корневой и родительскими директориями. Движение вверх по родительским каталогам приводит к корневому. В некоторых системах встречается несколько корневых каталогов, например, всем известные диски Windows: C:\ , A:\ , etc.
Но в Unix-подобных системах все по-другому: здесь принят один корневой каталог с именем \ . А вот и основные команды Bash для перемещения по файловой системе:
При работе в файловой системе пользователь находится в каталоге, который называется текущим или рабочим. Команда pwd выводит рабочий каталог пользователя:
С ls вы сможете вывести содержимое каталога (файлы и дочерние директории):
Перейти в другой каталог поможет cd :
Используйте команду cd .. для быстрого перемещения в родительскую директорию:
используется для перемещения домой, в /home/$USER :
Три bash команды для управления
Иногда вам потребуется запускать эти команды одну за другой. Тогда на помощь приходит оператор ; :
Точка с запятой означает, что сначала перечисляется содержимое рабочего каталога с помощью ls , а затем pwd выводит местоположение каталога. Еще один полезный инструмент для создания цепочек команд – && . При использовании && команда справа не будет выполняться, если команда слева не выполнена:
Но если использовать ; , вторая команда выполняется даже после ошибки в первой:
А вот вам небольшой трюк в bash. Команда & похожа на && , но на самом деле выполняет другую функцию. Часто процессы блокируют ввод в терминал во время работы. Чтобы свернуть подобный процесс в фон, используйте & в конце команды. Тогда процесс выполняется в фоне, не блокируя ввод в окно терминала:
Скорая помощь для тех, кто забыл
Даже если вы давно пользуетесь продвинутыми командами bash, вы все еще можете забыть что-то из базиса, и это нормально. Всегда можно получить подсказку для большинства утилит. Как? Просто введите -h или –help в конце команды:
Программы и команды Linux сопровождаются справочным руководством. Введите man перед командой, чтобы вызвать руководство. Выход из man – клавиша q:
Быстрый просмотр и редактирование файлов
head выводит первые строки файла. Флаг -n указывает количество отображаемых строк:
tail выводит последние строки файла. Можно получить последние n строк или конец файла, начиная с N -й строки, с помощью tail -n + N :
Используйте cat с одним или несколькими файлами: так можно быстро посмотреть содержание.
nano – минималистичный текстовый редактор командной строки. Редактор подходит начинающим и тем, кто не любит разнообразия. На начальных этапах он покроет все ваши требования.
nedit – легкий графический редактор, который открывается в окне. Редактирование по принципу «укажи и щелкни» с перетаскиванием, есть подсветка синтаксиса. Можно использовать nedit , когда следует постоянно вносить небольшие изменения и перезапускать скрипт.
Современные редакторы предлагают функции поиска и замены, подсветки синтаксиса и так далее. vi (m) и emacs функциональней nano и nedit , но сложней в освоении.
Создаем и удаляем файлы/директории
touch нужен для изменения временных меток файлов и для создания пустого файла. Можно создать новый файл в nano :
Затем править файл и сохранить:
Или использовать touch :
mkdir создает новые каталоги:
Теперь удалим файл с помощью команды rm .
WARNING: файл невозможно восстановить!
Необходимость подтверждения вызывается флагом -i :
Удаляйте пустые каталоги с помощью rmdir . Если ls -a используется в пустом каталоге, команда выводит только ссылку на сам каталог . и ссылку на родительский каталог .. :
Команда rmdir удаляет только директории:
Чтобы удалить директорию с содержимым, используйте rm -rf :
Перемещаемся, копируем, ссылаемся
mv перемещает и переименовывает файл. Для переименования введите новое имя файла:
cp копирует файл:
Bash: история команд
В Bash доступна функция автоматического завершения команды по кнопке tab. Введите начальную часть команды и нажмите tab, чтобы терминал предложил полную строку.
Нажмите клавишу tab после ls t , и команда будет завершена автоматически.
Иногда нужно нажимать tab несколько раз:
Bash хранит историю ранее введенных команд. Чтобы выполнить поиск нажмите Ctrl + r:
Нажимаем Ctrl + r:
Вводим «mobi» и находим последнюю команду с этой строкой:
Деревья каталогов, использование диска и процессы
По умолчанию mkdir создает только один каталог. Это означает, что, например, если каталога a/b не существует, то a/b/c не может быть создан с помощью mkdir :
Но если указать флаг -p , mkdir создаст все директории, которые отсутствуют в указанном пути:
tree отображает структуру каталога в виде отформатированного дерева. По умолчанию tree печатает древовидную структуру, начиная с указанного каталога, но количество уровней ограничивается флагом -L :
Скрывайте пустые каталоги в дереве с помощью –prune . Обратите внимание, что при этом не выводятся каталоги, которые содержат другие пустые каталоги:
df показывает, сколько места занимают файлы на дисках.
В приведенной выше команде -h означает не «help», а «human-readable». Некоторые команды используют этот флаг для отображения размеров в K для килобайт и G для гигабайт, вместо записи гигантского числа байтов.
du показывает использование файлового пространства каталогами. Если хочется узнать, сколько свободного места на жестком диске, используйте df , а для каталогов используйте du :
df принимает флаг –max-deep = N , который показывает директории только на N уровней в указанном каталоге:
ps показывает запущенные процессы пользователей:
Вот вам и основы Bash. Но давайте копнем чуть глубже.
Другие полезные команды bash
Меняйте пароль учетной записи с помощью passwd . Команда проверяет текущий пароль и просит ввести новый пароль дважды:
logout выполняет выход пользователя из сеанса оболочки:
exit выходит из консоли:
Запустите команду clear , чтобы переместить текущую строку терминала в верхнюю часть экрана. Используйте для очистки рабочего пространства.
Используйте * при поиске файлов. Обратите внимание на разницу между следующими командами:
Используйте * много раз в одной команде с символами и без:
Ну все! Теперь вы точно застрахованы от случаев, когда bash команда не найдена. А как вы начинали работать с bash? Поделитесь своим списком команд bash для начинающих 😉