Labaratuar içersinde kabuk üzerinden erişim, dosya yapıları, dizinlere erişim, Temel komutlara giriş ve filtreleme komutlarından bahsedeceğiz. Ayrıca küçük bir test ile konular ile ilgili bilginizi sınayabileceksiniz.

Bölüm içersinde aşağıdaki konular işlenecektir:


Labaratuar Kullanım İpuçları

Eğitim içersinde, komut satırı bilgileri aşağıdaki üç farklı şekilde belirtilmiştir.

  1. buradaki gibi görünen komut betimleri şeklinde gösterilmler daha çok örnekler ve yazılması gereken komutları tanımlamak için kullanılır.

  2. Aşağıdaki gibi kutu içersinde gördüğünüz kodlar üzerine tıkladığınızda, kopyala yapıştır yapmanıza gerek kalmadan terminal içersinde çalıştırılacaktır:
    uname -a
    
  3. Aşağıda gördüğünüz gibi bir pencere içersinde yazılmış olan kod betimleri sizin klavyeden yazmanız gereken kod betimleridir. Genellikle benzersiz bir ID veya başka bir değişken girmeniz gerekiyordur. Buradaki benzersiz veri eğitim sırasında kullandığınız ortam içersinden bulunabilir. <> içersinde bulunan maddeler sizin değiştirmeniz gereken verinin yerini göstermektedir.
    hostnamectl set <sunucu adı>
    

1. Shell arayüzüne bağlanma ve Linux dizin yapısı

Linux’ta ve tüm UNIX benzeri işletim sistemlerinde, genellikle “Her şey bir dosyadır” denir veya en azından bu şekilde değerlendirilir. Bu, ister normal veri dosyaları ve belgelerle, ister ses kartları ve yazıcılar gibi aygıtlarla uğraşıyor olun, onlarla aynı tür Giriş / Çıkış (Input/Output) işlemleriyle etkileşimde bulunduğunuz anlamına gelir.

Bu yaklaşım işleri basitleştirir, bir “dosya” açarsınız ve dosyayı okumak ve üzerine yazmak gibi normal işlemleri gerçekleştirirsiniz (bu, ilerideki bir bölümde öğreneceğiniz metin editörlerinin bu kadar önemli olmasının bir nedenidir).


Linux ilk Bağlantı ve Kabuk (Shell) üzerinde kullanım

Öncelikle berlirteyim, çoktan kabuk nasıl birşeye benziyor gördünüz bile. Ekranınızın sağ tarafında bulunan siyah ekran bir shell ekranı.
Linux, çoğunlukla Unix üzerinden gelen altyapıları barındırır, Unix metin tabanlı bir işletim sistemi (OS) olarak başladı. Dolaysı ile Linux bu durumu devam ettiriyor ve içinde çokça metin tabanlı yazılım barındırıyor.

Özellikle Linux’u yönetirken, komut satırı araçlarının en azından temellerini anlamalısınız. Bu nedenle, Linux-101 eğitimi içersinde temel olarak kabuk kullanımını anlatıyoruz.

Linux kabuklarına (metin modu komutlarını kabul eden ve yorumlayan programlar) ve bir kabuktan kullanabileceğiniz birçok temel komut ve prosedüre girişle başlar.


Komut Satırı Temellerini Anlamak

WSL2 üzerinden shell(Kabuk) erişimi

Linux ile henüz başka bir şey yapmadan önce, bir Linux kabuğunu nasıl kullanacağınızı anlamalısınız. Birkaç shell (kabuk) mevcuttur, ancak çoğu benzer yetenekler sağlar. Birkaç temel konuyu anlarsanız ilerde öğreneceğiniz diğer komutlar ile kolaylıkla ilişkilendirebilirsiniz.

Ayrıca, birçok program için yararlı olabilecek veriler için yer tutucu olan kabuk ortamı değişkenlerini(Environment Variable) de anlamalısınız. Son olarak, komut satırı temelleri konusunda, kullanmaya çalıştığınız komutlarla ilgili nasıl yardım alacağınızı bilmelisiniz.


Linux Kabuk Seçeneklerinizi Keşfedin

