GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan Perintah Nama Dasar Linux di Skrip Bash

Perintah nama dasar di Linux mencetak komponen terakhir di jalur file. Ini sangat membantu dalam skrip bash tempat Anda ingin mengekstrak nama file dari jalur file yang panjang.

Mari saya tunjukkan kepada Anda dengan beberapa contoh.

Perintah nama dasar

Perintah basename memiliki dua jenis sintaks. Yang pertama melibatkan sufiks:

basename PATH [suffix]

Yang kedua memungkinkan Anda untuk menambahkan opsi:

basename OPTION PATH

Anda tidak dapat menggabungkan opsi dengan sufiks. Jangan bingung dulu. Ikuti contoh dan kemudian Anda akan mengerti apa yang ingin saya katakan.

Menggunakan perintah basename dengan path file akan memberikan nama file:

basename /home/user/data/filename.txt
filename.txt

Perintah basename sebenarnya cukup bodoh. Itu tidak benar-benar mengenali jalur file. Itu hanya mencari garis miring (/) dan mencetak apa pun setelah garis miring terakhir.

Misalnya, jika saya menjalankan contoh di atas dengan menghapus nama file, inilah yang akan dihasilkan.

basename /home/user/data
data

Hapus ekstensi file dengan akhiran

Penggunaan utama dari perintah bash adalah dalam mengekstrak nama file dari jalur file. Anda juga dapat menghapus ekstensi file saat mengekstrak nama file.

Cukup sebutkan apa yang ingin Anda hapus dari akhir output. Jadi katakanlah, Anda ingin menghapus .txt dari nama file.txt. Cukup tambahkan di akhir perintah nama dasar:

basename /home/user/data/filename.txt .txt
filename

Anda juga dapat menggunakan opsi -s untuk sufiks:

basename -s .txt /home/user/data/filename.txt
filename

Sufiks dihapus dari akhir komponen akhir input. Itu tidak benar-benar mengetahui ekstensi file. Jika Anda memberikan txt (tanpa titik) alih-alih .txt, Anda akan mendapatkan 'nama file.' (dengan titik di akhir).

Juga, jika Anda memberikan sufiks yang tidak ada di akhir komponen, outputnya tetap seolah-olah tidak ada sufiks.

basename /home/user/data/filename.txt name
filename.txt

Menggunakan nama dasar dengan banyak jalur

Dengan opsi -a , Anda dapat menggunakan beberapa jalur secara bersamaan.

basename -a /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1.txt
filename2.txt

Anda dapat menggunakan opsi sufiks -s dengan -a tetapi dengan beberapa keterbatasan. Anda hanya dapat memberikan satu sufiks ke semua jalur file.

basename -as .txt /home/user/data/filename1.txt /home/user/data/filename2.txt
filename1
filename2

Anda tidak dapat menetapkan cukup individu. Ini tidak akan berhasil.

Anda juga dapat memisahkan output dengan NULL alih-alih baris baru dengan -z pilihan.

Menggunakan nama dasar dalam skrip bash

Saya menunjukkan beberapa contoh perintah basename. Mari kita lihat beberapa contoh nama dasar dalam skrip bash.

Misalkan Anda memiliki variabel jalur file dan Anda ingin menyimpan nama file dari jalur dalam variabel. Ini bisa berupa skrip sederhana:

pathname="/home/dir/data/filename"

result=$(basename "$pathname")

echo $result

Contoh lain adalah di mana Anda ingin mengganti nama ekstensi file. Tentu saja, Anda dapat menggunakan perintah rename untuk mengelompokkan rename file, tetapi ini hanyalah sebuah contoh.

Jadi, saya menulis contoh skrip ini dengan tujuan untuk mengganti ekstensi file:

for file in *$1; do
if [ -f $file ]; then
 mv $file `basename $file .$1`.$2
fi
done

Apakah Anda memperhatikan bahwa saya mencentang apakah itu file atau bukan dalam skrip bash sehingga tidak mengubah direktori yang cocok?

Anda dapat menggunakan skrip di atas seperti ini:

./myscript.sh html htm

Dan itu akan mengganti nama semua file di direktori saat ini dengan html di akhir menjadi htm.

Ini hanya beberapa contoh. Anda dapat menggunakannya sesuai kebutuhan Anda.

Perintah basename dilengkapi dengan perintah dirname. Tidak seperti nama dasar, perintah dirname mencetak semua jalur kecuali komponen terakhir.

Saya harap Anda menyukai tutorial ini. Seperti biasa, jangan ragu untuk mengajukan pertanyaan atau memberikan saran di bagian komentar.


Linux
  1. Menggunakan Perintah Tidur Linux di Skrip Bash

  2. Perintah wc Linux

  3. Cara membagi iso atau file menggunakan perintah 'split' di Linux

  1. Perintah Ekor Linux

  2. Perintah Sentuh Linux

  3. Perintah grep Linux

  1. Perintah Cat di Linux

  2. Perintah Berkas Linux

  3. Lebih Sedikit Perintah di Linux