## Перемещение по файловой системе и работа с ней. ### 1. cd ``` cd ``` Сокращенное _change directory_. Позволяет перемещаться по файловой системе. Путь может быть как абсолютным (_начмнаться с /_), так и относительным (_подразумевается расположение пути относительно текущего_). ![Рис. 1](https://kmb.cybber.ru/bash/img/1.png) - **cd** без параметров перемещает в домашнюю директорию пользователя. - **cd -** перемещает по прошлому пути. - **.** (точка) текущая директория - **..** (две точки) родительская директория - **~** (тильда) домашняя директория пользователя ### 2. pwd ``` pwd ``` Cокращение от _print work directory_. Выводит текущий абсолютный путь. ![Рис. 2](https://kmb.cybber.ru/bash/img/2.png) ### 3. ls ``` ls ``` Сокращение от list. Отбражает все **файлы** и **директории** в директории . ![Рис. 3](https://kmb.cybber.ru/bash/img/3.png) - **ls** без параметров отображает все файлы и директории по **текущему** пути - **ls -a** отображает скрытые файлы и папки - **ls -l** отображает расширенную информацию о файлах и папках ### 4. cat ``` cat ``` Отображает содержимое файла file_name. ![Рис. 4](https://kmb.cybber.ru/bash/img/4.png) ### 5. less ``` less ``` Отображает содержимое файла file_name, выводит только содержимое помещающееся в окно терминала. Навигация по файлу возможна **клавишами-стрелками**, кнопка "q" закрывает просмотр. ![Рис. 5](https://kmb.cybber.ru/bash/img/5.png) ![Рис. 5-5](https://kmb.cybber.ru/bash/img/5-5.png) ### 6. file ``` file ``` Выводит на экран тип файла. Настоящий тип, а не указанный в расширении. ![Рис. 6](https://kmb.cybber.ru/bash/img/6.png) ### 7. cp ``` cp ``` Сокращение от **copy**. Копирует файл **file1** по пути **file2**. ### 8. mv ``` mv file1 file2 ``` Сокращение от **move**. Перемещает файл **file1** по пути **file2**. ### 9. rm ``` rm ``` Сокращение от **remove**. Удаляет файл **file1**. - **rm -r** удаляет директорию ### 10. mkdir ``` mkdir ``` Сокращение от **make directory**. Создает директории с именем **directory**. ### 11. locate ``` locate ``` Возвращает все пути с вхождениями **file** в них. ### 12. man ``` man ``` Отображает справку по команде **cmd**. ### 13. echo ``` echo ``` Выводит заданную строку **string** на экран. ### 14. strings ``` strings ``` Выводит все строки с печатными символами из файла **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>