Score %0 (0 correct0 incorrect94 unanswered)

Q1. Welche der drei Methoden kopiert das Verzeichnis mit dem Namen "photo dir" rekursiv vom Benutzerverzeichnis des Benutzers nach /backups?

cp -R "~/photo dir" /backups #method1
cp -R ~"/photo dir" /backups #method2
cp -R ~/"photo dir" /backups #method3
  • Keine der drei Methoden erweitert sich auf das Benutzerverzeichnis. Nur die Verwendung von "$HOME/photo dir" ist erfolgreich.
  • Nur Methode 1 erweitert "~/" auf das Benutzerverzeichnis und fügt dann den angegebenen Verzeichnisnamen mit Leerzeichen hinzu.
  • Nur Methode 2 erweitert "~/" auf das Benutzerverzeichnis und fügt dann den angegebenen Verzeichnisnamen mit Leerzeichen hinzu.
  • Nur Methode 3 erweitert "~/" auf das Benutzerverzeichnis und fügt dann den angegebenen Verzeichnisnamen mit Leerzeichen hinzu.

Q2. Wenn script.sh im aktuellen Verzeichnis ausgeführt wird, schlägt es fehl. Warum?

$ ls -1
Beach photo1.jpg
Photo1.jpg
Photo2.jpg
Script.sh

$ cat script.sh
for i in $(ls *.jpg); do
	mv $i ${i}.bak
done
  • ls: Kann nicht auf nonexistentfile zugreifen: Datei oder Verzeichnis nicht gefunden
  • Die for-Schleife trennt an Wortgrenzen und Beach photo1.jpg hat ein Leerzeichen darin.
  • Der mv-Befehl schlägt fehl, weil die geschweifte Klammer ein Sonderzeichen in Bash ist und nicht in den Dateinamen verwendet werden kann.
  • Das Ausführen von script.sh wird erfolgreich sein, da der ls-Befehl eine Liste der Dateien im aktuellen Verzeichnis erstellt und for-Schleifen durch diese Liste laufen und Dateien mit der Erweiterung .bak umbenennen.

Q3. Welche Syntax würden Sie verwenden, um einen Kopierbefehl in einer Unter-Shell auszuführen?

  • ( Befehl )
  • sh Befehl
  • { Befehl; }
  • (( Befehl ))

Referenz. Unter-Shell sind eine Möglichkeit für einen Programmierer, die Ausgabe eines Programms oder Skripts zu erfassen (normalerweise mit der Absicht, sie zu verarbeiten). Befehle, die in einer Unter-Shell ausgeführt werden sollen, sind in einzelne Klammern eingeschlossen und werden von einem Dollarzeichen gefolgt: DIRCONTENTS=$(ls -l) echo ${DIRCONTENTS}

Q4. Was wäre die Ausgabe dieses Befehls mit "awk"?

echo "1 2 3" | awk '{for (i=1; i<=NF; i++) s=s+$i};END {print s}'
  • 6
  • 123
  • 3
  • 600

Referenz. AWK ist eine Programmiersprache, die für die Verarbeitung von textbasierten Daten entwickelt wurde, entweder in Dateien oder Datenströmen oder unter Verwendung von Shell-Pipelines. Mit anderen Worten, Sie können awk mit Shell-Skripts kombinieren oder direkt an einer Shell-Eingabeaufforderung verwenden.

Q5. Der folgende Befehl durchsucht das Wurzeldateisystem nach Dateien mit dem Namen "finance.db". Welche Informationen werden dabei an /dev/null gesendet?

find / -name "finance.db" 1>results.txt 2>/dev/null
  • Die Namen von Dateien, die nicht mit finance.db übereinstimmen
  • Informationen, die an den Standardfehler gesendet werden, zum Beispiel Fehler, die der find-Befehl während seiner Ausführung anzeigt
  • Die Namen von Dateien, die mit finance.db übereinstimmen
  • Informationen, die an die Standardausgabe gesendet werden, d. h. den Pfad zu den von find-Befehl gefundenen Dateien

Referenz. Syntax zum Umleiten von stderr (Standardfehler) in eine Datei: Befehl 2> Fehler.txt.

Q6. Um leere Zeilen dauerhaft aus einer Datei namens textfile zu entfernen, welchen Befehl könnten Sie verwenden?

  • sed -i '/^$/d' textfile
  • sed '/^$/d' textfile
  • cat textfile | sed '/^$/d
  • sed -i 's/^$//' textfile

Referenz
sed : sed ist ein Stream-Editor. Ein Stream-Editor wird verwendet, um grundlegende Texttransformationen auf einem Eingabestream durchzuführen.
-i[SUFFIX] : Diese Option gibt an, dass Dateien vor Ort bearbeitet werden sollen.
'/^$/d' : Das regex befindet sich zwischen den //. ^ ist der Anfang der Zeile, $ ist das Ende der Zeile. ^$ bedeutet, dass zwischen Start und Ende nichts steht.
d : Löschen Sie den Musterbereich; starten Sie sofort den nächsten Zyklus.
Achtung, dieses obige Beispiel funktioniert nicht auf einem Mac-Terminal aufgrund verschiedener UNIX-Versionen. Es gibt eine Möglichkeit, es auf einem Mac zu verwenden, indem Sie eine zusätzliche Flagge -e hinzufügen oder sogar nur -- (gefunden auf StackOverflow): sed -i -e '/^$/d' textfile.txt

Q7. Angenommen, Benutzer1 existiert, was wäre das Ergebnis dieses Befehls?

