Saya mencoba untuk menetapkan variabel dalam skrip sh ke 3 karakter terakhir dari nama dasar file (dengan nama dasar yang saya maksud tanpa path dan tanpa akhiran). Saya telah berhasil melakukan ini, tetapi semata-mata karena penasaran, saya bertanya-tanya apakah ada perintah tunggal yang lebih pendek yang dapat saya gunakan. Awalnya saya punya satu kalimat awk
, tapi itu agak panjang. Saat ini saya memiliki skrip dua baris ini (dengan asumsi nama file lengkap ada di $1
):
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
Jadi misalnya, "/path/to/somefile.txt" berakhir dengan "ile" di $lastpart
.
Dapatkah saya entah bagaimana menggabungkan basename
dan sedikit untuk menghapus sufiks menjadi satu perintah, dan apakah ada cara untuk mengirimnya tail
(atau sesuatu yang bisa saya gunakan) tanpa menggunakan pipa? Akhiran tidak diketahui jadi saya tidak bisa mendasarkannya sebagai parameter basename
.
Tujuan utama sebenarnya tidak sesingkat mungkin, untuk dibaca sekilas mungkin. Konteks sebenarnya dari semua ini adalah pertanyaan tentang Superuser ini , di mana saya mencoba memberikan jawaban yang cukup sederhana.
two
akan bekerja; ekstensi itu akan .three
saya kira.
file.one.two.three
? Apakah kamu mauile
atautwo
?