Có thể làm bí danh sandwhich?


8

Tôi đang tìm cách để làm cho bí danh sau hoạt động cho bất kỳ tên tệp nào.

alias dim='cd /home/jason/Documents; vim *the desired file*; cd'

Tôi tự hỏi liệu có cách nào tôi có thể thay đổi bí danh này để làm cho nó để tôi có thể nhập bất kỳ tên tệp nào như vậy không:

dim *the desired file*

Và vẫn nhận được kết quả tương tự. Về cơ bản có cách nào để gọi bất cứ thứ gì được gõ sau tên bí danh vào chính bí danh không? Cái gì đó như:

alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'

//, mục đích của việc này là gì?
Nathan Basan 6/07/2015

Câu trả lời:


8

Không, bạn không thể làm điều đó bằng cách sử dụng bí danh shell. Bạn cần sử dụng một chức năng.

Đây là một chức năng đơn giản để thực hiện công việc:

dim() {
cd /home/jason/Documents
vim "$1"
cd
}

Hàm dimsẽ lấy tên tệp làm đối số. Bạn có thể đặt đoạn mã này vào cuối ~/.bashrctệp của mình và sau đó chạy nó dưới dạng:

dim file.txt

Thay thế file.txtbằng bất kỳ tên tập tin bạn muốn.

Để chạy nó so với phiên shell hiện hành, sourcecác ~/.bashrctập tin đầu tiên:

. ~/.bashrc

3
"$ 1" có nghĩa là gì? Tôi là người mới bắt đầu và cố gắng học thay vì chỉ sao chép dán và gọi nó là một ngày.
Jason Basan

1
@JasonBasan Tôi đánh giá cao quyết định của bạn :) $1chỉ ra tham số vị trí hoặc đối số đầu tiên cho hàm..theo đó là cách cung cấp đầu vào cho hàm hoặc tập lệnh .. giống như tất cả các ngôn ngữ lập trình bashcũng sử dụng .... bạn sẽ tìm nhiều tài nguyên về điều này trên Google ..
heemayl

3

Không phải với bí danh, sử dụng chức năng thay thế.

Từ trang Bash man :

ALIASES

[...] Không có cơ chế sử dụng đối số trong văn bản thay thế. Nếu cần đối số, nên sử dụng hàm shell (xem CHỨC NĂNG bên dưới).

Vì vậy, chức năng của bạn có thể là:

hàm dim () {cd ~ jason / Tài liệu; vim $ *; cd -;}


1
Sẽ không ~ / Tài liệu chỉ hoạt động tốt trong trường hợp này? Ngoài ra, ký hiệu $ và * có nghĩa gì trong trường hợp này? và là - sau khi cd cần thiết? Thông thường tôi chỉ có thể gõ cd và nó đi lên một thư mục.
Jason Basan

Thông thường tôi chỉ có thể gõ cd và nó đi lên một thư mục. Tôi chỉ biết một cách đơn giản cdđể đưa bạn đến thư mục nhà của bạn; cd ..đi lên một cấp cd -đưa bạn đến thư mục trước mà bạn cdchọn.
Chriki

1
@JasonBasan: Có ~ / Tài liệu sẽ hoạt động cho tất cả mọi người (nếu đó là chức năng cho tất cả người dùng). $*giống như $1 $2 $3...chỉ cung cấp toàn bộ danh sách cho vim, không phải là đối số đầu tiên bạn nhập. Và như Chriki đã nói, cd -sẽ trở lại thư mục trước đó (thư mục bạn đã sử dụng khi bạn gọi hàm).
CijcoSistems
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.