Không (arg: n) trong dấu nhắc lệnh có nghĩa là gì?


10

Trong Khóa học dòng lệnh của Codecademy , khi cố gắng sử dụng phím tắt Alt+Shift+#(được cho là để nhận xét dòng hiện tại) trong dấu nhắc lệnh, nó sẽ chuyển lời nhắc từ $sang (arg: 3)thay vì thêm dấu gạch ngang ở đầu dòng. Alt+Shift+@sẽ làm cho nó hiển thị (arg: 2)thay vào đó, vv Xem dòng cuối cùng trong ảnh chụp màn hình bên dưới. Trước khi tôi đánh Alt+Shift+#nó chỉ là $.

ảnh chụp màn hình

Phím tắt hoạt động tốt trên máy của tôi.

  1. Cái này là (arg: n)cái gì
  2. Phím tắt phụ thuộc vào công việc là gì? Bố trí bàn phím? Hệ điều hành phân phối? Trình giả lập thiết bị đầu cuối? CLI mặc định? Gì?

Câu trả lời:


15

Đây là lời nhắc của thư viện readline khi bạn nhập một đối số số. Bằng cách gõ AltShift@trên bàn phím của bạn, bạn dường như đi vào Alt2mà bản đồ để M-2mà chạy digit-argumenttrong readline theo mặc định, và bắt đầu bước vào một đối số. Nếu sau đó bạn nhấn Alt3( AltShift#ánh xạ tới trong trường hợp của bạn), bạn sẽ thấy dấu nhắc thay đổi thành (arg: 23); bạn có thể tiếp tục với bất kỳ Altkết hợp chữ số nào .

Các đối số này được sử dụng cho các chức năng đọc nhất định, ví dụ yank-nth-arg. Để thấy điều này trong hành động, chạy

echo Hello my friend

sau đó nhấn Alt2theo sau CtrlAltY; bạn sẽ thấy (arg: 2)dấu nhắc xuất hiện, sau đó biến mất và đối số thứ hai của lệnh trước đó (MẮT tôi) sẽ được thêm vào dòng lệnh hiện tại của bạn.

Xem các tài liệu liên kết ở trên để biết chi tiết. Bash sử dụng readline để xử lý đầu vào của nó; các vỏ khác sẽ không thể hiện hành vi tương tự.

Một số trình giả lập thiết bị đầu cuối sử dụng một số kết hợp chính này cho mục đích riêng của họ; ví dụ: trong Gnome Terminal, Alt-digit chuyển sang tab thứ n . Bạn sẽ cần phải vô hiệu hóa các kết hợp này để sử dụng các chức năng đọc.

Trong trường hợp của bạn, trình giả lập thiết bị đầu cuối dựa trên web Codecademy dường như không xử lý các AltShiftkết hợp rất tốt. Nếu bạn không cần các phím tắt đối số số, bạn có thể tái sử dụng chúng bằng cách chạy

bind Meta-3:insert-comment

Về lý thuyết, bạn sẽ có thể lưu trữ này vĩnh viễn bằng cách thêm

Meta-3: insert-comment

vào một ~/.inputrctệp, nhưng tôi không thể làm cho nó hoạt động trên Codecademy.


1
Cảm ơn bạn. Làm cách nào để vô hiệu hóa đường đọc hoặc chỉ sử dụng phím tắt để nhận xét dòng lệnh hiện tại?
dùng331380

Trình giả lập thiết bị đầu cuối nào bạn đang sử dụng?
Stephen Kitt

Tôi muốn biết làm thế nào để làm điều đó trên Codecademy, tôi không có cách nào để nhấp chuột phải và tìm hiểu. ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)đầu ra /usr/local/bin/ein -service-port 4006 -http-port 4007. Không giúp đỡ à?
dùng331380

1
@ user331380 Có khả năng bạn đang sử dụng bashshell trên Codeacademy ở đó. Trong shell tương tác, bạn có thể bắt đầu một thể hiện mới với bash --noediting. Điều đó sẽ vô hiệu hóa đường đọc, nhưng hãy nhớ rằng readlinethư viện chịu trách nhiệm cho rất nhiều tính năng chỉnh sửa dòng, điều này có thể khiến việc sử dụng shell tương tác trở nên khó chịu hơn một chút
Sergiy Kolodyazhnyy

Có thể đáng nói rằng nó cũng xảy ra trên vi-keybindings khi bạn chỉ cần nhập số ở chế độ bình thường để biểu thị đối số số cho lệnh chế độ bình thường tiếp theo bạn nhập.
JoL
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.