Co oznacza „zwrot karetki”? Na moim laptopie nie widzę żadnych „powozów”. : s
Jean Hominal
12
@JeanHominal karetka zasadniczo oznacza kursor (lub wskaźnik w starożytnych maszynach do pisania), a powrót oznacza powrót do początku tej linii.
SOFe,
Nie widzę żadnych zakończonych przewodów (ani żadnych tafli szkła w tym przypadku) w moim „terminalu” „oknie”, ani też „teletype” dołączony do / dev / tty1. Wszystkie stały się metaforami.
Piskvor opuścił budynek
Odpowiedzi:
621
Powrót karetki oznacza powrót na początek bieżącej linii bez przechodzenia w dół. Nazwa pochodzi od karetki drukarki, ponieważ monitory były rzadkie, gdy nazwa została wymyślona. Zwykle jest to oznaczane jako CR , w \rskrócie , i ma wartość ASCII lub .130x0D
Linefeed oznacza przejście w dół do następnej linii; jednak zmieniono jego przeznaczenie i zmieniono jego nazwę. Używany jako „nowa linia”, kończy linie (zwykle mylone z liniami oddzielającymi ). Zwykle jest to znak ucieczki \n, w skrócie LF lub NL, i ma wartość ASCII 10lub 0x0A. CRLF (ale nie CRNL) jest używany dla pary \r\n.
Form feed oznacza przejście w dół do następnej „strony”. Był powszechnie używany jako separatory stron, ale teraz jest również używany jako separatory sekcji. (Jest to rzadko używane w kodzie źródłowym do dzielenia logicznie niezależnych funkcji lub grup funkcji.) Edytory tekstu mogą używać tego znaku po „wstawieniu podziału strony”. Zwykle jest to \foznaczone jako FF , i ma wartość ASCII 12lub 0x0C.
Jako znaki kontrolne mogą być interpretowane na różne sposoby.
Najczęstszą różnicą (i prawdopodobnie jedyną, o którą warto się martwić) są linie kończące się CRLF na Windowsie, NL na Unix-like i CR na starszych Macach (sytuacja zmieniła się w OS X, by być jak Unix). Zwróć uwagę na przesunięcie znaczenia z LF na NL, dla dokładnie tego samego znaku, daje różnice między Windows i Unix. (Windows jest oczywiście nowszy niż Unix, więc nie przyjął tej zmiany semantycznej. Nie znam historii komputerów Mac z CR). Wiele edytorów tekstu może odczytywać pliki w dowolnym z tych trzech formatów i konwertować je między nimi , ale nie wszystkie narzędzia mogą.
Przesuw strony jest nieco bardziej interesujący (choć rzadziej używany bezpośrednio), a przy zwykłej definicji separatora strony może znajdować się tylko między wierszami (np. Po sekwencji nowej linii NL, CRLF lub CR) lub na początku lub koniec pliku.
Mogę potwierdzić, że OS X używa NL jako terminatora linii, podobnie jak Unix (ponieważ OS X to Unix). CR został użyty w Mac OS 9 i niższych wersjach.
Rory O'Kane,
1
Znak FF może dziś wydawać się dziwny (wraz z dzwonkowym znakiem „CTRL-G”), ale miał on większe znaczenie w przeszłości, gdy wyświetlacze wideo były znacznie mniej powszechne, a terminale drukowane były używane jako wyświetlacze danych.
Rick Sarvas,
Czy to nie kontrola pasz \x0c?
Tjorriemorrie,
2
„Nie znam historii komputerów Mac korzystających z CR”. To prawdopodobnie pochodzi z Apple II przy użyciu CR. CR był również powszechny w innych systemach 8-bitowych, takich jak Commodore i Tandy. ASCII nie był uniwersalny w tych systemach: Commodore używał PETSCII, który miał LF na 0x8d (!). Atari nie miał wcale charakteru LF. Z jakiegokolwiek powodu CR = 0x0d był mniej więcej standardem.
Ssswift
125
\r to powrót karetki i przesuwa kursor do tyłu, jakbym to zrobił-
printf("stackoverflow\rnine")
ninekoverflow
oznacza, że przesunął kursor na początek „przepływu stosu” i nadpisuje początkowe cztery znaki, ponieważ „dziewięć” ma cztery znaki.
\n to znak nowej linii, który zmienia linię i przenosi kursor na początek nowej linii, np.
printf("stackoverflow\nnine")
stackoverflow
nine
\f jest form feed, jego użycie stało się przestarzałe, ale służy do nadawania wcięcia podobnego
printf("stackoverflow\fnine")
stackoverflow
nine
jeśli napiszę jak
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
Ale ten przykład nie działa w językach wysokiego poziomu!
Sina Karvandi
@ ᔕI ᑎᗩ Kᗩᖇ ᐯᗩᑎᗪ I robi: możesz przynajmniej zrobić to samo w powłoce Linuksa, używając printfnarzędzia z coreutils. Lub nawet używanie, echo -enktóre jest wbudowane w bash.
Ruslan
Jak przekazać wszystkie linie jako jedną linię w pliku?
Paras Singh
8
Wysuw strony nie jest używany do wcięcia. Jeśli wyślesz kilka z nich do drukarki, wypluje papier. To, co opisałeś, \fto tak naprawdę \v- pionowa zakładka, o ile obie wyglądają tak samo w konsoli.
cprn
printf("123\f456\f789");pokazuje /> <bold> 123456789 </bold> na konsoli.
Systemy oparte na ASCII lub zgodnym zestawie znaków używają LF (przesunięcie wiersza, „\ n”, 0x0A, 10 w systemie dziesiętnym) lub CR (powrót karetki, „\ r”, 0x0D, 13 w systemie dziesiętnym) indywidualnie lub CR, po którym następuje LF (CR + LF, 0x0D 0x0A). Znaki te są oparte na poleceniach drukarki: Przesunięcie linii wskazuje, że jeden wiersz papieru powinien wysunąć się z drukarki, a znak powrotu karetki wskazuje, że karetka drukarki powinna powrócić na początek bieżącego wiersza.
Oprócz powyższych informacji, nadal istnieje ciekawa historia LF (\ n) i CR (\ r). [Oryginalny autor: 阮一峰 Źródło: http://www.ruanyifeng.com/blog/2006/04/post_213.html]
Zanim pojawił się komputer, istniał rodzaj teleprintera o nazwie Teletype Model 33. Każdy może wydrukować 10 znaków druga. Ale jest z tym jeden problem, po zakończeniu drukowania każdej linii przejście do następnej linii zajmie 0,2 sekundy, czyli czas drukowania 2 znaków. Jeśli nowe znaki zostaną przeniesione w ciągu 0,2 sekundy, nowa postać zostanie utracona.
Tak więc naukowcy znaleźli sposób na rozwiązanie tego problemu, dodając po każdej linii dwa znaki końcowe, jeden to „powrót karetki”, który ma nakazać drukarce przesunięcie głowicy drukującej w lewo .; drugi to „Przesuw wiersza”, mówi drukarce, aby przesunął papier o 1 linię w górę.
Później komputer stał się popularny, te dwa pojęcia są używane na komputerach. W tym czasie urządzenie pamięci masowej było bardzo drogie, więc niektórzy naukowcy powiedzieli, że dodanie dwóch znaków na końcu każdego wiersza było drogie, wystarczy jeden, więc istnieją pewne argumenty na temat tego, którego użyć.
W systemach UNIX / Mac i Linux „\ n” jest umieszczany na końcu każdej linii, w systemie Windows „\ r \ n” jest umieszczany na końcu każdej linii. Konsekwencją tego użycia jest to, że pliki w systemie UNIX / Mac będą wyświetlane w jednym wierszu, jeśli zostaną otwarte w systemie Windows. Podczas gdy plik w systemie Windows będzie miał jeden ^ M na końcu każdej linii, jeśli zostanie otwarty w systemie UNIX lub Mac.
Wraz z wydaniem OSX (opartego na unixie BSD) komputer Mac przełączył się na „\ n” - zakończenia linii uniksowych.
Jonathan Cross
„Pliki w systemie UNIX / Mac będą wyświetlane w jednym wierszu, jeśli zostaną otwarte w systemie Windows.” WRITE.EXE(aka Wordpad) może wyświetlać je w porządku.
thecarpy
18
Na starych terminalach drukarka papieru przejście do następnej linii wymagało dwóch działań: przesunięcie głowicy drukującej z powrotem na początek poziomego zakresu skanowania (powrót karetki) i przesunięcie rolki papieru, na której drukowane jest (podawanie linii).
Ponieważ nie używamy już terminali do drukarek papierowych, działania te nie są już tak naprawdę istotne, ale postacie używane do sygnalizowania ich utknęły w różnych wcieleniach.
W rzeczywistości „powrót karetki” nie przesuwa głowicy drukującej w lewo, ale przesuwa karetkę, która utrzymuje płytę dociskową w prawo. W tym celu lewą ręką uruchamiano długą dźwignię. Zobacz en.wikipedia.org/wiki/Typewriter
Zastanów się nad drukarką udarową IBM 1403. CR przesunął głowicę drukującą na początek linii, ale NIE przesunął papieru. Pozwoliło to na „nadruk”, umieszczenie wielu wierszy wydruku w jednym wierszu. W ten sposób osiągnięto takie rzeczy, jak podkreślanie, podobnie jak druk BOLD. LF przesunął papier o jedną linię. Gdyby nie było CR, następny wiersz zostałby wydrukowany jako krok naprzemienny, ponieważ LF nie przesunął głowicy drukującej. FF przesunął papier na następną stronę. Zazwyczaj przenosi to także głowicę drukującą na początek pierwszego wiersza na nowej stronie, ale może być do tego potrzebny CR. Oczywiście większość programistów kodowała CRFF zamiast CRLF na końcu ostatniego wiersza na stronie, ponieważ dodatkowy CR stworzony przez FF nie miałby znaczenia.
1, Zwrot karetki : Jest to terminologia drukarki oznaczająca zmianę lokalizacji wydruku na początek bieżącej linii. W świecie komputerów oznacza to w większości przypadków powrót do początku bieżącej linii, ale rzadko oznacza nową linię.
2, Podawanie wiersza : jest to terminologia drukarki oznaczająca przesunięcie papieru o jedną linię. Tak więc powrót karetki i przesunięcie wiersza są używane razem, aby rozpocząć drukowanie na początku nowej linii. W świecie komputerów ma to na ogół takie samo znaczenie jak nowa linia.
3, Form feed : To terminologia drukarki, podoba mi się wyjaśnienie tego wątku .
Jeśli programowałeś dla drukarki w stylu lat 80., wysunąłby papier i rozpoczął nową stronę. Jesteś praktycznie pewien, że nigdy go nie potrzebujesz.
Uwaga: możemy użyć CR, LF lub CRLF, aby zastąpić linię nowej linii na niektórych platformach, ale linii nowej nie można znieść przy niektórych platformach. Szczegółowe informacje można znaleźć na wiki Newline .
LF: Multics, Unix i systemy uniksopodobne (Linux, OS X, FreeBSD, AIX, Xenix itp.), BeOS, Amiga, RISC OS i inne
CR: 8-bitowe maszyny Commodore, Acorn BBC, ZX Spectrum, TRS-80, rodzina Apple II, Oberon, klasyczny Mac OS do wersji 9, MIT Lisp Machine i OS-9
RS: Implementacja QNX przed POSIX
0x9B: Maszyny 8-bitowe Atari używające wariantu ASCII ATASCII (155 w systemie dziesiętnym)
CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS itp.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC i większość innych wczesnych systemów operacyjnych innych niż Unix i innych niż IBM
Zwrot karetki i przesunięcie wiersza są również odniesieniami do maszyn do pisania, ponieważ po lekkim naciśnięciu rączki po lewej stronie karetki (miejsce, w którym idzie papier) papier obracałby się nieznacznie wokół cylindra, przesuwając udokumentuj jedną linię. Jeśli skończyłeś pisać jedną linię i chciałeś przejść do następnej, naciskałeś mocniej, zarówno przesuwając linię, jak i przesuwając karetkę do końca w prawo, a następnie wznawiając pisanie od lewej do prawej, gdy karetka poruszała się za każdym naciśnięciem klawisza . Nie trzeba dodawać, że zawijanie słów było domyślnym ustawieniem dla wszystkich edytorów tekstu w tamtych czasach. P: D
Są to znaki niedrukowalne, odnoszące się do pojęcia „nowej linii”. \ n jest zasilaniem liniowym. Zwrot karetki. Na różnych platformach mają różne znaczenia w stosunku do ważnej nowej linii. W systemie Windows nowa linia to \ r \ n. W systemie Linux \ n. W Mac'u.
W praktyce wstawiasz je w dowolny ciąg, co będzie miało wpływ na wydruk tego ciągu.
Odpowiedzi:
Powrót karetki oznacza powrót na początek bieżącej linii bez przechodzenia w dół. Nazwa pochodzi od karetki drukarki, ponieważ monitory były rzadkie, gdy nazwa została wymyślona. Zwykle jest to oznaczane jako CR , w
\r
skrócie , i ma wartość ASCII lub .13
0x0D
Linefeed oznacza przejście w dół do następnej linii; jednak zmieniono jego przeznaczenie i zmieniono jego nazwę. Używany jako „nowa linia”, kończy linie (zwykle mylone z liniami oddzielającymi ). Zwykle jest to znak ucieczki
\n
, w skrócie LF lub NL, i ma wartość ASCII10
lub0x0A
. CRLF (ale nie CRNL) jest używany dla pary\r\n
.Form feed oznacza przejście w dół do następnej „strony”. Był powszechnie używany jako separatory stron, ale teraz jest również używany jako separatory sekcji. (Jest to rzadko używane w kodzie źródłowym do dzielenia logicznie niezależnych funkcji lub grup funkcji.) Edytory tekstu mogą używać tego znaku po „wstawieniu podziału strony”. Zwykle jest to
\f
oznaczone jako FF , i ma wartość ASCII12
lub0x0C
.Jako znaki kontrolne mogą być interpretowane na różne sposoby.
Najczęstszą różnicą (i prawdopodobnie jedyną, o którą warto się martwić) są linie kończące się CRLF na Windowsie, NL na Unix-like i CR na starszych Macach (sytuacja zmieniła się w OS X, by być jak Unix). Zwróć uwagę na przesunięcie znaczenia z LF na NL, dla dokładnie tego samego znaku, daje różnice między Windows i Unix. (Windows jest oczywiście nowszy niż Unix, więc nie przyjął tej zmiany semantycznej. Nie znam historii komputerów Mac z CR). Wiele edytorów tekstu może odczytywać pliki w dowolnym z tych trzech formatów i konwertować je między nimi , ale nie wszystkie narzędzia mogą.
Przesuw strony jest nieco bardziej interesujący (choć rzadziej używany bezpośrednio), a przy zwykłej definicji separatora strony może znajdować się tylko między wierszami (np. Po sekwencji nowej linii NL, CRLF lub CR) lub na początku lub koniec pliku.
źródło
\x0c
?\r
to powrót karetki i przesuwa kursor do tyłu, jakbym to zrobił-oznacza, że przesunął kursor na początek „przepływu stosu” i nadpisuje początkowe cztery znaki, ponieważ „dziewięć” ma cztery znaki.
\n
to znak nowej linii, który zmienia linię i przenosi kursor na początek nowej linii, np.\f
jest form feed, jego użycie stało się przestarzałe, ale służy do nadawania wcięcia podobnegojeśli napiszę jak
źródło
printf
narzędzia z coreutils. Lub nawet używanie,echo -en
które jest wbudowane w bash.\f
to tak naprawdę\v
- pionowa zakładka, o ile obie wyglądają tak samo w konsoli.printf("123\f456\f789");
pokazuje /> <bold> 123456789 </bold> na konsoli.Zobacz Wikipedię :
źródło
\f
służy do podziału strony. W konsoli nie widać żadnego efektu. Ale kiedy użyjesz tej stałej znaku w swoim pliku, zobaczysz różnicę.Innym przykładem jest to, że jeśli możesz przekierować dane wyjściowe do pliku, nie musisz pisać pliku ani korzystać z obsługi plików.
Na przykład:
Napisz ten kod w c ++
a kiedy to skompilujesz, wygeneruje exe (np.
abc.exe
)następnie możesz przekierować dane wyjściowe do pliku za pomocą tego:
abc > xyz.doc
następnie otwórz plik
xyz.doc
, aby zobaczyć rzeczywisty podział strony między hellooo a hiiii ....źródło
Oprócz powyższych informacji, nadal istnieje ciekawa historia LF (\ n) i CR (\ r). [Oryginalny autor: 阮一峰 Źródło: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Zanim pojawił się komputer, istniał rodzaj teleprintera o nazwie Teletype Model 33. Każdy może wydrukować 10 znaków druga. Ale jest z tym jeden problem, po zakończeniu drukowania każdej linii przejście do następnej linii zajmie 0,2 sekundy, czyli czas drukowania 2 znaków. Jeśli nowe znaki zostaną przeniesione w ciągu 0,2 sekundy, nowa postać zostanie utracona.
Tak więc naukowcy znaleźli sposób na rozwiązanie tego problemu, dodając po każdej linii dwa znaki końcowe, jeden to „powrót karetki”, który ma nakazać drukarce przesunięcie głowicy drukującej w lewo .; drugi to „Przesuw wiersza”, mówi drukarce, aby przesunął papier o 1 linię w górę.
Później komputer stał się popularny, te dwa pojęcia są używane na komputerach. W tym czasie urządzenie pamięci masowej było bardzo drogie, więc niektórzy naukowcy powiedzieli, że dodanie dwóch znaków na końcu każdego wiersza było drogie, wystarczy jeden, więc istnieją pewne argumenty na temat tego, którego użyć.
W systemach UNIX / Mac i Linux „\ n” jest umieszczany na końcu każdej linii, w systemie Windows „\ r \ n” jest umieszczany na końcu każdej linii. Konsekwencją tego użycia jest to, że pliki w systemie UNIX / Mac będą wyświetlane w jednym wierszu, jeśli zostaną otwarte w systemie Windows. Podczas gdy plik w systemie Windows będzie miał jeden ^ M na końcu każdej linii, jeśli zostanie otwarty w systemie UNIX lub Mac.
źródło
WRITE.EXE
(aka Wordpad) może wyświetlać je w porządku.Na starych terminalach drukarka papieru przejście do następnej linii wymagało dwóch działań: przesunięcie głowicy drukującej z powrotem na początek poziomego zakresu skanowania (powrót karetki) i przesunięcie rolki papieru, na której drukowane jest (podawanie linii).
Ponieważ nie używamy już terminali do drukarek papierowych, działania te nie są już tak naprawdę istotne, ale postacie używane do sygnalizowania ich utknęły w różnych wcieleniach.
źródło
Zastanów się nad drukarką udarową IBM 1403. CR przesunął głowicę drukującą na początek linii, ale NIE przesunął papieru. Pozwoliło to na „nadruk”, umieszczenie wielu wierszy wydruku w jednym wierszu. W ten sposób osiągnięto takie rzeczy, jak podkreślanie, podobnie jak druk BOLD. LF przesunął papier o jedną linię. Gdyby nie było CR, następny wiersz zostałby wydrukowany jako krok naprzemienny, ponieważ LF nie przesunął głowicy drukującej. FF przesunął papier na następną stronę. Zazwyczaj przenosi to także głowicę drukującą na początek pierwszego wiersza na nowej stronie, ale może być do tego potrzebny CR. Oczywiście większość programistów kodowała CRFF zamiast CRLF na końcu ostatniego wiersza na stronie, ponieważ dodatkowy CR stworzony przez FF nie miałby znaczenia.
źródło
W skrócie :
Carriage_return (
\r
lub0xD
): Aby przejąć kontrolę na początku tej samej linii .Line_Feed (
\n
lub0xA
): przejąć kontrolę na począwszy od następnego wiersza .form_feed (
\f
lub0xC
): Aby przejąć kontrolę na począwszy od następnej strony .źródło
Jako dodatek
1, Zwrot karetki : Jest to terminologia drukarki oznaczająca zmianę lokalizacji wydruku na początek bieżącej linii. W świecie komputerów oznacza to w większości przypadków powrót do początku bieżącej linii, ale rzadko oznacza nową linię.
2, Podawanie wiersza : jest to terminologia drukarki oznaczająca przesunięcie papieru o jedną linię. Tak więc powrót karetki i przesunięcie wiersza są używane razem, aby rozpocząć drukowanie na początku nowej linii. W świecie komputerów ma to na ogół takie samo znaczenie jak nowa linia.
3, Form feed : To terminologia drukarki, podoba mi się wyjaśnienie tego wątku .
Jest prawie przestarzały i można odnieść się do sekwencji ucieczki \ f - form feed - co to właściwie jest? po szczegółowe wyjaśnienia.
Uwaga: możemy użyć CR, LF lub CRLF, aby zastąpić linię nowej linii na niektórych platformach, ale linii nowej nie można znieść przy niektórych platformach. Szczegółowe informacje można znaleźć na wiki Newline .
źródło
„\ n” jest znakiem końca linii. Oznacza to zakończenie obecnej linii i przejście do nowej linii dla każdego, kto ją czyta.
źródło
Zwrot karetki i przesunięcie wiersza są również odniesieniami do maszyn do pisania, ponieważ po lekkim naciśnięciu rączki po lewej stronie karetki (miejsce, w którym idzie papier) papier obracałby się nieznacznie wokół cylindra, przesuwając udokumentuj jedną linię. Jeśli skończyłeś pisać jedną linię i chciałeś przejść do następnej, naciskałeś mocniej, zarówno przesuwając linię, jak i przesuwając karetkę do końca w prawo, a następnie wznawiając pisanie od lewej do prawej, gdy karetka poruszała się za każdym naciśnięciem klawisza . Nie trzeba dodawać, że zawijanie słów było domyślnym ustawieniem dla wszystkich edytorów tekstu w tamtych czasach. P: D
źródło
Są to znaki niedrukowalne, odnoszące się do pojęcia „nowej linii”. \ n jest zasilaniem liniowym. Zwrot karetki. Na różnych platformach mają różne znaczenia w stosunku do ważnej nowej linii. W systemie Windows nowa linia to \ r \ n. W systemie Linux \ n. W Mac'u.
W praktyce wstawiasz je w dowolny ciąg, co będzie miało wpływ na wydruk tego ciągu.
źródło