Linux - DmitryGontarenko/usefultricks GitHub Wiki
Команды
sudo - запуск команды с правами супр-пользователя (superuser do).
В директории /home находятся папки пользователей.
~ - это сокращение пути /home/[user]/.
/ - коренная директория Linux.
. - текущая директория.
.. - директория выше.
Для файлов можно применять различные маски:
*- люое количество символов?- один любой символ
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 |