Đôi khi một số hướng dẫn nhằm giải thích các lệnh có phần kỳ lạ và kỳ lạ hơn, mặt khác, có một số hướng dẫn bao gồm các bản phân phối nối tiếp và không phổ biến như cd, ls, cat, v.v., nhưng chúng cũng thực tế. Trong hướng dẫn này, tôi sẽ chỉ cho bạn những gì có thể được thực hiện với hai trong số các lệnh đó: tên cơ sở và cho tôi biết.
Có lẽ trước đó chúng có vẻ vô lý đối với bạn và chúng không có tác dụng gì, nhưng chúng có ứng dụng khá thực tế trong một số trường hợp, chẳng hạn như, chẳng hạn, trong các tập lệnh mà bạn cần trích xuất một số phần của đường dẫn, chẳng hạn như tên của tệp hoặc thư mục để một lệnh khác hoạt động trên ...
Họ để làm gì
Các lệnh này rất cơ bản và chức năng của nó âm thanh:
- tên cơ sở: dùng để trích xuất tên của tệp từ một đường dẫn.
- nói cho tôi: dùng để trích xuất tên thư mục từ một đường dẫn.
Các ví dụ sử dụng
Ở đây bạn có thể thấy một số ví dụ làm thế nào để sử dụng chúng:
- Ví dụ, để sử dụng tên cơ sở với / etc / passwd và nó trả về tên của tệp trong đầu ra của nó, trong trường hợp này là passwd:
basename /etc/passwd
- Bạn cũng có thể chỉ định một phần mở rộng để nó cung cấp cho bạn tên của tệp mà không có phần mở rộng. Ví dụ: giả sử bạn muốn trích xuất tên của một hình ảnh /home/media/test.jpg mà không có phần mở rộng jpg (nó sẽ trả về prueba):
basename -s .jpg /home/media/prueba.jpg
- Bạn thậm chí có thể xử lý nhiều tuyến cùng một lúc riêng biệt, đối với điều này, bạn phải sử dụng tùy chọn -a:
basename -a /etc/passwd /var/log/boot.log
- Để làm ngược lại và cung cấp cho bạn tên của thư mục, không có tên của tệp, thì bạn phải sử dụng nói cho tôi. Ví dụ: nếu bạn muốn sử dụng nó trong đường dẫn /var/spool/mail/test.txt và đặt nó trả về / var / spool / mail, thì hãy sử dụng:
dirname /var/spool/mail/prueba.txt
Đối với một tiện ích trong một tập lệnh, ở đây bạn có một ví dụ khác. Hãy tưởng tượng rằng bạn có một tập lệnh đơn giản và trong đó có một đường dẫn có thể thay đổi được. Nhưng bạn muốn nó hiển thị thư mục chứa một tệp, bất kể tệp đó là gì, trong trường hợp đó, bạn có thể có một cái gì đó như:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
Rõ ràng, trong tập lệnh này, "tên đường dẫn" sẽ luôn là cùng một tĩnh được khai báo bởi hằng số ở đầu, nhưng có thể có những trường hợp không phải như vậy, và đó là nơi nó trở nên thực tế. Ví dụ:
/*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
Một ví dụ điển hình cho những điều mà khi học bạn thấy vô ích, nhưng khi vào môn học bạn mới thấy chúng thực tế đến mức nào.