Linux'ta Gerçekten Kaçınmanız Gereken 8 Yazım Hatası

Yayınlanan: 2023-01-15
"Hata!" etiketli bir klavye tuşunun yakından görünümü
Redpixel.pl/Shutterstock
"Enter" tuşuna basmadan önce komutunuzu doğru yazdığınızdan emin olun. Linux'ta bir yazım hatasının yıkıcı sonuçları olabilir. Mümkün olduğu kadar çok komut satırı girişini otomatik doldurmak için sekme tamamlamayı kullanın. Uzun ve karmaşık komutlar için takma adlar da harika bir fikirdir.

Linux komut satırı büyük güç sağlar. Sorun şu ki, bu gücün doğru kullanımı yazdıklarınızın doğruluğuna bağlıdır. İşte asla yapmak istemeyeceğiniz sekiz yazım hatası.

İçindekiler

Linux Komut Satırı
1. -a'yı Unutma
2. dd ile Yanlış Sürücü Tanımlayıcısının Kullanılması
3. mkfs ile Yanlış Sürücü Tanımlayıcısının Kullanılması
4. crontab Dosyanızı Silmeyin
5. Tekrarlanan Tarih
6. Uzayların Felaketi
7. >> Yerine > Kullanma
8. Yanlış Yönde Yönlendirme
Komut Satırı Yazım Hatalarından Nasıl Kaçınılır?

Linux Komut Satırı

Linux komut satırı, büyük güce açılan bir portaldır, ancak bu gücün size karşı dönmesi için tek bir yazım hatası yeterlidir. Asla çalıştırmamanız gereken komutu hepimiz duyduk. Burada bahsettiğimiz şey, çalıştırmak isteyebileceğiniz, ancak bir hatanın felaket anlamına gelebileceği komutlardır.

“Enter” tuşuna bastığınızda, yazdığınız her şey kabuk tarafından işlenir. Takma adlar ve değişkenler genişletildi. Komutlar, seçenekler ve parametreler tanımlanır. Buna ayrıştırma denir. Bir sonraki adım, ayrıştırılmış girişinizi, talimatlarınızı gerçekleştirecek olan komutlara teslim eder.

Komutlarınızı yazarken bir hata yaparsanız, bu bir sözdizimi hatası olarak yakalanabilir. Ancak, hatanız başka bir geçerli komut satırı oluşturursa, yürütülür.

Basit bir yazım hatası gerçekten yıkıcı olabilir. İmha seviyesi komuta ve hataya bağlıdır. Zaman kaybedebilirsin. Bir dosyayı kaybedebilirsiniz. Tüm bir dosya sistemini kaybedebilirsiniz.

İLGİLİ: Bash Kabuğu Nedir ve Linux İçin Neden Bu Kadar Önemlidir?

1. -a'yı Unutma

Örneğin, belirli bir yazılım parçasını kullanmalarına izin vermek için birini bir gruba eklemeniz gerekebilir. Örneğin, VirtualBox, kullanıcıların "vboxusers" grubunun bir parçası olmasını gerektirir. Bunu usermod ile yapabiliriz.

groups komutu, bir kullanıcının gruplarını listeler.

 gruplar 

Bir kullanıcının gruplarını gruplar komutuyla listeleme

dave kullanıcısını yeni bir gruba ekleyeceğiz. -a (ekleme), kullanıcının içinde bulunduğu mevcut gruplar listesine yeni grubu ekler. -G (gruplar) seçeneği, grubu tanımlar.

 sudo usermod -a -G vboxusers dave 

usermod komutunu kullanarak yeni bir gruba kullanıcı ekleme

Yeni grup, kullanıcı oturum açıp kapattıktan sonra görülür.

 gruplar 

Bu kullanıcının bulunduğu gruplar listesinde gösterilen vboxusers grubu

Artık “vboxusers” grubundadır. Ancak, -a (ekleme) seçeneğini kullanmayı unutursanız, kullanıcının mevcut tüm grupları kaldırılır. İçinde olacakları tek grup, yeni gruptur.

