içerik detayı
Bu makaledeki yardımcı programlar ve komutlar, Linux ile daha rahat olmak ve düzenli olarak yapmanız gereken çoğu şeyi başarabilmek için harika bir başlangıç noktasıdır.
1. Dosya sisteminde gezinme
Bir geliştirici olarak, Linux dosya sisteminde gezinirken rahat olmanız önemli bir etken. pwdNerede olduğunuzu bilmeniz için (Çalışma Dizini Yazdır) komutunu kullanabilirsiniz. Mevcut konumunuzdan, cd (Dizini Değiştir) komutuyla başka bir dizine gidebilirsiniz . Örneğin:
$ cd ~/.ssh/
Yukarıdaki örnekte tilde ( ~), kullanıcınızın ana dizinini temsil eder. Bir alt dizinin içindeyseniz ve bir seviye yukarı çıkmak istiyorsanız, bunu ..örneğin aşağıdakilerle yapabilirsiniz :
$ cd ../Documents
Linux’a yeni başlayanların çoğu, dosya ve dizin adlarını otomatik olarak tamamlamak için sekme tuşunu da kullanabileceğinizi bilmiyor.
Hızlı bir şekilde bir dosya oluşturmak için touch komutu kullanabilirsiniz .
$ touch hello.tx
Bir dosyayı veya dizini kopyalamak için cp komutu kullanın. Aşağıdaki örnekte, en soldaki dosya orijinal dosyadır ve en sağdaki dosya oluşturulacak kopyadır.
$ cp hello.txt codescaptain.txt
Kopyalanan dosyanızı adlandırırken bir hata yaptınız ve yeniden adlandırmak istiyorsunuz. Bunu mv(Taşı) komutu ile yapabilirsiniz. mvBir dosyayı bir dizinden diğerine taşımak için da kullanabilirsiniz .
$ mv hello.txt bonjour.txt
rm(Kaldır) komutu ile silebiliriz .
$ rm ciao.txt
rm. -fdosyaları onay almadan -r kaldıracak ve dizinin içindeki dosyaları kaldıracaktır. Not: Buraya dikkat! Önemli bir şeyi silmediğinizden emin olun.
$ rm -rf ~/Downloads
Linux komut satırı, siz istemedikçe belirli bir dizinin içinde ne olduğunu size göstermez . Neyle çalıştığınızı göremiyorsanız üretken olmak zordur. lsKomutunun işe yaradığı yer burasıdır .
ls ~/Downloads
ls(Dosyaları Listele), verilen dizindeki herhangi bir dosyanın dosya adlarını görmenizi sağlar. Komut bağımsız değişken olmadan çalıştırılırsa, varsayılan olarak geçerli dizini kullanır, ancak yukarıdaki örnekte görüldüğü gibi sağ tarafta da bir yol belirtebilirsiniz. lsbu komutun yalnızca dosya adlarını listeleyen en basit şeklidir. Çoğunlukla, ilgilendiğiniz dosyalar hakkında daha fazla bilgi görmek isteriz. Bazen önemli yapılandırmalara sahip olan gizli dosyaları da görmek isteyebilirsiniz.
ls -lKomut her dosyanın bir daha ayrıntılı olarak görmek için izin verir. O kadar yaygın olarak kullanılır ki ll, aynı şeyi yapan bir takma addır. Gizli dosyaları da görmek istiyorsanız, ll -aveya kullanın ls -la komutlarını kullanmalısınız.
Komutun ‘long list’ ( -l) sürümü, lsincelediğiniz her dosya hakkında size aşağıdaki bilgileri gösterecektir:
-
Dosya sahibi
-
Dosya grubu
-
Dosya boyutu
-
Değiştirme zamanı
-
Dosya adı
Bu birkaç komutla, Linux dosya sisteminde rahatça hareket edebilmeli ve dosyaları oluşturabilmeli, taşıyabilmeli ve silebilmelisiniz.
2. cat, grep Harikaları
catgenellikle bir dosyanın içeriğini hızlı bir şekilde incelemenin en kolay yoludur.
cat hello.txt
Özellikle şunlara bağlandığında güçlü hale gelir grep:
$ cat guest_list.txt | grep Lucy
‘Piping’, yani |karakter, sol taraftaki komutun çıktısını sağ taraftaki komuta girdi olarak kullanarak komutları birbirine bağlamanıza izin verir. Basit komutları bir araya getirerek karmaşık çıktı işleme yapmanızı sağlayan kullanışlı bir tekniktir.
‘Piping’ komutunun en yaygın kullanımlarından grepbiri, sol taraftaki komutun sonucudur. grepÇok akılda kalıcı olmayan Global Normal İfadeler Baskısı için akılda kalıcı bir kısaltma olan, verilen kalıpla eşleşen bir satırı, bu durumda ‘Lucy’ kelimesini içeren bir satırı arayan basit bir yardımcı programdır.
$ cat /var/log/messages | grep '500 Internal Server Error'
grepsadece dosya içeriğini değil, her türlü çıktıyı aramak için kullanılabilir. Birçok Linux komutu, bilgilerle dolu düzinelerce satır üretir. Örneğin, Linux makineniz bir düzineden fazla Docker konteyneri çalıştırıyorsa grep, sadece ilgilendiğiniz konteynere sıfır giriş yapmak için kullanabilirsiniz :
$ docker ps | grep my-awesome-container
psKısaca Linux komutu hakkında daha fazla bilgi edineceksiniz .
Ayrıca redirection ( >) kullanarak herhangi bir komutun çıktısını bir dosyaya kaydedebilirsiniz :
$ echo "Linux was created by Linus Torvalds" > bio.txt
Yukarıdaki komut yeni bir dosya oluşturacak veya mevcut bir dosyanın içeriğinin üzerine yazacaktır. Mevcut bir dosyaya eklemek için >>yerine kullanın >.
3. find
Düzinelerce alt dizini olan bir dizinin içine düştünüz. Bu dizinin içinde ihtiyacınız olan bir dosya olduğunu biliyorsunuz, ancak nerede olduğundan emin değilsiniz. findyardım edebilir!
$ find . -name CS101
find komutu, bir dosya hiyerarşisinde ( findkomutun ilk argümanı ) birkaç farklı boyutta aramanızı sağlar. Hepsini man findgörmek için terminalinize yazabilirsiniz , ancak yukarıdaki örnek -name, karakter dizisi dahil dosya adlarını aramak için bayrağı kullanır.
4. Dosya izinleri ve sahipliği
Linux dosya sistemindeki her dosya ve dizinin izinleri ve bir sahibi vardır. İzinler , dosyayla ne yapmasına izin verilen kişilerdir . Bir dosyadaki izinleri görmek için komutu kullanın . En soldaki sütunda buna benzer bir şey göreceksiniz:ls -l <filename>
-rw-r--r--
Bunu okumak biraz zor, bu yüzden aşağıdaki örnekte parçalayalım:
..own grp oth -|---|---|---
dDosya bir dizin ise, en soldaki çizgi bir ile değiştirilecektir . Sonraki üç çizgi grubu dosyanın sahibi, dosyanın grubu ve diğerlerinin izinlerini temsil eder. Bir dosyanın ‘sahibi’, onu ilk oluşturan kullanıcıdır, ancak sahiplik değiştirilebilir (bununla ilgili kısa süre sonra daha fazlası). Bir dosyanın sahibi olan ‘grup’, sahibinin ait olduğu grup olacaktır, ancak bu da değiştirilebilir. “Diğerleri” için izinler, dosyanın sahibi olmayan ve dosyanın sahibi olan grupta olmayan tüm kullanıcılar için geçerlidir. Bir istisna, sistemdeki her dosyaya tam erişime sahip olan ‘kök’ kullanıcıdır.
Sahibin tam izinlere sahip olduğu ancak başka hiç kimsenin dosyayı okuyamadığı, yazamadığı veya yürütemediği bir dosya örneği:
-rwx------
Bir dosya veya dizinle bir şeyler yapmaya çalışırken bazen ‘İzin reddedildi’ veya ‘Kullanıcı adı sudoers dosyasında yok’ hatası alabilirsiniz. Bu genellikle, kullanıcının yapmaya çalıştığı şey için doğru izinlere sahip olmadığı anlamına gelir. Bu durumumda yetkiye sahip bir kullanıcıya geçmeniz gerekecek, örneğin:
$ su sudo
Önceki komutunuzu kök olarak yeniden çalıştırmak için sudo !!, iki ünlem işaretinin önceki komutunuzla değiştirileceği yeri kullanabilirsiniz .
Bazen bir dosyadaki izinleri değiştirmeniz gerekecektir:
$ chmod u=rwx,g=rx,o=r hello.txt
Yukarıdaki örnekte, kullanıcı için okuma, yazma ve yürütme izinleri, grup için okuma ve yürütme izinleri ve diğer kullanıcılar için okuma izinleri belirledik.
Öğrenmeye hazırsanız, izinleri ayarlamak için daha da basit bir kısaltma var:
$ chmod 766 hello.txt
Sahip 7izinlerini, 6grup izinlerini ve sonuncusu grup için izinleri 6temsil eder. Peki bu rakamlar nereden geliyor?
Her izin bir rakamla temsil edilir. Her kullanıcı türü için izinler, son numarayı oluşturmak için toplanır.
-
4 “oku”,
-
2 “yazmak”,
-
1 “yürütmek”
-
0 “izin yok”
Dolayısıyla, 7, 4 (oku) + 2 (yaz) + 1’i (çalıştır) temsil eder. 6, 4 (oku) + 2’yi (yaz) temsil eder ve bu böyle devam eder.
Bir dosyanın içeriğini incelemek için okuma izinlerine, dosyada değişiklik yapmak için yazma izinlerine ve komut dosyalarını veya yürütülebilir dosyaları çalıştırmak için izinleri yürütmeye ihtiyacınız olacak.
Bir dosyanın sahibini ve grubunu chmod komutla değiştirebilirsiniz. Örneğin, aşağıdaki izinlere sahip bir dosyanız olduğunu varsayalım:
drwxr-xr-x 32 root root 4096 16 Jul 17:48 cowsay.sh
Kullanıcı hesabınızın dosyanın sahibi olmasını ve onun grubunun sizin grubunuz olmasını istediğinize karar verirsiniz. Kök olarak, dosyanın sahibini ve grubunu değiştirmek için aşağıdaki komutu çalıştırabilirsiniz:
$ chown <your_user>:<your_group> hello.txt
ls -lDosya üzerinde çalıştırdığınızda , sahibinin ve grubunun değiştiğini göreceksiniz:
drwxr-xr-x 32 your_user your_group 4096 16 Jul 17:48 cowsay.sh
5. reverse-i-search
reverse-i-searchkomut geçmişinizde arama yapmak ve önceki bir komutu yeniden çalıştırmak için kullanışlı bir yardımcı programdır. Yukarı oka basmanın komut geçmişinizde dolaşmanıza izin verdiğini biliyor olabilirsiniz ancak ya 5 dakika önce çalıştırdığınız bir komutu yeniden çalıştırmak istediniz ve o zamandan beri düzinelerce komut çalıştırdıysanız ne olacak? reverse-i-searchbu durumlar için mükemmel bir araçtır.
reverse-i-searchyazın ctrl + r. Ardından, hedef komutunuzda bulunan karakterleri yazmaya başlayabilirsiniz. Arama belirsizdir, bu nedenle bu karakterler komut dizesinin herhangi bir yerinde olabilir. Birden fazla eşleşme olduğu durumlarda, ctrl + rtekrar basarak bunlar arasında geçiş yapabilirsiniz .
6. İzleme ve Takip Etme
Çıktıdaki değişiklikleri düzenli aralıklarla kontrol etmek için genellikle bir komutu yeniden çalıştırmak isteyebilirsiniz. Örneğin, makinenizdeki bellek kullanımının zaman içinde değişme oranını görmek istediniz:
$ watch -n 5 free -m
Yukarıdaki komut, freebellek kullanımını her 5 saniyede bir megabayt cinsinden göstermek için komutu çalıştıracaktır .
Bir dosyadaki en son değişiklikleri, örneğin bir günlük dosyasını görmek istediğinizde ne olacak?
$ tail /var/log/messages
Varsayılan olarak, tailbelirli bir dosyanın son 10 satırını standart çıktıya yazdırır. -nFlag ile yazdırılan satır sayısını değiştirebilirsiniz , yani -n 1000. Bu yöntemin bir sınırlaması, dosyayı komut çalıştırıldığında yazdırmasıdır. Dosyaya yeni satırlar yazıldıkça çıktı güncellenmeyecektir. Bunu -faşağıdaki gibi flag ekleyerek düzeltebiliriz :
$ tail -f -n 100 /var/log/messages
Bu size son 100 satırın canlı güncellenmiş bir çıktısını gösterecektir.
7. mansayfalar ve yardım alma
Birçok Linux komutunun davranışlarını iyileştiren isteğe bağlı parametreleri vardır. Bu isteğe bağlı parametreler veya işaretler genellikle bir tire, yani -l. Bir komuta geçirebileceğiniz tüm olası seçenekleri hatırlamak zor olabilir. Bu, mansayfaların yararlı olmasının birçok nedeninden biridir .
8. Sistem kaynak kullanımını kontrol etme ve izleme
Sistem kaynaklarının eksikliğinden birçok sistem sorunları ile karşılaşabilirsiniz. Bunlar: bellek, CPU veya disk alanı. Neyse ki, Linux bize bu sorunları hızlı bir şekilde teşhis etmek için kullanabileceğimiz birkaç araç sağlıyor.
topBellek tüketimi ve CPU kullanımı dahil olmak üzere makine üzerinde çalışan tüm farklı süreçler hakkında bilgi verir. Bu komut, çok fazla kaynak tüketen işlemleri veya çalışmaması gereken ancak çalışan işlemleri tanımlamak için kullanışlıdır.
freeKomut bir makinede geçerli bellek kullanımını görmesini sağlar. Bu, örneğin birkaç GB bellek tüketen bir toplu işlem çalıştırma gibi, bir makinenin kendisinden istediğinizi yapmak için yeterli belleğe sahip olup olmadığını kontrol etmek için kullanılır.
9. Süreçleri yönetmek
Aşağıdaki komutla makinenizde çalışan tüm işlemleri görebilirsiniz:
$ ps aux
$ ps aux | grep ruby
Genellikle, rahatsız edici süreci hemen bitirmek isteyeceksiniz. Bunu yapmanın kolay bir yolu, işlemleri PID (İşlem Kimliği) yerine adıyla sonlandırmanıza izin veren aşağıdaki komuttur:
$ pkill -9 Slack
10. Vi
Vi, varsayılan olarak tüm Linux makinelerine yüklenen eski, güçlü bir metin düzenleyicidir. İlk olarak 1978’de piyasaya sürüldü, o zamandan beri Vim adında daha zengin özelliklere sahip bir varyant ürettildi. Eski bir araç olmasına rağmen, birçok programcı Vim kullanmaya devam ediyor. Daha eski ve daha hafif varyantı Vi, SSH’ye ihtiyaç duyabileceğiniz herhangi bir makineye kurulma olasılığı en yüksek olan metin editörüdür. Bu nedenle, Vi’nin nasıl kullanılacağına dair temel bir bilgiye sahip olmak, neredeyse her makinedeki dosyaların içeriğini terminalinizden ayrılmadan hızlı bir şekilde düzenlemenize ve değiştirmenize yardımcı olabilir.
Son Olarak
Umarım Linux hakkında ufakta olsa bir temele sahip olmuşsunuzdur. Programlama kariyerinizde karşılaşacağınız birçok araç, işletim sistemi ve frameworklerin aksine, Linux nispeten kararlıdır. Değişiklikler ve yeni sürümler geldikçe, temel bilgiler aynı kalır. Yani öğrendiğiniz çoğu Linux bilgisi uzun süre aynı kalacak ve kullanmaya devam edeceksiniz.