BASH Flashcards

1
Q

Команда для отображения текущей рабочей директории

A

Мы всегда находимся в какой-то директории, команда для её отображения:
pwd # (print working directory)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Особенности файловой системы

A

Единый корневой каталог / - вершина файловой системы. Вместо обратных слешей используются прямые (/). Если имя директории содержит пробел, то его надо экранировать обратным слешом .
В *unix имена регистрозависимы:
INDEX.HTML и index.HTML — это разные файлы
macOS и Windows не учитывают регистр.

Говорят, что в *nix “все есть файл”. На нижнем уровне так и есть (почти). Директория — это специальный файл, который содержит список файлов. Любое подключаемое устройство становится файлом или директорией, если это накопитель. Такая концепция довольно удобна для разработчиков, потому что печать на принтер и вывод на экран между собой ничем не отличаются — для кода это просто “запись в файл”. На пользовательском уровне директория все же отличается от файла и имеет собственные команды для создания, удаления и модификации.

В отличие от Windows, в nix-системах отсутствует понятие «расширение файла». Точка — полноправная часть имени. Это не значит, что в юниксах невозможно понять тип файла. Более того, файлы почти всегда именуются так же, как и в Windows, например так — **hello.mp3*.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Команда для вывода списка файлов и директорий в текущей/рабочей директории

A

ls директория # (list)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Команда для смены текущей/рабочей директории

A

cd путь_к_директории # (change directory)
cd - # возвращает в предыдущую директорию
cd без аргументов меняет текущую директорию на домашнюю текущего пользователя (она так же имеет сокращение ~)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Автокомплит путей в BASH (горячая клавиша)

A

Двойное нажатие на Tab

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Скрытые файлы и папки в *nix системах

A

Начинаются с символа .
Отображаются при помощи ls -a или ls –all

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Опции (флаги), значения опций и аргументы утилиты

A

Опции -a –all, могут объединяться:
ls -la
ls путь # путь - аргумент
обычно длинные опции предваряются двумя дефисами?
Если значение опции содержит в себе специальные или пробельные символы, то его нужно оборачивать в кавычки, двойные или одинарные.
Некоторые программы допускают использование знака = вместо пробела для указания значения опции.
say -o=hi.aac ‘Hello, World.’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Просмотр документации по командам/утилитам

A

man имя_команды_или_утилиты # (manual)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Команда для получения информации о файле или директории

A

stat .bashrc # (status)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Особые файлы в *nix

A

Hard Link — дополнительное имя для уже существующего файла

Symbolic link — символическая ссылка, такой файл похож на ярлык в Windows. Если удалить основной файл, то символическая ссылка начнет вести в никуда

Socket — специальный файл, через который происходит взаимодействие между разными процессами операционной системы. Программисты постоянно сталкиваются с сокетами в реальной жизни

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое FHS

A

Filesystem Hierarchy Standard, «стандарт иерархии файловой системы» — стандарт, унифицирующий местонахождение файлов и каталогов с общим назначением в файловой системе UNIX. На данный момент большинство UNIX-подобных систем в той или иной степени следует этим правилам. Например, обычная база данных о пользователях всегда хранится в файле /etc/passwd.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Команда для вывода информации о используемой системе каталогов

A

hier или man hier

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Команды для упрощенного чтения текстовых файлов

A

cat путь # (concatenate and print files)
head -n количество_строк # (первые n строк, без опции значение 10)
tail -n количество_строк # (последние n строк, без опции значение 10)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Сочетание клавиш для остановки утилит, захвативших управление

A

Ctrl + C

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Просмотр лога в режиме реального времени

A

sudo tail -f syslog
sudo - если системный лог, -f –follow

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое пейджер

A

Утилита для просмотра содержимого файла. Пейджер похож на текстовый редактор, но открытый только в режиме чтения. Самый распространенный пейджер называется less. (его использует man)
Одна из отличительных особенностей пейджеров состоит в том, что они одинаково хорошо и быстро работают с файлами любых размеров. Все потому, что пейджер не пытается загрузить в память весь файл до его отображения. Он грузит только ту часть, которая помещается на экран и при перемещении подгружает остальное.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Команда для поиска текста в файлах

A

grep шаблон имя_файла # (global regular expression print)
-B, –before-context # количество отображаемых строк до искомой
-A, –after-context # количество отображаемых строк после искомой
-C, –context # до и после одновременно

