Навигация по файловой структуре
Команды cd, ls и pwd
вместе составляют основу навигации по файловой структуре. Зная их, вы никогда не потеряетесь и не запутаетесь.
При запуске терминала командная строка переходит в режим ожидания ввода. Этот режим привязан к файловой системе. По умолчанию новая сессия командной оболочки открывается внутри домашней директории пользователя, которая у каждого пользователя своя, её называют working directory.
$ pwd
pwd позволяет вывести рабочий каталог. Название команды является аббревиатурой и расшифровывается как "print working directory".
$pwd
/home/vadim
$ ls
ls (list) — программа, которая выводит список файлов и директорий в рабочей (текущей) директории. Вывести все файлы, включая скрытые, можно командой ls -a
$ls
Desktop Documents Downloads Library Movies Music Pictures Public
$ cd
cd (change directory) — программа, с помощью которой осуществляется перемещение по файловой структуре. Для этого ей нужно передать аргумент — директорию, в которую необходимо переместиться. Для того чтобы вернуться в каталог-родитель, используется специальное значение ' .. '
$ cd Music
~/Music$ // перешли в Music
~/Music$ cd ..
$ // вышли из Music
Нужно отметить, что команда cd, выполненная без аргументов, перебрасывает в домашнюю директорию текущего пользователя.
Домашняя директория пользователя имеет специальное обозначение — ' ~ ' (тильда), которое в момент выполнения команды заменяется на абсолютный путь. Поэтому из любого места можно сделать прямой переход в любую поддиректорию домашней директории.
$ cd ~/Music/LP
~/Music/LP$ // перешли в Music/LP
Аргументы и опции (их также называют флагами) команд
Рассмотрим следущую команду:
$ ls -a Music
Music — это аргумент, -a — это опция.
Опции всегда начинаются с одного или двух дефисов. Опции можно комбинировать. Bash позволяет объединять опции и писать так ls -la (тож самое ls - a -l) Использование опций никак не отменяет возможность использования аргументов (в зависимости от программы).
Значение опции указывается через пробел от самой опции. Если значение опции содержит в себе специальные или пробельные символы, то его нужно оборачивать в кавычки (не важно в какие).
Манипулирование файловой структурой
Файловую структуру можно не только просматривать, но и всячески модифицировать, но возможность модифицировать файловую структуру завязана на правах пользователя. Если нет соответствующих прав, вы получите ошибку доступа. Место, где вы гарантированно можете экспериментировать — ваша домашняя директория(тут всё доступно на запись).
$ rm
Удаляется файл командой rm (remove files):
$ rm empty-index.html
$ mv
В *nix-системах не существует понятия "переименовать файл". Переименование всегда равносильно перемещению, которое выполняется командой mv (move):
$mv file renamed-file
$ cp
Для копирования файлов и директорий используется утилита cp (copy). Её первый аргумент — имя источника (откуда), второй — имя приёмника (куда).
$ cp renamed-file renamed-file-copy
$ mkdir
Утилиты для работы с директориями частично отличаются. Создание директории выполняется командой mkdir (make directory).
$ mkdir my-dir
Удаление директорий
Удаление директорий выполняется той же командой, что и удаление файлов, но без флагов оно выдаёт предупреждение:
$ rm my-dir/
$ rm: cannot remove 'my-dir/': Is a directory
Чтобы не было ошибки, нужно добавить флаг -r. Он включает режим рекурсивного (r — recursion) удаления содержимого директорий, то есть идёт просмотр всего, что внутри во всех вложенных директориях и поддиректориях (до самого конца).
$ rm -r my-dir
Если внутри директории есть файлы, то команда rm начнёт задавать вопрос по каждому из них, нужно ли его удалять. Если вы точно уверены, что удалить нужно всё, добавьте флаг -f. В таком случае rm удалит всю директорию без вопросов.
$ rm -rf one
Переменные окружения
Вспомним, что команда cd без аргументов делает домашнюю директорию пользователя рабочей (working directory). Возникает вопрос, каким образом она узнаёт о том, где находится домашняя директория? Эта команда ориентируется на так называемую переменную окружения.
Переменные окружения похожи на переменные в языках программирования. Они существуют в рамках запущенной сессии командного интерпретатора, подгружаются туда во время его инициализации (но это не единственный путь их появления). Посмотреть установленные переменные можно командой (формат вывода простой: слева от знака равно имя переменной, справа — значение. ):
$ env
KONSOLE_DBUS_SERVICE=:1.209
KONSOLE_DBUS_SESSION=/Sessions/1
PROFILEHOME=
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
KONSOLE_VERSION=191203
KDE_SESSION_UID=1000
Основное предназначение переменных окружения — конфигурация системы и программ. Их удобство заключается в универсальности и отвязке от способа появления этих значений в системе. Возьмём ту же cd. Эта команда знает лишь то, что домашняя директория доступна в переменной окружения HOME. Как она попала в систему — не важно.
Существует некоторый базовый набор переменных, которые всегда устанавливаются bash при старте. Они используются большим количеством утилит и нужны для нормального функционирования системы. Одну из таких переменных мы уже знаем — это HOME. Особую роль среди переменных окружения играет переменная PATH.