50 въпроса и отговора за интервю за скриптове на Shell (2025 г.)
Въпроси и отговори за интервю за Linux Shell Scripting
1) Какво е обвивка?
Shell е интерфейс между потребителя и ядрото. Въпреки че може да има само едно ядро; една система може да има много работещи обвивки едновременно. Така че, когато потребител въведе команда през клавиатурата, обвивката комуникира с ядрото, за да я изпълни и след това да покаже изхода на потребителя.
👉 Безплатно изтегляне на PDF: Въпроси и отговори за интервю за Shell Scripting
2) Какво е Shell Scripting?
Скрипт на Shell е компютърна програма с отворен код, проектирана да се изпълнява от Unix/Linux shell. Shell Scripting е програма за писане на поредица от команди, които shell да изпълни. Той може да комбинира дълги и повтарящи се последователности от команди в единичен и прост скрипт, който може да се съхранява и изпълнява по всяко време, което намалява усилията за програмиране.
3) Какви са различните типове често използвани обвивки в типична Linux система?
csh,ksh,bash,Борн. Най-често използваната и усъвършенствана обвивка, използвана днес, е „Bash“.
4) Какъв е еквивалентът на файлов пряк път, който имаме прозорец в Linux система?
Преките пътища се създават с помощта на „връзки“ в Linux. Има два вида връзки, които могат да се използват, а именно „мека връзка“ и „твърда връзка“.
5) Каква е разликата между меки и твърди връзки?
Меките връзки са връзка към името на файла и могат да се намират и на различни файлови системи; твърдите връзки обаче са връзка към inode на файла и трябва да са на същата файлова система като тази на файла. Изтриването на оригиналния файл прави меката връзка неактивна (неработеща връзка), но не засяга твърдата връзка (твърдата връзка все още ще има достъп до копие на файла)
6) Как ще подадете и получите достъп до аргументи на скрипт в Linux?
Аргументите могат да се предават като:
scriptName “Arg1” “Arg2″….”Argn” и може да бъде достъпен вътре в скрипта като $1 , $2 .. $n
7) Каква е разликата между $* и $@?
$@ третира всеки цитиран аргумент като отделен аргумент, но $* ще разглежда целия набор от позиционни параметри като единичен низ.
8) Използвайте командата sed, за да замените съдържанието на файла (емулирайте командата tac)
Например:
if cat fille ABCD EFGH
Тогава O/p трябва да бъде
EFGH
ABCD
sed '1! G; h;$!d' file1
Тук командата G се добавя към пространството на шаблона,
командата h копира шаблонния буфер в задържания буфер
и командата d изтрива текущото пространство на модела.
9) При даден файл заменете всички думи „ABC“ с „DEF“ от 5th ред до края само на онези редове, които съдържат думата „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 where "(backslash)040" is octal equivalent of "space"
„(обратна наклонена черта)011“ е осмичен еквивалент на „знак табулация“ и
„(обратна наклонена черта)012“ е осмичен еквивалент на знака за нов ред.
11) Как ще намерите 99th ред на файл, използващ само команда за опашка и глава?
опашка +99 файл1|глава -1
12) Отпечатайте 10th линия без използване на команда за опашка и глава.
sed –n '10p' file1
13) В моя bash shell искам подканата ми да бъде във формат '$”Презентиране на работна директория”:”име на хост”> и да зареди файл, съдържащ списък с дефинирани от потребителя функции, веднага щом вляза, как ще автоматизирате това ?
В bash shell можем да създадем файл „.profile“, който автоматично се извиква веднага щом вляза и напиша следния синтаксис в него.
export PS1='$ `pwd`:`hostname`>' .File1
Тук File1 е файлът, съдържащ дефинираните от потребителя функции и „.“ извиква този файл в текущата обвивка.
14) Обяснете за бита за разрешение „s“ във файл?
Битът “s” се нарича бит “задаване на потребителско име” (SUID).
Битът “s” на файл кара процеса да има привилегиите на собственика на файла по време на екземпляра на програмата.
Например, изпълнението на командата „passwd“ за промяна на текущата парола кара потребителя да запише новата си парола в скрития файл, въпреки че има „root“ като собственик.
15) Искам да създам директория, така че всеки в групата да може да създаде файл и да има достъп до файла на всеки човек в него, но никой не трябва да може да изтрие файл, различен от създадения от него самия.
Можем да създадем директорията, даваща достъп за четене и изпълнение на всички в групата и да зададем нейния лепкав бит „t“, както следва:
mkdir direc1 chmod g+wx direc1 chmod +t direc1
16) Как можете да разберете колко време работи системата?
Можем да намерим това, като използваме командата „uptime“.
17) Как всеки потребител може да разбере цялата информация за конкретен потребител, като неговата обвивка по подразбиране, име в реалния живот, директория по подразбиране, кога и колко дълго е използвал системата?
finger “loginName” … където loginName е името за вход на
потребител, чиято информация се очаква.
18) Каква е разликата между $$ и $!?
$$ дава идентификатора на процеса на текущо изпълняващия се процес, докато $! Показва идентификатора на процеса, който наскоро е преминал на заден план.
19) Какво представляват зомби процесите?
Това са процесите, които са умрели, но чийто статус на изход все още не е избран от родителския процес. Тези процеси, дори и да не функционират, все още имат запис за идентификатор на процеса в таблицата на процесите.
20) Как ще копирате файл от една машина на друга?
Можем да използваме помощни програми като „ftp“, „scp“ или „rsync“, за да копираме файл от една машина на друга.
Например с помощта на ftp:
FTP име на хост
>поставете файл1
>чао
По-горе копира, файл file1 от локалната система до целевата система, чието име на хост е посочено.
Въпроси и отговори за интервю за Shell Scripting за опитни
21) Искам да наблюдавам непрекъснато актуализиращ се регистрационен файл, коя команда може да се използва за постигане на това най-ефективно?
Можем да използваме tail –f име на файл. Това ще накара само последните 10 реда по подразбиране да бъдат показани на std o/p, което непрекъснато показва актуализиращата се част от файла.
22) Искам да се свържа с отдалечен сървър и да изпълня някои команди, как мога да постигна това?
Можем да използваме ssh, за да направим това:
ssh потребителско име@serverIP -p sshport
Пример
ssh root@122.52.251.171 -p 22
След като командата по-горе бъде изпълнена, ще бъдете помолени да въведете паролата
23) Имам 2 файла и искам да отпечатам записите, които са общи за двата.
Можем да използваме командата „comm“, както следва:
comm -12 file1 file2 … 12 ще потисне съдържанието, което са
уникален за 1st и 2nd съответно файл.
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) Искам да прочета целия вход към командата от файл1, да насоча целия изход към файл2 и грешка към файл 3, как мога да постигна това?
команда файл1 1>файл2
28) Какво ще се случи с текущия ми процес, когато изпълня команда с помощта на exec?
“exec” наслагва ново разклонения процес върху текущия процес; така че когато изпълня командата с помощта на exec, командата се изпълнява в текущата обвивка, без да създава нови процеси.
Напр. Изпълнение "exec ls"
на командния ред ще изпълни ls и след като ls излезе, процесът ще се изключи
29) Как ще емулирате wc –l с помощта на awk?
awk 'END {print NR} fileName'
30) За даден файл намерете броя на редовете, съдържащи думата „ABC“.
grep –c „ABC“ файл1
31) Каква е разликата между grep и egrep?
egrep е разширен grep, който поддържа добавени функции на grep като „+“ (1 или повече срещания на предишен знак),”?” (0 или 1 появяване на предишен знак) и „|” (алтернативно съвпадение)
32) Как да настроя масив в Linux?
Синтаксис в ksh:
Set –A arrayname= (element1 element2 ….. element) In bash A=(element1 element2 element3 …. elementn)
33) Запишете синтаксиса на цикъла „for“.
Синтаксис:
for iterator in (elements) do execute commands done
34) Как ще намерите общото дисково пространство, използвано от конкретен потребител?
du -s /home/user1 ….където user1 е потребителят, за когото трябва да се намери общото дисково пространство.
35) Напишете синтаксиса за условните изрази „if“ в Linux?
Синтаксис
If condition is successful then execute commands else execute commands fi
36) Какво е значението на $?
Командата $? дава изходния статус на последната изпълнена команда.
37) Как да изтрием всички празни редове във файл?
sed '^ [(backslash)011(backslash)040]*$/d' file1
където (обратна наклонена черта)011 е осмичен еквивалент на интервал и
(обратна наклонена черта)040 е осмичен еквивалент на раздела
38) Как да вмъкна ред „ABCDEF“ на всеки 100th ред на файл?
sed '100i\ABCDEF' файл1
39) Напишете последователност от команди, за да намерите всички файлове, променени за по-малко от 2 дни, и отпечатайте броя на записите за всеки.
намери . –mtime -2 –exec wc –l {} \;
40) Как мога да задам разрешението по подразбиране rwx за всички потребители за всеки файл, който е създаден в текущата обвивка?
Можем да използваме:
umask 777
Това ще зададе разрешение за rwx по подразбиране за всеки файл, който е създаден за всеки потребител.
41) Как можем да намерим името на процеса от неговия идентификатор на процес?
Ние можем да използваме "ps –p ProcessId"
42) Кои са четирите основни компонента на всяка файлова система на Linux?
Bootblock, super block, inode block и Datablock са основни компоненти на всяка файлова система на Linux.
43) Какво е блок за зареждане?
Този блок съдържа малка програма, наречена "Master Boot record" (MBR), която зарежда ядрото по време на зареждане на системата.
44) Какво е супер блок?
Суперблокът съдържа цялата информация за файловата система, като размера на файловата система, размера на блока, използван от броя на свободните блокове с данни и списък на свободните inode и блокове с данни.
45) Какво е inode блок?
Този блок съдържа inode за всеки файл от файловата система заедно с всички файлови атрибути, с изключение на неговото име.
46) Как мога да изпратя имейл с компресиран файл като прикачен файл?
zip file1.zip file1|mailx –s “subject” Имейл идентификатор на получателите
Съдържание на имейл
EOF
47) Как да създадем псевдоними на команди в шел?
alias Aliasname=”Команда, чийто псевдоним трябва да бъде създаден”.
48) Какво представляват полетата за разрешение „c“ и „b“ на файл?
"c" и "b" полета за разрешение обикновено са свързани с файл на устройство. Той определя дали даден файл е файл със специални знаци или блоков специален файл.
49) Каква е ползата от шибан линия?
Линията Shebang в горната част на всеки скрипт определя местоположението на двигателя, който ще се използва за изпълнение на скрипта.
Тези въпроси за интервюто също ще ви помогнат във вашата viva (устна)