awk -F: '/user1/{print $1 "-" $3 "-" $6}' /etc/passwd
  • Es würde den Benutzernamen, die UID und das Home-Verzeichnis von Benutzer1 durch Doppelpunkte getrennt anzeigen.
  • Es würde die UID, GID und das Home-Verzeichnis von Benutzer1 durch Bindestriche getrennt ausdrucken.
  • Es würde die UID, Kommentar und das Home-Verzeichnis von Benutzer1 durch Bindestriche getrennt ausdrucken.
  • Es würde den Benutzernamen, die UID und das Home-Verzeichnis von Benutzer1 durch Bindestriche getrennt anzeigen.

Referenz. Traditionell wird die Datei /etc/passwd verwendet, um alle registrierten Benutzer zu verfolgen, die Zugriff auf ein System haben. Die /etc/passwd-Datei ist eine durch Doppelpunkte getrennte Datei, die folgende Informationen enthält: 1-Benutzername, 2-Passwort, 3-Benutzer-ID (UID), 4-Gruppen-ID (GID), 5-Benutzer-ID-Info (GECOS), 6-Home-Verzeichnis, 7-Befehl/Shell

Q8. Was passiert, wenn Sie in einem Bash-Skript "set -e" verwenden?

  • Es veranlasst Bash, zu beenden, wenn eine Funktion oder eine Unter-Shell einen anderen Statuscode als Null zurückgibt.
  • Es veranlasst Bash, zu beenden, wenn eine Bedingung einen anderen Statuscode als Null zurückgibt.
  • Es veranlasst Bash, zu beenden, wenn lokale, deklarierte oder typisierte Zuweisungen einen anderen Statuscode als Null zurückgeben.
  • Es veranlasst Bash, zu beenden, wenn ein Befehl, eine Befehlsliste, ein Compound-Befehl oder potenziell eine Pipeline einen anderen Statuscode als Null zurückgibt.

Referenz. Die Option set -e weist bash an, sofort zu beenden, wenn ein Befehl [1] einen anderen Statuscode als Null hat. Sie möchten dies nicht für Ihre Befehlszeilenumgebung einstellen, aber in einem Skript ist es enorm hilfreich. In allen weit verbreiteten allgemeinen Programmiersprachen führt ein nicht behandelter Laufzeitfehler - ob das nun eine ausgelöste Ausnahme in Java ist oder ein Segmentierungsfehler in C oder ein Syntaxfehler in Python - sofort zur Beendigung der Programmausführung; nachfolgende Zeilen werden nicht ausgeführt.

Q9. Das _ -Schlüsselwort pausiert das Skript, um Eingaben vom Standardinput zu erhalten.

  • erhalten
  • Argument
  • lesen
  • Eingang

Q10. Wenn die Datei.sql SQL-Anweisungen zum Ausführen enthält, was wird in der Datei.txt sein?

mysql < file.sql > file.txt
  • Eine Kopie des Inhalts der Datei.sql
  • Ein Fehler, der darauf hinweist, dass dies eine ungültige Syntax ist
  • Die Fehlerausgabe des MySQL-Befehls
  • Die nicht-fehlerhafte Ausgabe des MySQL-Befehls

Hinweis: Überprüfen Sie die untenstehende Frage nach einer Variante.

Q11. Was ist der Unterschied zwischen der Ausgabe auf dem Bildschirm und dem Inhalt von out.txt?

mysql < file.sql > out.txt
  • Die Ausgabe auf dem Bildschirm ist identisch mit out.txt
  • Es wird keine Ausgabe auf dem Bildschirm angezeigt, da sie in out.txt umgeleitet wird.
  • Die Ausgabe auf dem Bildschirm ist identisch mit out.txt plus Zeilennummern.
  • Die Datei out.txt enthält STDERR und STDOUT wird auf dem Bildschirm angezeigt.

Hinweis: Überprüfen Sie die obige Frage nach einer Variante.

Q12. Wie beeinflusst das SUID oder setuid ausführbare Befehle?

  • Wenn der Befehl Dateien erstellt, werden sie vom Gruppenbesitzer des Befehls erstellt.
  • Das SUID-Bit ermöglicht es jedem, den Befehl auszuführen, unabhängig davon, welche anderen Berechtigungen festgelegt sind.
  • Wenn der Befehl ausgeführt wird, werden seine Ausführungsrechte auf den Benutzerbesitzer des Befehls erhöht.
  • Wenn der Befehl ausgeführt wird, werden seine Ausführungsrechte auf den Gruppenbesitzer des Befehls erhöht.

Referenz. Die Linux- und Unix-Zugriffsrechtsflags setuid und setgid (kurz für set user identity und set group identity) [1] ermöglichen Benutzern das Ausführen eines ausführbaren Programms mit den Dateisystemberechtigungen des Eigentümers oder der Gruppe des ausführbaren Programms und das Ändern des Verhaltens in Verzeichnissen.

Q13. Um Text aus der ersten Spalte der Datei namens textfile zu extrahieren, welchen Befehl würden Sie verwenden?

  • cat {$1,textfile}
  • cat textfile | awk [print $1]
  • cat textfile | awk '{print $1}'
  • awk textfile {print $1}

Q14. Welche Tastenkombination ruft die Bash-Verlaufssuche wie unten gezeigt auf?