Linux, kabuklar için bir dizi seçenek sunar. Eğitim içersinde sadece Bash üzerinde durduk. Merak edenler için, “Linux different shell” ile google üzerinde aramaları yeterli olacaktır.

Bourne Again Shell (bash), Unix için daha önceki Bourne kabuğunu temel alır, ancak onu birkaç şekilde genişletir. Linux’ta bash, kullanıcı hesapları için en yaygın varsayılan kabuktur.

diğer yaygın kabuklar “Zsh”, “Tcsh”, “Fish”, “Ksh” şeklindedir. Özellikle yazılım geliştiriciler için Zsh incelemelerini tavsiye ederim.


Kabuk Kullanma

Linux kabuk kullanımı, daha önce metin modlu bir işletim sistemi kullanan herkes için oldukça basittir. Bir komut ve parametrelerini yazarsınız ve bilgisayar komutu çalıştırır. Çoğunlukla, Linux komutları haricidir(external), yani kabuktan ayrı programlardır. Yine de birkaç komut kabuğun içindedir ve ayrımın bilinmesi önemli olabilir.

a. Kabuk Başlatma

Bir metin modu giriş ekranı kullanarak Linux’ta oturum açarsanız, büyük olasılıkla doğrudan varsayılan shell ile bilgisayar açılır. Tekrar söyleyelim, kabuk(shell), komut istemi sunan ve sonraki Komutları kabul eden yerdir.

Linux’ta bir grafik kullanıcı arabirimi (GUI) oturum açma ekranı kullanarak oturum açarsanız, manuel olarak bir kabuk başlatmanız gerekir.

Bazı GUI’ler, terminal, xterm, Konsole veya benzeri bir program adı verilen bir programı başlatmak için bir menü seçeneği sağlar. Bu programlar, Linux içinde metin modu programları çalıştırmanızı sağlar ve varsayılan olarak kabuğunuzu çalıştırır.

Böyle bir menü seçeneği bulamazsanız, rastgele bir komutu çalıştırmanıza olanak tanıyan bir menü arayın. Bunu seçin ve komut adı olarak xterm veya konsole yazın; bu, bir kabuk çalıştıracak xterm tipi bir program başlatacaktır.

b. İç ve Dış Komutları Kullanma

İç komutlar, tahmin edebileceğiniz gibi, kabuğun içine yerleştirilmiştir. Çoğu kabuk, benzer bir dahili komut seti sunar, ancak kabuktan kabuğa farklılıklar vardır.
Kullanacağınız dahili komutlar, genellikle sıklıkla kullandığınız görevler içindir.

Bir komutun iç veya dış olduğunu anlamak için type komut_adı, şeklinde sorgulayabilirsiniz.

type echo

Bütün iç (built-in) komutların listesine help komutu ile ulaşabilirsiniz.

help

c. Programlar Nasıl Çalışır

Kabuk tarafından dahili komutlarından biri olarak tanınmayan bir komutu yazdığınızda, kabuk, onu yürütmek için bu isimde bir program bulmak için yolunu(path) kontrol eder. Yol(path), komutların bulunabileceği dizinlerin bir listesidir. PATH ortam değişkeni ile tanımlanır. Tipik bir kullanıcı hesabının yolunda yaklaşık yarım düzine veya bir düzine dizin vardır.

Yolu, bir kabuk yapılandırma dosyasında(~/.bashrc ve ~/.profile) PATH ortam değişkenini değiştirerek ayarlayabilirsiniz. Komut satırında tam bir yol sağlayarak yolda olmayan programları çalıştırabilirsiniz. Örneğin, ./calistirbeni yazıldığında mevcut dizinde calistirbeni programı çalıştırılır ve /home/senol/calistirbeni yazıldığında bu program /home/senol dizininde çalıştırılır.

Burada neden ./ kullandığımızı merak ediyor olabilirsiniz, linux üzerinde path içersinde tanımlı olmayan dosyalar, bulunduğunuz dizinde dahi olsa onlara execution(çalışma) verebilmeniz için bunu doğru tanıtmalısınız. Örn. . -> bulunduğum dizinde /calistirbeni isimli dosyayı çalıştır gibi.

