Bazen bazı öğreticiler biraz daha egzotik ve tuhaf komutları açıklamayı hedeflerken, diğer yandan seri dağıtımlar içeren ve cd, ls, cat vb. Kadar popüler olmayanlar da vardır, ancak bunlar aynı derecede pratiktir. Bu eğitimde size bu komutlardan ikisiyle neler yapılabileceğini göstereceğim: ismini ver ve söyle bana.
Belki bir önsel olarak size saçma geliyorlar ve hiçbir faydası yok, ama oldukça pratik uygulamalar bazı durumlarda, örneğin, dosya veya dizin gibi bir yolun bir kısmını çıkarmanız gereken komut dosyalarında başka bir komutun bunun üzerinde çalışması için ...
Onlar ne için
Bu komutlar çok basittir ve işlevleri ses:
- baz adı: dosyanın adını bir yoldan çıkarmak için kullanılır.
- dizinadı: bir yoldan dizin adını çıkarmak için kullanılır.
Kullanım örnekleri
Burada biraz görebilirsiniz örnekler nasıl kullanılır:
- Örneğin, kullanmak baz adı / etc / passwd ile ve çıktısında dosyanın adını döndürür, bu durumda passwd:
basename /etc/passwd
- Ayrıca belirtebilirsiniz bir uzantı böylece dosyanın adını uzantı olmadan verir. Örneğin, bir görüntünün /home/media/test.jpg adını jpg uzantısı olmadan çıkarmak istediğinizi varsayalım ( prueba):
basename -s .jpg /home/media/prueba.jpg
- Sen bile aynı anda birden çok rotayı işle ayrı olarak, bunun için -a seçeneğini kullanmanız gerekir:
basename -a /etc/passwd /var/log/boot.log
- Bunun tersini yapmak ve size dosyanın adı olmadan dizinin adını vermek için şunu kullanmanız gerekir: dizinadı. Örneğin, /var/spool/mail/test.txt yolunda kullanmak ve / var / spool / mail döndürmesini istiyorsanız, şunu kullanın:
dirname /var/spool/mail/prueba.txt
Gelince bir komut dosyasındaki yardımcı programBurada başka bir örnek var. Basit bir betiğiniz olduğunu ve içinde değişken olan bir yol olduğunu hayal edin. Ancak, dosyadan bağımsız olarak bir dosya içeren dizini göstermesini istersiniz, bu durumda aşağıdaki gibi bir şeye sahip olabilirsiniz:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
Açıkçası, bu komut dosyasında "yol adı" her zaman başlangıçta sabit tarafından bildirilen aynı statik olacaktır, ancak olmadığı durumlar olabilir ve bu pratik hale gelir. Örneğin:
/*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
Öğrendiğinizde faydasız gördüğünüz, ancak konuya geldiğinizde ne kadar pratik olduklarını gördüğünüz şeylere güzel bir örnek.