Linux - DmitryGontarenko/usefultricks GitHub Wiki

Команды

sudo - запуск команды с правами супр-пользователя (superuser do).
В директории /home находятся папки пользователей.
~ - это сокращение пути /home/[user]/.
/ - коренная директория Linux.
. - текущая директория.
.. - директория выше.
Для файлов можно применять различные маски:

  1. * - люое количество символов
  2. ? - один любой символ

Ctrl+Z - отправить активный процесс на фон (background)
fg - вернуть последний фоновый процесс (foreground)
Ctrl+C - прервать процесс выполнения (terminate)

echo $PATH - показать список директорий, в которых Linux будет искать и запускать запрашиваемые команды.
Ctrl + Alt + F1- F6 - зайти в телетайп 1-6 (tty).
Ctrl + Alt + F7 - выйти из телетайп в графический интерфейс.

Навигация

Описание Команда Пример
Зайти в директорию cd cd Desktop
Вывести текущий путь (print working dir) pwd -
Показать содержимое директории (l-long, a-all) ls -la ls -la Desktop
Показать путь до файла whereis [name] or locate [name] whereis time
Показать что делает команда whatis [name] whatis time
Показать документацию команды man [name] or info [name] man time
Найти команду по части слова (k-key part) man -k [part_name] man -k time
Очистить консоль clear -

cd / - абсолютный путь от корневой папки Linux.
cd .. - вернуться на директорию выше.
cd ../.. - вернуться на две директории выше и т.д.
cd, cd /home/[user] или cd ~/ - вернуться в домашнюю директорию.

Чтение файлов

Описание Команда Пример
Вывести содержимое файла cat [file] cat emails.txt
Вывести содержимое большого файла (команда q для выход) more [file] more emails.txt
Вывести содержимое большого файла (поиск по тексту командой /word) less [file] less emails.txt

Работа с файлами

Описание Команда Пример
Создать файл touch [name] touch emails.txt
Копировать файл (-v процесс копирования) cp [file] [to] cp emails.txt ~/Desktop
Переместить файл mv [file] [to] mv emails.txt ~/Desktop
Удалить файл rm [file] rm emails.txt

Копировать можно сразу несколько файлов. Например, скопируем все файлы в формате .txt, командой cp *.txt ~/Desktop.
В Linux файлы, имена которых начинаются с точки, являются скрытыми. Т.е. с помощью команда перемещения mv emails.txt .emails.txt, можно скрыть файл.

Работа с директориями

Описание Команда Пример
Создать новую директорию mkdir [name] mkdir Employees
Создать новую директорию в существующей mkdir [exist_dir]/[name] mkdir Employees/Freelance
Создать вложенные директории (p-parent) mkdir -p [name_dir1]/[name_dir2] mkdir -p RussianEmployees/MoscowEmployees
Копировать директорию cp -R [name] [to] cp -R Employees ~/Desktop
Переместить директорию mv -R [name] [to] mv -R Employees ~/Desktop
Удалить директорию rm -R [name] rm -R Employees

При операциях с директориями, флаг -R означает провести операцию рекурсивно, т.е. затрагивая содержимое директории. Без указания этого флага, операция копирования, перемещения или удаления возможна только с пустой директорией.
Команда sudo rm -R / удалить все содержимое основной папки Linux, после чего дальнейшая работа ОС станет невозможной.

Поиск в файлах

Описание Команда Пример
Поиск файлов find [path] -name "[name]" find . -name "*.txt"
Сортировать результат вывода файла (флаг -n для цифр) sort [file] sort characters.txt
Получить конкретную строку в файле. (d-delimiter, f-field) cut -d "[delimiter]" -f [col_num] [file] cut -d ">" -f 3 emails.txt

Пример выполнения команды cut:
У нас есть файл employees.txt, который в каждой строке содержит информацию о сотрудниках. Разделителем для каждого поля служит символ >:

