242 lines
6.3 KiB
Markdown
242 lines
6.3 KiB
Markdown
|
|
## Перемещение по файловой системе и работа с ней.
|
|
|
|
### 1. cd
|
|
|
|
```
|
|
cd </path/to/directory>
|
|
```
|
|
|
|
Сокращенное _change directory_. Позволяет перемещаться по файловой системе.
|
|
|
|
Путь может быть как абсолютным (_начмнаться с /_), так и относительным (_подразумевается расположение пути относительно текущего_).
|
|
|
|

|
|
|
|
- **cd** без параметров перемещает в домашнюю директорию пользователя.
|
|
- **cd -** перемещает по прошлому пути.
|
|
- **.** (точка) текущая директория
|
|
- **..** (две точки) родительская директория
|
|
- **~** (тильда) домашняя директория пользователя
|
|
|
|
### 2. pwd
|
|
|
|
```
|
|
pwd
|
|
```
|
|
|
|
Cокращение от _print work directory_. Выводит текущий абсолютный путь.
|
|
|
|

|
|
|
|
### 3. ls
|
|
|
|
```
|
|
ls </path/to/directory>
|
|
```
|
|
|
|
Сокращение от list. Отбражает все **файлы** и **директории** в директории </path/to/directory>.
|
|
|
|

|
|
|
|
- **ls** без параметров отображает все файлы и директории по **текущему** пути
|
|
- **ls -a** отображает скрытые файлы и папки
|
|
- **ls -l** отображает расширенную информацию о файлах и папках
|
|
|
|
### 4. cat
|
|
|
|
```
|
|
cat <file_name>
|
|
```
|
|
|
|
Отображает содержимое файла file_name.
|
|
|
|

|
|
|
|
### 5. less
|
|
|
|
```
|
|
less <file_name>
|
|
```
|
|
|
|
Отображает содержимое файла file_name, выводит только содержимое помещающееся в окно терминала. Навигация по файлу возможна **клавишами-стрелками**, кнопка "q" закрывает просмотр.
|
|
|
|

|
|
|
|

|
|
|
|
### 6. file
|
|
|
|
```
|
|
file <file_name>
|
|
```
|
|
|
|
Выводит на экран тип файла. Настоящий тип, а не указанный в расширении.
|
|
|
|

|
|
|
|
### 7. cp
|
|
|
|
```
|
|
cp <file1> <file2>
|
|
```
|
|
|
|
Сокращение от **copy**. Копирует файл **file1** по пути **file2**.
|
|
|
|
### 8. mv
|
|
|
|
```
|
|
mv file1 file2
|
|
```
|
|
|
|
Сокращение от **move**.
|
|
|
|
Перемещает файл **file1** по пути **file2**.
|
|
|
|
### 9. rm
|
|
|
|
```
|
|
rm <file1>
|
|
```
|
|
|
|
Сокращение от **remove**.
|
|
|
|
Удаляет файл **file1**.
|
|
|
|
- **rm -r** удаляет директорию
|
|
|
|
### 10. mkdir
|
|
|
|
```
|
|
mkdir <directory>
|
|
```
|
|
|
|
Сокращение от **make directory**.
|
|
|
|
Создает директории с именем **directory**.
|
|
|
|
### 11. locate
|
|
|
|
```
|
|
locate <file>
|
|
```
|
|
|
|
Возвращает все пути с вхождениями **file** в них.
|
|
|
|
### 12. man
|
|
|
|
```
|
|
man <cmd>
|
|
```
|
|
|
|
Отображает справку по команде **cmd**.
|
|
|
|
### 13. echo
|
|
|
|
```
|
|
echo <string>
|
|
```
|
|
|
|
Выводит заданную строку **string** на экран.
|
|
|
|
### 14. strings
|
|
|
|
```
|
|
strings <file1>
|
|
```
|
|
|
|
Выводит все строки с печатными символами из файла **file1** на экран.
|
|
|
|
## Перенаправление вывода
|
|
|
|
Bash позволяет перенаправлять стандартный вывод в файлы с помощью оператора **>**. Если файл не существовал, он будет создан, иначе он будет перезаписан.
|
|
|
|
```
|
|
$ echo hello! > 1.txt
|
|
$ ls
|
|
1.txt
|
|
$ cat 1.txt
|
|
hello!
|
|
```
|
|
|
|
Если требуется _дописать_ строку в файл используется оператор **>>**.
|
|
|
|
## Конвейер
|
|
|
|
Если нужно перенаправить вывод одной команды на вход другой используется оператор **|**.
|
|
|
|
```
|
|
$ locate bin | less
|
|
```
|
|
|
|
## Поиск по содержимому файлов
|
|
|
|
```
|
|
$ grep [opts] "pattern" file
|
|
```
|
|
|
|
```
|
|
$ cat file | grep [opts] "pattern"
|
|
```
|
|
|
|
**-v** - вывести строки, где не всречается образец
|
|
**-i** - игнорировать регистр символов
|
|
**-n** - печатать номера строк
|
|
**-a** - искать по бинарным файлам
|
|
**-E** - расширенные регулярные выражения
|
|
**-o** - вывести только совпадающую с образцом часть строки
|
|
|
|
## Регулярные выражения
|
|
|
|
```
|
|
$ egrep [opts] "pattern" file
|
|
```
|
|
|
|
```
|
|
$ cat file | egrep [opts] "pattern"
|
|
```
|
|
|
|
`^` `"^license"` - начало строки
|
|
`$` `"license$"` - конец строки
|
|
`[abc]` `"[0-9]"` - любой символ из перечисленных
|
|
`[^abc]` `"[^ ]1"` - любой кроме перечисленных
|
|
`[ab]{8}` `"w{3}"` - повторяется несколько раз
|
|
`(abc)` `"(license)"` - группа символов
|
|
`.` `"Li.en.e"` - любой символ
|
|
`*` `"\([a-z ]*\"` - повторить ноль или больше раз
|
|
`+` `"\(a.+\)"` - повторить один или больше раз
|
|
`?` `"(copy)?right"` - повторить ноль или один раз
|
|
|
|
## Обработка текста
|
|
|
|
Вывести символы со 2 по 5 каждой строки
|
|
|
|
```
|
|
$ cat file | cut -c 2-5
|
|
```
|
|
|
|
Отсортировать строки по алфавиту
|
|
|
|
```
|
|
$ cat file | sort
|
|
```
|
|
|
|
Удалить одинаковые строки, идущие подряд
|
|
|
|
```
|
|
$ cat file | uniq
|
|
```
|
|
|
|
Вывести уникальные строки
|
|
|
|
```
|
|
$ cat file | sort | uniq
|
|
```
|
|
|
|
```
|
|
$ cat file | awk 'program'
|
|
```
|
|
|
|
`'{print $0}'` - вывести каждую строку `'{print $1}'` - вывести первое слово каждой строки `'{print "1: " $1 ", 2: " $2}'` - вывести для каждой строки 1:<слово 1>, 2:<слово 2>
|
|
|