Ders 7.5: Metin dosyalarını dönüştürmek: satır sonları ve kodlamalar
Windows'tan gelen metin dosyaları Linux'ta neden sorun çıkarır: CRLF ve LF satır sonları, görünmeyen karakterleri cat -A ve file ile görmek, 'bad interpreter' hatası, dos2unix, unix2dos ve tr ile dönüştürmek; ardından karakter kodlamaları: UTF-8 ve eski Windows-1254 Türkçe kod sayfası, iconv ile dönüştürmek.
17 dk
Bu derste öğreneceklerin
- LF ve CRLF satır sonlarını açıklamak
- file ve cat -A ile CRLF'yi fark etmek
- 'bad interpreter: ^M' hatasını açıklamak
- Satır sonlarını dos2unix, unix2dos ya da tr -d ile dönüştürmek
- Karakter kodlamalarını ve UTF-8'i açıklamak
- Windows-1254 bir dosyayı iconv ile UTF-8'e çevirmek
Temel terimler
- Satır sonu (newline)
- Bir metin dosyasında satırı bitiren görünmez karakter(ler).
- LF
- Line Feed (satır besleme), 0x0A baytı, \n olarak yazılır. Linux, macOS ve öteki Unix sistemleri satırları tek başına LF ile bitirir.
- CR ve CRLF
- Carriage Return (satır başı), 0x0D baytı; \r olarak yazılır, ^M olarak gösterilir. Windows satırları CR ve ardından LF ile (CRLF) bitirir.
- dos2unix ve unix2dos
- CRLF'yi LF'ye ve tersine yerinde dönüştürür. -i sayıları bildirir, -n GİRİŞ ÇIKIŞ yeni bir dosya yazar.
- cat -A
- Yazdırılamayan karakterleri gösterir: satır sonlarında $, sekmeler için ^I, CR için ^M ve 127'den büyük baytlar için M-.
- Karakter kodlaması (encoding)
- Karakterleri baytlara eşleyen kural. Aynı baytlar farklı bir kodlamayla okunursa farklı harfler çıkar.
- ASCII
- 1963 tarihli Amerikan standardı: 128 karakter (İngilizce harfler, rakamlar, noktalama, denetim kodları), her biri bir bayt. ş, ğ ya da ı yok.
- Kod sayfası (Windows-1254, ISO-8859-9)
- ASCII'nin üstündeki 128 boş değeri tek bir dil grubu için kullanan eski tek baytlık kodlamalar. 1254 ve ISO-8859-9 (Latin-5) Türkçe olanlardır.
- Unicode ve UTF-8
- Unicode her yazı sistemindeki her karaktere bir numara verir; UTF-8 bu numaraları 1-4 baytta saklar ve ASCII'yi değiştirmeden bırakır. Linux'ta ve web'de varsayılandır.
- iconv
- Metni kodlamalar arasında dönüştürür: iconv -f KAYNAK -t HEDEF [DOSYA] [-o ÇIKTI]. iconv -l bildiği adları listeler.
← Dosya aktarmak: wget, curl, scp ve rsync · Tüm dersler · nano ile dosya düzenlemek →