fbpx
linux
14

Топ-50 вопросов и ответов по shell скриптам (2021)

5
(1)

Вопросы, описанные ниже, могут возникнуть у вас как при самостоятельном прохождении нашего курса по 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 в верхней части каждого сценария определяет местоположение механизма, который должен использоваться для выполнения сценария.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Tags: , ,
Читают сейчас
Меню

Попробуй курс Linux и DevOPS