Bu yanlış komut:

 sudo usermod -G vboxusers dave 

-a ekleme seçeneğini kullanmadan bir gruba kullanıcı eklemek

Bir dahaki sefere giriş yaptıklarında, yalnızca bir grupta olduklarını görecekler.

 gruplar 

Kullanıcı artık tek bir grupta

Tek bir yapılandırılmış kullanıcınız varsa ve bunu onlara yaparsanız, ciddi sorunlar yaşarsınız. Birincisi, kullanıcı artık "sudo" grubunun bir üyesi değil, bu nedenle bir şeyleri düzeltmeye başlamak için sudo kullanamazsınız.

İLGİLİ: Linux'ta Bir Gruba (veya İkinci Gruba) Kullanıcı Ekleme

2. dd ile Yanlış Sürücü Tanımlayıcısının Kullanılması

dd komutu veri bloklarını dosya sistemlerine yazar. Genellikle ISO görüntülerini USB bellek çubuklarına yazmak için kullanılır.

Depolama aygıtları için Linux adlandırma şeması, tanımlama için tek bir harf kullanır. İlk sabit sürücünün adı “/dev/sda”, ikincisi “/dev/sdb”, üçüncüsü “/dev/sdc” vb. Bölümler numara ile tanımlanır. İlk sabit sürücüdeki ilk bölüm “/dev/sda1”, ikincisi “/dev/sda2” vb.

Bir USB bellek çubuğuna bir görüntü yazarsanız, USB bellek çubuğunun sürücü tanımlayıcısını bilmeniz gerekir. Bunu, lsblk grep üzerinden bağlayarak, içinde "sd" geçen girişleri arayarak bulacağız.

 lsblk | grep sd 

lsblk komutunun çıktısında, içinde "sd" bulunan satırları aramak için grep'i kullanma

“/dev/sda” sabit sürücüsünün üç bölümlü 32 GB'lık bir sürücü olduğunu görebiliriz. Bölümlerden biri “/boot” bölümüdür ve “/dev/sda3” bölümü, dosya sisteminin kökü olan “/” konumuna bağlanır.

“/dev/sdb” sabit diski, 7,5 GB'lık bir sürücü olarak rapor edilmiştir. "/media/dave/Pink" konumuna takılır. Açıkçası, "/dev/sda" sürücüsü bu bilgisayardaki ana sabit sürücüdür ve "/dev/sdb" USB bellek çubuğudur.

“~/Downloads” dizininde bulunan bir ISO dosyasını USB belleğimize yazma komutu:

 sudo dd bs=4M if=İndirilenler/distro-image.iso of=/dev/sdb conv=fdatasync durumu=ilerleme 

dd komutuyla bir USB bellek çubuğuna görüntü yazma

Parolamız istenir, ardından dd harekete geçer. “Emin misin?” uyarılar veya geri adım atma şansı. Yazı hemen başlar.

Bir USB bellek çubuğuna bir görüntü yazarken dd ilerleme ekranı

Ancak, sürücü tanımlayıcısı için yanlış bir harf yazarsanız ve bu harf mevcut bir sabit sürücüyle eşleşirse, bellek çubuğu yerine o sürücünün üzerine yazarsınız.

Bu yanlış komut:

 sudo dd bs=4M if=İndirilenler/distro-image.iso of=/dev/sda conv=fdatasync durumu=ilerleme 

Yanlışlıkla ana sabit sürücüye bir görüntü yazmak bir hata mesajıyla bitiyor

dd “/dev/sd a ” kullanmasını söyledik, o da öyle yaptı. Yazma işlemi çok daha hızlıdır, ancak bir uyarı ile sona erer. Az önce Linux kurulumunuzu çöpe attınız.

"Enter" tuşuna basmadan önce sürücü tanımlayıcılarını kontrol edin ve iki kez kontrol edin.

