Làm cách nào để tạo bí danh có đối số vị trí trong bash Linux?


5

Hãy nói rằng tôi có một lệnh bash với một vài tùy chọn và biến mà tôi quan tâm (ví dụ: tên tệp):

my_cmd option1 option2 filename

Tôi đã tạo một bí danh:

alias my_cmd_12="my_cmd option1 option2"

điều này cho phép tôi loại bỏ việc gõ tất cả các tùy chọn. Tuy nhiên, có một số cờ xuất hiện sau biến tôi quan tâm (ví dụ tên tệp):

my_cmd option1 option2 filename --flag1

Làm cách nào để tạo một bí danh có tất cả tùy chọn một cờ:

my_alias filename tương đương với

my_cmd option1 option2 filename --flag1


Câu trả lời:


11

Bạn không thể làm điều này với bí danh. Bí danh hoạt động bằng cách thay thế chuỗi bằng một chuỗi khác. Với bí danh này được xác định

alias my_cmd_12="my_cmd option1 option2"

my_cmd_12 filename --flag1 sẽ mở rộng sang

my_cmd option1 option2 filename --flag1

Nhưng bạn muốn gọi my_alias filenameđể có được kết quả tương tự. Không có cách nào để thay thế my_aliasbằng một chuỗi khác --flag1xuất hiện ở cuối .

Tuy nhiên, một chức năng nên hoạt động:

my_function() { my_cmd option1 option2 "$1" --flag1; }

Lưu ý đây chỉ là một giải pháp tối thiểu phù hợp với ví dụ của bạn. Nói chung, bạn có thể sử dụng nhiều tham số vị trí hơn hoặc "$@", các câu điều kiện, v.v., theo chính xác những gì bạn cần. Chức năng là cách linh hoạt hơn so với bí danh.

Thêm thông tin ở đây: Trong Bash, khi nào bí danh, khi nào kịch bản và khi nào viết một hàm?


Đối với "làm quen với bash tốt hơn" - tldp.org -> hướng dẫn -> tìm kiếm "Bash", có ít nhất hai cái đáng để bạn đọc.
Hannu
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.