Narzędzia użytkownika

Narzędzia witryny


znaki_nowej_linii

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

znaki_nowej_linii [2013/12/15 14:08] (aktualna)
zozlak utworzono
Linia 1: Linia 1:
 +====== Klątwa znaków końca linii ======
  
 +Pod Windowsami, Unixami (czyli także Linuksem) i na Macach inaczej oznaczany jest znak końca linii w plikach tekstowych:
 +  * pod Windowsami jest to kombinacja znaków //powrotu karetki (\r)// i //nowej linii (\n)//;
 +  * pod Unixami jest to znak //nowej linii (\n)//;
 +  * na Macach jest to znak //powrotu karetki (\r)//.
 +[To taka zaszłość historyczna - jeśli pamiętacie maszynę do pisania, to tam aby zacząć pisać w nowej linii trzeba było powrócić głowicą do początku linii (powrót karetki) i przewinąć papier do następnej linii (nowa linia) i zestaw znaków, który pierwotnie opracowano dla dalekopisów (ASCII) zawierał obydwa te "​znaki"​. Potem tenże zestaw znaków został przejęty w komputerach,​ tyle że niestety w niejednolity sposób.]
 +
 +Powoduje to, że **kopiując z plików utworzonych pod Windowsami do konsoli putty-ego całą linię wstawiamy tam jeden znak więcej niż potrzeba**.
 +  * Nie musi to niczemu szkodzić - znak //powrotu karetki// będzie przez większość programów pomijany jako //znak niedrukowalny//​.
 +  * Ale może, jeśli dany program nie będzie wystarczająco inteligentny,​ aby je pominąć. W szczególności jak dotąd zdiagnozowano,​ że (//\r// oznacza poniżej znak powrotu karetki):
 +    * Mplus, gdy wydać mu komendę <​code>​mplus plikWe.in plikWy.out\r</​code>​utworzy plik wyjściowy, którego nazwa będzie zawierać znak powrotu karetki. Plik taki będzie potem trudny do manipulowania z poziomu konsoli i niemożliwy do pobrania przez SFTP.
 +
 +===== Jak zapobiegać?​ =====
 +
 +Sposobów jest kilka:
 +  * każdy szanujący się edytor tekstu (**uwaga - //​Notatnik//​ do nich nie należy**) umożliwia konwersję pomiędzy windowsowym i unixowym sposobem zapisu znaków końca linii i można z tej funkcji skorzystać;​
 +    * np. w Notpadzie++ opcja ta znajduje się w menu //​Edycja->​Konwersja znaków końca linii//
 +  * wklejając polecenia na konsolę starajmy się nie wklejać znaków końca linii (czyli zaznaczając tekst do skopiowania kończymy zaznaczenie na ostatnim znaku w linii, a nie obejmujemy nim znaku końca linii).
 +
 +===== Jak radzić sobie z plikami zawierającymi w nazwie znak powrotu karetki? =====
 +
 +Jeśli (np. w sposób opisany w przykładzie z Mplusem powyżej) utworzymy plik zawierający w nazwie znak powrotu karetki, nie będziemy w stanie wykonać na nim żadnej operacji za pośrednictwem programu do przesyłania plików na serwer. W takim wypadku musimy zmienić nazwę pliku z poziomu konsoli, czy to korzystając z komeny //mv// czy to z //Midnight Commandera//​ - patrz [[operacje_na_plikach|operacje na plikach i katalogach na serwerze]].
znaki_nowej_linii.txt · ostatnio zmienione: 2013/12/15 14:08 przez zozlak