# Полезные команды linux

### Работа с редактором vi

***vimtutor*** - встроенная обучающая программа по работе с **vi** (`vimtutor ru`–для отображения на русском языке)

Есть два основных режима - ***Normal*** и ***Insert***. для перехода в режим ***insert*** нужно нажать **i** на клавиатуре, для возврата в режим ***Normal*** -нажать **ESC**

**Normal** – режим навигации по тексту и управление им(удаление строк, символов и проч). В этом режиме:кнопки стрелок, или символы h,j, k, l для навигации по тексту

**p** - вставка текстаx - удаление символа над курсором

**dd** - удаление текущей строки

**:**- режим выбора режима работы(все введённые символы отображаться в самой нижней строке консоли)

***Insert*** –режим для добавления текста(вход из режима normal нажатием кнопки i, выход -ESC)

***Visual*** –режим выделения текста(вход из режима normal нажатием кнопки v, выход -ESC)

### Навигация по файловой системе

**pwd**     показать текущую директорию<br>
**ls**      отобразить список файлов и папок<br>
**cd**      сменить текущую папку

### Специальные символы для навигации по файловой системе

**~**                  домашняя папка текущего пользователя<br>
**.**                   Текущая директория<br>
**..**                  Родительская директория<br>
<b>*</b>   маска для любого имени файла или папки<br>
**?**                   Маска для любого символа в имени файла или папки<br>
**TAB**              попытка автодополнения

#### Примеры навигации по файловой системе

**cd /usr/local/lib**  сменить директорию на */usr/local/libcd* <br>
**cd ~**             сменить директорию на домашнюю директорию текущего пользователя <br>
**pwd**               показать рабочую (текущую) директорию<br>
**cd ..**               перейти в директорию на уровень вверх<br>
**cd /**	перейти в корневую директорию<br>
**ls –d pro*** отобразить директории, имя которых начинается с pro

### Просмотри истории команд
**history** -вся история 

стрелки ↑ и ↓ клавиатуры для навигации по прошлым командам

### Помощь по командам:
```sh
date –-help
man date
info date
```
### Перенаправления через pipe(|)
***W*** Показать всех пользователей, которые в данный момент вошли в систему

***w | less*** показать всех пользователей, которые зашли в формате страниц

***w | grep ‘tema’***   выбрать всех пользователей, которые были авторизованы, и показать только тех, в имени которых содержится «tema»

### обработка текста
***cat*** Отобразить содержимое файла<br>
***grep***  поиск по шаблону<br>
***tail***  вывести последние 10 строк файла<br>
***awk*** язык поиска по шаблонам<br>
***cut***  обрезать конкретные поля в каждой строке файла<br>
***diff*** 	сравнить два файла<br>
***head*** 	показать первую часть файла<br>
***less*** 	показать файл постранично<br>
***od***	сделать дамп файлов в различных форматах<br>
***sed***	потоковый редактор<br>
***sort***	отсортировать текстовые файлы<br>
***split***	разделить файлы<br>
***tail*** 	показать последнюю часть файла<br>
***tr***	транслитерировать символы<br>
***uniq***	отбросить повторяющиеся строки в файле<br>
***wc***   	посчитать количество строк или слов, или символов<br>

### Отображение содержимого в файловой системе
***ls -a***		показать все файлы, в том числе скрытые “.”<br>
<i><b>ls -ld *</b></i>	 показать информацию о папке, а не о содержимом<br>
***ls -F***    поместить индикатор в конец каждого имени файла<br>
***ls –l***      простой длинный вывод<br>
***ls –lR***    рекурсивный длинный вывод(с учетом вывода содержимого под папок)<br>
***ls –lh***    отображение размера файлов в читаемом виде<br>
***ls –lS***    отсортировать файлы по размеру<br>
***ls –lt***     отсортировать файлы по времени создания<br>

### Набор полезных команд
***cp [file1] [file2]***    скопировать файлы<br>
***mkdir [name]***        создать папку<br>
***rmdir  [name]*** удалить пустую папку(если не пустая, то не удалится)<br>
***mv [file] [destination]***  переместить (переименовать файл) <br>
***rm [file]***  удалить (-r рекурсивно)<br>
***file [file]*** идентифицировать тип файлы<br>
***less [file]*** вывести файл в постраничном виде<br>
***head -n [file]***  показать первые n строк файла<br>
***tail -n [file]*** показать последние n строк файла<br>
***ln –s [file] [new]***   создать символьную ссылку на файл<br>
***tac [file]***   вывести содержимое файла в обратном порядке, в сравнении с cat<br>
***touch [file]***  создать файл(если создан, изменить время создания)<br>