İLİŞKİLİ: Linux'ta Bir ISO Dosyasını USB Sürücüye Yazma

3. mkfs ile Yanlış Sürücü Tanımlayıcısının Kullanılması

mkfs araçları gibi sürücü tanımlayıcılarını komut satırının bir parçası olarak alan başka komutlar da vardır. Bunlar, bölümler üzerinde dosya sistemleri oluşturarak sürücüleri biçimlendirir.

Bu bilgisayarda 25 GB sürücümüz ve 10 GB sürücümüz var.

lsblk'nin çıktısı, bir bilgisayardaki sabit sürücüleri görüntüleyerek grep aracılığıyla aktarılır.

10GB sürücünün ilk bölümünde bir Ext4 dosya sistemi oluşturmak istiyorsak, bu komutları kullanırdık.

 sudo umount /dev/sdb1
 sudo mkfs.ext4 /dev/sdb1 

USB bellek çubuğunda bir ext4 dosya sistemi oluşturma

Ancak, sürücü tanımlayıcısında "b" yerine "a" kullanma hatasına düşersek, 25GB sürücüdeki bölümlerden birini sileriz ve bilgisayarımızı önyüklenebilir hale getiririz.

Bu yanlış komut:

 sudo umount /dev/sda1
 sudo mkfs.ext4 /dev/sda1 

Bir bilgisayarın ana sürücüsünü yanlışlıkla biçimlendirmek

Bu küçük harf çok etkili, bu yüzden doğru diske bastığınızdan emin olun.

İLGİLİ: Linux'ta mkfs Komutu Nasıl Kullanılır

4. crontab Dosyanızı Silmeyin

cron daemon, görevleri sizin için önceden belirlenmiş zamanlarda çalıştırır. Yapılandırmasını bir crontab dosyasından alır. Kök dahil her kullanıcının bir crontab dosyası olabilir. crontab düzenlemek için şu komutu kullanın:

 crontab-e 

Crontab dosyanızı düzenleme komutu: crontab -e

crontab dosyası bir düzenleyicide açılır. Değişiklikler yapabilir ve yeni komutlar ekleyebilirsiniz.

Düzenleyicide açılan bir crontab dosyası

Ancak komutu yanlış yazarsanız ve "e" yerine "r"ye basarsanız, crontab dosyanızı silme işleminde olduğu gibi kaldırırsınız.

Bu yanlış komut:

 crontab-r 

Crontab dosyanızı silen komut: crontab -r

crontab -e komutunu bir sonraki kullanışınızda varsayılan, boş bir dosya göreceksiniz.

Bu, yapılması kolay bir hatadır çünkü çoğu klavyede "e" ve "r" yan yanadır. Karmaşık bir crontab dosyasını yeniden oluşturmak eğlenceli değil.

İLGİLİ: Cron İşi nedir ve Bunları Nasıl Kullanırsınız?

5. Tekrarlanan Tarih

Tuş vuruşlarını azaltmaya ve zaman kazanmaya çalışırken, history komutunu kullanmak harikadır. Uzun soluklu bir komutu geçmişten çıkarabilirseniz, hız ve doğruluk kazanırsınız. Geçmişinizden doğru komutu seçtiğiniz sürece.

history komutu, önceki komutlarınızı terminal penceresinde listeler. Numaralandırılmışlar. Bir komutu yeniden kullanmak için, numarasının önüne “ ! "ve" Enter "tuşuna basın.

 Tarih 

Diyelim ki bir Git deposunu klonladık, bu depoyu karıştırdık ve sildik. Bir kez daha klonlamamız gerekiyor. Terminal penceresini kaydırarak git clone komutunu hemen görebiliriz. Şunu yazarak yeniden çalıştırabiliriz:

 !60

Ancak sadece ekrana bakıp sayıyı yanlış okuduysak, bir sonraki sayıyı yanlışlıkla seçebiliriz:

 !61

Bu, listedeki bir sonraki komutu çalıştırır, rm * . Bu, geçerli dizininizdeki tüm dosyaları siler.

Ayrıca “ ! ” bir metin dizisi ile ünlem işareti. İlk eşleşen komut sizin için yürütülür. Düşündüğünüz şey olup olmadığını kontrol edebilmeniz için gösterilmez, hemen yürütülür.

“Restart.sh” adlı bir betiğinizin olduğu senaryoyu hayal edin. Bu betik, yazmakta olduğunuz bazı yazılımlar için bir dizi yapılandırma dosyasını varsayılan olarak ayarlar. Periyodik olarak, geliştirirken ve test ederken, geçmişi temizlemeniz gerekir, böylece komut dosyanızı çağırırsınız.

Bu komut, geçmişinizdeki komutu bulup eşleştirmek ve çalıştırmak için yeterli olmalıdır.

 !tekrar

Ancak, betiğinizi son kullandığınızdan beri yeniden reboot komutunu kullandıysanız, bulunan ve hemen çalıştırılan reboot komutudur.

Yanlışlıkla çalıştırılan rm * komutu

Tek kullanıcılı ev bilgisayarınızda bu muhtemelen sadece bir sıkıntıdır. Paylaşılan bir sunucuda, diğer birçok insan için de bir sıkıntıdır.

İLGİLİ: Linux'ta geçmiş Komutu Nasıl Kullanılır

6. Uzayların Felaketi

Dosya adlarındaki ve dizin yollarındaki boşluklar hasara neden olabilir. Bu yüzden daima kaçılmalı veya alıntılanmalıdır.

Linux'ta Dosya Adlarındaki Boşluklarla Nasıl Başa Çıkılır?
İLGİLİ Linux'ta Dosya Adlarındaki Boşluklarla Nasıl Başa Çıkılır?

Sekme tamamlama kullanılarak boşluklarla ilgili sorunlardan kaçınılabilir. Bir dosya adı veya dizin yolu yazarken “Sekme” tuşuna basın ve kabuk, yolun veya dosya adının yapabildiği kadarını otomatik olarak tamamlayacaktır. İstediğiniz dosya ile aynı adın bir kısmını paylaşan diğer dosyalar arasında ayrım yapmak için bir harf yazmanız gerekebilir, ancak "Sekme" tuşuna bir kez daha basmak, dosya adının geri kalanını sizin için tamamlayacaktır.

Bu, tuş vuruşlarından tasarruf sağlar, yazım hataları nedeniyle boşlukların içeri sızmasını önler ve soruna neden olmaması için geçerli tüm boşluklardan doğru şekilde kaçar.

Diyelim ki "geocoder" ve "bin" olmak üzere iki dizin daha içeren bir "Geliştirme" dizinimiz var. “Geocoder” dizini içinde bir de “bin” dizini vardır.

“geocoder/bin” dizinindeki dosyaları silmek ve dizini kaldırmak için bu komutu kullanırsınız.

 rm -r coğrafi kodlayıcı/bin 

Geocoder/bin dizinini silme

Şimdi "geocoder/"dan sonra yanlışlıkla bir boşluk eklediğinizi hayal edin, bunun gibi.

Bu yanlış komut:

 rm -r coğrafi kodlayıcı/ bin 

Geocoder ve bin dizinlerini yanlışlıkla silme

Boom. "Geliştirme" dizini artık boş. "Development/geocoder", "Development/geocoder/bin" ve "Development/bin" dizinlerinin tümü tamamen silindi.

Unutmayın, sekme tamamlama sizin arkadaşınızdır.

İLGİLİ: Herhangi Bir İşletim Sisteminde Komutları Daha Hızlı Yazmak için Sekme Tamamlamayı Kullanın

7. >> Yerine > Kullanma

Yönlendirme, bir işlemin çıktısını bir dosyaya gönderir. Bir süreçten çıktı almak için “ > ” büyüktür işaretini kullanırız. Dosya varsa, önce boşaltılır.

Diyelim ki bir bellek sızıntısını araştırıyoruz. "Memlog.sh" adında bir komut dosyamız var. Bellek istatistiklerini saniyede bir kez görüntüler. Daha sonra analiz etmek için bunu "memory.txt" adlı bir dosyaya yönlendireceğiz.

 memlog.sh > bellek.txt
 kafa hafızası.txt 

Memlog.sh komut dosyasından çıktıyı alma ve görüntüleme

Ertesi gün araştırmamıza devam etmek istiyoruz ve senaryoyu yeniden başlatıyoruz. Bu kez iki büyük-işareti “ >> ” kullanmamız gerekiyor ki yeni veri dosyaya eklenmiş olsun.

 memlog.sh >> bellek.txt 

Mevcut bir dosyanın sonuna yeni veri ekleme

Tek bir büyüktür işareti “>” kullanırsak, önce dosya boşaltıldığı için dünün verilerini kaybederiz.

İLGİLİ: Linux'ta stdin, stdout ve stderr nedir?

8. Yanlış Yönde Yönlendirme

Yönlendirme, bir dosyanın içeriğini bir programa girdi olarak kullanabilir.

sqlite3'e aktarmak istediğimiz " sqlite3 " adında bir dosyamız var. Şema dosyası, veritabanı tablolarının nasıl yeniden oluşturulacağını açıklar. Ayrıca veritabanında saklanmasını istediğimiz verileri de tutar. 1,3 GB ve 11 milyondan fazla satırıyla büyük bir dosyadır.

 ls -hl yer adları.sql
 wc yer adları.sql 

Bir dosyanın boyutunu ls ve wc ile kontrol etme

Bu komut ile “places.sqlite3” adında yeni bir veritabanı oluşturabiliriz.

 sqlite3 place.sqlite3 < placenames.sql 

Bir şemayı bir dosyadan sqlite3'e aktarma

Yönlendirme yaparken çoğunlukla “>” karakterini kullanırız. Alışkanlıktan “>” yazmamak için konsantre olmalısınız. Bunu yaparsanız, sqlite3 ürettiği çıktı ne olursa olsun, şema dosyanıza yazılır ve onu yok eder.

Bu yanlış komut:

 sqlite3 place.sqlite3 > placenames.sql 

Yanlışlıkla sqlite3'ten bir şema dosyasına yönlendirme

Şema dosyamız yok edildi, sqlite3 kabuğundan gelen karşılama mesajı üzerine yazıldı.

 kedi placenames.sql 

sqlite3 karşılama mesajını içeren üzerine yazılmış şema dosyası

Güle güle, 1,3 GB veri.

Komut Satırı Yazım Hatalarından Nasıl Kaçınılır?

Bu tür hatalar yapmaktan kaçınmanıza yardımcı olacak iyi alışkanlıklar edinebilirsiniz.

Mümkün olan her yerde sekme tamamlamayı kullanın. Dizin yolları ve dosya adlarındaki boşluklarla ilgili sorunlardan kaçınacaksınız.

Ara sıra kullanmanız gereken uzun, karmaşık komutlar için kendi kısa ve akılda kalıcı takma adlarınızı oluşturun. Bu şekilde, yanlış seçenekleri ve parametreleri kullanarak ortalığı karıştırmazsınız.

Linux Terminalinde Daha Az Yazma ve Daha Hızlı Çalışma
İLGİLİ Linux Terminalinde Daha Az Yazma ve Daha Hızlı Çalışma

Kendi yazınızı yeniden okumanın herkesin bildiği gibi zordur, ancak bunu komut satırında yapmanız gerekir. Orada gerçekten ne olduğunu okuyun. Sadece ona bakıp ne yazmak istediğinizi söylediğini düşünmeyin. Gerçekten ne diyor? Çünkü gerçekten yapacağı şey bu.

İLGİLİ: Linux'ta Asla Çalıştırmamanız Gereken 8 Ölümcül Komut