[email protected]>Paul>Spring st. 7>24
[email protected]>Katty>Garbage st. 12>18
[email protected]>John>Main st. 5>32

И мы хотим получить адрес каждого сотрудника. Для этого выполним команду cut, где укажем в качестве разделителя - символ >, а строки - цифру 3. В итоге сформировалась команда - cut -d ">" -f 3 emails.txt, выполнив ее, получим следующий результат:

Spring st. 7
Garbage st. 12
Main st. 5

Global regular expression print (grep)

Описание Команда Пример
Поиск подстроки и подсветка результата. Можно использовать как для файла, так и для результата какой-либо команды (i - ignore case sensetive). grep [string] grep -i A ~/Desktop/alphabet.txt or cat alphabet.txt | grep A
Поиск можно проводить используя регулярные выражения grep -E "[regax]" [file] grep -E "[A-Za-z\-\_\.]*@[A-Za-z]*.[A-Za-z]{2,5}" emails.txt

Перенаправление ввода/вывода

Описание Команда Пример
Перенаправить ответ (результат команды) в файл. Если файл с таким именем уже существует, он будет перезаписан > sort characters.txt > alphabet.txt
Добавляет ответ (результат команды) в конец файла, содержимое существующего файла не сотрется >> sort characters.txt >> alphabet.txt
Перенаправить ответы с ошибками в файл 2> grep dmitrii /etc/* 2> errors.txt
Перенаправить успешные и ошибочные ответы в разные файлы > 2> grep dmitrii /etc/* > success.txt 2> errors.txt
Перенаправить все ответы в один файл &> grep dmitrii /etc/* &> results.txt

Архивация и компрессия

Описание Команда Пример
Упаковать в архив одну или несколько директорий или файлов (c-create, v-verbose, f-file). tar cf [object] tar cvf mytar.tar file1.txt file2.txt
Разархивировать tar-файл (x-extract) tar xf [tar_file] tar xvf mytar.tar
Вывести содержимое tar-файла tar tf [tar_file] tar tf mytar.tar
Компрессия с помощью gzip gzip [object] gzip mytar.tar
Декомпрессия с помощью gzip gunzip [archive] gunzip mytar.tar.gz
Компрессия с помощью bzip2 bzip2 [object] bzip2 mytar.tar
Декомпрессия с помощью bzip2 bunzip2 [archive] bunzip2 mytar.tar.bz2
Компрессия с помощью xz xz [object] xz mytar.tar
Декомпрессия с помощью xz unxz [archive] xz mytar.tar.xz
Компрессия с помощью zip zip -r [name] [object] zip -r myzip.zip file.txt
Декомпрессия с помощью zip unzip [archive] unzip myzip.zip

Процессы

Описание Команда Пример
Запустить менеджер процессов top -
Отобразить статистику памяти free -h -
Отобразить текущие процессы (process state) (-a-all users) ps -
Отобразить ВСЕ процессы (a=все пользователи, x=скрытые процессы) ps ax ps ax | grep VBoxClient

Текстовые редакторы

Описание Команда Пример
Редактор nano nano nano user_list.txt
Редактор vim vim/vi vim user_list.txt

Текстовый редактор можно открыть как отдельно, так и для какого-либо файла сразу.

Линки

Описание Команда Пример
Создать линк ls -s [absolte_path_to_file] [link_name] ls -s ~/Document/Employees LinkToEmployees
Создать дубликат ls [absolte_path_to_file] [link_name] ls ~/Document/Employees LinkToEmployees

Создание линка аналогично ярлыку или ссылке в Windows.
Создание дубликата - создание жесткой ссылки, изменение файлов в оригинале приведет к аналогичным изменениям в дубликате, и наоборот. При создании жесткой ссылки данные не копируются, а к ним лишь создается ссылка, т.е. если по другому - создается несколько "точек входа" к даным, а следовательно, дополнительноого места на жестком диске заниматься не будет.

Учетные записи

Описание Команда Пример
Вывести текущего пользователя whoami -
Переключиться на другого пользователя (switch user) su [username] su admin
Показать, в каких группах состоит пользователь id [username] id admin
Добавить пользователя в группу (a-append, G-group) sudo usermod -aG [group] [username] sudo usermod -aG sudo admin
Удалить пользователя из группы sudo deluser [username] [group] sudo deluser admin sudo

Права доступа

Описание Команда Пример
Изменить права для подгруппы файла sudo chmod [command] [object] sudo chmod +r world/
Изменить владельца файла sudo chown [user] [object] sudo chown admin world/
Изменить групповой доступ к файлу sudo chgrp [group] [object] sudo chgrp developers world/

Имея в директории несколько папок и файлов, выполним команду ls -l и увидим примерно следующее:

-rw-rw-r-- 1 dmitrii dmitrii    0 Mar 24 13:00 characters.txt
-rw-rw-r-- 1 dmitrii dmitrii    0 Mar 24 13:00 numbers.txt
drwxrwxr-x 2 dmitrii dmitrii 4096 Mar 24 13:00 world

Результат отображается в несколько колонок:

1-ая колонка означает права доступа
- в начале означает файл, d - директория, l - линк.

Здесь существует 3 подгруппы, которые могут включать символы: r - read (прочитать файл или просмотреть директорию), w -write (изменять, создавать или удалять), x - execute (запускать файл или зайти в директорию) и -.
Первая подгруппа относится к пользователю, вторая к группе, а третья ко всем пользователям.

Для того, что бы изменить права для каждой из подгруппы, существует команда - sudo chmod [command] [object]
В качестве команды в chmode с начало указывается для какой подгруппы будут внесены изменения - u - user, g - group или o - others. Если обозначение подгруппы отсутствует, команда будет применена ко всем подгруппам;
Затем, хотим мы добавить доступ + или убрать -;
И наконец, тип доступа - r, w или x;

Добавим право на запуск файла characters.txt и уберем право на чтение для группы у папки world:

sudo chmod o+x characters.txt
sudo chmod g-r world/

Выполним ls -l и увидим изменения:

-rw-rw-r-x 1 dmitrii dmitrii       0 Mar 24 13:00 characters.txt
drwx-wxr-x 2 admin   dmitrii    4096 Mar 24 13:06 world

Команда sudo chmod +r world/ даст всем подгруппам доступ для чтения папки.
Команда sudo chmod ugo+r world/ будет являться альтернативной предыдущей.
Команда sudo chmod ugo=r world/ разрешит только чтение папки. Все остальные доступы будут удалены.

3-ая колонка - пользователь (владелец файла)
Для того, что бы сменить владельца, существует команда - sudo chown [user] [object]
Выполнив sudo chown admin world/ и ls -l, увидим изменения:

drwxrwxr-x 2 admin   dmitrii 4096 Mar 24 13:06 world

4-ая колонка - группа владелец
Для того, что бы сменить группу владельца, существует команда - sudo chgrp [group] [object]
Выполнив sudo chgrp Developers numbers.txt и ls -l, увидим изменения:

-rw-rw-r-- 1 dmitrii Developers    0 Mar 24 13:00 numbers.txt

Сетевые команды

Описание Команда Пример
Вывести все сетевые устройства ifconfig/ip a -
Проверить соединение с ресурсом ping [address] ping www.google.com

Загрузка и установка файлов

Описание Команда Пример
Скачать файл из интернета wget [address_to_file] wget https://ubuntu.ru/img/logo_ru.png
Скачать и установить пакет из linux-репозитория sudo apt-get install [package] sudo apt-get install nmap
Обновить индексы linux-репозитория sudo apt-get update -
Обновить установленные пакеты sudo apt-get upgrade -
Вывести расположения установленного пакета whereis [package] whereis nmap
Удалить установленный пакет sudo apt-get remove [package] sudo apt-get remove nmap