d. Başlarken kabuk hakkında 1-2 kullanım kolaylığı

Bash ve tcsh gibi en popüler Linux kabukları, support command ve dosya adı tamamlama(autocomplete) özelliklerine sahiptirler. Ekranda komut satırı kullanan birisini görüyorsanız, bilin ki tüm komutları ekrana yazmıyordur, yazarken belli bir süre sonra alışkanlık haline gelen bu özelliklere beraber bakalım.

Çoğu kullanıcı shell üzerinden komut yazmayı sıkıcı ve hataya açık bulmaktadır. Bu, özellikle yavaş veya baştan savma yazanlar için geçerlidir. Bu nedenle, Linux kabukları, işlemleri hızlandırmaya yardımcı olabilecek çeşitli araçlar içerir.

Bunlardan ilki komut tamamlamadır: Bir komutun bir bölümünü veya (bir komuta seçenek olarak) bir dosya adı yazın ve ardından Sekme(Tab) tuşuna basın. Kabuk, komutun geri kalanını veya dosya adını doldurmaya çalışır.

Şu ana kadar yazdığınız karakterlerle yalnızca bir komut veya dosya adı eşleşirse, kabuk onu doldurur ve ardından bir boşluk ekler. Yazdığınız karakterler bir komutu veya dosya adını benzersiz şekilde tanımlamıyorsa, kabuk yazabileceği son yere kadarki kısmı yazar ve sonra durur.

Kabuğa ve yapılandırmasına bağlı olarak bip sesi gelebilir. Sekme tuşuna tekrar basarsanız, sistem olası tamamlamaları görüntüleyerek yanıt verir.

Daha sonra başka bir veya iki karakter yazabilir ve komutu veya dosya adını tamamlamadıysanız, işlemin tekrarlanması için Sekme tuşuna tekrar basabilirsiniz. En temel Linux komutlarının oldukça kısa adları vardır ls, cd, set vb.

Bazen birkaç komutu bir arada yazmanız ve dosya isimleri de eklemeniz gerekir, dosya adları oldukça uzun olabilir. Bu nedenle, komut tamamlama, yazarken çok zaman kazandırabilir. Ayrıca yazım hatalarını önlemenize de yardımcı olur. Bir başka kullanışlı kabuk kısayolu da geçmiş(history)’dir. History, yazdığınız her komutun kaydını tutar.

Yakın zamanda uzun bir komut yazdıysanız ve tekrar kullanmak veya küçük bir varyantını kullanmak istiyorsanız, komutu geçmişten çekebilirsiniz. Bunu yapmanın en basit yolu klavyenizdeki Yukarı ok tuşuna basmaktır; bu önceki komutu getirir. Yukarı ok tuşuna art arda basmak, istediğiniz komutu bulabilmeniz için birden çok komut arasında hareket eder.

Aşarsanız, geçmişte aşağı gitmek için Aşağı ok tuşuna basın. Yukarı ve Aşağı ok tuşları için sırasıyla Ctrl+P ve Ctrl+N tuş kombinasyonları PgUp ve PgDown gibi daha uzak aralıklarda yukarı aşağı History getirirler.

Komut geçmişini kullanmanın bir başka yolu, içinde arama yapmaktır. Geriye doğru (ters) aramaya başlamak için Ctrl+R tuşlarına basın, eğitim içersinde örnekler ile history kullanımını gösteriyoruz.


Metin(Text) çıktıların yönlendirilmesi

Linux’un bağlı kaldığı Unix felsefesinin bir kısmı, mümkün olduğunca çok sayıda basit aracı birleştirerek karmaşık şeyler yapmaktır. Yeniden yönlendirme(redirection) ve streams, basit programların bağlar ile bir araya getirilmesini sağlayarak bu görevde yardımcı olur, her bir bağlantı bir önceki bağlantının çıktısını besler.

cikti1 cikti2 cikti3 cikti4

Akışlar, yeniden yönlendirme ve kanallar, Linux’taki daha güçlü komut satırı araçlarından bazılarıdır. Linux, programların girdisini ve çıktısını, manipüle edilebilen bir veri varlığı olan bir akış olarak ele alır.
Normalde, girdi klavyeden gelir ve çıktı ekrana gider

