50 คำถามและคำตอบสัมภาษณ์การเขียนสคริปต์เชลล์ (2026)

ต่อไปนี้เป็นคำถามและคำตอบในการสัมภาษณ์ Shell Scripting สำหรับผู้สมัครใหม่และมีประสบการณ์เพื่อให้ได้งานในฝัน

 

คำถามและคำตอบสัมภาษณ์การเขียนสคริปต์ Linux Shell

1) เปลือกหอยคืออะไร?

เชลล์เป็นอินเทอร์เฟซระหว่างผู้ใช้และเคอร์เนล แม้ว่าจะมีเคอร์เนลได้เพียงตัวเดียว แต่ระบบสามารถมีเชลล์หลายตัวทำงานพร้อมกันได้ ดังนั้น ทุกครั้งที่ผู้ใช้ป้อนคำสั่งผ่านแป้นพิมพ์ เชลล์จะสื่อสารกับเคอร์เนลเพื่อดำเนินการคำสั่งนั้น จากนั้นจึงแสดงผลลัพธ์ให้ผู้ใช้เห็น

👉 ดาวน์โหลดไฟล์ PDF ฟรี: คำถามและคำตอบสัมภาษณ์การเขียนสคริปต์เชลล์


2) เชลล์สคริปต์คืออะไร?

การเขียนสคริปต์เชลล์ เป็นโปรแกรมคอมพิวเตอร์โอเพ่นซอร์สที่ออกแบบมาเพื่อรันโดยเชลล์ Unix/Linux Shell Scripting คือโปรแกรมสำหรับเขียนชุดคำสั่งเพื่อให้เชลล์ดำเนินการ สามารถรวมลำดับคำสั่งที่ยาวและซ้ำกันเป็นสคริปต์เดียวที่เรียบง่าย ซึ่งสามารถจัดเก็บและดำเนินการได้ตลอดเวลา ซึ่งช่วยลดความพยายามในการเขียนโปรแกรม

คำถามสัมภาษณ์การเขียนสคริปต์ของเชลล์


3) เชลล์ที่ใช้กันทั่วไปประเภทต่าง ๆ บนระบบ Linux ทั่วไปมีอะไรบ้าง?

csh, ksh, ทุบตี, บอร์น เชลล์ที่ใช้กันมากที่สุดและขั้นสูงที่ใช้ในปัจจุบันคือ “Bash”


4) อะไรคือสิ่งที่เทียบเท่ากับทางลัดไฟล์ที่เรามีหน้าต่างบนระบบ Linux?

ทางลัดถูกสร้างขึ้นโดยใช้ "ลิงก์" บน Linux ลิงก์ที่สามารถใช้ได้มีอยู่ 2 ประเภทคือ "ซอฟต์ลิงก์" และ "ฮาร์ดลิงก์"


5) อะไรคือความแตกต่างระหว่างซอฟต์ลิงก์และฮาร์ดลิงก์?

ซอฟต์ลิงก์คือลิงก์ไปยังชื่อไฟล์และสามารถอยู่ในระบบไฟล์ต่างๆ ได้เช่นกัน อย่างไรก็ตามฮาร์ดลิงก์จะลิงก์ไปยังไอโหนดของไฟล์และจะต้องอยู่ในระบบไฟล์เดียวกันกับของไฟล์ การลบไฟล์ต้นฉบับจะทำให้ซอฟต์ลิงก์ไม่ทำงาน (ลิงก์เสีย) แต่ไม่ส่งผลกระทบต่อฮาร์ดลิงก์ (ฮาร์ดลิงก์จะยังคงเข้าถึงสำเนาของไฟล์)


6) คุณจะส่งผ่านและเข้าถึงอาร์กิวเมนต์ไปยังสคริปต์ใน Linux ได้อย่างไร

อาร์กิวเมนต์สามารถส่งผ่านได้ดังนี้:

scriptName “Arg1” “Arg2″….”Argn” และสามารถเข้าถึงได้ภายในสคริปต์เป็น $1 , $2 .. $n