(reverse-i-search)`':
  • Esc + R
  • Strg + H
  • Strg + R
  • Alt + R

Hinweis: Auf dem Mac wird es bck-i-search: anstelle von (reverse-i-search) anzeigen.

Q15. Welcher arithmetische Ausdruck liefert die präziseste Antwort?

  • var=$( expr 10 / 8 )
  • (( var= 10 /8 ))
  • var=$(( 10 / 8 ))
  • var=$(echo 'scale=2; 10 / 8' | bc)

Referenz. Der Befehl bc wird für den Befehlszeilenrechner verwendet. Er ähnelt einem einfachen Taschenrechner, mit dem grundlegende mathematische Berechnungen durchgeführt werden können. Die Division mit einer 2-stelligen Genauigkeit wird an bc übergeben, ausgewertet und der Variablen zugewiesen.

Q16. Was ist das Ergebnis dieses Skripts?

txt=Penguins
[[ $txt =~ [a-z]{8} ]]; echo $?
  • 0, was 'wahr' darstellt, weil die Variable "txt" acht Buchstaben enthält
  • 0, was 'wahr' darstellt, weil alle Pinguine lieben!
  • 1, was 'falsch' darstellt, weil die Variable "txt" länger als acht Zeichen ist
  • 1, was 'falsch' darstellt, weil die Variable "txt" keine acht Kleinbuchstaben zwischen a und z enthält

Q17. Wie würden Sie Ihren Bash-Shell-Prompt wie folgt ändern?

HAL>
  • SHELL="HAL\>"
  • SHELL="HAL>"
  • export PS1="HAL>"
  • PS1="HAL\>"

Q18. Was ist die Ausgabe dieses Codes?

VAR="/var/www/html/website.com/html/"
echo "${VAR#*/html}"
  • /website.com/html/
  • /html/website.com/html/
  • /var/www/html/website.com/
  • Es wird nichts auf dem Bildschirm ausgegeben.

Referenz Was passiert hier nach dem Zitieren der POSIX-Shell-Spezifikation: ${parameter#[Wort]}. Entfernen des kleinsten Präfixmusters. Das Wort wird erweitert, um ein Muster zu erzeugen. Die Parametererweiterung ergibt dann Parameter, wobei der kleinste Teil des Präfixes, der durch das Muster übereinstimmt, gelöscht wird.
Zum Beispiel erweitert ${VAR#?} auf den Wert von $VAR und löscht das erste Zeichen. Und ${VAR#\*/html} erweitert, um alle Zeichen bis zum und einschließlich des /html-Textes einzuschließen, der aus der Variable gelöscht wird, was die Ausgabe von /website.com/html/ ergibt.

Q19. Wenn Sie zur Texteingabe am Standardinput aufgefordert werden, können Sie dem Befehl mit welcher Tastenkombination mitteilen, dass Sie mit der Texteingabe fertig sind?

  • Strg + A (Windows) oder Befehl + A (Mac)
  • Strg + E (Windows) oder Befehl + E (Mac)
  • Strg + D (Windows) oder Befehl + D (Mac)
  • Strg + Z (Windows) oder Befehl + Z (Mac)

Q20. Damit ein Bash-Skript wie ein Betriebssystembefehl ausgeführt werden kann, muss es mit einer Shebang-Zeile beginnen. Wie sieht das aus?

  • #!/usr/bin/env bash
  • ~/usr/bin/env bash
  • '$!/usr/bin/env bash
  • #/usr/bin/env bash

Q21. Welche Zeile eines Bash-Skripts hat wahrscheinlich die untenstehende Ausgabe erzeugt?

The date is: Sun Mar 24 12:30:06 CST 2019!
  • echo "Das Datum ist: !"
  • echo "Das Datum ist: date!"
  • echo "Das Datum ist: (date)!"
  • echo "Das Datum ist: $(date)!"

Q22. Angenommen, Ihr aktuelles Arbeitsverzeichnis ist Ihr Home-Verzeichnis. Wie könnten Sie das Skript demo.sh ausführen, das sich in Ihrem Home-Verzeichnis befindet? Finden Sie drei richtige Antworten.

A. /home/demo.sh
B. ./demo.sh
C. ~/demo.sh
D. bash /home/demo.sh
E. bash demo.sh
  • B, C, E
  • A, B, C
  • C, D, E
  • B, D, E

Q23. Wie könnten Sie eine Liste aller .html-Dateien in Ihrem Verzeichnisbaum erhalten?

  • find . -type html
  • find . -name *.html
  • find *.html
  • find . -name \*.html -print

Die zweite scheint in Ordnung zu sein, aber sie wird das \* erweitern, wenn es eine .html-Datei in Ihrem Arbeitsverzeichnis gibt.

Q24. Was wäre in out.txt?

cat < in.txt > out.txt
  • Die Ausgabe von der Befehlszeile. Standardmäßig kommt STDIN von der Tastatur.
  • Nichts, weil Sie nicht von einer Datei (in.txt) zu einer anderen Datei (out.txt) umleiten können. Sie können nur von einem Befehl zu einer Datei umleiten.
  • Es wären die Inhalte von in.txt.
  • Nichts. Die Umleitung wird eine neue leere Datei erstellen, aber es wird keine Ausgabe des cat-Befehls zum Umleiten geben.

Q25. Was macht diese Bash-Anweisung?

(( $a == $b ))
echo $?
  • Sie durchläuft die Werte von $a und $b.
  • Sie testet, ob die Werte der Variablen $a und $b gleich sind.
  • Sie gibt $b zurück, wenn es größer als $a ist.
  • Sie gibt $a zurück, wenn es größer als $b ist.

Q26. Was verwendest du in einer case-Anweisung, um Bash mitzuteilen, dass du einen bestimmten Test abgeschlossen hast?

  • ; ;
  • : :
  • done
  • $$

Q27. Was repräsentiert das Sternchen (*) in dieser Anweisung?

#!/usr/bin/env bash
case $num in
	1)
	echo "one"
	;;
	2)
	echo "two"
	;;
	*)
	echo "a mystery"
	;;
esac

- %OPTION% ein Fall, der jeden Wert übereinstimmt, wobei eine Standardoption bereitgestellt wird, wenn nichts anderes diesen Wert abfängt
- %OPTION% ein Fall nur für das, was passiert, wenn das Sternchen-Zeichen in das Skript übergeben wird
- %OPTION% die Aktion aller anderen Fälle zusammengefasst
- %OPTION% eine Aktion, die für jede Eingabe ausgeführt wird, selbst wenn sie einer spezifizierten Bedingung entspricht

Q28. Welches Bash-Skript erstellt diese Dateien korrekt?

  • touch file{1+10}.txt
  • touch file{1-10}.txt
  • touch file{1..10}.txt
  • touch file(1..10).txt

Q29. Welche Variable würdest du überprüfen, um zu bestätigen, dass der letzte Befehl erfolgreich ausgeführt wurde?

  • $$
  • $?
  • $!
  • $@

Q30. Was ist die Ausgabe dieses Skripts?

#!/bin/bash
fname=john
john=thomas
echo ${!fname}
  • john
  • thomas
  • Syntaxfehler
  • Leerzeichen

Referenz

Q31. Was wird die Ausgabe dieses Skripts sein?

Frage

  • A A
  • B B
  • C C
  • D D

Hier ist eine textbasierte Version von Q.30:

ll
-rw-r--r-- 1 frankmolev staff 374   Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666  Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0     Jun 3 19:30 file1.txt
-rw-r--r-- 1 frankmolev staff 0     Jun 3 19:30 file2.txt
..

ll | sed -e 's,file,text,g'

  • A
  -rw-r--r-- 1 frankmolev staff 374   Jun 3 19:30 .
  -rw-r--r-- 1 frankmolev staff 1666  Jun 3 19:30 ..
  -rw-r--r-- 1 frankmolev staff 0     Jun 3 19:30 file1.file
  -rw-r--r-- 1 frankmolev staff 0     Jun 3 19:30 file2.file
  ..
  • B
  -rw-r--r-- 1 frankmolev staff 374   Jun 3 19:30 .
  -rw-r--r-- 1 frankmolev staff 1666  Jun 3 19:30 ..
  -rw-r--r-- 1 frankmolev staff 0     Jun 3 19:30 file1.txt
  -rw-r--r-- 1 frankmolev staff 0     Jun 3 19:30 file2.txt
  ..
  • C
  -rw-r--r-- 1 frankmolev staff 68    Jun 3 19:30 .
  -rw-r--r-- 1 frankmolev staff 1666  Jun 3 19:30 ..
  • D
-rw-r--r-- 1 frankmolev staff 374     Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666    Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0       Jun 3 19:30 text1.txt
-rw-r--r-- 1 frankmolev staff 0       Jun 3 19:30 text.txt
..

Q32. Was ist falsch an diesem Skript?

#!/bin/bash
read -p "Enter your pet type." PET
if [ $PET = dog ] ;then
    echo "You have a dog"
fi
  • Wenn der Wert von PET nicht mit Hund übereinstimmt, gibt das Skript einen nichtnullen Statuscode zurück.
  • Es ist nichts falsch daran. Die Bedingung überprüft den Wert von PET perfekt.
  • Es wird fehlschlagen, wenn der Benutzer die Eingabetaste drückt, ohne einen Haustiernamen einzugeben, wenn er aufgefordert wird.
  • Die then-Anweisung muss auf einer separaten Zeile stehen.

Q33. Wie können Sie die Historie für mehrere Terminals zusammenfassen?

  • Es funktioniert standardmäßig.
  • history --shared
  • history --combined
  • shopt -s histappend

Q34. Was ist der Unterschied zwischen den Variablen $@ und $*?

  • $@ behandelt jedes angeführte Argument als separate Einheit. $* behandelt den gesamten Argumentstring als eine Einheit.
  • $* behandelt jedes angeführte Argument als separate Einheit. $@ behandelt den gesamten Argumentstring als eine Einheit.
  • $* wird verwendet, um die an ein Skript übergebenen Argumente zu zählen, $@ stellt alle Argumente in einem String bereit.
  • $* ist das Wildcard, das alle Argumente mit Worttrennung einschließt, $@ enthält dieselben Daten, jedoch in einem Array.

Q35. Welcher Befehl wird in diesem Skript ausgeführt, um zu überprüfen, ob file.txt existiert?

if [ -f file.txt ]; then
    echo "file.txt exists"
fi
  • /usr/bin/test
  • /usr/bin/[
  • das eingebaute [ Befehl
  • /usr/bin/[[

Q36. Was wird die Ausgabe dieses Skripts sein?

#!/bin/bash
Linux=('Debian' 'Redhat' 'Ubuntu' 'Android' 'Fedora' 'Suse')
x=3

Linux=(${Linux[@]:0:$x} ${Linux[@]:$(($x + 1))})
echo "${Linux[@]}"
  • Debian Redhat Ubuntu Android Fedora Suse
  • Android
  • Fedora Suse
  • Debian Redhat Ubuntu Fedora Suse

Q37. Welche Datei ermöglicht es Ihnen, Änderungen an der Shell-Umgebung über Sitzungen hinweg zu speichern?

  • /etc/bash.conf
  • ~/.profile
  • /etc/bashprofile
  • ~/profile

Q38. Angesichts der auf data.txt aufgeführten Berechtigungen ist es möglich, dass Benutzer2 Lese-, Schreib- und Ausführungsberechtigungen für data.txt hat?

$ ls -l
total 0
-rwx------+ 1 user1 user1 0 Oct 27 10:54 data.txt
  • Nein, es ist klar, dass Benutzer2 keine Lese-, Schreib- und Ausführungsberechtigungen hat.
  • Ja, das + am Ende der 10-stelligen Berechtigungszeichenfolge zeigt an, dass eine Zugriffssteuerungsliste vorhanden ist. Dies könnte Benutzer2 Berechtigungen geben, die von ls -l nicht sichtbar sind.
  • Es ist möglich, dass SELinux Lese-, Schreib- und Ausführungsberechtigungen für Benutzer2 bereitstellt, die mit ls -l nicht sichtbar sind.
  • Ja, das + am Ende der 10-stelligen Berechtigungszeichenfolge zeigt an, dass ein erweitertes Attribut gesetzt ist. Dies könnte Benutzer2 Berechtigungen zum Lesen, Schreiben und Ausführen von data.txt geben.

Q39. Was erreicht dieses Skript?

#!/bin/bash
declare -A ARRAY=([user1]=bob [user2]=ted [user3]=sally)
KEYS=(${!ARRAY[@]})

for (( i=0; $i < ${#ARRAY[@]}; i+=1 ));do
        echo ${KEYS[$i]} - ${ARRAY[${KEYS[$i]}]}
done
  • Es sortiert das assoziative Array namens ARRAY und speichert die Ergebnisse in einem indexierten Array namens KEYS. Dann verwendet es dieses sortierte Array, um durch das assoziative Array ARRAY zu iterieren.
  • Mit einer C-ähnlichen for-Schleife durchläuft es das assoziative Array namens ARRAY, indem es die Schlüssel des assoziativen Arrays verwendet und für jeden Eintrag sowohl den Schlüssel als auch die Werte ausgibt.
  • Es erstellt ein indexiertes Array des assoziativen Arrays namens ARRAY. Dann verwendet es eine C-ähnliche for-Schleife und das indexierte Array, um durch alle Elemente im assoziativen Array zu iterieren, wobei der Schlüssel und der Wert jedes Arrayelements unter Verwendung der Indexnummer ausgegeben werden.
  • Es erstellt ein assoziatives Array namens ARRAY, das es mit einer C-ähnlichen for-Schleife und den Indexnummern der Schlüssel jedes Elements im assoziativen Array durchläuft, wobei der Wert jedes Elements ausgegeben wird.

Q40. Welche Datei entspricht dem unten stehenden Code?

ls Hello[[.vertical-line.]]World
  • Nichts, dies ist ein ungültiges Dateimuster.
  • Hello.vertical-line.World
  • Hello[[.vertical-line.]]World
  • Hello|World

Q41. Was wird in out.txt sein?

ls nonexistentfile | grep "No such file" > out.txt
  • Keine solche Datei
  • ls: kann nonexistentfile nicht erreichen: Datei oder Verzeichnis nicht gefunden
  • Nichts, out.txt wird leer sein.
  • Es werden die Inhalte von nonexistentfile sein.

Q42. Um "Ist numerisch" auf dem Bildschirm auszugeben, was müsste der Benutzer eingeben, wenn er aufgefordert wird?

#!/bin/bash
read -p "Enter text " var
if [[ "$var" =~ "^[0-9]+$" ]];then
    echo "Is numeric"
else
    echo "Is not numeric"
fi
  • Eine beliebige Zeichenfolge, die eine Ganzzahl enthält
  • Der Benutzer müsste die Zeichenfolge ^[0-9]]+$ eingeben. Nur so wird es wahr sein und "Ist numerisch" wird auf dem Bildschirm gedruckt, aufgrund eines falschen Syntax. Durch Einbetten des regulären Ausdrucks in doppelte Anführungszeichen schlägt jede Übereinstimmung fehl, außer dem Textstring ^[0-9]+$
  • Eine oder mehrere Zeichen, die nur Ganzzahlen enthalten
  • Aufgrund eines Syntaxfehlers ist es unmöglich, das Skript dazu zu bringen, "Ist numerisch" auszugeben.

Der Regex darf nicht in Anführungszeichen gesetzt werden, um ordnungsgemäß zu funktionieren.

Q43. Wie würden Sie das letzte Kopierkommando in Ihrer Historie finden?

  • history | find cp
  • history | grep cp
  • grep cp history
  • cp history

Q44. Um ein Skript zu schreiben, das durch die Dateien in einem Verzeichnis iteriert, welche der folgenden könnten Sie verwenden?

  • for i in $(ls); do ... done
  • for $(ls); do ... done
  • for i in $ls; do ... done
  • for $ls; do ... done

Q45. Wenn Sie einen Befehl ausführen und die Ausgabe dieses Befehls an einen anderen Befehl übergeben, welches Zeichen ermöglicht es Ihnen, diese Befehle zusammenzuschließen?

  • |
  • ->
  • \#
  • @

Q46. In dem unten gezeigten Skript, was ist greeting?

#!/usr/bin/env bash
greeting="Hello"
echo $greeting, everybody!
  • ein Befehl
  • eine Schleife
  • ein Parameter
  • eine Variable

Q47. Welche Anweisung überprüft, ob die Variable num größer als fünf ist?

  • (( num -gt 5 ))
  • [[$num -lt 5]]
  • (( num > 5 ))
  • num > 5

Referenz

Q48. Unter Verwendung von Bash erweiterten Globbing, was wird die Ausgabe dieses Befehls sein?

$ ls -l
apple
banana
bananapple
banapple
pineapple
strawberry
$ shopt -s extglob
$ ls -l @(ba*(na)|a+(p)le)
  • a
apple
banana
  • b
apple
banana
bananapple
banapple
pineapple
strawberry
  • c
apple
banana
bananappple
banapple
pineapple
  • d
apple
banana
bananapple
banapple
pineapple

Referenz

Q49. Wenn es aus einem Skript verwendet wird, welcher Variable enthält den Namen des Skripts?

  • $0
  • $# // Anzahl der Positionalparameter
  • $$ // PID der aktuellen Shell
  • $@ // Array-ähnliche Struktur aller Positionalparameter

Q50. Was bedeutet das + am Ende der 10-stelligen Dateiberechtigungen auf data.txt?

ls -l
-rwx------+ 1 user1 u1 0 Oct 1 10:00 data.txt
  • Es gibt einen SELinux-Sicherheitskontext
  • Das Sticky-Bit ist gesetzt und die Datei bleibt aus Gründen der Geschwindigkeit im RAM
  • Es gibt eine Zugriffssteuerungsliste
  • Es gibt ein erweitertes Attribut wie unveränderlich festgelegt

Q51. Was macht der folgende Befehl in Bash?

cd -
  • Es bringt dich in das Verzeichnis, in dem du zuvor warst.
  • Es bringt dich in deinen Home-Ordner (egal, was dein aktuelles Arbeitsverzeichnis ist).
  • Es löscht das aktuelle Verzeichnis.
  • Es bringt dich ein Verzeichnis über deinem aktuellen Arbeitsverzeichnis.

Q52. Was macht dieser Befehl?

cat > notes -
  • Nimmt Text von der Standardeingabe entgegen und platziert ihn in "notes"
  • Erstellt "notes" und beendet
  • Gibt den Inhalt von "notes" aus und löscht ihn
  • Hängt Text an die vorhandene "notes" an

Q53. Was ist die Ausgabe von:

VAR="This old man came rolling"
echo "\${VAR//man/rolling}"
  • This old rolling came rolling
  • This old man came man
  • This old man came rolling
  • This old came

Q54. Der Shell betrachtet den Inhalt einer bestimmten Variablen, um zu identifizieren, welche Programme sie ausführen kann. Wie lautet der Name dieser Variable?

  • $INCLUDE
  • $PATH
  • $PROGRAM
  • $PATHS

Q55. Welche Anweisung würdest du verwenden, um dies in der Konsole auszudrucken?

Shall we play a game? yes\no

  • echo "Shall we play a game? yes/\no"
  • echo "Shall we play a game\? yes\\no"
  • echo "Shall we play a game? yes\\no"
  • echo "Shall we play a game? yes\no"

Q56. Welche Dateien würden nach Ausführung dieser Befehle in einem Verzeichnis mit diesen sieben Dateien verbleiben?

archive.tar
image1.gif
image1.jpg
image2.gif
image2.jpg
textfile1.txt
textfile2.txt

----------

`shopt -s extglob
rm !(*gif|*jpg)`
  • a
archive.tar
image1.gif
image1.jpg
image2.gif
image2.jpg
textfile1.txt
textfile2.txt
  • b
archive.tar
textfile1.txt
textfile2.txt
  • %OPTION% c : All of this files will be deleted

  • %OPTION% d:

image1.gif
image1.jpg
image2.gif
image2.jpg

Q57. Der folgende Code scheint zu funktionieren und gibt "8 is greater than 5" aus. Welches unerwartete Ergebnis wird Ihnen jedoch sagen, dass er nicht richtig funktioniert?

#!/bin/bash
var="8"
if [ $var > 5 ]; then
    echo "$var is greater than 5"
fi
  • Es wird keine unerwarteten Ergebnisse geben. Dieses Skript funktioniert wie es ist und die Ausgabe wird "8 is greater than 5" sein.
  • Der Vergleich wird nicht in der Lage sein, Gleitkommazahlen zu verarbeiten, da Bash nur ganze Zahlen behandelt. Daher wird dieses Beispiel eine Fehlermeldung ausgeben, wenn der Wert von $var auf "8.8" geändert wird.
  • Es wird eine Datei im aktuellen Verzeichnis mit dem Namen 5 geben.
  • Die Variable $var ist nicht in Anführungszeichen gesetzt, was zu Wortaufteilung führt. Dieses Skript wird mit einer "erwarteten unären Operator" Nachricht fehlschlagen, wenn Sie den Wert von

Q58. Was ist das Ergebnis dieses Skripts?

question

  • Es entfernt das Verzeichnis 'foo' und die darin enthaltenen Dateien.
  • Es entfernt alle Dateien außer denen im aktuellen Verzeichnis.
  • Es entfernt alle Dateien im aktuellen Verzeichnis.
  • Es entfernt alle Dateien außer denen im Verzeichnis 'foo'.

Q59. Welches ist wahr?

  • SELinux-Richtlinien werden nach DAC-Richtlinien überprüft.
  • SELinux-Richtlinien werden vor DAC-Richtlinien überprüft.
  • SELinux-Richtlinien werden niemals nach DAC-Richtlinien überprüft.
  • Keines davon

Referenz

Q60. Was macht der folgende Befehl?

w
  • Es zeigt keine Informationen über die Benutzer an, die sich derzeit auf dem Rechner befinden.
  • Es zeigt Informationen über die Benutzer an, die sich derzeit auf dem Rechner befinden.
  • Es zeigt Informationen über die Benutzer an, die sich derzeit auf einem anderen Rechner befinden.
  • Keines davon

Q61. Welche sed-Optionen sollten Sie verwenden, um die zweitletzte Instanz von "variable" in "rock" zu ändern, sodass es lautet:

Ein Konstante ist ein rock, der keine Variable ist

var="A constant is a variable that is a variable that isn't variable"
echo "$var" | sed _____
  • s/\(.*\)variable\(.*variable\)/\1rock\2/'
  • s/variable/rock/'
  • s/variable/rock/g'
  • s/(.*\)variable\(.*variable\)/\1rock\2/'

Q62. Um ein Bash-Skript mit dem Namen script.sh ausführbar zu machen, was sollten Sie ausführen?

  • exec script.sh
  • chmod +x script.sh
  • bash script.sh
  • source script.sh

Q63. Wie können Sie ein gemeinsames Terminal in einer Bash-Shell erstellen?

  • screen
  • screen -X
  • screen --shared
  • terminal -shared

Q64. Welcher Operator sendet die Ausgabe von ls an eine Datei zur späteren Verwendung?

  • ls < filelist.txt
  • ls ¦ filelist.txt
  • ls > filelist.txt
  • ls - filelist.txt

Q65. Wenn Sie Objekte mit case vergleichen, welche Anweisung gibt das Ende des Auswertungsblocks an?

  • stop
  • esac
  • done
  • exit

Q66. Um eine Gruppe von Befehlen ohne Erzeugung einer Unter-Shell auszuführen, welche Syntax würden Sie verwenden?

  • (command1; command2)
  • { command1; command2; }
  • (( command1; command2 ))
  • command1; command2

Q67. Was sind die Ergebnisse des Befehls mit einem Benutzer namens jon?

echo 'Hello, $(whoami)!'
  • Hallo, $(jon)!
  • Hallo, jon!
  • Hallo, $(whoami)!
  • Hallo, whoami!

Q68. Wie können Sie ein Verzeichnis mit Kompression auf ein anderes System kopieren?

  • tar -ssh user@192.158.1.1 /bin/newfile
  • tar cvzf - /wwwdata | ssh root@192.168.1.201 "dd of=/backup/wwwdata.tar.gz"
  • Sie können den Stream nicht komprimieren
  • scp -r directory user@192.168.1.1:/tmp

Q69. Um den Befehl ls -lah dem Tastaturkürzelbefehl lh zuzuweisen, welchen Befehl sollten Sie verwenden?

  • alias lh='ls -lah'
  • link lh='ls -lah'
  • alias 'ls -lah'=lh
  • lh | ls -lah

Q70. Welche Anweisung gibt alle vollständig qualifizierten .csv-Dateien im Home-Verzeichnis oder in Unterverzeichnissen aus, ohne Fehler anzuzeigen?

  • find $USER_DIR -name "*.csv" 2>/dev/null
  • find $HOME -name "*.csv" 1>/dev/null
  • find $HOME -name "*.csv" 2>/dev/null
  • find HOME -name "*.csv" 1>/dev/null

Q71. Was bedeutet ein # am Ende der Standard-Promptzeichenfolge in Bash?

  • dass der Benutzer als Root handelt
  • dass das aktuelle Arbeitsverzeichnis das Stammverzeichnis des Dateisystems ist
  • dass Updates für das System verfügbar sind
  • dass der Benutzer nicht privilegiert ist

Q72. Was wird die Ausgabe dieses Befehls sein?

$ ls -l
file10.txt
file1.txt
fileabc.txt
filea.txt
fileb.txt
filec.txt
$ ls -l file[^abc]*.txt
  • A
file1.txt
file10.txt
  • B
file10.txt
file1.txt
fileabc.txt
filea.txt
fileb.txt
filec.txt
  • C
fileabc.txt filea.txt fileb.txt filec.txt
  • D
filea.txt
fileb.txt
filec.txt

Referenz Das Zeichen Dach (^) negiert hier Übereinstimmungen innerhalb der Klammer.

Q73. Was ist die Ausgabe dieser Befehlssequenz?

cat <<EOF
------------------------
   This is line 1.
   This is line 2.
   This is line 3.
------------------------
EOF
  • A
This is line 1.
This is line 2.
This is line 3.
  • B
------------------------This is line 1.This is line 2.This is line 3.------------------------
  • C
------------------------
   This is line 1.
   This is line 2.
   This is line 3.
------------------------
  • D
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------

Q74. Was wäre in out.txt?

#!/bin/bash

echo 123446789 > out.txt
exec 3<> out.txt
read -n 4 <&3
echo -n 5 >&3
exec 3>&-
  • 123446789
  • das Bindestrichsymbol (-)
  • 123456789
  • die Zahl 5, die mit echo in die Datei geschrieben wird
  1. I/O-Umleitung
  2. Was ist der Unterschied zwischen "echo" und "echo -n"?

Q75. Welche Variable enthält die Prozess-ID (PID) des Skripts, während es läuft?

  • $ID
  • $#
  • $@
  • $$

Q76. Durch Kombination von erweitertem Globbing und Parametererweiterung, was wäre der Wert von VAR?

#!/bin/bash
shopt -s extglob
VAR='     This is...     a string of characters     '
VAR=${VAR##+([[:space:]])}; VAR=${VAR%%+([[:space:]])};
echo "$VAR"
  • <pre> Dies ist... eine Zeichenfolge von Zeichen</pre>
  • <pre> Dies ist...eine Zeichenfolge von Zeichen</pre>
  • <pre>Dies ist... eine Zeichenfolge von Zeichen</pre>
  • <pre>Dies ist...eine Zeichenfolge von Zeichen</pre>

Verweise:

  1. Was bedeutet die Syntax ${0##...} mit Variable, Klammern und Rautezeichen in bash?
  2. Was bedeutet die Erweiterung einer Variablen als "${var%%r*}" in bash?

Q77. Welcher Operator teilt dem Shell mit, ein bestimmtes Kommando im Hintergrund auszuführen?

  • !
  • &&
  • &
  • $

Q78. Der Bereich der netten Zahl im LINUX-System ist?

  • -20 bis 0
  • -20 bis 19
  • 0 bis 19
  • 10 bis 10

Referenz

Q79. Was ergibt dieser Ausdruck in Bash?

echo $((4/3))
  • 1.3
  • 1.3333333333
  • 1
  • 2

Referenz

Q80. Um eine Schleife so lange laufen zu lassen, bis eine bestimmte Bedingung wahr wird, was würdest du wahrscheinlich verwenden?

  • if
  • case
  • while
  • for

Referenz

Q81. Was macht diese Befehlsfolge?

cat > notes -
  • Sie erstellt eine leere Datei namens "notes" und beendet dann.
  • Sie gibt den Inhalt der Datei "notes" auf dem Bildschirm aus und löscht sie dann.
  • Sie akzeptiert Text von der Standardeingabe und platziert ihn in der Datei "notes".
  • Sie fügt Text einer vorhandenen Datei mit dem Namen "notes" an.

Q82. Sie möchten Fünf-Buchstaben-Palindrome wie radar, rotor und tenet zusammenführen. Welche sed-Option sollten Sie verwenden?

  • sed -E -n '/^(.)(.)\3\2\1$/p'
  • sed -E -n '/^(.)(.)(.).\2\1$/p'
  • sed -E -n '/^(.)(.)(.)\2\1$/p'
  • sed -E -n '/^(.)(.)(.)(.)\3\2\1$/p'

Q83. Um einen Wert zur aktuellen Umgebung hinzuzufügen, welchen Befehl sollten Sie verwenden?

  • shell_add
  • save
  • echo
  • export

Q84. Was ist der Unterschied zwischen diesen beiden bedingten Ausdrücken?

[[$A==$B]]
[[$A -eq $B]]
  • [[$A == $B]] wird für numerische Vergleiche verwendet, während [[$a-eq $B]] für Textvergleiche verwendet wird.
  • [[$A==$B]] ist die neue Art des Vergleichs, bei der [[$a-eq $B]] die Legacy-Syntax ist.
  • sie sind gleich.
  • [[$A==$B]] wird für Textvergleiche verwendet, während [[$a-eq $B]] für numerische Vergleiche verwendet wird.

Q85. Was ist die Ausgabe dieses Codes?

VAR="united states"
echo "${VAR^}"
  • vereinigte Staaten
  • Vereinigte Staaten
  • Vereinigte Staaten
  • VEREINIGTE STAATEN

Q86. Was würde passieren, wenn Sie das Skript unten so ausführen würden, wie es geschrieben ist?

#!/bin/bash
#condition 1
if [ $foo = "bar" ]; then echo "foo is bar"
fi
#condition 2
if [[ $foo = "bar" ]]; then echo "foo is bar"
fi
  • Beide Bedingungen würden scheitern.
  • Beide Bedingungen würden erfolgreich sein.
  • Bedingung 1 würde erfolgreich sein und Bedingung 2 würde scheitern.
  • Bedingung 1 würde scheitern und Bedingung 2 würde erfolgreich sein.

Erklärung: Das Skript wie geschrieben gibt line 3: [: =: unary operator expected aus. Definieren Sie die Variable und weisen Sie ihr den Wert foo="bar" zu, und beide Bedingungen werden erfolgreich sein.

Q87. Welche Variable enthält die Anzahl der Argumente, die einem Skript von der Befehlszeile aus übergeben wurden?

  • $#
  • $@
  • 0
  • $!

Q88. In Bash-Skripting, was zeigt das "Shebang" (#!) am Anfang eines Skripts an, und warum ist es wichtig?

  • Es zeigt den Speicherort des Bash-Interpreters an, der zum Ausführen des Skripts verwendet werden soll.
  • Es gibt die erforderliche Bash-Version an, um das Skript auszuführen.
  • Es kennzeichnet das Skript als ausführbar.
  • Es hilft dem System, den Interpreter des Skripts zu identifizieren, um sicherzustellen, dass der richtige Interpreter verwendet wird.

Q89. Welche Variable enthält die Prozess-ID (PID) des Skripts, während es ausgeführt wird?

  • $ID
  • $@
  • $#
  • $$

Q90. Wenn ein Benutzer das Skript sh ohne Shebang-Zeile oder Ausführungsberechtigungen ausführen möchte, was sollte der Benutzer eingeben?

  • %OPTION% Eine Shebang-Zeile ist erforderlich, um ein Shell-Skript auszuführen.

  • %OPTION% 'bash script.sh'.

  • %OPTION% 'exec script.sh'.

  • %OPTION% AusführenAusführungsberechtigungen sind erforderlich, um ein Shell-Skript auszuführen.

Q91. Welche Auswahl ist das wahrscheinlichste Ergebnis des unten gezeigten zusammengesetzten Befehls?

cat -n animals | sort -r | head -n 5
  • a.
	1	Ant
	2	Bear
	3	Cat
	4	Dog
	5	Elephant
  • b.
	9	Ibex
	B	Hippo
	7	Giraffe
	6	Fox
	5	Elephant
	4	Dog
	3	Cat
	2	Bear
	1	Ant10	Jaguar
  • c.
	Jaguar
	Ibex
	Hippo
	Giraffe
	Fox
  • d.
	9	Ibex
	8	Hippo
	7	Giraffe
	6	Fox
	5	Elephant

Q92. Welche der folgenden ist kein gültiger Bash-Variablenname?

  • $HOME
  • my_var
  • 1var
  • !

Q93. In Bash, erstellen Sie einen Einzeiler-Befehl, der rekursiv alle Dateien mit der Erweiterung ".txt" in einem Verzeichnis und seinen Unterverzeichnissen findet und die Gesamtzahl der Zeilen in diesen Dateien zählt. Die Ausgabe sollte nur die Gesamtzeilenanzahl anzeigen.

Welcher der folgenden Einzeiler-Bash-Befehle erledigt diese Aufgabe?

  • find . -name "*.txt" -exec wc -l {} \; | awk '{total += $1} END {print total}'
  • grep -r ".*\.txt$" | wc -l
  • find . -type f -name "*.txt" | xargs wc -l | tail -n 1
  • find . -name "*.txt" -exec cat {} \; | wc -l

Q94. Was ist der Unterschied zwischen den Umleitungsoperatoren > und >>?

  • > überschreibt den Inhalt der Zieldatei, während >> am Ende der Zieldatei anhängt.
  • > leitet die Eingabe um, während >> die Ausgabe umleitet.
  • > wird für die Standardausgabe verwendet, während >> für den Standardfehler verwendet wird.
  • > ist ein unärer Operator, während >> ein binärer Operator ist.

Referenz