Czasami, gdy kopiuję wklejanie tekstu z wyników poleceń, przypadkowo użyję Ctrl+ czamiast Ctrl+ Shift+ c.
Więc wiersz poleceń interpretuje to jako ^C...
Dlaczego to? Dlaczego wiersz poleceń interpretuje controldane wejściowe jako ^?
Czasami, gdy kopiuję wklejanie tekstu z wyników poleceń, przypadkowo użyję Ctrl+ czamiast Ctrl+ Shift+ c.
Więc wiersz poleceń interpretuje to jako ^C...
Dlaczego to? Dlaczego wiersz poleceń interpretuje controldane wejściowe jako ^?
Odpowiedzi:
W rzeczywistości nie wstawia sekwencji znaków „^ C”. Jest to tylko reprezentacja dla niedrukowalnych znaków kontrolnych ASCII, takich jak:
^C → ETX (Koniec tekstu, wysyła sygnał zabicia), ASCII 0x03^D → EOT (Koniec transmisji, kończy wprowadzanie), ASCII 0x04^H→ BS (Backspace, \b), ASCII 0x08^J→ LF (wysuw wiersza, \n), ASCII 0x0A^L → FF (wysuw strony, nowa strona, czyści terminal), ASCII 0x0C^M→ CR (powrót karetki, \r), ASCII 0x0DTo tylko niewielki fragment możliwych znaków kontrolnych ASCII, które można wstawić za pomocą klawiatury; pełną listę można znaleźć tutaj .
Myślę, że najważniejsze do zapamiętania to Ctrl+ C, Ctrl+ Di Ctrl+ L.
Ponieważ kombinacje CTRL+ KEYsą interpretowane przez terminal jako niedrukowalne znaki ASCII, a ponieważ są to niedrukowalne, potrzebujesz sposobu na ich reprezentację.
Konwencja, wywodząca się z terminali VT ze wsparciem ANSI , ma reprezentować kombinację CTRL+ KEYreprezentującą CTRLdaszek ( ^) i za KEYpomocą KEY.
Podczas kopiowania i wklejania do / z terminala, najlepszą praktyką jest używanie odpowiednio skrótów Ctrl+ Inserti Shift+ Insert.
Są to bardziej tradycyjne skróty do użytku z terminalami, choć zauważysz, że w środowisku graficznym X Ctrl+ Inserti Shift+ Insertsą powiązane z tymi samymi Ctrl+ Ci Ctrl+ V.
W większości terminali Ctrl+ C(reprezentowane przez ^C) są używane do zatrzymania wykonywania procesu, dlatego wklejanie przy użyciu tego skrótu nie będzie działać.
Do szybkiego kopiowania i wklejania możesz użyć głównego bufora X, zaznaczając dowolny tekst, który chcesz skopiować, a następnie klikając środkowym przyciskiem myszy w miejscu, w którym chcesz go wkleić. Nie wymaga klawiatury.
^Club podobne pojawiają się po naciśnięciu CTRL + C (lub CTRL + inna litera). Nie chodzi o to, jak poprawnie skopiować i wkleić rzeczy w terminalu, na które odpowiedź byłaby świetna.
Państwo powinno być za pomocą Ctrl+ Ci nie Shift+ Ctrl+ C, ponieważ w wierszu poleceń, robią to samo (a Ctrl+ Cjest łatwiejsze niż Shift+ Ctrl+ C). Może to nie być prawdą w niektórych środowiskach graficznych, w których GUI przechwytuje niektóre naciśnięcia klawiszy i robi coś specjalnego, ale jeśli naciśnięcia klawiszy są naprawdę wysyłane do wiersza poleceń, nie ma różnicy. Dlatego naciśnięcie Ctrl+ Cmoże pokazywać ^ C jako wielką literę C, zamiast małej litery C. W linii poleceń nie ma rozróżnienia na którą nacisnąłeś (a duże litery były prawdopodobnie oceniane jako łatwiejsze do odczytania). Dotyczy to liter; w przypadku innych postaci Shiftmoże to mieć wpływ).
Naciśnięcie Ctrl- Cwysyła kod ASCII, który jest 64 poniżej pozycji wielkiej litery w tabeli ASCII (i 96 mniej niż pozycja małej litery w tabeli ASCII). Tak więc naciśnięcie Ctrl- c(małe litery) wysyła kod ASCII 3 (czyli o 64 mniej niż kapitałowy Ckod ASCII 67). W wielu środowiskach możesz przytrzymać, Alta następnie nacisnąć klawisze 3numeryczny (a następnie zwolnić 3klawisz, a następnie zwolnić Altklawisz), aby uzyskać ten sam efekt.
Jeśli chodzi o ^ C, ^ jest dobrze znanym skrótem dla Ctrlklawisza „ ”. Podobnie, M- jest skrótem dla Altklawisza „ ”. Err, tak. M oznacza słowo „Meta”, które można wprowadzić, przytrzymując Alti naciskając to, co nastąpi później, lub czasami naciskając Esc(i zwalniając Esc), a następnie naciskając to, co nastąpi później. Artykuł Wikipedii na temat „Klucz kontrolny”: sekcja „Notacja” opisuje to jako „Tradycyjną notację”. Jest to również znane jako notacja Caret ( artykuł Wikipedii na temat notacji Caret , Unix StackExchange: pytanie ryvnf dotyczące notacji Caret ).
Jeśli chodzi o ostatnie pytanie, powłoka poleceń nie „interpretuje” niczego, by być daszkiem. Innymi słowy, powłoka niczego nie czyta i wierzy, że jest to daszek. To, co się dzieje, polega na tym, że powłoka korzysta z dobrze znanej notacji daszkowej dla danych wyjściowych. Jako kolejny przykład możesz zobaczyć dobrze znany pager „mniej”, użyj notacji karetki, uruchamiając:dd if=/dev/zero bs=64 count=1 | less
(Edytor tekstu „nano” używa również notacji karetki w pomocy online, w tym na pełnych ekranach pomocy online wyświetlanej po naciśnięciu ^ G, aka Ctrl- g.)
^jako symbolu „kontroli” sięga czasów pre-graficznych, kiedy terminale były tylko tekstem, i uważam, że jeszcze przedtem, kiedy mieliśmy karty i papier, żadnych terminali. Chciałbym wiedzieć, dlaczego ten symbol został wybrany jako symbol.