Öğlen

Transkript

Öğlen
Linux Komutları
Temel Linux
Komutları - Sed ve Awk,
Kabuk Programlama - Bash /
Csh, Süreç Otomasyonu crontab vb.
ls komutu
ls [dizin] : Dizin içeriğini gösterir. Dizin verilmezse içinde
bulunulan dizini gösterir.
Mesela Root (/) dizinin içeriğini görmek için:
$ ls /
bin boot cdrom dev etc home lib lost+found media mnt opt
proc root sbin selinux srv sub sys tmp usr var
Ancak sadece ls dersek:
$ ls
Desktop Documents Downloads examples.desktop namaz
nCNN Pictures Public Templates tezim Videos
pwd komutu
pwd : İçerisinde bulunulan dizinin adını/yolunu gösterir.
$ pwd
/home/mercan
“ls /home/mercan” dersek:
$ ls /home/mercan
Desktop Documents Downloads examples.desktop namaz
nCNN Pictures Public Templates tezim Videos
Ev (Home) Dizini
Sisteme girince (login olunca) kendi ev dizinimizde başlarız.
Her kullanıcının ev dizini kendi kontrolündedir. Bu dizinde
kullanıcı yeni dosyalar ve dizinler oluşturabilir.
~ işareti, Ev dizini için bir kısa yoldur.
$ ls ~
Desktop Documents Downloads examples.desktop namaz
nCNN Pictures Public Templates tezim Videos
cd komutu
cd [dizin] : Verilen dizine gider. Dizin adı verilmezse ev
dizinine gider.
$ pwd
/home/mercan
$ cd Desktop
$ pwd
/home/mercan/Desktop
Tam Yol /Göreli Yol (Path)
$ pwd
$ pwd
/home/mercan
/
$ cd Desktop
$ ls
$ pwd
$ cd /
bin dev lost+found mnt root
srv tmp boot etc opt sbin
sub usr cdrom home lib
media
proc selinux sys var
$ cd Desktop
$ cd /home/mercan/Desktop
-bash: cd: Desktop:
$ pwd
No such file or directory
/home/mercan/Desktop
/home/mercan/Desktop
Dizin Kısa yolları ( ./ ve ../ )
Bulunulan Dizin Kısa yolu ( . ):
$ ls .
Desktop Documents Downloads examples.desktop namaz
nCNN Pictures Public Templates tezim Videos
Bir üst dizin kısayolu ( .. ):
$ ls ..
mercan
cp komutu
cp { -r dizin | dosya } hedefdizin : Dizin / Dosya 'yı
hedefdizin'e kopyalar. -r Dizin kopyalamak için gereklidir.
$ cp dosya1 Desktop/
$ cp /tmp/birdosya ./
$ cp -r Videos Desktop/
$ cp -r ~/
/mnt/YEDEKDISKI/
mv komutu
mv -n { dizin | dosya } { hedefdizin | dosyayayeniisim } :
Dizin / Dosya 'yı hedefdizin'e taşır, yada dosyayayeniisim adı
ile taşır. -n ile var olan bir dosyanın üzerine yazma engellenir.
$ mv dosya1 Desktop/
$ mv -n dosya1 Desktop/
$ mv /tmp/birdosya ./
$ mv Videos Desktop/
$ mv ahmet.txt mehmet.txt
rm komutu
rm [ -i ] { -r dizin | dosya } : Dizin / Dosya 'yı siler.
-r : Dizin silmek için gereklidir.
-i : Her dosya için ayrı ayrı onay sormasını sağlar.
$ rm dosya1
$ rm -i /tmp/birdosya
$ rm Videos/
rm: cannot remove `Videos/': Is a directory
$ rm -r Videos/
mkdir komutu
mkdir dizin : Dizin adında yeni bir dizin oluşturur.
$ mkdir Odevler
$ mkdir Odevler/Odev1
$ mkdir ~/Odevler/Odev2
rmdir dizin : Dizin adındaki boş dizini siler.
$ rmdir Desktop/
rmdir: failed to remove `Desktop/': Directory not empty
nano editor
http://wiki.uhem.itu.edu.tr/w/index.php/Login_Sunucular%C4%B1nda_Dosya_%C4%B0%C3%A7eri%C4%9Fini_De%C4%9Fi%C5%9Ftirme
ls -l -h
ls komutuna -l (küçük L) parametresi verilerek:
– Erişim Hakları
– Sahibi
– Grubu
– Boyutu (Byte olarak)
– Değişilik Tarihi
– Dosya Adı bilgileri görüntülenir.
drwxr-xr-x 2 mercan mscelebi 4096 Apr 12 12:56 sonuc_tanima
-rw-r--r-- 1 mercan mscelebi 7298402 Apr 12 12:57 target.png
-rwxr-xr-x 1 mercan mscelebi 1037 Apr 13 10:52 temizle.sh
ls -l komutuna bir de -h parametresi eklersek boyutu uygun birimde
gösterir:
drwxr-xr-x 2 mercan mscelebi 4.0K Apr 12 12:56 sonuc_tanima
-rw-r--r-- 1 mercan mscelebi 7.3M Apr 12 12:57 target.png
-rwxr-xr-x 1 mercan mscelebi 1.1K Apr 13 10:52 temizle.sh
ls -lrt
# ls -lrt
total 10248
-rw-r--r-- 1 root root 372187
-rw-r--r-- 1 root root 7805904
-rw-r--r-- 1 root root 4327
-rw-r--r-- 1 root root 1371211
-rw-r--r-- 1 root root 283686
-rw-r--r-- 1 root root 18367
-rw-r--r-- 1 root root 550412
-rw-r--r-- 1 root root 110
-rw-r--r-- 1 root root 23325
-rw-r--r-- 1 root root 1371
-rw-r--r-- 1 root root 5194
-rw-r--r-- 1 root root
13
Jan 5 01:47
Jan 12 01:57
Jan 15 09:00
Jan 15 09:00
Jan 15 09:00
Jan 15 09:04
Jan 15 09:04
Jan 15 09:05
Jan 15 09:05
Jan 15 09:05
Jan 15 09:11
Jan 15 09:23
deletedList.2015
rs_file_aging
ibdiagnet_ibis.log
ibdiagnet.db
ibdiagnet.lst
ibdiagnet.pkey
ibdiagnet.fdbs
ibdiagnet.sm
ibdiagnet.mcfdbs
ibdiagnet.log
pim.info.manager
tmp_mailBody
man komutu
: (
man komut :
(
>
)
$ man cp
$ man mkdir
<(
:(
(
(
() .
.(
( > (
(< ( (B(
(< ( <
(
.
)(B :( ( ( .
.
:
man komutu
tar komutu (Arşiv dosyası oluşturmak)
tar c[ v ][ z | j ]f tardosyası { dosyalar | dizin } : Dizin /
Dosyalar 'ı tardosyası adında tekbir dosya haline getirir.
c : dizin/dosyalar'dan yeni bir tar dosyası oluştur.
v : birleştirilen dosyalar hakkında bilgi ver.
z : birleştirilen dosyayı zipleyerek sıkıştır.
j : birleştirilen dosyayı b2zip ile sıkıştır.
$ tar cvzf odev1.tgz odev1/
a odev1/
a odev1/sonuclar.txt
a odev1/program.exe
tar komutu (Arşiv dosyası geri açmak)
tar x[ v ][ z | j ]f tardosyası : Dizin / Dosyalar 'ı tardosyası
adında tekbir dosya haline getirir.
x : tardosyası'nı geri aç.
v : açılan dosyalar hakkında bilgi ver.
z : tardosyası zip ile sıkıştırılmıştı.
j : tardosyası b2zip ile sıkıştırılmıştı.
$ tar xvzf odev1.tgz
x odev1/
x odev1/sonuclar.txt
x odev1/program.exe
Uzaktaki Makineye Erişim
hostname : Bulunulan makinenin adını gösterir.
Çeşitli Bağlantı yöntemleri:
• Terminal bağlantısı:
– Ssh: güvenli (şifreli) bağlantı, ilave port taşıtmak
mümkün.
– Telnet, rsh: Güvensiz (şifresiz), eski, kullanmayın.
• Masaüstü bağlantısı:
– Vnc : yaygın kullanımda
ssh
ssh [-X] [ -l kullanıcı] bilgisayar
ssh [-X] kullanıcı@bilgisayar
Uzaktaki bilgisayar'a kullanıcı kullanıcısı ile güvenli
terminal bağlantısı sağlar. -l (küçük L) ile kullanıcı
verilmezse, çalıştıran kullanıcı ile bağlanır. -X ile X
görüntüsü aktarımını da sağlar.
Örnekler:
ssh -X [email protected]
ssh -X -l akinci lnode2.uybhm.itu.edu.tr
ssh -X lnode2.uybhm.itu.edu.tr -l akinci
Uzaktaki Makineye Erişim
Bir bilgisayarı internete/ağa bağlamak için IP denilen bir ağ numarasına ihtiyaç
vardır. Ancak kolaylık için alan adı denilen isimler kullanılır.
Mesala:
Makine Alan Adı: lnode1.uybhm.itu.edu.tr
IP Adres: 160.75.121.131
Makine Alan Adı: www.google.com
IP Adres: 209.85.149.147
Ayrıca bilgisayardaki dışarıdan gelen isteklere cevap verecek her programın
bir port numarasına ihtiyacı vardır:
ssh port no:22
web server (http) port no:80
x-server port no:6000,6001,...
Uzaktaki Makineye Erişim
Bir bilgisayarı internete/ağa bağlamak için IP denilen bir ağ numarasına ihtiyaç
vardır. Ancak kolaylık için alan adı denilen isimler kullanılır.
Mesala:
Makine Alan Adı: lnode1.uybhm.itu.edu.tr
IP Adres: 160.75.121.131
Makine Alan Adı: www.google.com
IP Adres: 209.85.149.147
Ayrıca bilgisayardaki dışarıdan gelen isteklere cevap verecek her programın
bir port numarasına ihtiyacı vardır:
ssh port no:22
web server (http) port no:80
x-server port no:6000,6001,...
Uzaktaki Makineye Erişim
• Bilgisayarlarda ve ağ cihazlarında (router), haberleşmenin
IP yada port bilgisine bakarak, haberleşmeye izin veren
yada engelleyen programlar vardır. Bilgisayarlardakine
firewall (güvenlik duvarı) denir.
• Genellikle ssh portu açıkken, x-server, rsh vb. daha az
kullanılan portlar kapalıdır.
• Bu sebeble ssh “port tunneling / forwarding” denen bir
özellikle görüntü taşımaya da izin verir.
• DISPLAY değişkeni normalde görüntü aktarmada
kullanılırken, ssh port forwarding ile bu değişkeni
ayarlamaya gerek kalmaz. Yani değiştirmeyin,
dokunmayın, ellemeyin!
scp
• Kendi makinamızdan Uzaktaki makinaya:
scp { -r dizin | dosya }
kullanıcı@bilgisayar:hedefdizin
Dizin / Dosya 'yı uzaktaki bilgisayar 'ın kullanıcı kullanıcısının hedefdizin 'ine
kopyalar.
Örnek:
scp -r hesap/ [email protected]:~/
• Uzaktaki makinadan Kendi makinamıza:
scp [-r] kullanıcı@bilgisayar:{dizin | dosya }
hedefdizin
Uzaktaki bilgisayar 'ın kullanıcı kullanıcısının Dizin / Dosya 'sını bulunulan
makinenin hedefdizin 'ine kopyalar. Dizin için -r gereklidir.
Örnek:
scp -r [email protected]:~/hesap ~/
şifresiz ssh
ssh-keygen -t dsa
Enter file in which to save the key (/home/mercan/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mercan/.ssh/id_dsa.
Your public key has been saved in /home/mercan/.ssh/id_dsa.pub.
The key fingerprint is:
04:be:15:aa:1d:0a:1e:e2:a1:e5:de:93:4f:b1:a6:01 [email protected]
scp ~/.ssh/id_dsa.pub [email protected]:~/
ssh [email protected]
# cat ~/id_dsa.pub >>.ssh/authorized_keys
ssh [email protected]
#
ssh ile komut çalıştırmak
ssh [email protected] “ls /tmp”
Uzaktaki makinada ls /tmp komutunu çalıştırır.
ssh [email protected] “shutdown -h now”
Uzaktaki makinayı kapatır.
nano ile dosyamız
Windowsta yazdığımız dosyamızı linux'a taşıdık. Nano editörü ile
içine bakarken DOS formatından dönüştürüldüğüne dikkat edin!
Sadece görüntülenirken dönüştürülüyor dosya değiştirilmiyor.
Bir garip Hata!
Subject: Job 179575: <#!/bin/bash^M;#BSUB -q tezq^M;#BSUB -oo birsh.txt^M;^M;ls -alh^M> Exited
Job <#!/bin/bash^M;#BSUB -q tezq^M;#BSUB -oo birsh.txt^M;^M;ls -alh^M> was submitted from host
<cn02> by user <mercan>.
Job was executed on host(s) <cn18>, in queue <tezq>, as user <mercan>.
</SFS2/users/mercan> was used as the home directory.
Your job looked like:
-----------------------------------------------------------# LSBATCH: User input
#!/bin/bash^M
#BSUB -q tezq^M
#BSUB -oo birsh.txt^M
^M
ls -alh^M
-----------------------------------------------------------Exited with exit code 126.
The output (if any) follows:
/bin/bash^M: bad interpreter: No such file or directory
dos2unix
dos2unix dosya_ms [dosyalinux]
windows dosyası dosya_ms 'i linux formatına çeviririp dosyalinux
adıyla kaydeder. Dosyalinux verilmezse yine dosya_ms
dosyasının üzerine yazar.
Örnek:
dos2unix Makefile Makefile_linux
dos2unix Makefile
Kullanıcılar
Linux'ta her kullanıcının bazı temel özellikleri vardır:
•
Kullanıcı Adı
•
Şifresi
•
Kullanıcı numarası
•
Kullanıcı ana grubu
•
Kullanıcı Uzun (Gerçek) Adı
•
Ev dizini
•
Kullandığı kabuk
Kullanıcılar ilave grublara da üye olabilirler.
Her sistemde herşeyi yapmaya yetkili bir root kullanıcısı vardır.
hpsmh:x:101:501::/opt/hp/hpsmh:/sbin/nologin
vtunesag:x:28888:28888::/sbin:/bin/false
materials:x:501:0:Materials Studio User :/home/materials:/bin/bash
passwd komutu
passwd : kullanıcının şifresini değiştirir. Önce eski şifreyi sorar.
Sonrasında 2 kez yeni şifreyi ister.
$ passwd
Changing password for user mercan.
Enter login(LDAP) password:
New UNIX password:
Retype new UNIX password:
LDAP password information changed for mercan
passwd: all authentication tokens updated successfully.
id komutu
: kullanıcı hakkında bilgi verir, kullanıcı verilmezse komutu
çalıştıranın bilgilerini gösterir.
İd [kullanıcı]
$ id
uid=1022(mercan) gid=5001(mscelebi)
groups=12(mail),13(news),2000(gaussian),5001(mscelebi)
$ id root
uid=0(root) gid=0(root)
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
$ id adem
uid=1374(adem) gid=5000(starter) groups=5000(starter), 2000(gaussian)
getent komutu
getent komutu bilgisayar hakkında çeşitli bilgileri gösterir.
getent passwd
Geçerli tüm kullanıcı listesini verir.
hbm51301:x:641:363:hbm51301:/AKDENIZ/users/hbm51301:/bin/bash
hbm51302:x:642:363:hbm51302:/AKDENIZ/users/hbm51302:/bin/bash
hbm51303:x:643:363:hbm51303:/AKDENIZ/users/hbm51303:/bin/bash
hbm51304:x:644:363:hbm51304:/AKDENIZ/users/hbm51304:/bin/bash
passwd dışında aliases, ethers, group, hosts, netgroup,
networks, protocols, rpc, services, shadow parametreleri
var.
Dosya Hakları
• Linux'ta her dosyanın/klasörün bir sahibi vardır.
• Her dosyanın ayrıca sistemin takip ettiği 3 grup hakları vardır:
– Dosya Sahibinin Hakları
– Dosya Grubundaki Diğer Kullanıcıların Hakları
– Geriye Kalan Diğer Kullanıcıların Hakları
• Her grubun 3 tip hak bilgisi tutulur:
– Yazma Hakkı
– Okuma Hakkı (dizinler için dizin içindeki dosya adlarını görme hakkı)
– Çalıştırma Hakkı (dizinler için dizine girme hakkı)
ls -l -h
ls komutuna -l (küçük L) parametresi verilerek:
– Erişim Hakları
– Sahibi
– Grubu
– Boyutu (Byte olarak)
– Değişilik Tarihi
– Dosya Adı bilgileri görüntülenir.
drwxr-xr-x 2 mercan mscelebi
4096 Apr 12 12:56 sonuc_tanima
-rw-r--r-- 1 mercan mscelebi 7298402 Apr 12 12:57 target.png
-rwxr-xr-x 1 mercan mscelebi
1037 Apr 13 10:52 temizle.sh
ls -l komutuna bir de -h parametresi eklersek boyutu uygun birimde gösterir:
drwxr-xr-x 2 mercan mscelebi 4.0K Apr 12 12:56 sonuc_tanima
-rw-r--r-- 1 mercan mscelebi 7.3M Apr 12 12:57 target.png
-rwxr-xr-x 1 mercan mscelebi 1.1K Apr 13 10:52 temizle.sh
chmod
chmod [-R] kişilerhaklar { dosya | dizin } : Dosya /Dizin erişim haklarını değiştirir.
-R ile dizindeki tüm alt dizinleri / dosyaları da değiştirir.
•
Kişiler:
– u : kullanıcının kendisi
– g : kullanıcının kendi ana grubu
– o: bunların dışındaki diğer kullanıcılar
– a: Tüm kullanıcılar
•
Haklar:
– w : yazma hakkı
– r : okuma hakkı, dizinler için dizin içindeki dosya adlarını görme hakkı
– x: çalıştırma hakkı, dizinler için dizine girme hakkı.
– + - : + ile hak verilir, - ile hak geri alınır
•
Örnek : chmod -R a+rx hesap/
– bu komut ile herkese (a) hesap dizinindeki tüm dosyaları okuma (r) ve çalıştırma
(x) hakkı veriliyor.
chown
chown [-R] kullanıcı:grubu { dosya | dizin } : Dosya /Dizin sahibi
olan kullanıcı ve grubunu değiştirir. -R ile dizindeki tüm alt dizinleri /
dosyaları da değiştirir.
• Örnek : chmod -R mercan:workshop hesap/
– bu komut ile hesap dizinindeki tüm dosyaların sahibi mercan
kullanıcısı ve workshop grubu yapılıyor.
ls -a
• Linux, ismi . (nokta) ile başlayan dosyaları gizli dosya olarak
görür. Normalde bu dosyalar ls komutu ile görüntülemez.
• ls komutuna -a parametresi verilince gizli dosyaları da gösterir.
$ ls
matmul mpihello nCNN
$ ls -a
. .. .bash_history .lsbatch matmul .mpd.conf mpihello
nCNN .profile .ssh .viminfo .Xauthority
df -h
df [-h] : Bilgisayara bağlı diskler hakkında bilgi verir. -h ile
disk boyutlarını uygun birim cinsinden verir.
$ df
Filesystem
1K-blocks
/dev/sda3
151717124 25115228 118895116 18% /
/dev/sda1
none
101086
1990388
Used Available Use% Mounted on
15170
80697 16% /boot
0 1990388 0% /dev/shm
$ df -h
Filesystem
Size Used Avail Use% Mounted on
/dev/sda3
145G 24G 114G 18% /
/dev/sda1
99M 15M 79M 16% /boot
none
1.9G
0 1.9G 0% /dev/shm
du -s -h
du [-s] [-h] { dosya | dizin } : Dizin / Dosya 'nın diskte ne kadar yer
kapladığını gösterir.
-s : dizinin toplam boyunu göster, ayrı ayrı gösterme.
-h : boyut bilgisini uygun birimde göster.
$ du -h
14M
./dizin_naynisi_ipostaticO3
4.0K
./ctube_real
7.3G
./dizin_OPAK-50PARCA-CLAHE-CE
14M
./dizin_naynisi_
2.1M ./dizin_naynisi_nop_gcc
2.5M ./medi3
~/.profile ~/.bashrc
• Kabuk (shell) başlatılırken bazı dosyalar çalıştırılır. Hangi
kabuğu kullandığınıza göre farklı dosyalar çalıştırılır.
• Sistem geneli için /etc/profile dosyası sonrasında da kişisel
ayar dosyası çalıştırılır.
• Bash için, aşağıdaki dosyalardan sadece ilk bulunan çalıştırılır:
$HOME/.profile
$HOME/.bash_profile
$HOME/.bash_login
• Şayet kabuk bir login işlemi sonucu açılmamışsa sadece
$HOME/.bashrc dosyası varsa o çalıştırılır.
Kabuk (Shell) Ortamı
●
●
●
●
Kabuk (shell), yazdığımız komutları çalıştırabildiğimiz etkileşimli
bir ortam sunan bir programdır.
Linux /Unix'de birçok kabuk (shell) vardır: sh, bash, csh, tcsh,
fish vb.
Bash en yaygın kullanılan kabuktur.
Bash, sh kabuğunun yeniden GNU projesi kapsamında yeniden
yazılması ile oluşmuştur.
●
Sh'dan daha gelişmiş özelliklere sahiptir.
●
Bash'in sistem genelindeki ayarları /etc/profile dosyasındadır.
●
Kişisel ayarlarımız ise kendi ev dizinimizde duran bazı
dosyalarda durur.
Kabuk (Shell) Ortamı
• Linux /Unix kabuklarında (shell) pek çok ayar değişkenler
üzerinden yapılır. Bazı ayarlamalar için komutlar olsa da
pratikteki pek çok durum için değişkenler üzerinden ayarlama
yapılır.
• Özel değişkenlerin değerlerinin değişmesi kabuğun tamamen
farklı davranmasına yol açar.
• Mesela çalıştırmak istediğiniz komutun hangisi olduğunu
belirlenirken $PATH değişkenindeki dizinler, oradaki sıralarına
göre kontrol edilir. Bu dizinlerde komutu bulamazsa, komut
bulunamadı hatası verir, başka yerlere bakmaz.
Kabuk Değişkenleri
• Değişken isimleri harfle başlayıp; harf,
rakam yada “_” karakteri ile devam
edebilir.
• Ingilizce karakterler değişken isminde
kullanılabilir. Türkçeye özel karakterler isim
için kullanılamaz.
• Değişken isimlerinin BUYUK harflerden
seçilmesi adeti vardır ama mecburi
değildir.
• Harflerin büyük yada küçük olmasına
env
env yada printenv komutları ile o an tanımlı
değişkenleri ve değerlerini görebiliriz.
$ env
MANPATH=/SFS2/progs/intel/idbe/10.1.012/
man:/SFS2/progs/intel/cce/10.1.012/man
HOSTNAME=cn02
INTEL_LICENSE_FILE=/SFS2/progs/licens
es
TERM=xterm-color
SHELL=/bin/bash
export / echo
export DEGISKEN=deger
: şeklinde değişken
tanımlayabiliriz.
Örnek:
export FAYDASIZ=”Nerede burada orada?”
: terminale yazı
yazdırmaya yarar. Değişken değerini yada
istediğimiz her hangi bir yazıyı yazdırabiliriz.
Örnek:
echo [DEGISKEN] [yazılar]
echo $FAYDASIZ
$PATH Değişkeni
Komutların aranacağı dizin listesini tutar.
Dizinler arasını : karakteri ayırır.
Çalıştırmak istediğiniz komutun hangisi olduğunu belirlenirken $PATH
değişkenindeki dizinler, oradaki sıralarına göre kontrol edilir. Bu
dizinlerde komutu bulamazsa, komut bulunamadı hatası verir, başka
yerlere bakmaz.
$ export PATH=""
$ ls
-bash: ls: No such file or directory
which
$ echo $PATH
/RS/progs/intel/impi/3.1/bin64 :/RS/progs/intel/
Compiler/11.1/069/bin/intel64 :/RS/progs/intel/
Compiler/11.1/069/bin/intel64 :/usr/bin :/bin :/usr/local/bin :/local/bin
:/sbin :/usr/sbin :/usr/ ucb :/usr/sbin :/usr/bsd :/usr/bin :/bin :/usr/local/bin
:/local/bin :/sbin :/usr/sbin :/usr/ucb :/usr/ sbin :/usr/bsd
:/RS/progs/LSF/gui/2.0/bin :/RS/progs/ LSF/perf/1.2/bin :/usr/bin :/bin
:/usr/ local/bin :/local/bin :/sbin :/usr/sbin :/usr/ucb :/usr/sbin :/usr/bsd
:/RS/progs/LSF/7.0/ linux2.6-glibc2.3-x86_64/etc
:/RS/progs/LSF/7.0/linux2.6-glibc2.3-x86_64/bin :/usr/kerberos/bin :/usr/
local/bin :/bin:/usr/bin :/RS/progs/LSF/7.0/ linux2.6-glibc2.3x86_64/bin/k3di :/AKDENIZ/ users/mercan/bin
which komut : Komutun hangi dizinden çalıştırıldığını
gösterir.
$ which ls
echo
echo [-n] [-e] [yazılar] : terminale yazı yazdırmaya yarar. -n ile
yazının sonunda aşağı satıra geçmez. -e ile \ ile başlayan özel
karakterleri tanır (kullanır).
Örnek:
echo ahmet ; echo ahmet
ahmet
ahmet
echo -n ahmet ; echo ahmet
ahmetahmet
echo -e \t1\t2\t3\t4
1
2
3
4
Yazı sınırlama (“)
“ karakteri ile içerisinde boşluklar bulunan bir yazı, tek bir kelime
gibi gruplanabilir.
Örnek:
mkdir ahmet mercan
ls
ahmet
mercan
mkdir “ahmet mercan”
ls
ahmet mercan
export AHMET=”ahmet mercan”
Yazı sınırlama (“) ve $ işareti
“ karakteri ile içerisindeki değişkenler ve bazı ifadeler çözümlenir.
Örnek:
export AHMET=”ahmet mercan”
mkdir “cem $AHMET” ; ls
cem ahmet mercan
• Fakat:
mkdir “$AHMETa aittir” ; ls
aittir
Çözüm:
–
mkdir “${AHMET}a aittir”
–
ls
ahmet mercana aittir
Yazı sınırlama (')
' karakteri ile içerisinde boşluklar bulunan bir yazı, tek bir kelime
gibi gruplanabilir. “ karakterinden farklı olarak değişkenler
çözümlenmez.
Örnek:
mkdir 'ahmet mercan'
ls
ahmet mercan
mkdir '$AHMET'
ls
$AHMET
Yazı sınırlama (`) yada $()
` karakteri ile içerisinde yazılanlar çalıştırılarak çıktıları değer
olarak alınır.
Örnek:
export LISTE=`ls dizin`
echo $LISTE
veli.doc veli.txt resim.jpg sarki.mp3 ses.mp3
Ya da:
export LISTE=$( ls dizin )
echo $LISTE
veli.doc veli.txt resim.jpg sarki.mp3 ses.mp3
Kaçış karakteri (\)
Özel anlamlalı karakterleri kullanmak için, \ karakteri ile onların
doğrudan kendi anlamları ile kullanabiliriz.
Örnek:
echo \*.mp3
*.mp3
Boşluk için:
mkdir ahmet\ mercan ; ls
ahmet mercan
Ya da kendi kendisi için:
echo \\ kulanimi
\ kullanimi
* işareti
* işareti ile “herhangi bir şey” demiş oluruz.
Mesela:
ls
veli.doc veli.txt resim.jpg sarki.mp3 ses.mp3
ls *.mp3
sarki.mp3 ses.mp3
ls veli*
veli.doc veli.txt
{ } işareti
{ } arasında liste verilebilir.
Mesela:
ls veli.{doc,txt}
veli.doc veli.txt
convert resim{.jpg,.png}
ls
resim.jpg resim.png
[ ] işareti
[ ] arasında aralık verilebilir.
Mesela:
ls dosya[1-7].txt
dosya2.txt dosya3.txt dosya6.txt
rm /var/log/messages.[1-9]
rm /tmp/tmp[0-9][0-9][0-9][0-9]
> işareti
Komutun ekrana yazacağını bir dosyaya kaydeder. Dosya varsa
onu silip üstüne kaydeder.
Mesela:
ls veli.{doc,txt}
veli.doc veli.txt
ls veli.{doc,txt} >veliler
ls *.mp3 >mp3listesi.txt
Bazen çıktıyı çöpe atmak isteriz:
ls mp3listesi.txt >/dev/null
>> işareti
Komutun ekrana yazacağını bir dosyaya kaydeder. Dosya varsa
mevcutları koruyup, en alta ilave eder. Dosya yoksa yeni bir
dosya oluşturur.
Mesela:
ls Dizin1/*.mp3 >>mp3listesi.txt
ls Dizin2/*.mp3 >>mp3listesi.txt
ls Dizin3/*.mp3 >>mp3listesi.txt
cat komutu
cat kendisine verilen dosyayı ekrana yazar. echo yazıyı yazar, cat
dosya içeriğini yazar.
Mesela:
ls Dizin1/*.mp3 >>mp3listesi.txt
ls Dizin2/*.mp3 >>mp3listesi.txt
ls Dizin3/*.mp3 >>mp3listesi.txt
cat mp3listesi.txt
more ve less komutu
more ve less komutları ile bir dosyanın içeriği görüntülenebilir.
less more'dan daha fazla özelliğe sahiptir. Ancak daha eski olan
more daha yaygındır.
Mesela:
ls Dizin1/*.mp3 >>mp3listesi.txt
ls Dizin2/*.mp3 >>mp3listesi.txt
ls Dizin3/*.mp3 >>mp3listesi.txt
more mp3listesi.txt
head ve tail komutları
head komutu dosyanın başından n adet satırı görüntüler.
tail komutu dosyanın sonundan n adet satırı görüntüler.
Mesela:
head -10 mp3listesi.txt
tail -5 mp3listesi.txt
Dikkat
Çok Önemli !
Satır İşleme
sort komutu
sort kendisine verilen dosyayı sıraya dizerek ekrana yazar. -n ile
sayısal sıralama yapar. -r ile ters sıralama yapar. -k ile başlangıç
kelimesi yerine istenilen sütundaki kelimelere göre sıraya dizer.
Mesela:
sort mp3listesi.txt
Bir sarki.mp3
Bir Sezen Aksu Sarkisi.mp3
Muazzez Abaci.mp3
Sezencik.mp3
sezen aksudan türküler.mp3
grep komutu
grep kendisine verilen dosyayı ekrana yazarken verilen kritere göre
eleme yapar. -v ile kritere uymayanları gösterir. -i ile büyük/küçük harf
ayırmadan filtreler:
grep Sezen mp3listesi.txt
Sezencik.mp3
Bir Sezen Aksu Sarkisi.mp3
grep -i Sezen mp3listesi.txt
Sezencik.mp3
Bir Sezen Aksu Sarkisi.mp3
sezen aksudan türküler.mp3
grep -v root /etc/passwd
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
daemon:*:1:1:System Services:/var/root:/usr/bin/false
grep komutu
--color ile kritere uyanları renkli gösterir. -r ile alt dizinleri de arar.
-n ile bulduğu dosyanın adını ve satır numarasını da yazar.
160.75.90.50 ifadesini /etc dizininde aratalım:
grep -nr --color 160.75.90.50 /etc
/etc/httpd/access:33: Server 160.75.90.50
/etc/httpd/logs/pma-error_log.2:1: host 160.75.90.50 is missing
/etc/httpd/logs/pma-error_log.2:8: host 160.75.90.50 is missing
RegEx (Regular Expressions)
Aranacak bir ifadeyi (metni) sabit/kesin/net bir şekilde
yazamadığımızda ama belli şartlara uyan metinleri ifade etmek
istediğimizde kullanabileceğimiz bir standartdır.
Mesela, Büyük B harfi ile başlayan herşey demek için:
B.*
.
herhangi bir karakter demektir. B.N BiN B?N B1N
*
kendisinden önceki ifadenin 0 ila sonsuz sayıda tekrarı
H* H HH HHHHHHHH
[]
içerisinde aralık verilir.
dosya[0-9]
dosya1 dosya9
^
Satır Başı ^Ahmet Satırın başında Ahmet olan demek
$
Satır Sonu ^$ Satır Boş demek
RegEx (Regular Expressions)
|
| karakterinin sağı yada solundaki demektir.
Ahmet|Mehmet
\
Mehmet
RegEx'de özel karekterleri yazmak için
12\$
\( \)
Ahmet
12$
(Satır sonunda 12 değil!)
içerisinde verilen ifadeyi başka yerde kullanmak için
\(dosya[0-9]\)
daha sonra \1 (yada kaçıncı ise \2 vb.)
*** RegEx vim editöründe de geçerlidir.
grep komutu
--color ile kritere uyanları renkli gösterir. -r ile alt dizinleri de arar.
-n ile bulduğu dosyanın adını ve satır numarasını da yazar. -e ile
yada -E ile verilen regex ifadesini uygular.
160.75.90.50 ifadesini /etc dizininde aratalım:
grep -nr --color '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
/etc
/etc/httpd/logs/admin-access_log.2:40826:10.0.30.9 - [03/Jan/2015:06:56:40 +0200] "GET /ld50_jobs.html HTTP/1.1"
200 27572
/etc/httpd/logs/admin-access_log.2:40827:10.0.30.9 - [03/Jan/2015:06:56:41 +0200] "GET /ld50_bhost.html HTTP/1.1"
200 141820
/etc/httpd/logs/admin-access_log.2:40828:10.0.30.9 - -
sed komutu
sed kendisine verilen dosyayı satır satır işleyerek -e yada -r ile
regex kurallarını uygular. Sonucu ekrana yazar. -i parametresi ile
dosya üzerinde değişiklik yapar.
Bul-Değiştir:
s/aranan/yenideger/g
Mesela:
sed -e 's/:/\t/g' /etc/passwd
root
x
0
0
/bin/sh
daemon
x
10
10
/usr/bin/false
nobody
x
77
10
/usr/bin/false
sed komutu
File0013
File1023
File99
İçeriği yukarıdaki gibi olan dosyadaki FileXXX ifadelerini XXXnolu-dosya şeklinde değiştirelim:
sed -r 's/File([0-9]*)/\1-nolu-dosya/g'
0013-nolu-dosya
1023-nolu-dosya
99-nolu-dosya
awk komutu
awk kendisine verilen dosyayı satır satır işleyerek istenilen
sıradaki kelimeleri yazar. -F ile sütun ayırıcı verilir. Satırı sütun
ayıracı ile sütunlara ayırır. Satırın tümü $0, ilk sütun $1, sonra $2,
$3 ... $NF şeklinde numaralandırılır.
Aslında çok gelişmiş bir dili vardır. Çok boyutlu diziler, matematik
fonksiyonları, döngüler, vb. Bir programlama dilinde olması
gereken her türlü özellik mevcuttur.
Mesela:
awk -F: '{print $1, $7}' /etc/passwd
root /bin/sh
daemon /usr/bin/false
nobody /usr/bin/false
awk komutu
İçinde Ahmet geçen satırları yazdırmak:
awk '/Ahmet/ {print $0}' liste.txt
Cem Ahmet Mercan 42
Kabuğu /bin/false ayarlı kullanıcılar:
awk -F: '$7=="/bin/false"{print $0}' /etc/passwd
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
İkinci sütunu para miktarı olan listedeki para değerlerin toplamı:
awk 'BEGIN{toplam=0;} {toplam+=$2;} END{print “Toplamı=”,toplam;}'
liste.txt
Toplamı= 3500
Dikkat
Satır İşleme
Sonu !
; işareti
Komutlar arasında ; konularak arkası arkasına çalışmaları
sağlanır.
Mesela:
ls veli.{doc,txt} ; mkdir ahmet ; ls
veli.doc veli.txt
ahmet veli.doc veli.txt
&& işareti
Komutlar arasında && konularak başarılı olunduğu sürece
arkası arkasına çalışmaları sağlanır.
Mesela:
mkdir ahmet && cd ahmet && mkdir iceride
tar xvfz ahmet.tgz && rm ahmet.tgz
& işareti
Çalıştırılan komutu arkaplana atar. Böylece yeni komut girilebilir
olur.
Mesela:
xterm &
xterm &
ls
xterm
*** Dikkat arka plana atılsa da kabuk kapatılınca kapatılır.
( ) ile gruplama
Çalıştırılacak komutun gruplar.
Mesela:
xterm & && xterm & && ls
-bash: syntax error near unexpected token `&&'
( xterm & ) && ( xterm & ) && ls
veli.doc veli.txt
| işareti
Komutlar arasında | konularak birinin çıktısının diğerinin girdisi
olması sağlanır. Pek çok komut bu tarz bir girdiyi kullanabilir.
Mesela:
ls | grep doc
veli.doc
cat mp3listesi.txt | grep Sam | sort -r
Sevval Sam.mp3
Samanyolu.mp3
bhosts -w | grep ok
cn02
cn08
history
: Terminalde geçmişte çalıştırılan
komutları listeler.
history
$ history
1 cd /RS/users/mercan/
2 ls -al /RS/users/mercan/
3 ls -al /RS/users/mercan/hbm514/
4 ls -al /RS/users/mercan/hbm514/
5 ls -al /RS/projects/hbm514/mercan
Geçmişte Arama
Ctrl-r
: Bu tuşlara basıldıktan sonra yazılan kelimeler geçmiş
listesinde aranır.
!kelime
: Kelime ile başlayan son komutu çalıştır.
!sayı
: Geçmiş listesindeki sayı nolu komutu çalıştır.
!!
: Geçmiş listesindeki son komutu getirir.
echo !!
!#
: Geçmiş listesindeki son komutun ilk kelimesi.
!^
: Geçmiş listesindeki son komutun ikinci kelimesi.
!$
: Geçmiş listesindeki son komutun son kelimesi.
Değişken işleme
export yazi=”ABCDEFG_ABCDEFGz”
echo ${yazi}
--> ABCDEFG_ABCDEFGz
3. karakterden sonrasını al:
echo ${yazi:3}
--> DEFG_ABCDEFGz
3. karakterden sonra 7 karakter al:
echo ${yazi:3:7}
--> DEFG_AB
Sondan 4 karakter al:
echo ${A:(-4)}
--> EFGz
Baştan en kısa A*F kısmını sil:
echo ${A#A*F}
--> G_ABCDEFGz
Baştan en uzun C*F kısmını sil:
echo ${A##A*F}
--> Gz
Değişken işleme
export A=”ABCDEFG_ABCDEFGz”
Sondan en kısa C*z kısmını sil:
echo ${A%C*z}
--> ABCDEFG_AB
Sondan en uzun C*z kısmını sil:
echo ${A%%C*z}
--> AB
Baştaki FG geçen ilk yeri xx yap:
echo ${A/FG/xx}
--> ABCDExx_ABCDEFGz
FG geçen tüm yerleri xx yap:
echo ${A//FG/xx}
--> ABCDExx_ABCDEFGz
export Sayi=3;
((Sayi=Sayi+4))
let Sayi=Sayi / 3
#Sonuc=2
convert komutu
Resim dosyasını çeşitli formatlara dönüştürür.
Mesela:
convert resim.jpg resim.png
Animasyon da yapabilir, Mesela animated gif için:
convert resim*.jpg resim.gif
Ya da video oluşturmak için:
convert resim*.jpg resim.avi
Dahası resim üzerinde değişik işlemler de yapabilir. Mesela
boyut değişikliği gibi:
convert resim.png -thumbnail 250x250 kucuk.jpg
Dahası
find komutu
Verilen dizindeki verilen şartlara uyan dosyaları bulur.
-name :aranması istenen dosya adı verilir.
-iname :büyük/küçük harf ayırımı olmadan isim verilir.
-type :dosya tipi vb. verilebilir. (d, f)
-exec :bulunan dosya üzerinde istenen komut çalıştırılır.
Burada {} yerine dosya adı konularak çalıştırılır.
-atime :erişim zamanı, normalde gün (s, m, h, d, w)
-mtime :değişme zamanı ,
-ctime :oluşturma zamanı,
-maxdepth :aranacak dizin derinliği
-size :dosya büyüklüğü,normalde byte (k,M,G,T,P)
find komutu, 2
-and :ve, şartları birleştirmek için
-or :or, şartları birleştirmek için
( ) :ile parametre gruplama yapılabilir.
! :değil, parametre tersi için.
-path :bash tipi ifadeler ile dosya adı (dosya[1-9] gibi)
-regex :regular expresion ile dosya adı
-iregex :büyük/küçük harf duyarsız regular expresion
-print : ekrana dosya adını yaz, normalde zaten yapar.
Parametrelere değer verilirken verilen değere tam eşit olması
gerekir. Ancak - ile verilenden az olanlar, + ile verilenden fazla
olanlar denebilir.
find komutu, 3
Mesela, / dizininde adının sonu mp3 olanları bul:
find / -name “*.mp3”
/mp3/Sevval Sam.mp3
/home dizininde 1gigabyte'dan büyük dosyaları bul:
find /home -size +1G
Bulunulan dizindeki adında core geçen dosyaları rm komutu ile
sil:
find . -iname “*core*” -exec rm {} \;
Bulunulan dizindeki 8 haftadan fazladır erişilmeyen ve 16
haftadan eski dosyaları göster:
find . \( -atime +8w -and -ctime +16w \) -print
for komutu
Verilen edeki her bir eleman için bir kez döngü çalıştırılır.
Mesela:
for i in *.jpg ; do echo $i; cp $i yedekdizini/ ; done
ahmet.jpg
resim.jpg
find . -iname *.c -exec cp {} /yedekdizini \;
limit.c
hesapla.c
for komutu 2
Mesela, :
for i in `awk '{print $1;}' /etc/passwd | grep -v root`
do
echo 'Kullanıcı:' $AD
tar cfz /yedek/${AD}.tgz /home/$AD
done
ahmet
ali
Uzantısı png olan dosyaları eps formatına çevir:
for i in *.png ; do convert $i ${i%png}eps ; done
Script dosyası
Bir dosyanın ilk satırı:
#!/bin/bash
İle başlıyorsa bu dosyadaki komutları bash ile çalıştır demektir.
İçerisine istediğimiz bash komutlarını yazarak istediğimiz işleri
yapan bir program yazabiliriz. # ile başlayan satırlar normalde
yorum satırıdır.
Bu dosyayı:
source ./dosya.sh
diyerek çalıştırabiliriz. Ancak çalıştırma hakkını verirsek:
chmod +x ./dosya.sh
Doğrudan da çalıştırabiliriz:
./dosya.sh
Script dosyasına parametre
Bir script çalıştırırken parametre verebiliriz:
./donustur.sh ./dizin jpg png
Sonrasında bu parametrelere $1 $2 $3 ... diyerek ulaşabiliriz:
#!/bin/bash
cd $1 && for i in *.$2
do echo “$i donusturuluyor.”
convert $i ${i%.${2}}.$3
done
echo “Bitti....”
if komutu ( man test )
if komutu ile şartlı işlemler yapabiliriz:
if [ a = b ]
then
echo “a b'ye esittir.”
else
echo “a b'den farkli”
fi
Burada [ ] parantezler mutlaka boşluklu yazılmalıdır.
[a=b] şeklinde yazılırsa hata oluşur.
if komutu testin sonucu 0 ise doğru, 1 yada başka bir sayı ise
yanlış olarak değerlendirir. C dekinden farklı!
if komutu – dosya testleri
-e ad
-f ad
-d ad
-s ad
-r ad
-w ad
-x ad
:ad isimli bir dosya/dizin var ise doğru.
:ad isimli sıradan bir dosya var ise doğru.
:ad isimli bir dizin var ise doğru.
:ad isimli bir dosya/dizin var ve 0 byte'tan büyükse.
:ad isimli bir dosya/dizin var ve okunabilir ise doğru.
:ad isimli bir dosya/dizin var ve yazılabilir ise doğru.
:ad isimli bir dosya/dizin var ve çalıştırılabilir ise.
Mesela:
if [ -d “$DIZIN” ] ;
then
cd $DIZIN ; #birşeyler yap
fi
if komutu – metin testleri
-z değer
-n değer
:değer 0 uzunlukta ise doğru.
:değer 0 uzunlukta değilse doğru.
değer
:değer NULL değilse doğru.
değer1 = değer2 :değer1, değer2'ye eşitse doğru.
değer1 != değer2 :değer1, değer2'ye eşit değilse doğru.
değer1 > değer2 :değer1, değer2'den büyükse doğru.
değer1 < değer2 :değer1, değer2'den küçükse doğru.
Mesela:
if [ “$DIZIN” = “/home/mercan” ] ;
then
cd $DIZIN ; #birşeyler yap
fi
if komutu – sayı testleri
n1 -eq n2
n1 -ne n2
n1 -gt n2
n1 -ge n2
n1 -lt n2
n1 -le n2
:n1 ve n2 eşit ise.
:n1 ve n2 eşit değil ise.
:n1, n2 'den büyük bir sayı ise.
:n1, n2 'den büyük yada eşit bir sayı ise.
:n1, n2 'den küçük bir sayı ise.
:n1, n2 'den küçük yada eşit bir sayı ise.
Mesela:
if [ “$DOSYASAYISI” -ge 12 ] ;
then
echo “Bir suru dosya var” ; #birşeyler yap
fi
if komutu – mantıksal birliktelik
ifade1 -a ifade2 :ifade1 ve ifade2 arasında ve(and) işlemi.
ifade1 -o ifade2 :ifade1 ve ifade2 arasında veya(or) işlemi.
! ifade
: tersi (not) işlemi. Doğru ise yanlış.
( ifade )
: gruplamak için, içi doğru ise doğru.
Mesela:
if [ ( “$DOSYASAYISI” -ge 12 ) -a ( “$SAY” -lt 36 ) ] ;
then
echo “Bir suru dosya var” ; #birşeyler yap
fi
until ve while komutuları
until
:test değeri yanlış olduğu sürece tekrar yap
until ( -z “$AD” )
do
#birşeyler yap
done
while
:test değeri doğru olduğu sürece tekrar yap
while read i j
do cp $i $j
done <dosyalistesi.txt
Crontab
crontab -e
#Dak. Saat Gün Ay Haftanın Günü
#0-59 0-23 1-31 1-12 0-6
# hergün saat 15:00'da çalış
0 15 * * * /root/saat15-oldu.sh
# hergün 8:30, 16:30, ve 22:30'da çalıştır.
30 8,16,22 * * * /RS/istatistik/istatistik_al.sh
# her 6 dakikada bir (60/10=6) çalış
*/10 * * * * /root/server_parca_degisimi.sh
# her pazar saat 3:00'da çalış
0 3 * * 0 /yedek/yedek-al.sh

Benzer belgeler

6_linux_komutlar

6_linux_komutlar mv -n { dizin | dosya } { hedefdizin | dosyayayeniisim } : Dizin / Dosya 'yı hedefdizin'e taşır, yada dosyayayeniisim adı ile taşır. -n ile var olan bir dosyanın üzerine yazma engellenir. $ mv dosy...

Detaylı