Ben bir dosyanın temel adının son 3 karakter bir sh komut dosyası bir değişken ayarlamak için çalışıyorum (taban adı ile yolu ve sonek olmadan demek ). Bunu yapmayı başardım ama tamamen meraktan, kullanabileceğim daha kısa, tek bir komut olup olmadığını merak ediyorum. Başlangıçta bir astar vardı awk
, ama oldukça uzundu. Şu anda (tam bir dosya adı varsayalım) bu iki satır komut dosyası var $1
:
filebase=`basename "$1"`
lastpart=`echo -n ${filebase%.*} | tail -c3`
Yani, örneğin, "/path/to/somefile.txt" ile biter kadar "göster ile" içinde $lastpart
.
Bir şekilde birleştirebilir miyim basename
ve son eki tek bir komut haline tail
getirebilir miyim? Sonek bilinmiyor, bu yüzden bir parametre olarak temel olamaz basename
.
Asıl amaç, mümkün olduğunca kısa olmak, mümkün olduğunca kısa bir bakışta okunabilir olmak değildir. Tüm bunların gerçek bağlamı, oldukça basit bir cevap bulmaya çalıştığım Superuser ile ilgili bu soru .
two
işe yarar ; bunun uzantısı .three
sanırım.
file.one.two.three
? İstediğiniz misinizile
yoksatwo
?