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
Q

Команда/утилита для создания файла

A

touch # Основная задача утилиты — поменять время последнего доступа к файлу, но она обладает побочным эффектом. Если файла не существует, то он будет создан.

26
Q

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

A

rm имя_файла
rm -r имя_директории
rm -f или rm –force # флаг позволяет игнорировать несуществующие файлы и не запрашивать подтверждение на удаление.

27
Q

Как переименовать файл

A

В *nix-системах не существует понятия “переименовать файл”. Переименование всегда равносильно перемещению, которое выполняется командой mv (move).
mv file renamed-file

28
Q

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

A

cp file file-copy
cp -r директория копия_директории # -r (recursive) для каталога.

29
Q

Команда создания каталог(а/ов)

A

mkdir
mkdir -p one/two/three # создает все папки при необходимости (–parents)

30
Q

История введенных команд (файл где хранятся, переменная окружения, команда)

A

.bash_history # в домашней директории пользователя
HISTFILESIZE # если не задана, то .bash_history растет бесконечно
history
history 5 # отобразятся 5 последних команд
!7 - повторно выполняется команда с 7м номером из истории

31
Q

Сочетание клавиш для реверсивного поиска по истории команд

A

Ctrl + R, повторное нажатие выберет следующее совпадение из истории

32
Q

Команда для того чтобы узнать имя текущего пользователя

A

whoami

33
Q

Команда вывода отчет о работающих процессах

A

ps # (process status)
ps aux # какой процесс под каким пользователем запущен

34
Q

Команда вывода своего UID и GID

A

id

35
Q

Файл, хранилище пользователей в *nix

A

/etc/passwd

36
Q

Расшифровка записи в /etc/passwd
kirill.m:x:1002:1002::/home/kirill.m:/bin/bash

A

kirill.m:x:1002:1002::/home/kirill.m:/bin/bash
имя:пароль:UID:GID:инфо_о_юзере:домашняя_директория:шелл_по_умолчанию
/usr/sbin/nologin # говорит о том, что данный пользователь не может входить в систему.

37
Q

Утилита/команда для повышения привилегий в системе

A

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
Q

Утилита, которая читает данные из STDIN и записывает в файл, если файл не существует, то создает его

A

tee
echo ‘Hello’ | tee some_file_name

39
Q

Расшифровка описания прав доступа

A

-rw-r–r– # первый дефис означает файл, d - директория
drwxr-xr-x
r — чтение, w — запись и x — исполнение, порядок всегда таков, r w x, прочерк - отсутствие данного права
Права задаются для трёх типов пользователей: владельца (User), пользователей, входящих в ту же группу (Group) и остальных (Other) — тех, кто не попал в предыдущие две.

40
Q

Как задаются права на удаление файла

A

Сам файл не может обозначить прав на своё удаление, они всегда берутся из того места, где он находится. Удалить файл можно, только если у вас есть возможность писать в эту директорию.

41
Q

Особенности прав доступа для директорий (r и x)

A

x: позволяет перемещаться в директорию и обращаться ко всем расположенным в ней файлам и каталогам. Обращаться можно при условии, что эти файлы доступны на чтение, или запись, или выполнение: например, если положить доступный на чтение файл в директорию с правом x, то вы сможете прочитать этот файл. Если убрать с директории право x, то вы вовсе лишитесь доступа к файлу.

r: директория, по сути, является списком файлов, поэтому право на чтение позволяет прочитать этот список файлов, а именно вывести список имён файлов, содержащихся в директории. Однако если хотите посмотреть не простой список имён файлов, а список с дополнительной информацией (как при выводе ls -l), то требуется еще и право x, потому что в этом случае надо обращаться к файлам за их метаданными. В любом случае без права r на каталог вы не сможете посмотреть его содержимое.

42
Q

Цифровая запись прав доступа

A

755 # пользователь - группа - остальные
r - read - 4
w - write - 2
x - execute - 1
0 - нет прав для данного типа пользователя
Сумма определяет число:
7 - чтение, запись и исполнение
6 - чтение и запись
5 - чтение и исполнение
4 - только чтение
3 - запись и исполнение
2 - только запись
1 - только исполнение

43
Q

Утилита для изменения прав доступа

A

chmod # (change mode)
chmod 755 filename

43
Q

Утилита для изменения владельца файла

A

chown # (change owner)
chown kenny somefile
chown rob:developers strace.log # Поменять владельца для strace.log в ‘rob’ и идентификатор группы в ‘developers’

44
Q

Имя стандартного пакетного менеджера в Ubuntu

A

apt

45
Q

Формат пакетов (программ) в Ubuntu

A

deb

46
Q

Основные пакетные менеджеры в Node.js, PHP, Ruby, Python

A

Node.js: npm
PHP: Composer
Ruby: RubyGems
Python: pip

47
Q

Поиск исполняемого файла при запуске утилиты (PATH)

A

Когда в командной строке вводится некоторая команда, например, ls, то шелл начинает поиск исполняемого файла с именем ls в списке директорий, указанном в переменной окружения PATH.
/home/hex/.local/bin:/home/hex/bin/:/home/hex/.local/bin

Шелл перебирает директории слева направо и ищет ту, в которой есть файл ls, доступный для исполнения.

48
Q

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

A

whereis имя_утилиты

49
Q

Как запустить программу из текущей директории?

A

Прямой запуск программ всегда должен быть путём до файла, например, path/to/executable/file. А если файл лежит в текущей директории? Вот тут-то нам и поможет обращение через точку ./
./executable

Такое поведение сделано в целях безопасности. Ведь возможно вы хотели запустить какую-то стандартную программу, а злоумышленник положил в текущую директорию программу с таким же именем.

50
Q

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

A

sudo apt update # обновляет индекс
sudo apt upgrade # производит обновление уже установленных пакетов
sudo apt install php # устанавливает PHP