Иногда мы не знаем, в каком файле то, что мы ищем, но знаем директорию, в которой лежит этот файл. В такой ситуации нужно сделать два изменения:
1. Добавить опцию -r, которая говорит о том, что надо искать внутри директории (рекурсивно, то есть включая все поддиректории).
2. Указать путь до директории, а не файла.
grep -r bashrc . # -r рекурсивно искать строку ‘bashrc’ в текущей директории.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Какую клавишу обозначает символ циркумфлекс

A

Ctrl

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Как выйти из Vim

A

Убедитесь, что вы находитесь в командном режиме, на всякий случай нажмите Esc (или комбинацию Ctrl + [). Затем наберите :, эта команда переведёт вас в режим командной строки (еще один режим), затем введите q! и нажмите Enter. Так вы выйдете из вима без сохранения изменений. Если набрать :wq, то перед выходом сохранятся все изменения. Если вы хотите просто сохраниться без выхода, то наберите :w.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Три потока, которые ОС связывает с программой после её запуска

A

STDIN (Standard Input)
STDOUT (Standard Output)
STDERR (Standard Error)
Для языка программирования они выглядят как файлы, и взаимодействие с ними происходит как с файлами.
ОС позволяет подменять эти потоки при старте системы, например, вывод любой команды, запущенной в bash, можно записать в файл вместо вывода на экран:
ls -la > output # на экране ничего не отобразится, но в текущей директории появился файл output.
Операция, которую мы сделали выше, называется перенаправление потоков. Символ > означает, что нужно взять вывод из команды, указанной слева, и отправить его в файл, указанный справа. > всегда перезаписывает файл.
Если нужно не перезаписывать, а добавлять, то используйте&raquo_space;.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Утилита/команда для подсчета количества строк/слов/символов в файле

A

wc # (word count)
wc -l < result # вывести количество строк в файле result

22
Q

Нумерация потоков в *nix

A

0 - STDIN
1 - STDOUT
2 - STDERR

23
Q

Перенаправление потоков

A

cd lala 2>&1 # STDERR перенаправляется в STDOUT
cd lala 2> output # STDERR перенаправляется в файл
cd lala &> output # Оба потока, STDERR и STDOUT, перенаправляются в файл

24
Q

Символ пайп

A

— этот символ называется пайп, он указывает шеллу взять STDOUT одного процесса, и соединить его с STDIN другого процесса.

25
Команда/утилита для создания файла
touch # Основная задача утилиты — поменять время последнего доступа к файлу, но она обладает побочным эффектом. Если файла не существует, то он будет создан.
26
Команда для удаления файла и директории
rm имя_файла rm -r имя_директории rm -f или rm --force # флаг позволяет игнорировать несуществующие файлы и не запрашивать подтверждение на удаление.
27
Как переименовать файл
В *nix-системах не существует понятия "переименовать файл". Переименование всегда равносильно перемещению, которое выполняется командой mv (move). mv file renamed-file
28
Команда для копирования файла или директории
cp file file-copy cp -r директория копия_директории # -r (recursive) для каталога.
29
Команда создания каталог(а/ов)
mkdir mkdir -p one/two/three # создает все папки при необходимости (--parents)
30
История введенных команд (файл где хранятся, переменная окружения, команда)
.bash_history # в домашней директории пользователя HISTFILESIZE # если не задана, то .bash_history растет бесконечно history history 5 # отобразятся 5 последних команд !7 - повторно выполняется команда с 7м номером из истории
31
Сочетание клавиш для реверсивного поиска по истории команд
Ctrl + R, повторное нажатие выберет следующее совпадение из истории
32
Команда для того чтобы узнать имя текущего пользователя
whoami
33
Команда вывода отчет о работающих процессах
ps # (process status) ps aux # какой процесс под каким пользователем запущен
34
Команда вывода своего UID и GID
id
35
Файл, хранилище пользователей в *nix
/etc/passwd
36
Расшифровка записи в /etc/passwd kirill.m:x:1002:1002::/home/kirill.m:/bin/bash
kirill.m:x:1002:1002::/home/kirill.m:/bin/bash имя:пароль:UID:GID:инфо_о_юзере:домашняя_директория:шелл_по_умолчанию /usr/sbin/nologin # говорит о том, что данный пользователь не может входить в систему.
37
Утилита/команда для повышения привилегий в системе
sudo # (substitute user and do) su # устарела Как правило, в Ubuntu sudo спрашивает пароль и запоминает его на 5 минут. На протяжении этого времени вы можете использовать sudo, не вводя пароль каждый раз Иногда бывает нужно выполнить команду из-под пользователя, отличного от root. Тогда придётся добавить флаг -u: sudo -u nobody mkdir /tmp/test Если стоит задача произвести сразу пачку действий от имени другого пользователя, то для этого можно запустить новую оболочку внутри текущей (говорят, что мы стартуем новую сессию): sudo -i sudo --login # то же, что и -i exit # выход из новой сессии
38
Утилита, которая читает данные из STDIN и записывает в файл, если файл не существует, то создает его
tee echo 'Hello' | tee some_file_name
39
Расшифровка описания прав доступа
-rw-r--r-- # первый дефис означает файл, d - директория drwxr-xr-x r — чтение, w — запись и x — исполнение, порядок всегда таков, r w x, прочерк - отсутствие данного права Права задаются для трёх типов пользователей: владельца (User), пользователей, входящих в ту же группу (Group) и остальных (Other) — тех, кто не попал в предыдущие две.
40
Как задаются права на удаление файла
Сам файл не может обозначить прав на своё удаление, они всегда берутся из того места, где он находится. Удалить файл можно, только если у вас есть возможность писать в эту директорию.
41
Особенности прав доступа для директорий (r и x)
x: позволяет перемещаться в директорию и обращаться ко всем расположенным в ней файлам и каталогам. Обращаться можно при условии, что эти файлы доступны на чтение, или запись, или выполнение: например, если положить доступный на чтение файл в директорию с правом x, то вы сможете прочитать этот файл. Если убрать с директории право x, то вы вовсе лишитесь доступа к файлу. r: директория, по сути, является списком файлов, поэтому право на чтение позволяет прочитать этот список файлов, а именно вывести список имён файлов, содержащихся в директории. Однако если хотите посмотреть не простой список имён файлов, а список с дополнительной информацией (как при выводе ls -l), то требуется еще и право x, потому что в этом случае надо обращаться к файлам за их метаданными. В любом случае без права r на каталог вы не сможете посмотреть его содержимое.
42
Цифровая запись прав доступа
755 # пользователь - группа - остальные r - read - 4 w - write - 2 x - execute - 1 0 - нет прав для данного типа пользователя Сумма определяет число: 7 - чтение, запись и исполнение 6 - чтение и запись 5 - чтение и исполнение 4 - только чтение 3 - запись и исполнение 2 - только запись 1 - только исполнение
43
Утилита для изменения прав доступа
chmod # (change mode) chmod 755 filename
43
Утилита для изменения владельца файла
chown # (change owner) chown kenny somefile chown rob:developers strace.log # Поменять владельца для strace.log в 'rob' и идентификатор группы в 'developers'
44
Имя стандартного пакетного менеджера в Ubuntu
apt
45
Формат пакетов (программ) в Ubuntu
deb
46
Основные пакетные менеджеры в Node.js, PHP, Ruby, Python
Node.js: npm PHP: Composer Ruby: RubyGems Python: pip
47
Поиск исполняемого файла при запуске утилиты (PATH)
Когда в командной строке вводится некоторая команда, например, ls, то шелл начинает поиск исполняемого файла с именем ls в списке директорий, указанном в переменной окружения PATH. /home/hex/.local/bin:/home/hex/bin/:/home/hex/.local/bin Шелл перебирает директории слева направо и ищет ту, в которой есть файл ls, доступный для исполнения.
48
Команда для того чтобы узнать где лежит исполняемый файл конкретной программы
whereis имя_утилиты
49
Как запустить программу из текущей директории?
Прямой запуск программ всегда должен быть путём до файла, например, path/to/executable/file. А если файл лежит в текущей директории? Вот тут-то нам и поможет обращение через точку ./ ./executable Такое поведение сделано в целях безопасности. Ведь возможно вы хотели запустить какую-то стандартную программу, а злоумышленник положил в текущую директорию программу с таким же именем.
50
Команды установки и обновления через пакетный менеджер
sudo apt update # обновляет индекс sudo apt upgrade # производит обновление уже установленных пакетов sudo apt install php # устанавливает PHP