basename và dirname: hai lệnh bạn nên biết

lệnh terminal shell Linux

Đô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


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Gregory ros dijo

    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.