Bạn có thể sử dụng sed
để xóa phần còn lại - mọi thứ bắt đầu bằng dấu gạch chéo cuối cùng :
mpc -f %file% | head -1 | sed 's:/[^/]*$::'
Mẫu /[^/]*$
phù hợp với một dấu gạch chéo, theo sau là bất kỳ ký tự nào ngoại trừ dấu gạch chéo, cho đến cuối dòng. Nó được thay thế bằng chuỗi rỗng.
Việc head -1
bỏ qua một số đầu ra trạng thái theo dòng chúng tôi muốn - nhưng xem bên dưới để biết cách không pring chúng ở vị trí đầu tiên.
Trong trường hợp bạn không quen sử dụng sed, lệnh có thể trông bất thường vì :
được sử dụng. Bạn có thể đã thấy sed
các lệnh với /
dấu phân cách trước đây, như 's/foo/bar/'
- Tôi thích sử dụng dấu phân cách :
để dễ đọc, vì biểu thức chứa /
chính nó. Ngoài ra, chúng ta có thể thoát khỏi /
biểu thức: 's/\/[^\/]*$//'
- điều đó không làm cho nó dễ đọc hơn.
Cách bạn sử dụng nó mpc
cung cấp cho bạn hai dòng trạng thái bổ sung. Tùy chọn -q
cho yên lặng tắt tất cả đầu ra. Bạn cần kết hợp -q
với in rõ ràng tệp đang phát để có được dòng yon cần, và không có gì nữa:
mpc -q -f %file% current | sed 's:/[^/]*$::'
Thay vì xóa mọi thứ bắt đầu bằng dấu gạch chéo cuối cùng , người ta có thể in rõ ràng mọi thứ trước dấu gạch chéo cuối :
mpc -q -f %file% current | sed 's:^\(.*\)/.*$:\1:'
Điều đó phù hợp với bất kỳ nhân vật nào được theo sau bởi một /
và bất kỳ nhân vật nào khác; Nó khớp càng nhiều càng tốt, sao cho /
cái được khớp sẽ là cái cuối cùng.
/
, hoặc tên tệp mà không có phần thư mục hàng đầu? Cắt ra ra là mơ hồ, và chúng tôi đã giải thích nó khác nhau.