"Burada söylemek istediğim tam ekran metin modunda oturum açma, bir xterm ekranı ya da uzaktaki bir bilgisayarın terminaline bağlanma oturumu olabilir"

Bu giriş ve çıkış akışlarını, dosyalar gibi başka kaynaklardan gelen veya bunlara giden şeklinde yeniden yönlendirebilirsiniz. Benzer şekilde, bir programın çıktısını başka bir programa aktarabilirsiniz. Akışlar (stream)lar, birden çok programı birbirine bağlamak için harika araçlar olabilir


Akış Türlerini Keşfetme

Yönlendirme ve boruları anlamaya başlamak için, önce farklı girdi ve çıktı akış türlerini anlamalısınız. Bu konu için en önemli üç tanesi:

Standart Giriş(Standart Input) Programları, standart giriş veya stdin yoluyla klavye girişini kabul eder. Çoğu durumda bu, bilgisayara klavyeden gelen verilerdir. (stdin)

Standart Çıktı(Standart Out) Metin modu programları çoğu veriyi standart çıktı aracılığıyla kullanıcılarına gönderir (stdout). Stdout, çıktı formatı “tam ekran metin modunda” olaraki ya ekranda görüntülenir veya xterm gibi bir GUI penceresinde. (GUI aslında xterm ile çıktıları Grafik arayüz üzerine metin olarak gönderir, sadece Grafik arayüzü vardır)

Standart Hata(Standart Error) Linux, standart hata veya (stderr) olarak bilinen ikinci bir tür çıktı akışı sağlar. Bu çıkış akışının, hata mesajları gibi yüksek öncelikli bilgileri taşıması amaçlanmıştır. Normalde, standart hata, standart çıktıyla aynı çıktı cihazına gönderilir, bu nedenle bunları birbirinden kolayca ayırt edemezsiniz.

Fakat birini diğerinden bağımsız olarak yeniden yönlendirebilirsiniz. Bu sayede, standart çıktıyı ekrana yönlendirirken, standart hatayı bir dosyaya yeniden yönlendirebilirsiniz. İlerleyen bölümde, bu komutların kullanımlarını ve nasıl yönlendiklerini örneklerle anlatıyoruz.


2. Kabuk(shell) Giriş ve Çıkışlar ile yönlendirmeler (Redirections)

(redirections, pipes, stdin, stdout, stderr, tee)

Linux işletim sisteminde komut satırı (Command Line Interface-CLI) üzerinden yapabilecekleriniz, her bir yönlendirme ile daha da çeşitli hale gelmektedir. Çıktılarınızı bir yazıcıya doğrudan yönlendirebilirsiniz, ekrana veya daha farklı bir yere aldığınız bir çıktıyı diğer bir komuta yönlendirip kendi çözümünüzü üretebilirsiniz.

Yönlendirmeler linux işletim sistemine özgü ve çok kullanışlı özelliklerdir. Yönlendirmeleri dosyalara gönderirseniz filesystem üzerinde dosya oluşturabilirsiniz.

Dilerseniz hata bilgilerinizi standart çıktıya yazabilir ve çalıştırdığınız bir program için error.log oluşturabilirsiniz.

Kafanızın karıştığını düşünüyorum, bu konu linux kullananların hepsinin bildiği ve çok sıklıkla fayda sağladığı bir konu. Sizin de mantığını anladığınızda çok fazla kullanacağınız bir özellik.

Öncelikle basit bir komut çalıştıralım

ls /

bu komut ile / (kök) dizin altındaki klasörler sıralandı.


; Birden fazla komutu tek bir komutta çalıştırma

Diyelim ki, birkaç komutu birbiri ardına çalıştırmanız gerekiyor. İlk komutun çalışmayı bitirmesini ve ardından bir sonrakini çalıştırmasını mı bekliyorsunuz?

Bunun için ; ayırıcısını kullanabilirsiniz. Bu şekilde, bir satırda birkaç komut çalıştırabilirsiniz. Önceki komutların işlerini bitirmesini beklemeye gerek olmadan diğer komut çalışacaktır.

