Özet
Terminal üzerinden kullanılan en meşhur yazı düzenleme programı VIM hakkında komutlar ve bazı kullanışlı linux komutları
Script nasıl yazılır.
Dosya oluşturulur ve dosyanın başına terminalin yolu eklenir
#!/bin/bash
terminal komutlarını bu yolun altına yazınız.
daha sonra dosyanın iznini ayarlayınız. chmod +x dosya_ismi
terminal scriptini şu şekilde çalıştırılabilirsiniz. ./dosya_ismi
örnek bash scripti
!/bin/bash
echo "Adınzı giriniz: "
read isim
echo "Sifrenizi giriniz"
read sifre
if [[ ( $isim == "admin" && $sifre == "random" ) ]]; then
echo "Başarılı"
else
echo "Başarısız"
fi
VIM
Birden fazla dosya üzerinde çalışmak
$ vim *.txt # birden fazla txt ile dosyasını aynı anda açmanızı sağlar (eğer birden fazla dosya mevcut ise)
$ :wall veya :qall # bütün açık dosyalardan yaz veya çık komutudur.
$ vim -o *.txt # birden fazle txt dosyasını açar ve yatay düzlemde gösterir, dikey düzlem için -O parametresi kullanılara
$ :args *.txt # txt ile biten bütün dosyaları argument listesine aktarır.
$ :all # bütün dosyaları yatay düzlemde ayırır
$ CTRL-w # birden fazla pencere arasında gezmenizi sağlar
$ :split # aynı dosyayı iki farklı pencerede gösterir.
$ :split <acılacak_dosya> # dosyayı yeni bir pencerede açar
$ :vsplit # brden fazla pencereyi dikey komunda ayırır, tablolar için çok kullanışlıdır. ":set scrollbind " komutu ile açık dosyalar da aynı anda yukarı aşağı yapabilirsiniz.
$ :close # bulunduğunuz pencereyi kapatır
$ :only # bulunduğunuz pencere hariç diğerlerinin tamamını kapatır.
Hece Kontrolü & Sözlük
$ aspell -c <dosya> # verilen dosyada heceleri kontrol eder, terminal komutudur
$ aspell -l <dosya> # terminal komutu
$ :! dict <cumle> # cümlenin anlamını kontrol etmenizi sağlar
$ :! wn 'cumle' -over # cümlenin eş anlamlılarını gösterir
Dosyayı yazdırma
$ :ha # bütün dosyayı yazdırır
$ :#,#ha # (#,#) ile belirtilen alandaki metini yazdırır
Birleştime / Ekleme Komutu
$ :r <dosya_ismi> # açık olan dosya içerisine,
# aynı dizinde olan başka bir dosyayı eklemek için bu komut kullanılabilir,
# imlecin hizasından sonra ekleme yapar
Geri Alma / Yeniden Alma
$ u # en son yaptığınız değişikliği geri alır
$ U # yaptığınız bütün değişiklikleri geri alır
$ CTRL-R # geri alınmış bir kısmı yeniden getirmenizi sağlar.
Kopyalama & Yapıştırma
$ yy # imlecin bulunduğu satırı kopyalar, 2 satır kopyalamak için 2yy kullanılabilir.
$ p # kesilen/kopyalanan içeriği imleçten başlayacak şekilde yapıştırır
Silme/Kesme (NORMAL modda uygulanır. Yani Vim komut satırında değil. EXE modunda değil. )
$ x # imlecin üzerinde bulunduğu karakteri siler.
$ dw # imlecin bulunduğu kelimeyi sonuna kadar siler (Boşluklar dahil )
$ de # imlecin bulunduğu kelimeyi sonuna kadar siler (Boşluklar hariç )
$ cw # kelimenin geriye kalan kısmını siler ve sizi ekleme moduna alır, ekleme modundan ESC ile çıkabilirsiniz.
$ c$ # bulunduğu satırı tamamen siler ve sizi ekleme moduna alır ekleme modundan ESC ile çıkabilirsiniz.
$ d$ # imlecten itibaren satırı siler e
$ dd # satırı tamamen siler, imlecin nerede olduğunun önemi yoktur
$ 2dd # ileriki 2 satırı siler, benzer sekilde 3dd : uc satır siler, 4dd: dort satır siler, (imlecten bagımsız)
Koyma
$ p # kesilen/kopyalanan içeriği imleçten başlayacak şekilde yapıştırır
Dosya içerisinde arama (Vim) (bu kısımda genelde düzenli ifadeler kullanılır )
$ /aramak_istediğiniz_düzen # yazdığınız ifadeyi açık olan belge içerisinde arar ve hepsini işaretler
$ ?aramak_istediğiniz_düzen # yazdığınız ifadeyi açık olan belge içerisinde arar ama işaretlemez, n ile ileriki kelimeyi görebilirsiniz.
$ :set ic # kelimelerin büyük/küçük harf ayrımını ortadan kaldırır
$ :set hls # aranan ve bulunan kelimeleri vurgulu şekilde gösterir.
Düzenli ifadeler ile metin yönetimi
$ :s/harf1/harf2/ # harf1, harf2 ile değiştirilir fakat sadece ilk karşılaşmada yapılır
$ :s/harf1/harf2/g # bütün dosya içerisindeki harf1, harf2 ile değiştirilir.
$ :s/harf1/harf2/gc # yukarıdaki işlemin aynısını onay alarak yapmak için "c" eklenir
$ :#,#s/harf1/harf2/g # (#,#) arasındaki satırlarda bulunan harf1, harf2 ile değiştirilir.
$ :%s/harf1/harf2/g # tüm dosyadaki harf1 ifadesi harf2 ile değiştirilir.
$ :%s/\(harf1\)\(.*\)/\1/g # harf1 sonrakisindeki bütün satırları siler.
$ :%s/\(SL\dm\d\d\d\d\d\.\d\)\(.*\)/\1\t\2/g # SL1m12345.1 ve tanımı arasına TAB boşluğu ekler
$ :%s/\n/ifade/g #Satır verilen ifade ile değiştirilir.
$ :%s/\(^SL\dm\d\d\d\d\d.\d\t.\{-}\t.\{-}\t.\{-}\t.\{-}\t\).\{-}\t/\1/g # 5 ve 6.ncı TAB taki (5. Kolondaki), içeriği "{-}" ile degiştirir.
$ :#,#s/\( \{-} \|\.\|\n\)/\1/g # (#,#) verilen aralıkta ne kadar cümle olduğunu hesaplar
$ :%s/\(E\{6,\}\)/<font color="green">\1<\/font>/g # 6 dan fazla E geçen kısımları, HTML renkleri ile vurgular.
$ :%s/\([A-Z]\)/\l\1/g # Büyük harfleri, küçük harfler ile değiştirir, '%s/\([A-Z]\)/\u\1/g' , bu ise küçük harfleri büyük harfler ile değiştirir.
$ :g/ifade/ s/\([A-Z]\)/\l\1/g | copy $ # ifade yeni oluşturulan ifade ile değiştirilir eşdeğer olanlar copy $ ile yazdırılır.
HTML Düzenleme
-metini HTML formatına cevirme
$ :runtime! syntax/2html.vim # vim içerisinde bu komutu çalıştırınız.
Vim içerisinden terminal komutu çalıştırma
$ :!<terminal_komutu> <ENTER> # terminal komutunu vim içerisinden çalıştırır
$ :sh terminal ile vim arasında gezmenizi sağlar
Tablo düzenleyicisi olarak Vim’ i kullanmak
$ v # karakterleri seçmek için görsel mod başlatılır.
$ V # satırları seçmek için görsel mod başlatılır.
$ CTRL-V # blok görsel seçim yapmanızı sağlar.
$ :set scrollbind # aynı ayna ayrılan iki ayrı dosyada gezinti yapmanızı sağlar.
Vim ayarlarını değiştirmek
- .vimrc dosyası içerisindeki parametreler isteğinize göre değiştirilebilir.
Kullanışlı terminal komutları
$ cat <dosya1> <dosya2> > <sonuc> # dosya1 ve dosya2 yi sonuc dosyasina kopyalar ve sonuc dosyasini olusturur.
$ paste <dosya1> <dosya2> > <p_sonuc> # iki farklı kaynaktan gelen girdiyi, aralarında TAB boşluğu olacak şekilde aynı dosya (p_sonuc) içerisine yapıştırır.
$ cmp <dosya1> <dosya2> # iki dosyanın aynı olup olmadıgını size bildirir.
$ diff <dosya1> <dosya2> # iki dosya arasındaki farklılıkları gösterir
$ head -<numara> <dosya> # verdiğiniz numara kadar ilk X satırı yazdırır.
$ tail -<numara> <dosya> # verdiğiniz numara kadar son X satırı yazdırır.
$ split -l <numara> <dosya> # dosyanın satırılarını ayırır.
$ csplit -f out dosya_ismi "%^>%" "/^>/" "{*}" # dosya_ismini > den itibaren birçok farklı küçük dosyalar oluşturur.
$ sort <dosya_ismi> # dosya içerisindekileri sıralar -b argument kullanılırsa boşlukları yok sayar.
$ sort -k 2,2 -k 3,3n girdi_dosyası > cıktı # -k argument i kolon için, -n sayısal olarak sıralar ve tablo şeklinde kaydeder.
$ sort girdi_dosyası | uniq > cıktı # uniq komutu aynı olan verileri dahil etmez.
$ join -1 1 -2 1 <tablo1> <tablo2> # tablo1 ve tablo2 yi birleştirir, -1 dosya1, 1:kolon1; -2dosya2, col2.
$ sort tablo1 > tablo1a; sort tablo2 > tablo2a; join -a 1 -t "`echo -e '\t'`" tablo1a tablo2a > tablo3 # '-a <tablo>' : verilen tablonun bütün kayıtlarını yazdırır. Normalde yazdırma işlemi iki tabloda ortak olan kısımları yazdırır. '-t "`echo -e '\t'`" ->'
: TAB boşluğu kullanarak tabloları çıktı dosyasına yazdırır.
$ cat tablom | cut -d , -f1-3 # cut komutu : tablonun belirlenen kısımları alır, -d alanların nasıl ayrılacağını belirtilsiniz. -d : burada , olarak belirlenmiştir, normalde TAB boşluk, -f tablonun kolonlarını belirtir, kolon 1 den 3 e.
Kullanışlı tek satır komutlar
$ for i in *.input; do mv $i ${i/isim\.eski/isim\.yeni}; done # isim.eski adındaki dosyanın ismini, isim.yeni olarak değiştirir. Komutu test etmek için, do mv komutu önüne "echo" konulabilir.
$ for i in *.girdi; do ./uygulama $i; done # bir çok dosya için verilen uygulamayı çalıştırır.
$ for i in *.girdi; do komut -d /veri/../veri_tabanı -i $i > $i.out; done # komut for döngüsü içerisinde *.girdi üzerinde çalışır ve *.out dosyası oluşturur.
$ for i girdi *.pep; do hedef -db /usr/../veri_tabanı -seed $i -out $i; done # hedef in üzerinde for döngüsü çalıştırılır ve çıktı dosyası yazdırılır.
$ for j girdi 0 1 2 3 4 5 6 7 8 9; do grep -iH <ifade> *$j.seq; done #
verilen ifadeyi girdi > 10.000 dosyaya kadar arar ve ne kadar o ifade geçtiğini yazdırır.
$ for i in *.pep; do echo -e "$i\n\n17\n33\n\n\n" | ./program $i > $i.out; done # etkileşimli programı çalıştırır ve girdi/çıktı sorar.
Basit Perl Komutları
$ perl -p -i -w -e 's/ifade1/ifade2/g' girdi_dosyası # girdi dosyası içerisindekileri verilen ifadelere göre değişimini yapar. '-p' bu komut yedek bir dosya oluşturur
$ perl -ne 'print if (/ifade1/ ? ($c=1) : (--$c > 0)) ; print if (/ifade2/ ? ($d = 1) : (--$d > 0))' girdi_dosyası > cıktı_dosyası # ifade1 ve ifade2 içeren satırları ayrıştırır (parse eder.)
WGET (terminal üzerinden linki verilen dosya indirimini gerçekleştirir.)
$ wget ftp://ftp.itu.edu.tr.... # verilen linkteki dosya wget komutunun çalıştırıldığı dizine iner.
SCP (İki makine arasında güvenli kopyalama işlemi sağlar. )
Genel Kullanım.
$ scp kopyalanacak_dosya kopyalanacak_yer #
Örnekler
Sunucudan dosya kopyalamak için (bilgisayarınızın terminalinden)
$ scp kullanıcı@sunucu_ip:dosya_adı . # '.' en sona nokta koyulması, sunucu üzerindeki kopyalanacak dosyayı bulunduğunuz yere kopyalamasını sağlar.
Bilgisayarınızdan sunucuya kopyalama yapmak için. (Bilgisayar terminalinden)
$ scp resim.jpg kullanıcı@sunucu_ip:~/belgeler/resimler/
Sunucu üzerinde bulunan klasörü bilgisayarımıza kopyalamak için. (Bilgisayar terminalinden)
$ scp -r kullanıcı@sunucu_ip:dizin/ ~/Masaustu
Bilgisayar üzerinde bulunan klasörü sunucuya kopyalamak için. (Bilgisayar terminalinden)
$ scp -r klasör/ kullanıcı@sunucu_ip:dizin/
NFTP : (Dosya transfer işlemlerinizi kolay şekilde terminal üzerinden yapmanızı sağlar )
$ open ncftp
$ ncftp> open sunucu_url # sunucuya baglantı sağlanıyor..
$ ncftp> cd /root/Masaustu. # masaustune gecildi
$ ncftp> get resimler.gz # masaustunde bulunan resimler.gz indirildi.
$ ncftp> bye # gule gule mesajı alındı