Linux Befehle und Shell Skripte: Lösungen und Beispiele

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 8,47 KB

Geben Sie den Linux-Befehl an, der den Bildschirm qualifiziert, mit dem Befehl ls, Liste der Inhalt des Verzeichnisses /root/test, bei dem Dateinamen in Anführungszeichen und durch Komma getrennt.

ls -Q -m /root/test

Geben Sie den Linux-Befehl an, der auf alle Unterverzeichnisse des aktuellen Verzeichnisses, die die Berechtigung zum Lesen, Schreiben und Ausführen für den Besitzer, und Lesen und Ausführen für die Liste der Gruppen erlaubt.

ls -l | grep ^drwxr-xr-x

Geben Sie den Linux-Befehl an, um die C-Shell als Standard-Shell für root festzulegen.

chsh -s /bin/csh

Schreiben Sie ein Shell-Skript, dass eine Datei und ein Verzeichnis als Argument empfangen kann. Das Skript sollte überprüfen, dass solche Argumente tatsächlich einer Datei bzw. einem Verzeichnis entsprechen. Das Skript sollte überprüfen und melden, wenn die Datei in diesem Verzeichnis existiert, andernfalls wird die Datei in das Verzeichnis kopiert.

#!/bin/bash
clear
if test -f "$1"
then
  if test -d "$2"
  then
    ls "$2" | grep -w "$1"
    if test $? -eq 0
    then
      echo -e "Datei $1 existiert in $2\n"
    else
      cp "$1" "$2"
    fi
  else
    echo -e "Ungültiges Verzeichnis\n"
    exit
  fi
else
  echo -e "Datei ungültig\n"
  exit
fi

Erstellen Sie eine Datei mit dem Namen personas.dat, wo die Felder, die jeden Datensatz enthält, Name, Person, Gewicht (in kg) und Höhe (in Metern) sind. Die Datei hat das Zeichen # als Feldtrennzeichen, so zum Beispiel hätte die Datei personas.dat die Daten:

Juan # 80 # 1,75
Paulina # 65 # 1,6

Schreiben Sie ein awk Programm namens listado_imc, so dass die Datei personas.dat gelesen wird und eine Liste der Personen mit einem normalen BMI (Body Mass Index) erstellt wird. Bei Werten zwischen 18,5 und 24,99 wird der BMI als normal angesehen. Der BMI wird als BMI = Gewicht / (Körpergröße)2 berechnet.

Die Liste hat folgendes Format:

Normal BMI Listing
Nombre\tIMC

BEGIN {FS = "#"; OFS = "\t";
  print "Normal BMI Liste";
  print "Nombre\tIMC";
}
{
  imc = $2 / ($3 * $3)
  if (imc >= 18.5 && imc <= 24.99)
    printf "%s\t%2.2f\n", $1, imc
}

Die Umsetzung sollte:

awk -f listado_imc personas.dat

Angesichts des folgenden Inhalts der Umgebungsvariable PATH:

/usr/local/bin:/bin:/usr/bin:.

Wenn ich einen Befehl namens Liste im aktuellen Verzeichnis und den gleichen Befehl im Verzeichnis /usr/bin habe, welcher würde ausgewählt, um an der Eingabeaufforderung einfach Liste auszuführen?

Der Befehl Liste wird im Verzeichnis /usr/bin ausgeführt, da das aktuelle Verzeichnis (.) nach /usr/bin im PATH erscheint.

Schreiben Sie ein Shell-Skript, das zwei Dateien als Argumente erhalten kann. Das Skript sollte bestätigen, dass die Parameter tatsächlich Dateien sind und dass die erste Datei (Eingabedatei), die als Argument gegeben wurde, nicht leer ist. Dann müssen in einer anderen Datei (Ausgabedatei) die Zeilen gespeichert werden, die mit einem Buchstaben beginnen (Groß- oder Kleinschreibung) aus der Eingabedatei.

#!/bin/bash
clear
if test -s "$1"
then
  if test -f "$2"
  then
    grep ^[a-zA-Z] "$1" >> "$2"
  else
    echo -e "$2: Ungültige Datei\n"
    exit
  fi
else
  echo -e "$1: Datei nicht vorhanden oder leer\n"
  exit
fi

Geben Sie den Linux-Befehl an, der das Suchen und Löschen, ohne Bestätigung, aller leeren regulären Dateien ermöglicht, deren Namen mit dem Buchstaben a beginnen und sich im Verzeichnis /root/test befinden.

find /root/test -name "a*" -size 0 -type f -exec rm -f {} \;