komut_1; komut_2; komut_3


&& Birden fazla komutu yalnızca bir önceki komut başarılıysa tek bir komutta çalıştırma

Önceki komutta, zamandan kazanmak için tek bir satır içinde birkaç komutun nasıl çalıştırılacağını gördünüz. Peki ya komutların başarısız olmadığından emin olmanız gerekiyorsa?

Bir kod compile etmek istiyorsunuz mesela, başarılı bir şekilde çalıştırılan bir önceki komuttan sonra bir başka komutun çalışması gerek. bu durumda ``configure&&make&&make install` şeklinde komut çalıştırabiliriz.

Bu durum için && ayırıcı kullanabilirsiniz. &&, sonraki komutun yalnızca önceki komut başarılı olduğunda çalışacağından emin olur.

$ komut_1 && komut_2

Bu komutu sıklıkla tembellik yüzünden kullanırım. Örneğin, sisteminizi yükseltmek için “sudo apt update && sudo apt upgrade -y” yazarak tek satırda bilgisayarı güncellerim.

bu sistem içinde aynı komutu kullanabilirsiniz.

apt-get update && apt-get upgrade

| pipe - boru veya akışlar

şimdi bu komutun çıktısını | (pipe) ile bir sonraki komut için (stdin) olarak yönlendirelim

cikti1 | cikti2 | cikti3 | cikti4  
ls / | cat

burada ilk komut ls /çalışıyor ve çıktısını ekran yerine cat komutuna yönlendiriyor, cat komutu ise kendi çıktısını üretiyor.


stdout (komut değildir) işlemin komut satırından dışarı bilgi vermek için kullandırdığı yönlendirme

lskomutunun çıktısını(stdout) başka bir programa yönlendirebileceğimiz gibi işletim sistemindeki bir dosyaya da yönlendirebiliriz.

ls / >/tmp/kokdizinlistesi.txt

yukarıdaki komutu çalıştırdığımızda çıktımız (stdout)ekran yerine bir dosya oluşturacaktır /tmp/kokdizinlistesi.txt

dosyanın içini görüntülerseniz ls /komutu çıktısını olduğunu görebilirsiniz.

cat /tmp/kokdizinlistesi.txt

Stdout ve stderr yeniden yönlendirmek

Hata mesajlarının özel bir akış tarafından teslim edilmesinin bir avantajı vardır. Bu, bir komutun çıktısını (stdout) bir dosyaya yeniden yönlendirebileceğimiz ve yine de terminal penceresinde herhangi bir hata mesajını (stderr) görebileceğimiz anlamına gelir.
İhtiyaç duyduğunuzda hatalara tepki verebilirsiniz. Ayrıca, hata mesajlarının stdout’un yönlendirildiği dosyayı kirletmesini de durdurur.

Aşağıdaki metni bir düzenleyiciye yazın ve error.sh adlı bir dosyaya kaydedin. (çalıştırmanız durumunda dosya oluşacaktır)

cat >> /tmp/hataver.sh <<EOL
#!/bin/bash
echo "Var olmayan bir dosyaya erişmeye çalışıyor!"
cat yanlis-dosya.txt
EOL

Komut dosyasını şu komutla çalıştırılabilir hale getirin:

chmod +x /tmp/hataver.sh

Komut dosyasının ilk satırı, stdout akışı aracılığıyla metni terminal penceresine yansıtır. İkinci satır, var olmayan bir dosyaya erişmeye çalışır. Bu, stderr aracılığıyla gönderilen bir hata mesajı oluşturacaktır.

Komut dosyasını şu komutla çalıştırın:

/tmp/hataver.sh

gördüğünüz gibi önce varolmayan bir dosyaya erişmeye çalıştığı mesajı, sonrasında bir hata mesajı geliyor. Her iki çıktı akışının, stdout ve stderr’in terminal pencerelerinde görüntülendiğini görebiliriz.

Çıkışı bir dosyaya yönlendirmeyi deneyelim:

/tmp/hataver.sh > /tmp/hataversonuc.txt

oluşacak dosyada 2 satır olduğunu düşünüyorsunuz, fakat sadece 1 satır var. Çünkü verilen hata stdout içersinde görünmez biz aslında yukarıdaki komutu yazarken sadece stdout çıktılarını /tmp/hataversonuc.txt dosyası içine aktarıyoruz, stderr sonuçları bu dosya içersinde oluşmazlar.

dosyayı görüntülediğimizde sadece 1 satır bilgi olduğunu görürüz.

cat /tmp/hataversonuc.txt

> veya 1> stdout çıktıları için kullanılır, herhangi bir sayı vermezseniz bunu 1 kabul eder.

2> stderr hata çıktıları için kullanılır

komutu 1ile çalıştıralım

/tmp/hataver.sh 1> /tmp/hataversonuc.txt

şimdide hata stderr sonucunu başka bir dosyaya yönlendirelim, 2>

/tmp/hataver.sh 2> /tmp/hataversonuc.err

dosyaları incelediğimizde hataversonuc.txt dosyasında stdout çıktısının olduğunu. hataversonuc.txt dosyası içersinde ise stderr sonucunun olduğunu görürüz.

cat /tmp/hataversonuc.txt
cat /tmp/hataversonuc.err

Hem stdout hem de stderr yeniden yönlendiriliyor

Şüphesiz, stdout veya stderr’i birbirinden bağımsız olarak bir dosyaya yönlendirebiliyorsak, ikisini de aynı anda iki farklı dosyaya yönlendirebilmeliyiz?

Evet yapabiliriz. Bu komut stdout‘u /tmp/hataversonuc.txt adlı bir dosyaya ve stderr‘i /tmp/hataversonuc.err adlı bir dosyaya yönlendirecektir.

/tmp/hataver.sh 1> /tmp/hataversonuc.txt 2> /tmp/hataversonuc.err

stdout ve stderr‘i Aynı Dosyaya yönlendirme

Her bir standart çıktı akışının kendi özel dosyasına gitmesini sağladık. Yapabileceğimiz son kombinasyon, hem stdout hem de stderr’i aynı dosyaya göndermek olacaktır..

Bunu şu komutla başarabiliriz:

/tmp/hataver.sh > /tmp/hataversonuc.txt 2>&1

parametreleri analiz edelim,

/tmp/hataver.sh çalışan script/program kendisi

/tmp/hataversonuc.txt stdout akışını hataversonuc.txt dosyasına yeniden yönlendirir. > ve 1> aynı şeydir

2>&1 Burada, &> yönlendirme talimatını kullanır. Bu talimat, kabuğa bir akışın başka bir akışla aynı hedefe gitmesini söylemenizi sağlar. Bu durumda, akış 2'yi, stderr'i, akış 1'in, stdout'un yönlendirildiği aynı hedefe yönlendir diyoruz.


tee stdin üzerinden aldıklarını stdout ve dosyalara yönlendirir

tee stdin okur, çıktı olarak stdout ve dosya/dosyalar’a veri yazar.

Kullanım şekli:

stdin --> tee --> stdout , dosya1, dosya2...  
ls -la

bu komut ekrana(stdout) ls çıktısı dönecektir. Buradan tee komutu ile çıktıyı hem ekrana, hemde 2 ayrı dosyaya yazdırabiliriz.

ls -la |tee /tmp/dosya1.txt /tmp/dosya2.txt

oluşan her iki dosyayı da control ettiğimizde aynı çıktıların olduğunu görürüz.

dosya1.txt içeriği

cat /tmp/dosya1.txt

dosya2.txt içeriği

cat /tmp/dosya2.txt

3. Ortam komutları

(history, alias, env, set, export)


history geçmiş - komut satırındaki geçmişte yazılı komutları sıralar

Bir diğer çok kullanışlı linux komutu history ‘dir. önceden yazdığınız komutlar kullandığınız shell’e bağlı olarak home dizininizde bir dosya içersine yazılır, yani son çalıştırdığınız komutlar sürekli olarak kaydedilir, böylece eskiden yazdığınız komutları da tekrar görebilirsiniz. Eski komutları tekrar görebilmek için history komutu kullanılır

history

History komutu ile shell içindeki bazı keyler birleştirilerek önceden yazdığınız komutları history komutunu kullanmadan tekrar shell içinde yazabilirsiniz.

komut satırında doğrudan Ctrl+R tuşuna basarsanız aşağıdaki gibi bir soru gelecektir

(reverse-i-search)`':

