Навигация по файловой структуре

Команды 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.

openImgPic