Manchmal zielen einige Tutorials darauf ab, etwas exotischere und seltsamere Befehle zu erklären, andererseits gibt es einige, die serielle Distributionen enthalten und nicht so beliebt sind wie CD, LS, Katze usw., aber sie sind genauso praktisch. In diesem Tutorial werde ich Ihnen zeigen, was mit zwei dieser Befehle getan werden kann: Basisname und sag es mir.
Vielleicht a priori scheinen sie Ihnen absurd und dass sie keinen Nutzen haben, aber sie haben ziemlich praktische Anwendungen In einigen Fällen, z. B. in Skripten, in denen Sie einen Teil eines Pfads extrahieren müssen, z. B. den Namen der Datei oder des Verzeichnisses, damit ein anderer Befehl diese ...
Wofür sind sie?
Diese Befehle sind sehr einfach und seine Funktionen sind:
- Basisname: Wird verwendet, um den Namen der Datei aus einem Pfad zu extrahieren.
- dirname: Wird verwendet, um den Verzeichnisnamen aus einem Pfad zu extrahieren.
Anwendungsbeispiele
Hier können Sie einige sehen ejemplos wie man sie benutzt:
- Zum Beispiel zu verwenden Basisname mit / etc / passwd, und dass es den Namen der Datei in seiner Ausgabe zurückgibt, in diesem Fall passwd:
basename /etc/passwd
- Sie können auch angeben eine Erweiterung so dass es Ihnen den Namen der Datei ohne die Erweiterung gibt. Angenommen, Sie möchten den Namen eines Bildes /home/media/test.jpg ohne die Erweiterung jpg extrahieren (es würde zurückkehren prueba):
basename -s .jpg /home/media/prueba.jpg
- Sie können sogar mehrere Routen gleichzeitig verarbeiten separat, dafür müssen Sie die Option -a verwenden:
basename -a /etc/passwd /var/log/boot.log
- Um das Gegenteil zu tun und Ihnen den Namen des Verzeichnisses ohne den Namen der Datei zu geben, müssen Sie verwenden dirname. Wenn Sie es beispielsweise im Pfad /var/spool/mail/test.txt verwenden und / var / spool / mail zurückgeben möchten, verwenden Sie:
dirname /var/spool/mail/prueba.txt
Wie für eine Dienstprogramm in einem SkriptHier haben Sie ein anderes Beispiel. Stellen Sie sich vor, Sie haben ein einfaches Skript und darin einen Pfad, der variabel ist. Sie möchten jedoch, dass das Verzeichnis angezeigt wird, das eine Datei enthält, unabhängig von der Datei. In diesem Fall könnten Sie Folgendes haben:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
Natürlich wäre in diesem Skript der "Pfadname" immer dieselbe statische Angabe, die von der Konstanten am Anfang deklariert wurde, aber es kann Fälle geben, in denen dies nicht der Fall ist, und genau hier es wird praktisch. Zum Beispiel:
/*script para convertir una imagen gif en png*/ #!/bin/sh for file in *.gif;do #Salir si no hay ficheros if [! -f $file];then exit fi b='basename $file .gif' echo NOW $b.gif is $b.png giftopnm $b.gif | pnmtopng >$b.png done
Ein gutes Beispiel für solche Dinge, die Sie beim Lernen als nutzlos ansehen, aber wenn Sie zum Thema kommen, sehen Sie, wie praktisch sie sind.