Làm thế nào để sử dụng - như bí danh?


11

Khi tôi đang sử dụng openSUSE 11.3, nó đã đi kèm với một số bí danh đã được thiết lập. Hai cái mà tôi đã sử dụng rất nhiều là +cho pushd .-cho popd. Bây giờ trên Debian, tôi không thể tìm ra cách tạo cái thứ hai. alias -=popdcố gắng đọc -=như một tùy chọn lệnh cho bí danh. Tôi đã thử đặt dấu ngoặc kép (cả đơn và kép) xung quanh nó và trước dấu gạch chéo ngược, nhưng tôi vẫn tiếp tục nhận được thông báo lỗi. Bất kỳ đề xuất?

Cảm ơn

Câu trả lời:


12

thử đi:

alias -- -=popd

làm việc ít nhất cho tôi:

usr@srv % alias -- -=echo
usr@srv % - test
test

Cảm ơn, hoạt động hoàn hảo. Không những gì --làm, chính xác?
Sói

4
@Wolf: Đối với hầu hết các lệnh, --đánh dấu sự kết thúc của các tùy chọn; tất cả mọi thứ sau đó là tranh luận. Ví dụ: logger foo -x barsẽ ghi nhật ký "foo bar" và coi -xnhư một tùy chọn, trong khi logger -- foo -x barsẽ coi nó như một từ thông thường trong thông báo "thanh foo -x".
dùng1686

1
Điều này --cho thấy rằng không có thêm tùy chọn nào theo dòng lệnh, sau đây -không được hiểu là các tùy chọn. Vì vậy, điều này cho phép bạn gửi catcác tệp bắt đầu bằng -;-)
binfalse

@grawity và @binfalse: Cảm ơn bạn đã giải thích, điều đó rất hữu ích! Rất tốt để biết.
Sói

7

Trong bashbạn có thể tạo các hàm có tên như vậy:

+() { pushd "$@"; }
-() { popd "$@"; }

$@
Lazer

2
@Lazer: Trong sh và bash, $@mở rộng cho tất cả các đối số được cung cấp cho hàm hoặc tập lệnh. Không trích dẫn nó hoạt động theo cách tương tự như $*. Tuy nhiên, khi bên trong dấu ngoặc kép, nó mở rộng thành chính xác các từ giống như ban đầu, mà không có bất kỳ sự phân tách bổ sung nào.
dùng1686

@Lazer: $@mở rộng cho tất cả các tham số được truyền cho hàm (tương đương "$1" "$2" ...). Để biết thêm thông tin, làm man bashvà tìm kiếm Thông số đặc biệt.
André Paramés
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.