Основные команды Bash
Перемещение по файловой системе и работа с ней.
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>