Новичкам
January 10, 2022

Часть 2. Терминал Linux

1package & Let's Node

⠀В данной статье рассматриваются следующие группы команд: справочная информация, пакетный менеджер, файловая система.


Содержание

Часть 1

Часть 2

Часть 3

Часть 4

Часть 5


Справочная информация

К содержанию

⠀Самые лучшие способы узнать подробнее о команде:

  1. Воспользоваться поисковиком (желательно Google на английском языке);
  2. Воспользоваться командами из данного раздела.

--help / -h

⠀В подавляющем большинстве команд, при добавлении данной опции в конец, выводит страницу помощи, на которой может быть:

  • Описание команды;
  • Подкоманды и их описание;
  • Опции и их описание;
  • Примеры использования;
  • Прочая полезная информация.

⠀В некоторых случаях опция -h имеет аналогичный функционал.

Синтаксис

команда --help
команда -h

Примеры

du --help
wget -h

man

⠀Отображает справочную страницу команды, если таковая была предусмотрена. Для выхода используется клавиша q.

Синтаксис

man команда

Полезные опции:

  • -f — выводит краткое описание команды.

Примеры

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

⠀Обновляет информацию о пакетах (например версию), проходясь по спискам репозиториев, хранящимся в:

  • Текстовом файле /etc/apt/sources.list;
  • В текстовых файлах директории /etc/apt/sources.list.d/.

Примеры

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 опции путь_к_директории

Полезные опции:

  • -a — вывести скрытые файлы;
  • -l — вывести подробную информацию о файлах.

Примеры

ls
ls dir1
ls $HOME
ls -a $HOME
ls -al

du

⠀Отображает размер файлов и директорий.

Синтаксис

du опции путь_к_директории

Полезные опции:

  • -h — вывести размер в привычных человеку единицах измерения (КБ, МБ, ГБ);
  • -a — вывести размер как для папок, так и для файлов;
  • -d — максимальная глубина отображения файлов в директориях. Например:
    • 0 — размер указанной директории;
    • 1 — размер указанной директории и всех файлов и папок внутри неё.

Примеры

# Указанная папка
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 — тип искомого объекта:
    • f — файл;
    • d — директория;
    • l — ссылка.
  • -size — поиск по размеру объекта;
  • -maxdepth — максимальная глубина поиска;
  • -depth — начать поиск из самой глубокой директории;
  • -user — поиск по владельцу;
  • -group — поиск по группе.

⠀Можно использовать логические операторы:

  • -a — И;
  • -o — ИЛИ;
  • ! — НЕ.

Примеры

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 ...

Полезные опции:

  • -p — создать все указанные в пути папки и не выдавать ошибку при существовании какой-либо из них.

Примеры

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 — абсолютно все (по умолчанию, если не указать какую-либо другую).
  • Действие:
    • + — добавить к текущим правам доступа указанные разрешения;
    • - — удалить из текущих прав доступа указанные разрешения;
    • = — установить полностью новые разрешения.
  • Права:
    • x — выполнение;
    • w — изменение;
    • r — чтение.

Примеры

# Владелец может выполнять, изменять и читать
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 опции пользователь:группа путь

Полезные опции:

  • -R — изменить владельца для всех подкаталогов.

Примеры

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 ... путь_куда

Полезные опции:

  • -b — сделать резервную копию при существовании объекта.

Примеры

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 ...

Полезные опции:

  • -r — удалить директорию;
  • -f — не выдавать ошибку при несуществующем объекте.

Примеры

rm file
rm file script.sh
rm -rf file script.sh $HOME/dir

Читать далее

К содержанию

⠀В третьей части рассматриваются следующие группы команд: архивы, пользователи, текст.

Часть 3. Терминал Linux


Полезные ссылки

К содержанию

Losst | Пингвинус


Благодарности

К содержанию

Losst, Пингвинус — разнообразные статьи по Linux

Команда 1package — написание статьи

Выразить благодарность