basename dan dirname: dua arahan yang harus anda ketahui

perintah shell shell Linux

Kadang-kadang beberapa tutorial bertujuan untuk menerangkan arahan yang lebih eksotik dan aneh, sebaliknya, ada beberapa yang merangkumi pengedaran bersiri dan tidak begitu popular seperti cd, ls, cat, dan lain-lain, tetapi sama praktikalnya. Dalam tutorial ini saya akan menunjukkan kepada anda apa yang dapat dilakukan dengan dua perintah tersebut: nama asas dan beritahu saya.

Mungkin a priori mereka kelihatan tidak masuk akal bagi anda dan bahawa mereka tidak ada gunanya, tetapi mereka ada aplikasi yang cukup praktikal dalam beberapa kes, seperti, misalnya, dalam skrip di mana anda perlu mengekstrak beberapa bahagian jalan, seperti nama fail atau direktori sehingga perintah lain beroperasi pada ini ...

Untuk apa mereka

Perintah ini sangat asas, dan fungsinya bunyi:

  • nama asas: digunakan untuk mengekstrak nama fail dari jalan.
  • nama panggilan: digunakan untuk mengekstrak nama direktori dari jalan.

Contoh penggunaan

Di sini anda dapat melihat beberapa contoh cara menggunakannya:

  • Contohnya, untuk digunakan nama asas dengan / etc / passwd, dan bahawa ia mengembalikan nama fail dalam outputnya, dalam hal ini passwd:
basename /etc/passwd

  • Anda juga boleh menentukan lanjutan sehingga memberi anda nama fail tanpa sambungan. Sebagai contoh, andaikan anda ingin mengekstrak nama gambar /home/media/test.jpg tanpa pelanjutan jpg (ia akan kembali prueba):
basename -s .jpg /home/media/prueba.jpg

  • Anda juga boleh memproses pelbagai laluan sekaligus secara berasingan, untuk ini anda mesti menggunakan pilihan -a:
basename -a /etc/passwd /var/log/boot.log

  • Untuk melakukan sebaliknya, dan memberi anda nama direktori, tanpa nama fail, maka anda harus menggunakan nama panggilan. Sebagai contoh, jika anda ingin menggunakannya di jalan /var/spool/mail/test.txt dan memilikinya kembali / var / spool / mail, kemudian gunakan:
dirname /var/spool/mail/prueba.txt

Mengenai a utiliti dalam skrip, di sini anda mempunyai contoh lain. Bayangkan bahawa anda mempunyai skrip yang mudah, dan di dalamnya terdapat jalan yang berubah-ubah. Tetapi anda mahu menunjukkan direktori yang mengandungi fail, tanpa mengira failnya, sekiranya anda mempunyai sesuatu seperti:

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

result=$(dirname "$pathname")

echo $result

Jelas, dalam skrip ini "pathname" akan selalu sama dengan statik yang dinyatakan oleh pemalar pada awalnya, tetapi mungkin ada kes di mana tidak, dan di situlah ia menjadi praktikal. 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 komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   Ros Gregory kata

    Contoh yang baik dari perkara-perkara yang semasa anda belajar anda nampak tidak berguna, tetapi apabila anda sampai ke subjek anda dapat melihat betapa praktikalnya.