basename dan dirname: dua perintah yang harus Anda ketahui

perintah terminal shell Linux

Terkadang, beberapa tutorial ditujukan untuk menjelaskan perintah yang agak lebih eksotis dan aneh, di sisi lain, ada beberapa yang menyertakan distribusi serial dan tidak sepopuler cd, ls, cat, dll., Tetapi sama praktisnya. Dalam tutorial ini saya akan menunjukkan kepada Anda apa yang bisa dilakukan dengan dua perintah tersebut: basename dan beri tahu aku.

Mungkin apriori mereka tampak tidak masuk akal bagi Anda dan mereka tidak ada gunanya, tetapi mereka punya aplikasi yang cukup praktis dalam beberapa kasus, seperti, misalnya, dalam skrip di mana Anda perlu mengekstrak beberapa bagian dari jalur, seperti nama file atau direktori sehingga perintah lain beroperasi pada ini ...

Untuk apa mereka

Perintah-perintah ini sangat mendasar, dan fungsinya suara:

  • nama dasar: digunakan untuk mengekstrak nama file dari jalur.
  • nama dirname: digunakan untuk mengekstrak nama direktori dari jalur.

Contoh penggunaan

Di sini Anda bisa melihat beberapa contoh bagaimana cara menggunakannya:

  • Misalnya, untuk digunakan nama dasar dengan / etc / passwd, dan mengembalikan nama file dalam outputnya, dalam hal ini passwd:
basename /etc/passwd

  • Anda juga bisa menentukan sebuah ekstensi sehingga memberi Anda nama file tanpa ekstensi. Misalnya, Anda ingin mengekstrak nama gambar /home/media/test.jpg tanpa ekstensi jpg (itu akan mengembalikan prueba):
basename -s .jpg /home/media/prueba.jpg

  • Anda bahkan bisa memproses beberapa rute sekaligus secara terpisah, untuk ini Anda harus menggunakan opsi -a:
basename -a /etc/passwd /var/log/boot.log

  • Untuk melakukan kebalikannya, dan memberi Anda nama direktori, tanpa nama file, maka Anda harus menggunakan nama dirname. Misalnya, jika Anda ingin menggunakannya di jalur /var/spool/mail/test.txt dan mengembalikannya / var / spool / mail, gunakan:
dirname /var/spool/mail/prueba.txt

Adapun a utilitas dalam skrip, di sini Anda memiliki contoh lain. Bayangkan Anda memiliki skrip sederhana, dan di dalamnya ada jalur yang bervariasi. Tetapi Anda ingin menampilkan direktori yang berisi file, apa pun filenya, dalam hal ini Anda dapat memiliki sesuatu seperti:

pathname="/home/usuario/data/fichero"

result=$(dirname "$pathname")

echo $result

Jelas, dalam skrip ini "pathname" akan selalu statis yang sama yang dideklarasikan oleh konstanta di awal, tetapi mungkin ada kasus di mana tidak, dan di situlah itu menjadi praktis. Sebagai contoh:

/*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


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   Gregory ros dijo

    Sebuah contoh bagus dari hal-hal yang ketika Anda belajar Anda melihat tidak berguna, tetapi ketika Anda sampai pada subjek Anda melihat betapa praktisnya mereka.