Linux'ta Gerçekten Kaçınmanız Gereken 8 Yazım Hatası
Yayınlanan: 2023-01-15Linux 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ı.
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
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
Yeni grup, kullanıcı oturum açıp kapattıktan sonra görülür.
gruplar
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
Bir dahaki sefere giriş yaptıklarında, yalnızca bir grupta olduklarını görecekler.
gruplar
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
“/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
Parolamız istenir, ardından dd
harekete geçer. “Emin misin?” uyarılar veya geri adım atma şansı. Yazı hemen başlar.
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
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.
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
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
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
dosyası bir düzenleyicide açılır. Değişiklikler yapabilir ve yeni komutlar ekleyebilirsiniz.
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 -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.
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.
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
Ş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
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
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
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
Bu komut ile “places.sqlite3” adında yeni bir veritabanı oluşturabiliriz.
sqlite3 place.sqlite3 < placenames.sql
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
Şema dosyamız yok edildi, sqlite3
kabuğundan gelen karşılama mesajı üzerine yazıldı.
kedi placenames.sql
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.
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