Tại sao ^ C, ^ V, v.v. xuất hiện trong thiết bị đầu cuối khi tôi sử dụng phím tắt Ctrl + ký tự?


26

Đôi khi, khi sao chép văn bản dán từ đầu ra của lệnh, tôi sẽ vô tình sử dụng Ctrl+ cthay vì Ctrl+ Shift+ c.

Vì vậy, dòng lệnh diễn giải nó là ^C...

Tại sao lại thế này? Tại sao dòng lệnh diễn giải controlđầu vào là ^?

Câu trả lời:


35

Nó không thực sự chèn chuỗi ký tự "^ C". Đây chỉ là một đại diện cho các ký tự điều khiển ASCII không thể in được, chẳng hạn như:

  • ^C → ETX (Kết thúc văn bản, gửi tín hiệu tiêu diệt), ASCII 0x03
  • ^D → EOT (Kết thúc truyền, chấm dứt đầu vào), ASCII 0x04
  • ^H→ BS (Backspace, \b), ASCII 0x08
  • ^J→ LF (Nguồn cấp dữ liệu, \n), ASCII 0x0A
  • ^L → FF (Nguồn cấp mẫu, trang mới, xóa thiết bị đầu cuối), ASCII 0x0C
  • ^M→ CR (Vận chuyển trở lại, \r), ASCII 0x0D

Đây chỉ là một trích xuất nhỏ của các ký tự điều khiển ASCII có thể có thể được chèn bằng bàn phím; bạn có thể tìm thấy một danh sách đầy đủ ở đây .

Tôi nghĩ những cái quan trọng nhất cần nhớ là Ctrl+ C, Ctrl+ DCtrl+ L.


Việc sử dụng dấu mũ ^làm biểu tượng cho "điều khiển" có từ thời tiền đồ họa khi các thiết bị đầu cuối chỉ có văn bản và tôi tin ngay cả trước đó khi chúng tôi có thẻ và giấy, không có thiết bị đầu cuối. Tôi muốn biết lý do tại sao dấu mũ được chọn làm biểu tượng.
Paddy Landau

8

Bởi vì CTRL+ KEYcombo được thiết bị đầu cuối hiểu là các ký tự ASCII không in được và là những ký tự không in được, bạn cần một cách để thể hiện chúng.

Quy ước, xuất phát từ các thiết bị đầu cuối VT có hỗ trợ ANSI , là đại diện cho tổ hợp CTRL+ KEYđại diện cho CTRLdấu mũ ( ^) và KEYvới KEY.


5

Khi sao chép và dán vào / từ một thiết bị đầu cuối, cách tốt nhất là sử dụng các lần cắt ngắn Ctrl+ InsertShift+ Inserttương ứng.

Đây là những cách rút ngắn truyền thống hơn để sử dụng thiết bị đầu cuối, mặc dù bạn sẽ lưu ý rằng trong môi trường đồ họa X Ctrl+ InsertShift+ Insertđược gắn với cùng Ctrl+ CCtrl+ V.

Trong hầu hết các thiết bị đầu cuối Ctrl+ C(được đại diện bởi ^C) được sử dụng để tạm dừng việc thực hiện một quy trình, do đó việc dán với phần cắt ngắn đó sẽ không hoạt động.

Để sao chép và dán nhanh, bạn có thể sử dụng bộ đệm chính của X bằng cách tô sáng bất kỳ văn bản nào bạn muốn sao chép và sau đó nhấp vào giữa nơi bạn muốn dán. Không cần bàn phím.


2
Xin lỗi, nhưng bạn đã hiểu nhầm câu hỏi. OP muốn biết lý do tại sao chuỗi ^Choặc tương tự xuất hiện khi nhấn CTRL + C (hoặc CTRL + chữ cái khác). Đây không phải là về cách sao chép và dán chính xác vào thiết bị đầu cuối, mà câu trả lời của bạn sẽ rất tuyệt.
Chỉ huy Byte

@ByteCommander, đúng là bạn! Tôi xin lỗi, tuy nhiên, tôi sẽ để lại câu trả lời của mình, vì có vẻ như câu hỏi đã được trả lời đúng :) Ai đó có thể vấp phải điều này và thấy những gì tôi viết hữu ích.
Keefer Rourke

-2

Bạn nên sử dụng Ctrl+ Cvà không Shift+ Ctrl+ C, vì trên dòng lệnh, chúng làm điều tương tự (và Ctrl+ Cdễ hơn Shift+ Ctrl+ C). Điều đó có thể không đúng trong một số môi trường đồ họa nhất định trong đó GUI nắm bắt một số tổ hợp phím và thực hiện một số điều đặc biệt, nhưng nếu tổ hợp phím thực sự được gửi đến dòng lệnh, thì không có sự khác biệt. Đây là lý do tại sao nhấn Ctrl+ Ccó thể hiển thị ^ C là chữ in hoa C, thay vì chữ thường C. Dòng lệnh không phân biệt cái nào bạn nhấn (và chữ hoa có lẽ được đánh giá là dễ đọc hơn). Điều này đúng với các chữ cái; đối với các nhân vật khác, Shiftcó thể có hiệu lực.)

Nhấn Ctrl- Cgửi mã ASCII ở dưới 64 vị trí của chữ in hoa trong bảng ASCII (và ít hơn 96 so với vị trí của chữ cái viết thường trong bảng ASCII). Vì vậy, nhấn Ctrl- c(chữ thường) gửi mã ASCII 3 (ít hơn 64 so với Cmã ASCII của thủ đô là 67). Trong nhiều môi trường, bạn có thể giữ Altvà sau đó nhấn 3vào phím tắt (và sau đó nhả 3phím, sau đó nhả Altphím) và bạn có thể nhận được hiệu ứng tương tự.

Về ^ C, ^ chỉ là một tốc ký nổi tiếng cho Ctrlphím "". Tương tự, M- là một tốc ký cho Altphím "". Ơ, ừ. M là viết tắt của từ "Meta", có thể được nhập bằng cách giữ Altvà nhấn bất cứ điều gì tiếp theo, hoặc đôi khi bằng cách nhấn Esc(và phát hành Esc) và sau đó nhấn bất cứ điều gì tiếp theo. Bài viết của Wikipedia về "Khóa điều khiển": phần "Ký hiệu" mô tả đây là "Ký hiệu truyền thống". Đây còn được gọi là Ký hiệu Caret ( bài viết của Wikipedia về ký hiệu Caret , Unix StackExchange: câu hỏi của ryvnf về Ký hiệu Caret ).

Về câu hỏi cuối cùng, shell lệnh không "diễn giải" bất cứ điều gì để trở thành một dấu mũ. Nói cách khác, shell không đọc được gì và tin rằng đó là một dấu mũ. Điều đang xảy ra là vỏ đang sử dụng ký hiệu dấu mũ nổi tiếng cho đầu ra. Một ví dụ khác, bạn có thể thấy máy nhắn tin nổi tiếng, "ít hơn", sử dụng ký hiệu dấu mũ bằng cách chạy:dd if=/dev/zero bs=64 count=1 | less

(Trình chỉnh sửa văn bản "nano" cũng sử dụng ký hiệu dấu mũ trong trợ giúp trực tuyến của nó, bao gồm toàn màn hình trợ giúp trực tuyến được hiển thị sau khi nhấn ^ G, aka Ctrl- g.)


4
DevRobot đặc biệt hỏi về việc sử dụng Ctrl-C (hay đúng hơn là Shift-Ctrl-C) trong bối cảnh sao chép và dán, trong đó ngụ ý một thiết bị đầu cuối GUI. Bạn không nhất thiết là không chính xác, nhưng lời giải thích của bạn chắc chắn gây nhầm lẫn cho ai đó đến từ góc độ người dùng GUI.
RM
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.