Erstellen Sie eine Datei, palabras.txt, mit einem anderen Wort in jeder Zeile. Geben Sie den Linux-Befehl an, um aus der Datei palabras.txt alle Wörter zu extrahieren, die mit einem Vokal beginnen und enden (Groß- oder Kleinschreibung).

Sollte mit einem beliebigen Editor erstellt werden: palabras.txt

grep ^[aeiouAEIOU] palabras.txt | grep [aeiouAEIOU]$ > words.txt

Geben Sie den Linux-Befehl an, der die Erstellung des Alias list ermöglicht, so dass der Bildschirm gelöscht wird, das Datum und die Uhrzeit des Tages auf separaten Zeilen angezeigt werden und die Liste der Berechtigungen von allen Dateien im Verzeichnis angezeigt wird.

alias list='clear; date +"%D%n%T"; ls -al'

Verwenden Sie Pipe-Befehle, um die Anzahl der regulären Dateien (oder Standard-Dateien) zu ermitteln, die im aktuellen Verzeichnis existieren.

ls -l | grep ^- | wc -l

Erstellen Sie eine Datei mit dem Namen notas_curso, wo die Felder, die jeden Datensatz enthält, Name, Nachname, Erste-Note, Zweite-Note, Dritte-Note sind. Die Datei hat das Zeichen , als Feldtrennzeichen, so zum Beispiel kann die Datei notas_curso die Daten enthalten:

Juan,Perez,3.5,4.7,5.3
Pauline,Fabres,2.5,4.7,3.4

Schreiben Sie ein awk Programm namens listado_aprobados, so dass auf dem Bildschirm eine Liste der zugelassenen Studenten (Durchschnitt größer oder gleich 4,0) angezeigt wird. Die Liste wird das folgende Format haben:

Liste der zugelassenen
Nachname\tName\tDurchschnitt

BEGIN {FS = ","; OFS = "\t";
  print "Liste der zugelassenen";
  print "Nachname\tName\tDurchschnitt";
}
{
  avg = ($3 + $4 + $5) / 3
  if (avg >= 4.0)
    printf "%s\t%s\t%1.1f\n", $2, $1, avg
}

Die Umsetzung sollte:

awk -f listado_aprobados notas_curso

Geben Sie die Linux-Befehle an, um die entsprechenden Umgebungsvariablen so festzulegen, dass der Befehl history mit Datum und Uhrzeit der Ausführung von Befehlen angezeigt wird und die doppelten Einträge in der History-Datei entfernt werden.

Bearbeiten Sie die Variablen HISTTIMEFORMAT und HISTCONTROL in der Datei .bash_profile des Benutzers, zum Beispiel:

export HISTTIMEFORMAT="%F %T"
export HISTCONTROL=erasedups

Betrachten wir ein Unternehmen, das von seiner Muttergesellschaft und drei Tochtergesellschaften gegründet wurde. Aufgrund von Problemen mit der Verbindung von einem übergeordneten Zweig hat beschlossen, ständig die IP-Adressen der Filialen zu testen.

Schreiben Sie ein Shell-Skript namens testIP, um eine Protokolldatei mit dem Nachweis der Verbindungen von der Zentrale in allen Bereichen zu erstellen. Der Connectivity Test wird alle 5 Minuten 24 Stunden am Tag durchgeführt und die Ergebnisse müssen in der Datei testIP_sucursales.log erfasst werden, zusammen mit dem Datum und der Uhrzeit des durchgeführten Verbindungstests. Die IP-Adressen der Filialen sollten dem Shell-Skript in einer Datei übergeben werden, deren Name als Argument an das Skript übergeben werden kann und von denen einfach eine IP-Adresse (die getestet wird) in jeder Zeile der Datei angegeben wird.

#!/bin/bash
clear
while true
do
  for ip in $(cat "$1")
  do
    echo -e "+--------------------------------+" >> testIP_sucursales.log
    date +"%D%t%T" >> testIP_sucursales.log
    ping -c 3 "$ip" >> testIP_sucursales.log
  done
  sleep 300
done

Schreiben Sie ein Shell-Skript namens mostrar_lineas, das es ermöglicht, alle nicht-leeren Zeilen, zusammen mit der Zeilennummer, einer Datei, die von der Tastatur gelesen wird, anzuzeigen.

#!/bin/bash
clear
echo -e "Datei: \c"
read file
i=1
while read line
do
  if test ! -z "$line"
  then
    echo -e "$i\t$line"
    i=$(echo "$i+1" | bc)
  fi
done < "$file"

Verwandte Einträge: