Часть 2. Терминал Linux
⠀В данной статье рассматриваются следующие группы команд: справочная информация, пакетный менеджер, файловая система.
Содержание
Справочная информация
⠀Самые лучшие способы узнать подробнее о команде:
- Воспользоваться поисковиком (желательно Google на английском языке);
- Воспользоваться командами из данного раздела.
--help / -h
⠀В подавляющем большинстве команд, при добавлении данной опции в конец, выводит страницу помощи, на которой может быть:
- Описание команды;
- Подкоманды и их описание;
- Опции и их описание;
- Примеры использования;
- Прочая полезная информация.
⠀В некоторых случаях опция -h
имеет аналогичный функционал.
команда --help команда -h
du --help wget -h
man
⠀Отображает справочную страницу команды, если таковая была предусмотрена. Для выхода используется клавиша q
.
man команда
man man man echo man wget man -f wget
wget (1) - The non-interactive network downloader.
man -f printf
printf (1) - format and print data printf (3) - formatted output conversion
help
⠀Редко встречающийся аналог опции --help
/ -h
применимый в основном к командам, где эти опции не работают.
help команда
help echo help printf
Пакетный менеджер
⠀Пакетный менеджер APT — это набор утилит для установки, удаления, обновления, поиска пакетов, а также для управления репозиториями.
⠀Пакет — это какое-либо программное обеспечение, готовое к установке на компьютер с Linux. Он содержит собранную программу, информацию о том, какие требуется совершить действия для её установки, информацию о зависимостях, а также другие данные.
⠀Репозиторий — это хранилище пакетов, принадлежащих одному дистрибутиву (например, Ubuntu
), одной его версии (например, 20.04
), находящееся в открытом доступе и готовое к использованию.
sudo apt команда пакеты опции
⠀Также существует более старая утилита apt-get
, которая менее удобная для конечного пользователя. apt
включает в себя все основные функции apt-get
, поэтому последняя понадобится в редких случаях, если вообще понадобится.
-y
— отвечать утвердительно на все возникающие вопросы;-q
— выводить минимум информации при выполнении действий.
update
⠀Обновляет информацию о пакетах (например версию), проходясь по спискам репозиториев, хранящимся в:
sudo apt update
upgrade
⠀Обновляет пакеты до последней версии, полученной при выполнении команды sudo apt update
.
sudo apt upgrade
install
sudo apt install curl -y sudo apt install curl jq bc -y # Определённая версия sudo apt install jq=1.6-1 -y
remove
sudo apt remove curl -y sudo apt remove curl jq bc -y
purge
⠀Удаляет пакеты вместе с настройками или настройки удалённых пакетов.
sudo apt purge curl -y sudo apt purge curl jq bc -y
autoremove
⠀Удаляет неиспользуемые зависимости (дополнительные пакеты для устанавливаемого пакета)
sudo apt autoremove
Файловая система
⠀Существует несколько видов путей к файлу или директории, используемых в командах:
/root/text.txt /etc/systemd/system/ /home/user/Downloads/file
# Находясь в /root/ text.txt ./text.txt # Находясь в /home/user/ Downloads/file ./Downloads/file
~/text.txt $HOME/Downloads/file
text* # Подходящие под шаблон файлы text text.txt text.html
/root/f*.json # Подходящие под шаблон файлы /root/f.json /root/f1.json /root/file.json
$HOME/Downloads/* # Попадающие под шаблон файлы $HOME/Downloads/file1 $HOME/Downloads/text.txt $HOME/Downloads/archive.tar.gz
pwd
⠀Выводит путь к текущей рабочей директории.
pwd
cd
⠀Изменяет текущую рабочую директорию.
cd путь_к_директории
# Домашняя директория cd # Конкретная директория cd $HOME/dir cd /etc/systemd/system/ # Директория уровнем выше cd .. # Директория, находящаяся в директории уровнем выше cd ../dir # Директория, находящаяся в директории 2 уровнями выше cd ../../dir
ls
⠀Выводит список файлов и папок в указанной директории.
ls опции путь_к_директории
ls
ls dir1 ls $HOME ls -a $HOME
ls -al
du
⠀Отображает размер файлов и директорий.
du опции путь_к_директории
-h
— вывести размер в привычных человеку единицах измерения (КБ, МБ, ГБ);-a
— вывести размер как для папок, так и для файлов;-d
— максимальная глубина отображения файлов в директориях. Например:
# Указанная папка du -had 0 `pwd` 2>/dev/null
du -had 0 $HOME/dir 2>/dev/null # Все файлы и папки в директории в порядке возрастания размера du -had 1 `pwd` 2>/dev/null | sort -h
find
⠀Ищет файлы и директории на основе условий.
find путь_к_директории опции
-name
— поиск по имени с учётом регистра;-iname
— поиск по имени без учёта регистра;-type
— тип искомого объекта:-size
— поиск по размеру объекта;-maxdepth
— максимальная глубина поиска;-depth
— начать поиск из самой глубокой директории;-user
— поиск по владельцу;-group
— поиск по группе.
⠀Можно использовать логические операторы:
find . -name "file"
# Подходящие варианты file
find $HOME -name "file*"
# Подходящие варианты file file.txt file32434324324.txt
find $HOME -iname "file*" find $HOME -iname "FiLe*"
# Подходящие варианты file FILE.txt FiLe32434324324.txt
find / -size 20M
# Подходящие варианты Файлы размером ровно 20 Мб
find $HOME -size +20M
# Подходящие варианты Файлы размером 20+ Мб
find $HOME -size +20M -size -30M
# Подходящие варианты Файлы размером 20-30 Мб
find $HOME -iname "file*" -a -iname "*.txt"
# Подходящие варианты File.txt filE_1.txt fiLe32434324324.txt
find $HOME -iname "scr*" -o -iname "*.sh"
# Подходящие варианты scr script script.sh install.sh Launcher.sh
find $HOME ! -iname "*.txt"
# Подходящие варианты Все файлы не имеющие расширение .txt
mkdir
⠀Создаёт директорию. В одной команде можно создать несколько папок. При существовании создаваемой директории или отсутствии какой-то в пути выдаёт ошибку.
mkdir опции путь_к_директори_1 путь_к_директори_2 ...
mkdir dir1 mkdir $HOME/dir1 dir2 ~/dir3 mkdir -p $HOME/dir1/dir2/dir3 mkdir -p $HOME/dir1/dir2 $HOME/dir3/dir4/dir5
touch
⠀В основном используется для создания пустых файлов.
touch путь_к_файлу
touch text.txt touch $HOME/.bash_profile
wget
⠀Скачивает файлы, веб-страниц и другие ресурсы из интернета. Обычно установлена по умолчанию. По умолчанию скачивает файл с названием, заданным на конечном сервере.
sudo apt install wget -y
wget опции URL
-q
— не выводить информацию о процессе скачивания;-O
— файл, в который будут сохранены полученные данные (указать-O-
для вывода на экран);-t
— количество попыток подключения к URL (по умолчанию бесконечно);-T
— время ожидания подключения к URL;--post-data
— JSON словарь с данными для POST запроса;-b
— загрузить файл в фоновом режиме.
wget https://raw.githubusercontent.com/SecorD0/utils/main/logo.sh
wget -qO l.sh https://raw.githubusercontent.com/SecorD0/utils/main/logo.sh
wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/logo.sh
curl
⠀Аналог wget
с бо́льшим функционалом. По умолчанию выводит содержимое страницы на экран.
sudo apt install curl -y
curl опции URL
-s
— не выводить информацию о процессе скачивания;-o
— файл, в который будут сохранены полученные данные;-O
— сохранить данные в файл с именем страницы или файла на конечном сервере;-d
— данные для POST запроса;-f
— не выводить сообщения об ошибках;-H
— заголовки для передачи на сервер;-x
— использовать прокси.
curl https://raw.githubusercontent.com/SecorD0/utils/main/logo.sh
curl -O https://raw.githubusercontent.com/SecorD0/utils/main/logo.sh
curl -so l.sh https://raw.githubusercontent.com/SecorD0/utils/main/logo.sh
cat
⠀Выводит содержимое файла в терминал. При несуществующем файле выдаёт ошибку.
cat путь_к_файлу
cat text.txt cat $HOME/.bash_profile
tail
⠀Выводит содержимое файла начиная с конца (по умолчанию последние 10 строк).
tail опции файл
-n
— вывести последнее указанное число строк;-f
— обновлять информацию по мере появления новых строк в файле.
tail $HOME/dir/log.txt tail -fn 100 $HOME/solana/solana.log
chmod
⠀Изменяет права доступа для файлов и директорий.
chmod разрешения путь_1 путь_2 ...
⠀Права можно записать трёхзначным числом.
chmod 000 путь_1 путь_2 ...
- Первая цифра — права для владельца файла или директории;
- Вторая — права для группы владельца;
- Третья — права для всех остальных.
0
— разрешения отсутствуют;1
— выполнение;2
— изменение;3
— выполнение и изменение;4
— чтение;5
— выполнение и чтение;6
— изменение и чтение;7
— выполнение, изменение и чтение.
chmod 700 $HOME/file1 $HOME/file2 chmod 110 script.sh chmod 664 $HOME/text.txt
⠀Также права можно записать символами.
chmod aaa путь_1 путь_2 ...
⠀Символьная часть состоит из трёх групп:
- Категория пользователей:
u
— владелец файла;g
— группа владельца файла;o
— все остальные;a
— абсолютно все (по умолчанию, если не указать какую-либо другую).- Действие:
+
— добавить к текущим правам доступа указанные разрешения;-
— удалить из текущих прав доступа указанные разрешения;=
— установить полностью новые разрешения.- Права:
# Владелец может выполнять, изменять и читать chmod u=xwr $HOME/file # Владелец и группа могут выполнять chmod ug=x $HOME/script.sh # Владелец и группа, вдобавок к имеющимся правам, могут выполнять, # остальные больше не могут читать chmod ug+x,o-r text.txt # Любой, вдобавок к имеющимся правам, может выполнять chmod +x script.sh chmod a+x script.sh
chown
⠀Изменяет владельца и/или группу указанных файлов и директорий.
chown опции пользователь:группа путь
chown bob $HOME/dir/text.txt chown bob:family $HOME/dir/text.txt chown -R bob $HOME/dir
ln
⠀Создаёт ссылку (указатель) на файл или директорию (далее объект), схожую с ярлыком в Windows.
ln опции путь_к_объекту путь_к_ярлыку
⠀Ссылка может быть символической (мягкой):
- Указывает на объект;
- Содержит в себе только путь к объекту;
- Удаление, переименование, перемещение объекта не обновляет автоматически ссылку;
- Может указывать на несуществующий объект;
- Имеет собственные права доступа, которые не распространяются на объект;
- Изменение прав доступа у объекта не обновляет права доступа у ссылки.
ln -s $HOME/my_service.service /etc/systemd/system/ ln -s text.txt link_to_text ln -s $HOME/programs/site/ $HOME/my_site
⠀Также ссылка может быть жёсткой:
- Указывает на файл и является своего рода ещё одним его именем;
- Не может указывать на директорию;
- Содержит в себе ту же информацию, что и файл;
- Не может указывать на несуществующий файл;
- Имеет те же права доступа, что и файл.
ln text.txt link_to_text
which
⠀Осуществляет поиск исполняемого файла указанной команды в пути оболочки (переменная $PATH
) и отображает его при нахождении.
which команда
which wget
/usr/bin/wget
which solana
/root/.local/share/solana/install/active_release/bin/solana
cp
⠀Копирует файлы и директории. Можно скопировать несколько файлов и/или директорий в одну конечную. Перезаписывает существующий объект.
cp опции путь_к_объекту_1 путь_к_объекту_2 ... путь_куда
-r
— копировать директорию;-b
— сделать резервную копию при существовании объекта (резервная копия имеет названиеимя_файла~
).
cp text.txt text_1.txt cp $HOME/text.txt $HOME/dir1/ cp -r $HOME/dir1 $HOME/dir2 cp -r $HOME/text.txt $HOME/dir1 $HOME/text_1.txt $HOME/target
mv
⠀Перемещает файлы и директории. В частности используется для переименования объектов. Можно переместить несколько файлов и/или директорий в одну конечную. Перезаписывает существующий объект.
mv опции путь_к_объекту_1 путь_к_объекту_2 ... путь_куда
mv $HOME/text.txt $HOME/dir1/dir2/text_1.txt mv $HOME/text.txt $HOME/dir mv $HOME/text_1.txt $HOME/dir $HOME/text_2.txt $HOME/target # Переименовать объект mv text.txt text_1.txt mv $HOME/dir1 $HOME/dir2
rm
⠀Удаляет файлы (в т. ч. ссылки) и директории. Без опций удаляются только файлы.
rm опции путь_1 путь_2 ...
rm file rm file script.sh rm -rf file script.sh $HOME/dir
Читать далее
⠀В третьей части рассматриваются следующие группы команд: архивы, пользователи, текст.
Полезные ссылки
Благодарности
Losst, Пингвинус — разнообразные статьи по Linux
Команда 1package — написание статьи