7) $* และ $@ แตกต่างกันอย่างไร?

$@ ถือว่าอาร์กิวเมนต์ที่ยกมาแต่ละรายการเป็นอาร์กิวเมนต์แยกกัน แต่ $* จะพิจารณาชุดพารามิเตอร์ตำแหน่งทั้งหมดเป็นสตริงเดียว


8) ใช้คำสั่ง sed เพื่อแทนที่เนื้อหาของไฟล์ (จำลองคำสั่ง tac)

เช่น:

if cat fille
ABCD
EFGH

ดังนั้น O/p ควรจะเป็น

อีเอฟจี
กขคง

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) คุณจะพบ 99 ได้อย่างไรth บรรทัดของไฟล์โดยใช้คำสั่ง tail และ head เท่านั้น?

ส่วนท้าย +99 ไฟล์1|หัว -1


12) พิมพ์ 10th บรรทัดโดยไม่ต้องใช้คำสั่ง tail และ head

sed –n '10p' file1

13) ใน bash shell ของฉัน ฉันต้องการให้ prompt อยู่ในรูปแบบ '$”Present Working Directory”:”hostname”> และโหลดไฟล์ที่มีรายการฟังก์ชันที่ผู้ใช้กำหนดทันทีที่ฉันเข้าสู่ระบบ คุณจะทำให้สิ่งนี้เป็นอัตโนมัติได้อย่างไร ?

ใน bash shell เราสามารถสร้างไฟล์ ".profile" ที่จะถูกเรียกใช้งานโดยอัตโนมัติทันทีที่เราล็อกอินและเขียนไวยากรณ์ต่อไปนี้ลงไป

export PS1='$ `pwd`:`hostname`>' .File1

ที่นี่ File1 เป็นไฟล์ที่มีฟังก์ชันที่ผู้ใช้กำหนดและ “” เรียกใช้ไฟล์นี้ในเชลล์ปัจจุบัน


14) อธิบายเกี่ยวกับบิตการอนุญาต “s” ในไฟล์หรือไม่?

บิต "s" เรียกว่าบิต "set user id" (SUID)

บิต "s" บนไฟล์ทำให้กระบวนการมีสิทธิ์ของเจ้าของไฟล์ในระหว่างอินสแตนซ์ของโปรแกรม

ตัวอย่างเช่น การรันคำสั่ง "passwd" เพื่อเปลี่ยนรหัสผ่านปัจจุบันจะทำให้ผู้ใช้เขียนรหัสผ่านใหม่ลงในไฟล์เงาแม้ว่าจะมี "root" เป็นเจ้าของก็ตาม


15) ฉันต้องการสร้างไดเร็กทอรีเพื่อให้ทุกคนในกลุ่มสามารถสร้างไฟล์และเข้าถึงไฟล์ของบุคคลใดก็ได้ในนั้น แต่ไม่ควรลบไฟล์อื่นนอกจากไฟล์ที่สร้างขึ้นเอง

เราสามารถสร้างไดเร็กทอรีที่ให้สิทธิ์การอ่านและดำเนินการแก่ทุกคนในกลุ่มและตั้งค่าบิตเหนียว "t" เป็นดังนี้:

mkdir direc1
 
chmod g+wx direc1
 
chmod +t direc1

16) คุณจะรู้ได้อย่างไรว่าระบบทำงานมานานแค่ไหน?

เราสามารถค้นหาสิ่งนี้ได้โดยใช้คำสั่ง “uptime”


17) ผู้ใช้สามารถค้นหาข้อมูลทั้งหมดเกี่ยวกับผู้ใช้รายใดรายหนึ่งได้อย่างไร เช่น เชลล์เริ่มต้น, ชื่อจริง, ไดเร็กทอรีเริ่มต้น, เขาใช้ระบบเมื่อใดและนานแค่ไหน?

นิ้ว “loginName” …โดยที่ชื่อล็อกอินคือชื่อล็อกอินของ

ผู้ใช้ที่คาดว่าจะมีข้อมูล