ve sizden arayacağınız şeyi yazmanızı isteyecektir, buradaki arama history içersinde olacaktır, örnek olarak sizden önce sunucuya bağlanan kişi touch komutunu kullanmışmı diye bakmak isterseniz tou(harflerini yazdığığınızda aşağıdaki çıktı gelecektir)

(reverse-i-search)`touch': touch ilkdosyam

history komutu /home/~/.bash_history dosyası içini günceller. Sunuculara yapılan shell erişimli hacker saldırılarında ilk kopyalanıp sıfırlanan dosyadır. Ayrıca shell üzerinden yazılmış parolalar burada durabildiği için ciddi tehlike arzeder.


alias mahlas / Takma ad - bir komut veya komut dizisine verilen takma ad

Bazen komutları yazmak gerçekten tekrarlayıcı olabilir veya birçok kez uzun bir komut yazmanız gerekirse, bunun için kullanabileceğiniz bir takma ada sahip olmak işleri kolaylaştırabiliyor. Bir komut için bir takma ad oluşturmak için, bir takma ad belirtmeniz ve bunu komuta atamanız yeterlidir.

$ alias getir = 'ls -la'

Şimdi ls -la yazmak yerine, getir yazabilirsiniz ve bu komutu çalıştıracak. Kullanıdığınız shell ortamından çıktığınızda bu tanımların silineceğini unutmayın. Komutların kalıcı alias sahibi olabilmesi için .bashrc dosyası içersine veya kullandığınız shell içersine bu satırı eklemeniz yeterli olacaktır.

~ /.bashrc

Verdiğiniz takma adları unalias komutuyla kaldırabilirsiniz:

$ unalias getir


env ortam

Ortam değişkenlerinin bir listesini yazdırmak ya da mevcut ortamı değiştirmek zorunda kalmadan değiştirilmiş bir ortamda başka bir yardımcı programı çalıştırmak için kullanılır. Env kullanılarak değişkenler eklenebilir veya kaldırılabilir ve mevcut değişkenler bunlara yeni değerler atanarak değiştirilebilir.

Yazdığımız shell programları içersindeki değişkenler sadece shell programı içersinde geçerli olurlar, bu değişkenlerin shell içersinde etkin olarak çalışabilmesi için tanımlanmaları gerekir.

Belirtilen değişkenin değerninin gösterilmesi

echo $SHELL

veya çok popüler olan

echo $PATH

Yeni değişken değerinin dışarı aktarılması

export VARIABLE=deger (veya VARIABLE=deger; export VARIABLE)

Bir değişkeni kalıcı olarak eklemek için

  1. ~/.bashrc dosyası içinde export VARIABLE=deger eklenir.
  2. ‘source ~/.bashrc’ yazıp enter yapabilirsiniz veya sadece ~/.bashrc çalıştırabilirsiniz. yeni bir shell ekranı açarsanız yine değerler tanımlı gelecektir.

Ortam değişkenleri özellikle sistem yöneten kişiler için bazen ciddi sorunlar yaratabilir (Windows işletim sistemlerindeki “,” ve “.” sorunu gibi). Wikipedia içersinde hazırlanmış çok güzel bir Env sayfası var, burayı kesinlikle incelemenizi tavsiye ederim

export komutu içersinde en sık kullanılan ortam değişkenlerine değineceğiz (HOME,PATH,SHELL,PS1)


set shell kullanımı için tanımlar

Set komutu, komut dosyalarınızın davranışını belirlemek için Bash’deki belirli bayrakları ve özellikleri kontrol etmenizi sağlar. Bu kontroller, komut dosyalarınızın istenen yolu izlemesini ve Bash’te istediğiniz gibi bir ortam yaratmanızı sağlar.

Basit bir şeyle başlayın. Bash’in dosyaların üzerine yazma şeklindeki varsayılan davranışını devre dışı bırakmak istediğinizi varsayalım, ‘-C’ parametresi bunu engelleyecektir.

set -C

şimdi bir dosya oluşturmaya çalıştığınızda artık hata verecektir

ls -la / >/tmp/list.root

gördüğünüz gibi artık redirect işlemi yapamıyorsunuz.

başka bir parametre olan ‘-f’ ise, shell üzerindeki Globbing özelliğini kapatacaktır. Globbing * dediğimizde tüm dosyalar anlamına gelen özellik.

set ile bash üzerinde çoğunlukla yazmış olduğunuz script’leri sınırlarsınız.


export dışa aktar

ortam değişkenini değiştirmek için kullanılır, yukarıda env komutunu işlerken görmüştük.

HOME

HOME, kullanıcının ev (veya oturum açma) dizinini temsil eden bir ortam değişkenidir. argümansız cd, geçerli çalışma dizinini HOME değerine değiştirir. Yaklaşık karakterinin (~) genellikle $ HOME için bir kısaltma olarak kullanıldığını unutmayın. Bu nedenle, cd $HOME ve cd ~ tamamen eşdeğer ifadelerdir.

$ echo $HOME

bize ev dizinimizin adını verir, her kullanıcının sistem üzerinde biz ev dizini vardır, ev dizini tanımlı olmayan kullanıcılar / kök dizinine düşerler ve kök üzerinde erişim hakları olmadığı için prompt olarak $ ile çalışmak zorunda kalırlar.

SHELL

Ortam değişkeni SHELL, kullanıcının varsayılan komut kabuğunu işaret eder (bir komut penceresinde yazdıklarınızı işleyen program, genellikle bash) ve kabuğun tam yol adını içerir:

$ echo $SHELL
/bin/bash

PATH

PATH, yani YOL çalıştırılacak uygun programı veya betiği bulmak için bir komut verildiğinde taranan sıralı bir dizin listesidir (path). Yoldaki her dizin iki nokta üst üste (:) ile ayrılır. null (boş) bir dizin adı (veya ./) herhangi bir zamanda geçerli dizini gösterir.

yol1: yol2 yol1 :: yol2 Örnekte: yol1:yol2, ilk iki nokta üst üste işaretinden (:) önce boş bir dizin vardır. Benzer şekilde, yol1::yol2 için yol1 ve yol2 arasında boş bir dizin vardır.

Yolunuza özel bir bin dizininin önüne eklemek için:

export PATH=$HOME/bin:$PATH  

şimdi yeni path bilgisini tekrar ekrana getirelim,

echo $PATH  

PS1
Örnek olarak (PS), Komut istemcisi (shell ekranında yanda yazan kısım) değiştrimeyi deneyelim.

PS1, komut satırı isteminizin neye benzediğini kontrol eden birincil istem değişkenidir. Aşağıdaki özel karakterler PS1’e dahil edilebilir:

 \u   -  Kullanıcı adı  
 \h   -  Ana bilgisayar adı 
 \w   -  Geçerli çalışma dizini 
 \!   -  Bu komutun geçmiş numarası 
 \d   -  Tarih 

Aşağıdaki örnekte olduğu gibi, kullanıldıklarında tek tırnak içine alınmaları gerekir:

echo $PS1  
export PS1='\u@\h:\w$'  

Değişiklikleri geri almak için:

export PS1='$'

Daha da iyi bir uygulama, önce eski istemi kaydetmek ve ardından aşağıdaki gibi geri yüklemek olacaktır:

OLD_PS1=$PS1  

istemi değiştirin ve sonunda şununla tekrar değiştirin:

PS1=$OLD_PS1  

exit - çıkış

exit komutu shell bağlantınızı sonlanrımak için kullanılır.

kullanım şekli.

$ exit [geri-dönüş-değeri]

0 başarılı 1 başarısız

genellikle

$ exit

şeklinde kullanılır. scriptler içersinde kullanırken geri dönüş değerleri önem arz eder, ve istediğiniz sayıyı verebilirsiniz.

örn.

$ exit 999


Sonraki Bölüm - (info/man)Bilgi ve El kitabı

Linux101 - Başlangıç