Вопросы, описанные ниже, могут возникнуть у вас как при самостоятельном прохождении нашего курса по DevOps и Linux так и просто будут полезной информацией для дальнейшего познания в сфере написания bash скриптов.
1: Что такое shell?
Shell - это интерфейс между пользователем и ядром. Несмотря на то, что ядро может быть только одно; операционная система может иметь несколько shell'ов, работающих одновременно. Таким образом, всякий раз, когда пользователь вводит команду через клавиатуру, shell связывается с ядром, чтобы выполнить ее, и затем отображает вывод пользователю.
2: Какие виды shell обычно используются в Linux?
csh, ksh, bash, Bourne. Наиболее часто используемым и продвинутым shell сегодня является «Bash».
3: Какой эквивалент ярлыку на файл в Linux?
Ярлыки создаются с помощью «ссылок» в Linux. Существует два типа ссылок, которые могут использоваться, а именно «мягкие (soft link)» и «жесткие (hard link)».
4: В чем разница между мягкими и жесткими ссылками?
Мягкие являются ссылками на имя файла и могут находиться на различных файловых системах; жесткие ссылки связаны с inode файла и должны находиться в той же файловой системе, что и сам файл. Удаление исходного файла делает мягкую ссылку неактивной (разорванная ссылка), но не влияет на жесткую ссылку (жесткая ссылка по-прежнему будет обращаться к копии файла).
5: Как передать и получить доступ к аргументам скрипта в Linux?
Аргументы в скрипте могут передаваться так:
startName "Arg1" "Arg2 ″...."Argn"
и могут быть доступны внутри скрипта как
$1, $2.. $n
6: Что означает запись $# в скрипте?
$# показывает число аргументов, переданных скрипту.
7: В чем разница между $* и $@ в скрипте?
$@ рассматривает каждый приведенный аргумент скрипта как отдельный, а $* будет рассматривать весь набор позиционных параметров как одну строку.
8: Приведите использование команды sed для замены содержимого файла
Например:
если в файле содержится
ABCD EFGH
Тогда будет выведено:
EFGH ABCD
sed '1! G; h;$!d' file_1
Здесь команда G добавляется к шаблону образца,
команда h копирует буфер образца в буфер
команда d удаляет текущее пространство образца.
9: Замените однострочным скриптом в файле все вхождения слова «ABC» на «DEF» от 5-й строки до конца только в тех строках, которые содержат слово «MNO»
sed -n '5,$p' file1 | sed '/MNO/s/ABC/DEF/'
10: Напишите скрипт из последовательности команд, чтобы найти частоту встречаемости каждого слова в файле.
tr –s "(backslash)040" < file1|tr –s "(backslash)011"|tr "(backslash)040 (backslash)011" "(backslash)012" |uniq –c
где "(backslash)040" - восьмеричный эквивалент символа "пробел";
“(backslash)011” - восьмеричный эквивалент символа “табуляции” и
“(backslash)012” - восьмеричный эквивалент символа новой строки.
11: Как однострочным скриптом найти 99-ю строку файла, используя только команды tail и head?
tail + 99 file1 | head -1
12: Выведите 10-ю строку однострочным скриптом без использования команды tail и head.
sed -n '10p' file1
13: В моей оболочке bash я хочу, чтобы мое приглашение ко вводу было формата "$" текущая_рабочая_директория ":" имя_ПК "> и загрузить файл, содержащий список пользовательских функций, как только я войду в систему. Как это автоматизировать?
В оболочке bash мы можем создать «.profile» файл, который автоматически вызывается при запуске. Запишу в него следующий синтаксис:
export PS1 = '$' pwd ':' имя_ПК '>' .File1
Здесь File1 - файл, содержащий определяемые пользователем функции, а «.» вызывает этот файл в текущей оболочке.
14: Расскажите о бите «s» в разрешениях файла
Бит «s» называется битом «set user id» (SUID). Бит «s» в файле приводит к тому, что процесс получает привилегии владельца файла во время запуска программы. Например, выполнение команды «passwd» для изменения текущего пароля приводит к тому, что пользователь записывает свой новый пароль в теневой файл, даже если его владельцем является «root».
15: Я хочу создать каталог, чтобы любой в группе мог создать файл и получить доступ к файлу любого человека в нем, но никто не должен иметь возможность удалить файл, кроме созданного им самим.
Мы можем создать каталог, предоставляющий доступ для чтения и выполнения для всех в группе и устанавливающий его липкий бит «t» следующим образом:
mkdir direct1
chmod g+wx direct1
chmod +t direct1
16: Как узнать, как долго работает система?
Мы можем найти это с помощью команды
uptime
17: Как любой пользователь может узнать всю информацию о конкретном пользователе, такую как его оболочка по умолчанию, реальное имя, каталог по умолчанию, когда и как долго он использует систему?
finger "loginName"
где loginName - имя пользователя, информацию о котором необходимо получить.
18: В чем разница между $$ и $!?
$$ дает идентификатор процесса, выполняющегося в данный момент, тогда как $! показывает идентификатор процесса, который недавно перешел в фоновый режим.
19: Что такое процессы-зомби?
Это процессы, которые умерли, но статус выхода которых по-прежнему не выбран родительским процессом. Эти процессы, даже если они не являются функционирующими, по-прежнему имеют свой идентификатор процесса в таблице процессов.
20: Как скопировать файл с одного компьютера на другой?
Для копирования файла с одного компьютера на другой можно использовать такие утилиты, как ftp, scp или rsync.
Например, использование ftp:
FTP имя_ПК
> put file1
> bye
Выше копируется файл file1 из локальной системы в целевую систему, имя которой указано.
21: Я хочу контролировать постоянно обновляемый файл журнала. Какая команда может быть использована для этого наиболее эффективно?
Мы можем использовать
tail -f имя_файла
Это приведет к отображению только последних 10 строк по умолчанию, в которых постоянно отображается обновляемая часть файла.
22: Как подключиться к удаленному серверу и выполнить некоторые команды?
Мы можем использовать для этого ssh:
ssh имя_пользователя@IP_сервера -p ssh_порт
Пример
ssh root@122.52.251.171 -p 22
После выполнения вышеуказанной команды вам будет предложено ввести пароль.
23: У меня есть 2 файла, и я хочу вывести записи, которые являются общими для обоих.
Мы можем использовать для этого команду «comm»:
comm -12 file1 file2
Ключ 12 подавляет содержимое, которое является уникальным для 1-го и 2-го файлов соответственно.
24: Напишите скрипт, чтобы напечатать первые 10 элементов последовательности Фибоначчи.
# !/bin/sh
a = 1
b = 1
echo $a
echo $b
for I in 1 2 3 4 5 6 7 8
do
c = a
b = $ a
b = $ (($ a + $ c))
echo $ b
done
25: Как подключиться к серверу баз данных из Linux?
Мы можем использовать утилиту isql:
isql -S имя_сервера -U имя_пользователя -P пароль
26: Назовите 3 стандартных потока в Linux?
0 - Стандартный ввод, 1 - стандартный вывод, 2 - стандартная ошибка.
27: Как прочитать все входные данные из file1, направить все выходные данные в file2 и ошибки в file3?
команда file2 2 > file3
28: Что произойдет с моим текущим процессом при выполнении команды с помощью exec?
«exec» накладывает вновь сформированный процесс на текущий процесс; поэтому при выполнении команды с помощью exec, команда выполняется в текущей оболочке без создания новых процессов.
Например, выполнение «exec ls» в командной строке приведет к выполнению ls, а после выхода ls, процесс завершится.
29: Как съимитировать wc -l с помощью awk?
awk 'END {print NR} имя_файла'
30: Найти в файле количество строк, содержащих слово «ABC».
grep -c "ABC" file1
31: В чем разница между grep и egrep?
egrep - это расширенный (Extended) grep, поддерживающий дополнительные функции grep, такие как «+» (одно или более вхождение предыдущего символа), «?» (0 или 1 вхождение предыдущего символа) и «|» (альтернативное совпадение)
32: Как вывести имена всех пользователей в системе?
Все пользователи перечислены в файле /etc/shadow
awk –F ':' '{print $1}' /etc/shadow|uniq -u
33: Как задать массив в Linux?
Синтаксис в ksh:
Set –A arrayname= (element1 element2 ….. element)
В bash:
A=(element1 element2 element3 …. elementn)
34: Запишите синтаксис цикла «for»
Синтаксис:
for итератор in (элементы)
do
выполняемые_команды
done
35: Как найти общее место на диске, используемое определенным пользователем?
du -s/home/user1
где user1 - это пользователь, для которого необходимо найти общее место на диске.
36: Напишите синтаксис для условий «if» в Linux
Синтаксис:
If условие успеха
then
выполненяемые команды
else
выполненяемые команды
fi
37: Что означает $?
Команда $? возвращает статус выхода последней выполненной команды.
38: Как удалить все пустые строки в файле?
sed '^ [\011\040]*$/d' file1
где \011 - восьмеричный эквивалент пробела и
\040 - восьмеричный эквивалент символа табуляции
39: Как вставить строку «ABCDEF» в каждую 100-ю строку файла?
sed ‘100i\ABCDEF’ file1
40: Напишите последовательность команд, чтобы найти все файлы, измененные менее чем за 2 дня, и выведите количество записей каждого
find . –mtime -2 –exec wc –l {} \;
41: Как установить разрешение rwx по умолчанию для всех пользователей в каждом файле, созданном в текущей оболочке?
Мы можем использовать:
umask 777
Будет установлено разрешение rwx
по умолчанию для каждого файла, созданного для каждого пользователя.
42: Как найти имя процесса по его идентификатору?
Можно использовать
ps -p Id_процесса
43: Каковы четыре основных компонента каждой файловой системы в Linux?
Загрузочный блок, суперблок, inode блок и блок данных являются фундаментальными компонентами каждой файловой системы в Linux.
44: Что такое загрузочный блок?
Этот блок содержит небольшую программу «Master Boot Record» (MBR), которая загружает ядро во время загрузки системы.
45: Что такое суперблок?
Суперблок содержит всю информацию о файловой системе, такую как размер файловой системы, размер блока, используемый по количеству свободных блоков данных, и список свободных inode и блоков данных.
46: Что такое inode блок?
Этот блок содержит inode для каждого файла файловой системы вместе со всеми атрибутами файла, за исключением его имени.
47: Как отправить письмо со сжатым файлом в качестве вложения?
zip file1.zip file1 | mailx -s "тема" электронная_почта_получателей
Содержимое электронной почты
EOF
48: Как создать псевдонимы команд в оболочке?
alias имя_псевдонима = "Команда, псевдоним которой должен быть создан"
49: Что такое поля разрешения «c» и «b» у файла?
Поля разрешений «c» и «b» обычно ассоциированы с файлом устройства. Они определяют, является ли файл специальным символьным файлом или специальным блочным файлом.
50: Что такое использование линии shebang?
Строка shebang в верхней части каждого сценария определяет местоположение механизма, который должен использоваться для выполнения сценария.