18) $$ และ $! คืออะไร?

$$ ให้รหัสกระบวนการของกระบวนการที่กำลังดำเนินการอยู่ในขณะที่ $! แสดงรหัสกระบวนการของกระบวนการที่เพิ่งเข้าสู่เบื้องหลัง


19) กระบวนการซอมบี้คืออะไร?

กระบวนการเหล่านี้เป็นกระบวนการที่เสียชีวิตไปแล้ว แต่กระบวนการหลักยังคงไม่ได้รับสถานะการออก กระบวนการเหล่านี้แม้ว่าจะใช้งานไม่ได้ก็ยังมีรายการรหัสกระบวนการในตารางกระบวนการ


20) คุณจะคัดลอกไฟล์จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้อย่างไร?

เราสามารถใช้ยูทิลิตี้เช่น “ftp,” “scp” หรือ “rsync” เพื่อคัดลอกไฟล์จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง

เช่น การใช้ ftp:

ชื่อโฮสต์ FTP

>ใส่ไฟล์1

>ลาก่อน

สำเนาข้างต้น ไฟล์ file1 จากระบบภายในเครื่องไปยังระบบปลายทางที่ระบุชื่อโฮสต์


คำถามและคำตอบสัมภาษณ์การเขียนสคริปต์เชลล์สำหรับผู้มีประสบการณ์

21) ฉันต้องการตรวจสอบไฟล์บันทึกที่อัปเดตอย่างต่อเนื่อง คำสั่งใดที่สามารถใช้เพื่อบรรลุเป้าหมายนี้ได้อย่างมีประสิทธิภาพมากที่สุด

เราสามารถใช้ tail –f filename ได้ ซึ่งจะทำให้แสดงเฉพาะ 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) ฉันต้องการอ่านอินพุตทั้งหมดไปยังคำสั่งจาก file1 นำเอาต์พุตทั้งหมดไปที่ file2 และเกิดข้อผิดพลาดไปที่ไฟล์ 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” ทุกๆ 100 ได้อย่างไรth บรรทัดของไฟล์?

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) ซุปเปอร์บล็อกคืออะไร?

Super block มีข้อมูลทั้งหมดเกี่ยวกับระบบไฟล์ เช่น ขนาดของระบบไฟล์ ขนาดบล็อกที่ใช้โดยจำนวนบล็อกข้อมูลที่ว่าง และรายการ inode ที่ว่างและบล็อกข้อมูล


45) บล็อกไอโหนดคืออะไร?

บล็อกนี้มี inode สำหรับทุกไฟล์ของระบบไฟล์พร้อมกับแอตทริบิวต์ของไฟล์ทั้งหมดยกเว้นชื่อ


46) ฉันจะส่งเมลที่มีไฟล์บีบอัดเป็นไฟล์แนบได้อย่างไร?

ไฟล์ zip1.zip file1|mailx –s “หัวเรื่อง” รหัสอีเมลของผู้รับ

เนื้อหาอีเมล

EOF


47) เราจะสร้างนามแฝงคำสั่งในเชลล์ได้อย่างไร?

alias Aliasname =”คำสั่งที่จะสร้างนามแฝง”


48) ฟิลด์สิทธิ์ "c" และ "b" ของไฟล์คืออะไร?

“ค” และ “ข” ฟิลด์การอนุญาต โดยทั่วไปแล้วจะเกี่ยวข้องกับไฟล์อุปกรณ์ โดยระบุว่าไฟล์เป็นไฟล์อักขระพิเศษหรือไฟล์พิเศษแบบบล็อก


49) เส้น shebang มีประโยชน์อย่างไร?

บรรทัด Shebang ที่ด้านบนของแต่ละสคริปต์จะกำหนดตำแหน่งของเอ็นจิ้นที่จะใช้ในการรันสคริปต์

คำถามสัมภาษณ์เหล่านี้จะช่วยในวีว่าของคุณ (วาจา)

สรุปโพสต์นี้ด้วย: