50 Ερωτήσεις και Απαντήσεις Συνέντευξης Shell Scripting (2025)

Ακολουθούν ερωτήσεις και απαντήσεις συνέντευξης Shell Scripting για πιο φρέσκους αλλά και έμπειρους υποψηφίους για να πάρουν τη δουλειά των ονείρων τους.

 

Ερωτήσεις και απαντήσεις για συνεντεύξεις για δέσμες ενεργειών Linux Shell

1) Τι είναι το κέλυφος;

Το Shell είναι μια διεπαφή μεταξύ του χρήστη και του πυρήνα. Παρόλο που μπορεί να υπάρχει μόνο ένας πυρήνας. ένα σύστημα μπορεί να έχει πολλά κελύφη που τρέχουν ταυτόχρονα. Έτσι, κάθε φορά που ένας χρήστης εισάγει μια εντολή μέσω του πληκτρολογίου, το κέλυφος επικοινωνεί με τον πυρήνα για να την εκτελέσει και στη συνέχεια να εμφανίσει την έξοδο στον χρήστη.

👉 Δωρεάν Λήψη PDF: Ερωτήσεις & Απαντήσεις Συνέντευξης Shell Scripting


2) Τι είναι το Shell Scripting;

Shell Scripting είναι ένα πρόγραμμα υπολογιστή ανοιχτού κώδικα που έχει σχεδιαστεί για να εκτελείται από το κέλυφος Unix/Linux. Το Shell Scripting είναι ένα πρόγραμμα για τη σύνταξη μιας σειράς εντολών για την εκτέλεση του φλοιού. Μπορεί να συνδυάσει μεγάλες και επαναλαμβανόμενες ακολουθίες εντολών σε ένα ενιαίο και απλό σενάριο που μπορεί να αποθηκευτεί και να εκτελεστεί ανά πάσα στιγμή, γεγονός που μειώνει τις προσπάθειες προγραμματισμού.

Ερωτήσεις συνέντευξης Shell Scripting


3) Ποιοι είναι οι διαφορετικοί τύποι κελύφους που χρησιμοποιούνται συνήθως σε ένα τυπικό σύστημα Linux;

csh,ksh,bash,Bourne. Το πιο συχνά χρησιμοποιούμενο και προηγμένο κέλυφος που χρησιμοποιείται σήμερα είναι το "Bash".


4) Τι ισοδυναμεί με μια συντόμευση αρχείου που έχουμε ένα παράθυρο σε ένα σύστημα Linux;

Οι συντομεύσεις δημιουργούνται χρησιμοποιώντας "συνδέσμους" στο Linux. Υπάρχουν δύο τύποι συνδέσμων που μπορούν να χρησιμοποιηθούν και συγκεκριμένα ο "soft link" και ο "hard link".


5) Ποια είναι η διαφορά μεταξύ μαλακών και σκληρών συνδέσμων;

Οι μαλακοί σύνδεσμοι είναι σύνδεσμοι προς το όνομα του αρχείου και μπορούν επίσης να βρίσκονται σε διαφορετικά συστήματα αρχείων. Ωστόσο, οι σκληροί σύνδεσμοι συνδέονται με το inode του αρχείου και πρέπει να βρίσκονται στο ίδιο σύστημα αρχείων με αυτό του αρχείου. Η διαγραφή του αρχικού αρχείου καθιστά τον μαλακό σύνδεσμο ανενεργό (σπασμένος σύνδεσμος) αλλά δεν επηρεάζει τον σκληρό σύνδεσμο (Η σκληρή σύνδεση θα εξακολουθεί να έχει πρόσβαση σε ένα αντίγραφο του αρχείου)


6) Πώς θα περάσετε και θα αποκτήσετε πρόσβαση σε ορίσματα σε ένα σενάριο στο Linux;

Τα επιχειρήματα μπορούν να περάσουν ως:

scriptName "Arg1" "Arg2″…."Argn" και μπορεί να προσπελαστεί μέσα στο σενάριο ως $1 , $2 .. $n


7) Ποια είναι η διαφορά μεταξύ $* και $@;

Το $@ αντιμετωπίζει κάθε όρισμα που αναφέρεται ως ξεχωριστά ορίσματα, αλλά το $* θα θεωρήσει ολόκληρο το σύνολο των παραμέτρων θέσης ως μια ενιαία συμβολοσειρά.


8) Χρησιμοποιήστε την εντολή sed για να αντικαταστήσετε το περιεχόμενο του αρχείου (εντολή εξομοίωσης tac)

Π.χ:

if cat fille
ABCD
EFGH

Τότε θα πρέπει να είναι O/p

EFGH
Α Β Γ Δ

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" είναι ένα οκταδικό ισοδύναμο του "χαρακτήρα καρτέλας" και

Το "(backslash)012" είναι ένα οκταδικό ισοδύναμο του χαρακτήρα νέας γραμμής.


11) Πώς θα βρείτε το 99th γραμμή ενός αρχείου χρησιμοποιώντας μόνο την εντολή ουράς και κεφαλής;

ουρά +99 αρχείο1|κεφαλή -1


12) Εκτυπώστε το 10th γραμμή χωρίς τη χρήση εντολής ουράς και κεφαλής.

sed –n '10p' file1

13) Στο bash shell μου θέλω η προτροπή μου να έχει τη μορφή '$”Present working directory”:”hostname”> και να φορτώσει ένα αρχείο που περιέχει μια λίστα με λειτουργίες που ορίζονται από το χρήστη αμέσως μόλις συνδεθώ, πώς θα το αυτοματοποιήσετε ?

Στο bash shell, μπορούμε να δημιουργήσουμε αρχείο ".profile" το οποίο καλείται αυτόματα μόλις συνδεθώ και γράψω την ακόλουθη σύνταξη σε αυτό.

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

Εδώ το File1 είναι το αρχείο που περιέχει τις συναρτήσεις που καθορίζονται από το χρήστη και το "." καλεί αυτό το αρχείο στο τρέχον κέλυφος.


14) Εξηγήστε σχετικά με το bit άδειας "s" σε ένα αρχείο;

Το bit "s" ονομάζεται bit "set user id" (SUID).

Το bit "s" σε ένα αρχείο κάνει τη διαδικασία να έχει τα δικαιώματα του κατόχου του αρχείου κατά την παρουσία του προγράμματος.

Για παράδειγμα, η εκτέλεση της εντολής «passwd» για την αλλαγή του τρέχοντος κωδικού πρόσβασης αναγκάζει τον χρήστη να γράψει τον νέο του κωδικό πρόσβασης στο σκιερό αρχείο, παρόλο που έχει ως κάτοχο το «root».


15) Θέλω να δημιουργήσω έναν κατάλογο τέτοιο ώστε οποιοσδήποτε στην ομάδα να μπορεί να δημιουργήσει ένα αρχείο και να έχει πρόσβαση στο αρχείο οποιουδήποτε ατόμου σε αυτό, αλλά κανένας δεν θα πρέπει να μπορεί να διαγράψει ένα αρχείο εκτός από αυτό που έχει δημιουργήσει ο ίδιος.

Μπορούμε να δημιουργήσουμε τον κατάλογο δίνοντας πρόσβαση ανάγνωσης και εκτέλεσης σε όλους στην ομάδα και ορίζοντας το κολλώδες bit «t» ως εξής:

mkdir direc1
 
chmod g+wx direc1
 
chmod +t direc1

16) Πώς μπορείτε να μάθετε πόσο καιρό λειτουργεί το σύστημα;

Μπορούμε να το βρούμε χρησιμοποιώντας την εντολή "uptime".


17) Πώς μπορεί οποιοσδήποτε χρήστης να μάθει όλες τις πληροφορίες για έναν συγκεκριμένο χρήστη, όπως το προεπιλεγμένο κέλυφος του, το πραγματικό του όνομα, τον προεπιλεγμένο κατάλογο, πότε και πόσο καιρό χρησιμοποιεί το σύστημα;

δάχτυλο "loginName" ...όπου loginName είναι το όνομα σύνδεσης του

χρήστη του οποίου οι πληροφορίες αναμένονται.


18) Ποια είναι η διαφορά μεταξύ $$ και $!;

Το $$ δίνει το αναγνωριστικό διαδικασίας της τρέχουσας εκτελούμενης διαδικασίας ενώ το $! Εμφανίζει το αναγνωριστικό διαδικασίας της διαδικασίας που πήγε πρόσφατα στο παρασκήνιο.


19) Τι είναι οι διαδικασίες ζόμπι;

Αυτές είναι οι διεργασίες που έχουν καταργηθεί, αλλά η κατάσταση εξόδου των οποίων δεν έχει ακόμη επιλεγεί από τη γονική διαδικασία. Αυτές οι διεργασίες, ακόμη και αν δεν είναι λειτουργικές, εξακολουθούν να έχουν την καταχώριση του αναγνωριστικού διαδικασίας στον πίνακα διεργασιών.


20) Πώς θα αντιγράψετε ένα αρχείο από το ένα μηχάνημα στο άλλο;

Μπορούμε να χρησιμοποιήσουμε βοηθητικά προγράμματα όπως "ftp", "scp" ή "rsync" για να αντιγράψουμε ένα αρχείο από το ένα μηχάνημα στο άλλο.

Για παράδειγμα, χρησιμοποιώντας ftp:

Όνομα κεντρικού υπολογιστή FTP

>βάλε το αρχείο1

> αντίο

Πάνω από τα αντίγραφα, το αρχείο file1 από το τοπικό σύστημα στο σύστημα προορισμού του οποίου το όνομα κεντρικού υπολογιστή καθορίζεται.


Ερωτήσεις και απαντήσεις συνέντευξης Shell Scripting για έμπειρους

21) Θέλω να παρακολουθώ ένα αρχείο καταγραφής που ενημερώνεται συνεχώς, ποια εντολή μπορεί να χρησιμοποιηθεί για να επιτευχθεί αυτό πιο αποτελεσματικά;

Μπορούμε να χρησιμοποιήσουμε το όνομα αρχείου tail –f. Αυτό θα έχει ως αποτέλεσμα να εμφανίζονται μόνο οι προεπιλεγμένες τελευταίες 10 γραμμές στο std o/p που δείχνει συνεχώς το τμήμα ενημέρωσης του αρχείου.


22) Θέλω να συνδεθώ σε έναν απομακρυσμένο διακομιστή και να εκτελέσω κάποιες εντολές, πώς μπορώ να το πετύχω;

Μπορούμε να χρησιμοποιήσουμε ssh για να το κάνουμε αυτό:

ssh username@serverIP -p sshport

Παράδειγμα

ssh root@122.52.251.171 -p 22

Μόλις εκτελεστεί η παραπάνω εντολή, θα σας ζητηθεί να εισάγετε τον κωδικό πρόσβασης


23) Έχω 2 αρχεία και θέλω να εκτυπώσω τις εγγραφές που είναι κοινές και στα δύο.

Μπορούμε να χρησιμοποιήσουμε την εντολή "comm" ως εξής:

comm -12 file1 file2 … 12 θα αποκρύψει το περιεχόμενο που είναι

μοναδικό στο 1st και 2nd αρχείο αντίστοιχα.


24) Γράψτε ένα σενάριο για να εκτυπώσετε τα πρώτα 10 στοιχεία της σειράς Fibonacci.

  
#!/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 να κατευθύνει όλα τα αποτελέσματα στο αρχείο2 και το σφάλμα στο αρχείο 3, πώς μπορώ να το πετύχω αυτό;

εντολή file1 1>file2


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 είναι το Extended 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) Τι είναι ένα σούπερ μπλοκ;

Το Super block περιέχει όλες τις πληροφορίες σχετικά με το σύστημα αρχείων, όπως το μέγεθος του συστήματος αρχείων, το μέγεθος του μπλοκ που χρησιμοποιείται από τον αριθμό των ελεύθερων μπλοκ δεδομένων και τη λίστα των ελεύθερων ινωδών και μπλοκ δεδομένων.


45) Τι είναι ένα μπλοκ inode;

Αυτό το μπλοκ περιέχει το inode για κάθε αρχείο του συστήματος αρχείων μαζί με όλα τα χαρακτηριστικά του αρχείου εκτός από το όνομά του.


46) Πώς μπορώ να στείλω ένα μήνυμα με ένα συμπιεσμένο αρχείο ως συνημμένο;

zip file1.zip file1|mailx –s “subject” Αναγνωριστικό email παραληπτών

Περιεχόμενο email

EOF


47) Πώς δημιουργούμε ψευδώνυμα εντολών σε ένα φλοιό;

alias Aliasname=”Εντολή της οποίας το ψευδώνυμο πρόκειται να δημιουργηθεί”.


48) Τι είναι τα πεδία δικαιωμάτων "c" και "b" ενός αρχείου;

«γ» και «β» πεδία άδειας σχετίζονται γενικά με ένα αρχείο συσκευής. Καθορίζει εάν ένα αρχείο είναι ένα ειδικό αρχείο χαρακτήρων ή ένα ειδικό αρχείο μπλοκ.


49) Ποια είναι η χρήση μιας γραμμής shebang;

Η γραμμή Shebang στην κορυφή κάθε σεναρίου καθορίζει τη θέση του κινητήρα που θα χρησιμοποιηθεί για την εκτέλεση του σεναρίου.

Αυτές οι ερωτήσεις συνέντευξης θα βοηθήσουν επίσης στο viva (προφορικά) σας