Bu repo shell komutlarının türkçe açıklamalarını içerir. Ekleme için pull request'lere tamamiyle açıktır.
whoami
: Bulunan oturumun sahibi olan kullanıcıyı yazdırır.
su
: Başka bir kullanıcının yetkileri ile komut çalıştırmak için yeni bir shell ayağa kaldırır. (“Örnek: su root”)
pwd
: Neredeyiz? Şu an bulunduğunuz dizini yazdırır. (“print working directory”)
ls
: Bulunduğumuz dizinin içindeki dosyaları ve dizinleri listeler. (“listing”)
cd dizin_adı
: Bulunduğunuz dizini değiştirmenize yarar. (“change directory”)
man
: Argüman olarak verdiğiniz komutun manuelini, kılavuzunu açar. (Örnek: man touch)
touch dosya_yolu
: Belirttiğiniz yoldaki dosyanın son değiştirilme tarihini günceller. Böyle bir dosya yoksa bu dosyayı oluşturur.
cd ..
: Hiyerarşik olarak bulunduğunuz dizinden üst dizine çıkmanıza yarar. (Örnek: Çalışma dizininiz /home/ali iken çalışma dizininizi /home yapar)
~
: Oturumun sahibi kullanıcı için home dizinini belirtir. (Tilde sembolü)
cd ~/../.
: Çalışma dizininizi "home"'un üst dizinine ayarlar. Sondaki nokta bulunulan en son klasörün kendisini belirtir.
cp klasör/dosya.csv backup/dosya.bck
: "klasör" dizinindeki "dosya.csv" dosyasını, "backup" dizinine "dosya.bck" dosya ismiyle kopyalar.
cp dosya1.txt dosya2.txt backup
: Belirtilen iki dosyayı ("dosya1.txt" ve "dosya2.txt") aynı isimle "backup" dizinine kopyalar.
dd
: Dosya kopyalama ve dönüştürme yapar.Örneğin dd if=/dev/sda of=./disk.img
ile /dev/sda diskinin tamamının imajını .img dosyası olarak alabilirsiniz.
mv
: Dosyaları taşımak ya da yeniden adlandırmak için kullanılan komut (move)
mv dosya_adi.txt yeni_dosya_adi.txt
: dosya_adi.txt'yi yeni_dosya_adi.txt olarak taşıdık. Böylece adını değiştirmiş olduk.
rm
: Dosyaları silmek için kullanılan komut. ("remove")
rm dosya.txt backup/dosya-2.txt
: Belirtilen iki dosyayı da siler.
mkdir dizin_ismi
: dizin_ismi adında yeni bir dizin oluşturur.
mkdir -p gecersiz_dizin/hedef_dizin
: gecersiz_dizin'in varolmaması durumunda hedef_dizin ile birlikte onu da açar.
rm -rf dizin_ismi
: dizin_ismi adlı dizini içindeki dosyaları ve altdizinleri de dahil ederek siler.
pbcopy
: Argüman olarak verilen değeri panoya kopyalar.
cat dosya_ismi
: Dosyanın içeriğini ekrana yazdırır.
df
: Dosya sisteminizdeki disk alanı hakkında bilgi edinmenizi sağlar.
du
: Disk kullanımını görmek ve hangi uygulamanın yada dosya alt sisteminin ne kadar yer kapladığını görmek için kullanılır.
ps
: Sisteminizde hangi işlemlerin çalıştığını görmenizi sağlar.
groups
: Verilen kullanıcının gruplarını listeler. Örneğin groups root
wget
: HTTP, HTTPS veya FTP protokollerini kullanan bir adresteki dosyayı terminal üzerinden doğruca kendi makinemize indirmek için kullanılan komut.
grep
: Dosyaların içinde düzenli ifadelerle (RegEx) arama yapmanızı sağlayan komut. Log incelerken vazgeçilmezimiz.
watch
: Belirli aralıklarla bir komutun çıktısını çalıştırarak ekrana yazdırır.(watch -n1 ls -la )
less
: Büyük dosyalara bakmak için kullanılan bir komut. Dosyanın tamamını ekrana yazdırmaz, daha okunabilir ilerlenebilir hale getirir.
less
’e birden fazla dosya ismi verirsek :n
’le bir sonraki dosyaya, :p
’yla bir önceki dosyaya gideriz, :q
’la çıkarız.
more
: less
' in eskisi. Sadece aşağıya kaydırmaya izin verir.
head
: Dosyanın ilk parçasını (standart 10 satır) yazdırır.
tail
: Head komutunun tam tersi olarak dosyanın son parçasını yazdırır. '-f' parametresi ile kullanıldığı zaman dosyaya anlık olarak yazılan içeriği ekrana basar.
head -n 3 directory/dosya_ismi.csv
: Dosyadaki ilk üç satırı getiriyor (“number of lines”)
ls -R
: Bütün klasörleri ve içindekileri gösterir
man
: Yanına yazılan komut hakkında yardım eder (manual)
cut
: csv dosyalarında sütunları seçer
cut -f 2-5,8 -d , dosya.csv
: 2. ve 5. sütun arasındakileri seç. (flag'ler: -f (fields, sütunları belirtir), -d (delimiter, ayırıcı))
sed
: Akış editörü. Dosyalar üzerinde bir çok işlem yapmaya yarar. Örneğin sed -i 's/aaaa/bbbb/g' test.txt
ile text.txt içerisinde ki her aaaa dizisi bbbb haline getirilebilir.
awk
: Metin dosyalarını işlemek için kullanılır. Örneğin awk -F';' '{print$1}' test.txt
ile test.txt içerisindeki satırları ';' ayracına göre sütunlara ayırır ve ilk sütunları ekrana yazdırır
find
: Dizin araması yapar. find / -name "temp*"
ile / dizininde ismi temp ile başlayan tüm dosyalar aranabilir.
grep
: dosyada arama yapar
grep kelime directory/dosya.csv
: "kelime"yi içeren satırları getirir
grep -Hirn kelime directory
: belirtilen dizin altında "kelime"yi içeren satırları getirir
grep’in flag’leri:
-c
: kelimenin bulunduğu satır sayısı döndürür-h
: birden fazla dosyada arama yapıyorsa dosya isimlerini döndürmez-i
: büyük/küçük harf farkını yok sayar ("kelime" ve "Kelime"yi arar)-l
: eşleşme bulunan dosya isimlerini getirir, eşleşmeleri getirmez-n
: eşleşen satırların satır sıralarını döndürür-v
: eşleşme bulunmayan satırları döndürür
paste
: iki tabloyu tek tablo yapar
örnek: head -n 5 directory/dosya.csv > dosya2.csv
: çıktı dosya2.csv’ye gider.
çıkardığımız dosyanın içeriklerine cat dosya2.csv
’yle bakabiliriz.
örnek: head -n 5 directory/dosya.csv >> dosya2.csv
: çıktı dosya2.csv'ye gider.
fakat buradaki farklılık, >
yerine >>
kullanmamız.
eğer >>
kullanırsak, yazdığımız veriler dosyaya eklenir, dosyada halihazırda bulunan veriler silinmez.
yine aynı şekilde çıkardığımız dosyanın içeriklerine cat dosya2.csv
’yle bakabiliriz.
örnek: head -n 5 directory/dosya.csv 2> dosya2.csv
: oluşan hata dosya2.csv'ye gider.
buradaki farklılık ise >
yerine 2>
kullanmamız.
eğer 2>
kullanırsak, kullandığımız komutta oluşan hata çıktılarını dosyaya yazmış oluruz.
örnek: head -n 5 directory/dosya.csv > dosya2.csv 2> err.txt
buradaki komutta hata oluşmazsa çıktı dosya2.csv'ye, hata oluşursa oluşan hata çıktısı err.txt'ye yazılır.
pipe soldaki komutun çıktısını alıp sağa gönderiyor.
örnek: head -n 5 directory/dosya.csv | tail -n 3
: beşinci satıra kadar aldı, sonra sondan üçüncüyü aldı (tail dosyanın sonundan alması gerektiğini belirtir)
örnek: cut -d , -f 2 directory/dosyacsv | grep -v anahtar_kelime
: cut
’la dosya.csv’deki 2. kolonu seçti, pipe
'la sağ tarafa grep
’le "anahtar_kelime" kelimesinin geçmediği durumların aramasını yaptı
örnek: cut -d , -f 1 directory/dosya.csv | grep -v Tarih | head -n 10
: dosya.csv verisinin ilk kolonunu seçtik, “Tarih” yazan header line’ı sildik ve ardından ilk on satırı aldık (head
en baştaki satırları alması gerektiğini belirtir)
wc
: kaç tane karakter, kelime, ya da satır varsa döndürür (“word count”)
Komutlarda birden fazla dosya ismi verirsek birden fazla dosya üstüne çalışır. Bütün dosyaların hepsini tek tek yazmaktansa * operatörünü kullanırız
cut -d , -f 1 directory/*.csv
cut -d , -f 1 directory/ka*.csv
: Klasörde kalem.csv ve kagit.csv isimli iki tane csv dosyası olsun, ikisini de seçmek için
?
tek bir karakteri eşliyor, mesela 201?.txt
2017.txt ve 2018.txt’yi eşliyor, ama 2017-01.txt’yi eşlemiyor.
[…]
: köşeli parantezin içindeki bir karakteri eşler, mesela 201[78].txt
2017.txt ya da 2018.txt’yi eşler.
{…}
: {*.txt, *.csv}
.txt ya da .csv’yle biten dosyaları eşler.
sort
komutuyla yapılabilir.
-n
flag’i: numerik olarak sıralar
-r
: tersten sıralar
-b
: boşlukları yok saymamızı sağlar
-f
: büyük/küçük harfi yok saymamızı sağlar (folding)
örnek: cut -d , -f 2 directory/dosya.csv | grep -v "anahtar_kelime" | sort -r
: aramayı tersten sıralar
uniq
: çift yazılmış satırları siler
cut -d , -f 2 directory/dosya.csv | grep -v "anahtar_kelime" | sort | uniq -c
: ikinci kolonu al, içinde anahtar_kelime geçmeyen çıktıları al, hepsini sırala, her eşleşme bir kez çıkacak şekilde göster ve kaç kez gözüktüğü yazsın
bazen kullandığımız dosyalar üzerinde yeterli iznimiz olmayabilir, veya önemli dosyaların başkaları tarafından okunup yazılmasını istemeyebiliriz. böyle durumlarda dosya izinlerini kullanabiliriz.
chmod
komutu ile yapılabilir
chmod
sekizlik(octal) sayı sistemi kullanır, bu sistemde read
izni 4, write
izni 2, execute
izni ise 1 sayısı ile gösterilir.
bir sistemde ise temel olarak 3 kullanıcı vardır, bunlar sırasıyla
owner
dosyanın sahibigroup
bilgisayar üzerinde kayıtlı olan kullanıcılarother
geri kalan herkes
örnek: chmod 644 file.txt
: bu komut sonrasında file.txt'yi dosyanın sahibi okuyabilir/yazabilir. bilgisayar üzerinde kayıtlı olan kullanıcılar ve geri kalan herkes bu dosyayı sadece okuyabilir.
buradaki 6 sayısı dosya sahibinin iznini, 4 sayısı bilgisayar üzerinde kayıtlı olan kullanıcıların iznini ve diğer 4 sayısı ise geri kalan herkesin iznini temsil eder.
izinleri hesaplamak basittir. mesela dosya sahibine okuma ve yazma izni vermek için 4+2=6, okuma ve çalıştırma izni vermek için ise 4+1, yani 5 yazabiliriz. hiçbir izin vermek istemiyorsak 0 yazabiliriz. sıralama ise daima owner-group-other şeklindedir.
who
: Oturum açmış kullanıcıları listeler.
lsusb
: USB aygıtları listeler. USB ile takılan aygıtın tanınıp tanınmadığını anlamaya yarıyor.
dmesg
: Sistem yeni bir donanım tespit ettiğini ya da bir donanımın bağlantısının kesildiğini farkettiğinde oluşturduğu mesajları görmemizi sağlar. Bu sayede bir donanımın bağlı olup olmadığını anlayabiliriz.
lsblk
: Sistemde ki diskleri ve partitionları gösterir.
lsb_release -a
: Mevcut GNU/Linux dağıtımı hakkında bilgi verir.(Debian tabanlılarda test ettim).
uname -a
: Sistem ve çekirdek hakkında bilgi verir.
free
: RAM kullanımı ve durumu ile ilgili bilgi verir.
du ./
: Verilen dizin içinde bulunan dosyaları ve boyutlarını listeliyor.
tree ./
: Verilen dizini ağaç yapısı şeklinde listeler. İşe yarar.
history
: Kullanıcının komut geçmişini ortaya döker. Bu kayıtlar genelde home dizini altında eğer kullanılan shell bash ise home dizini altında .bash_history dosyasında tutulur.
top
: Terminal içinde görev yöneticisi. Kardeşi htop
daha renkli ve daha fazla özelliğe sahip ama indirmek gerekiyor.
kill
: Processlere sinyal göndermeye yarar. Mesela kilitlenen bir işlem varsa örneğin Firefox, PID numarası tespit edildikten sonra kill -9 PID_Numarası
yazılarak Firefox'a SIGKILL gönderilebilir. Bu da Firefox'u kapatacaktır.
ip a
: Sistemde varolan tüm interface bilgilerini numaralandırarak ekrana basar.
ifconfig
: Ağ arayüzleri hakkında bilgi verir. Sistemde ki ağ kartlarının MAC ve IP adreslerini bulmakta yardımcı oluyor.
ping
: Parametre olarak girilen adrese ICMP paketleri atar. Windows' dan farklı olarak GNU/Linux sürümünde eğer müdahale edilmez ise sonsuza kadar ping atmaya devam eder. Windows' da yanılmıyorsam 3 tane atıp kendini durduruyor.
netstat -antup
: Kullanımda olan portları listeler. LISTEN olanlara dikkat edilmesi iyi olur.
route
: Sistemdeki yönlendirme tablosunu listeleme ve yönetme işlemlerini yapar. Host üzerinde tanımlı olan bir arayüz üzerinden belirtilmiş hedeflere static yönlendirme yapar.
tcpdump
: Sisteme gelen network trafigini incelemeye yarar.
örnek: tcpdump -i eth0
: Belirtilen arayüzün dinlenmesini sağlar. Gelen network paketlerini ekrana yazdırır.
degisken=1 veya degisken="yazı" şeklinde değişken tanımlaması yapılır, boşlukla değişken tanımlanması halinde hata alırsınız.
DEGISKEN=1 veya DEGISKEN="yazı" bu şekilde global değişken tanımlayabilirsiniz. Kodlarınızın herhangi bir yerine;
export DEGISKEN
yazdıktan sonra birbirini tetikleyen scriptler yazmanız halinde dosyalar arası değişkenlerinizi kullanabilirsiniz.
ad="Ömer"
echo $ad
> Ömer
echo ad
> ad
echo '$ad'
> $ad
echo "Selam Benim Adım, $ad"
- $#: Komut dosyasına kaç komut satırı parametresi geçirildi.
- $@: Komut satırı parametrelerine iletilen tüm komut satırı parametreleri.
- $?: Çalıştırılacak son işlemin çıkış durumu.
- $$: Geçerli komut dosyasının İşlem Kimliği (PID).
- $USER: Betiği çalıştıran kullanıcının kullanıcı adı.
- $HOSTNAME: Komut dosyasını çalıştıran bilgisayarın ana bilgisayar adı.
- $SECONDS: Betiğin çalıştığı saniye sayısı.
- $RANDOM: Rastgele bir sayı döndürür.
- $LINENO: Komut dosyasının geçerli satır numarasını döndürür.
- $PATH: PATH değişkeninde bir komut yazıldığı anda sistem tarafından aranacak olan patika listesi görüntülenir.
let "a=2+3" # +(toplama), -(çıkarma), *(çarpma), /(bölme)
echo $a
> 5
- -gt büyük
- -lt küçük
- -ge büyük eşit
- -le küçük eşit
- -eq eşit
- -ne eşit değil
sayi=2
[ $sayi -eq 3 ]
echo $?
> 0
[ $sayi -lt 2 ]
echo $?
>1
#!/bin/bash
sayi=3
if [ $sayi -eq 3]; then
# == da kullanabilirsiniz.
echo Sayı eşit
else
echo Sayı eşit değil
fi
> Sayı eşit
#!/bin/bash
sayi=2
while [ $sayi -lt 100 ]
do
deger=$((deger+2))
echo $sayi
done
Yukarıda görmüş olduğunuz $() kullanımı terminalde dönen çıktı anlamına gelir. Örneğin;
$ pwd
> /user/omerayyildiz/Desktop
$ masaustuYolu=$(pwd)
$ echo $masaustuYolu
> /user/omerayyildiz/Desktop
#!/bin/bash
for agac in akasya mese visne
do
echo $agac
done
> akasya mese visne