BASH Flashcards
Команда для отображения текущей рабочей директории
Мы всегда находимся в какой-то директории, команда для её отображения:
pwd # (print working directory)
Особенности файловой системы
Единый корневой каталог / - вершина файловой системы. Вместо обратных слешей используются прямые (/). Если имя директории содержит пробел, то его надо экранировать обратным слешом .
В *unix имена регистрозависимы:
INDEX.HTML и index.HTML — это разные файлы
macOS и Windows не учитывают регистр.
Говорят, что в *nix “все есть файл”. На нижнем уровне так и есть (почти). Директория — это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель. Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются — для кода это просто “запись в файл”. На пользовательском уровне директория все же отличается от файла и имеет собственные команды для создания, удаления и модификации.
В отличие от Windows, в nix-системах отсутствует понятие «расширение файла». Точка — полноправная часть имени. Это не значит, что в юниксах невозможно понять тип файла. Более того, файлы почти всегда именуются так же, как и в Windows, например так — **hello.mp3*.
Команда для вывода списка файлов и директорий в текущей/рабочей директории
ls директория # (list)
Команда для смены текущей/рабочей директории
cd путь_к_директории # (change directory)
cd - # возвращает в предыдущую директорию
cd без аргументов меняет текущую директорию на домашнюю текущего пользователя (она так же имеет сокращение ~)
Автокомплит путей в BASH (горячая клавиша)
Двойное нажатие на Tab
Скрытые файлы и папки в *nix системах
Начинаются с символа .
Отображаются при помощи ls -a или ls –all
Опции (флаги), значения опций и аргументы утилиты
Опции -a –all, могут объединяться:
ls -la
ls путь # путь - аргумент
обычно длинные опции предваряются двумя дефисами?
Если значение опции содержит в себе специальные или пробельные символы, то его нужно оборачивать в кавычки, двойные или одинарные.
Некоторые программы допускают использование знака = вместо пробела для указания значения опции.
say -o=hi.aac ‘Hello, World.’
Просмотр документации по командам/утилитам
man имя_команды_или_утилиты # (manual)
Команда для получения информации о файле или директории
stat .bashrc # (status)
Особые файлы в *nix
Hard Link — дополнительное имя для уже существующего файла
Symbolic link — символическая ссылка, такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка начнет вести в никуда
Socket — специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни
Что такое FHS
Filesystem Hierarchy Standard, «стандарт иерархии файловой системы» — стандарт, унифицирующий местонахождение файлов и каталогов с общим назначением в файловой системе UNIX. На данный момент большинство UNIX-подобных систем в той или иной степени следует этим правилам. Например, обычная база данных о пользователях всегда хранится в файле /etc/passwd.
Команда для вывода информации о используемой системе каталогов
hier или man hier
Команды для упрощенного чтения текстовых файлов
cat путь # (concatenate and print files)
head -n количество_строк # (первые n строк, без опции значение 10)
tail -n количество_строк # (последние n строк, без опции значение 10)
Сочетание клавиш для остановки утилит, захвативших управление
Ctrl + C
Просмотр лога в режиме реального времени
sudo tail -f syslog
sudo - если системный лог, -f –follow
Что такое пейджер
Утилита для просмотра содержимого файла. Пейджер похож на текстовый редактор, но открытый только в режиме чтения. Самый распространенный пейджер называется less. (его использует man)
Одна из отличительных особенностей пейджеров состоит в том, что они одинаково хорошо и быстро работают с файлами любых размеров. Все потому, что пейджер не пытается загрузить в память весь файл до его отображения. Он грузит только ту часть, которая помещается на экран и при перемещении подгружает остальное.
Команда для поиска текста в файлах
grep шаблон имя_файла # (global regular expression print)
-B, –before-context # количество отображаемых строк до искомой
-A, –after-context # количество отображаемых строк после искомой
-C, –context # до и после одновременно
Иногда мы не знаем, в каком файле то, что мы ищем, но знаем директорию, в которой лежит этот файл. В такой ситуации нужно сделать два изменения:
1. Добавить опцию -r, которая говорит о том, что надо искать внутри директории (рекурсивно, то есть включая все поддиректории).
2. Указать путь до директории, а не файла.
grep -r bashrc . # -r рекурсивно искать строку ‘bashrc’ в текущей директории.
Какую клавишу обозначает символ циркумфлекс
Ctrl
Как выйти из Vim
Убедитесь, что вы находитесь в командном режиме, на всякий случай нажмите Esc (или комбинацию Ctrl + [). Затем наберите :, эта команда переведёт вас в режим командной строки (еще один режим), затем введите q! и нажмите Enter. Так вы выйдете из вима без сохранения изменений. Если набрать :wq, то перед выходом сохранятся все изменения. Если вы хотите просто сохраниться без выхода, то наберите :w.
Три потока, которые ОС связывает с программой после её запуска
STDIN (Standard Input)
STDOUT (Standard Output)
STDERR (Standard Error)
Для языка программирования они выглядят как файлы, и взаимодействие с ними происходит как с файлами.
ОС позволяет подменять эти потоки при старте системы, например, вывод любой команды, запущенной в bash, можно записать в файл вместо вывода на экран:
ls -la > output # на экране ничего не отобразится, но в текущей директории появился файл output.
Операция, которую мы сделали выше, называется перенаправление потоков. Символ > означает, что нужно взять вывод из команды, указанной слева, и отправить его в файл, указанный справа. > всегда перезаписывает файл.
Если нужно не перезаписывать, а добавлять, то используйте»_space;.