vim
Table of Contents
Ö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/bashterminal 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ı