Linux konsol uygulamaları ve BASH programlama Aydın ÜSTÜN Selçuk Üniversitesi e-posta: austun@selcuk.edu.tr 04.07.2010
İçerik Giriş 1 Giriş Temel kavramlar SSH araçları 2 3 Editörler Bilim ve mühendislik uygulamaları Yerel uygulamalar
Tanımlar Giriş Temel kavramlar SSH araçları Linux Linux çekirdeğine dayalı Unix benzeri işletim sistemine verilen genel ad Linux sunucu Linux kullanıcılarına (ya da genel olarak istemcilere) dosya, yazıcı paylaşımı, veritabanı, DNS, web, ftp vb. hizmetleri sunması amacıyla özel olarak tasarlanmış donamım ve yazılım sistemi SSH (Secure SHell) Güvenli kabuk anlamına gelir. telnet, rlogin gibi ağ üzerindeki uzak bir sunucuya bir başka bilgisayardan erişim olanağı sağlar BASH (Bourne Again SHell) Özgür yazılım projesi (GNU) kapsamında hazırlanmış bir Unix kabuğudur. Kısaca komut satırı yorumlayıcısı olarak tanımlanabilir. Betik (Script) Bir veya birden fazla uygulamayı çalıştıran, sonuçlarını denetleyen ve belli çıkışlara yönlendiren program
PuTTY: Giriş Temel kavramlar SSH araçları Özgür SSH/Telnet istemcisi
PuTTY: Giriş Temel kavramlar SSH araçları Özgür SSH/Telnet istemcisi
SSH Secure Shell Transfer Temel kavramlar SSH araçları
SSH Secure Shell Transfer Temel kavramlar SSH araçları
Kullanıcılar ve sunucuya erişim Linux kullanıcıları yönetici tarafından belirlenmiş (veya uygun görülmüş) kullanıcı adı ve şifre yardımıyla sisteme giriş yapabilirler login as: aydin aydin@193.255.245.202 s password: aydin@galileo:~$ Bu şekilde sisteme giriş yapan kullanıcı, kendisi için diskte ayrılmış ev dizininde (/home/username) kabuk uygulamalarını çalıştırabilir Sisteme ilk girişten sonra güvenlik için kullanıcının passwd komutuyla şifresini değiştirmesi önerilir. Şifreler en az 8 karakter ve sayı-harf kombinasyonuyla oluşturulmalıdır aydin@galileo:~$ passwd Changing password for aydin (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully aydin@galileo:~$ Kabuktan çıkış ve SSH bağlantının kesilmesi için exit komutunun yazılması yeterlidir
Komut satırı ve komut çalıştırma Komut satırı kabuk uygulamalarının çalıştırıldığı ve kabuk istemi işareti $ ile başlayan satırdır aydin@galileo:~$ Kabuk uygulamaları kabuk istemi işaretinden hemen sonra yazılan komut ile çalıştırılır. İsteğe bağlı olarak bir komutu seçenekler ve argümanlar izler. Aşağıda geçerli veya belirtilen bir dizin içerisindeki dosyaları listeleyen ls komutunun üç değişik çalıştırılma biçimi gösterilmektedir. aydin@galileo:~$ ls Mail cptlib geosoft journals.xls aydin@galileo:~$ ls -l total 23208 drwx------ 2 aydin aydin 4096 Mar 19 16:06 Mail drwxr-xr-x 2 aydin aydin 4096 Mar 19 16:02 cptlib drwxr-xr-x 5 aydin aydin 4096 Mar 19 16:06 geosoft -rw-r--r-- 1 aydin aydin 137728 Mar 19 16:09 journals.xls aydin@galileo:~$ ls -l cptlib total 8 -rw-r--r-- 1 aydin aydin 329 Mar 19 16:02 DEM_poster.cpt -rw-r--r-- 1 aydin aydin 2579 Mar 19 16:02 cd-d.cpt aydin@galileo:~$
Kabuk işaretleri ve bilinmesi gerekenler İşaret Görevi komut Komut satırını çalıştırır ; Aynı komut satırında komutları birbirinden bağımsız çalıştırır && Aynı komut satırında komutları birbirine bağımlı çalıştırır ~ Kullanıcının ev dizinine karşılık gelir Bir komutun standart çıktısını diğer komuta girdi olarak gönderir > Standart çıktıyı bir dosyaya veya aygıta yönlendirir < Bir dosya veya aygıttan gelen girdiyi komuta yönlendirir >> Standart çıktıyı bir dosyaya veya aygıtın sonuna yönledirir * Dosya adları içindeki herhangi bir karakter sınıfıyla eşleşir? Dosya adları içindeki herhangi bir karakter ile eşleşir [] Dosya adları içindeki olası bir karakter sınıfıyla eşleşir Önemli Kabuk işlemlerinde büyük-küçük harf ayrımı vardır Komut, dosya ve dizin isimlerinde boşluk, yıldız ve Türkçe harflerden mutlaka kaçınılmalıdır
Dizin değiştirme komutları Neredeyim? aydin@galileo:~$ pwd /home/ aydin Bulunduğum dizinin altındaki bir başka dizine gitmek istiyorum aydin@galileo:~$ cd cptlib aydin@galileo :~/ cptlib$ Aynı işlemi mutlak konum tanımlayarak da yapabilirim aydin@galileo:~$ cd /home/aydin/ cptlib aydin@galileo :~/ cptlib$ Bir üst dizine çıkmak istiyorum aydin@galileo :~/ cptlib$ cd.. aydin@galileo:~$ Doğrudan başlangıç ev dizinime gitmek istiyorum aydin@galileo :~/ texsablon/susem$ cd ~ aydin@galileo:~$
Dizin-dosya oluşturma, kopyalama, taşıma ve silme Geçerli dizinde dizin1 adında yeni bir dizin oluşturalım aydin@galileo:~$ mkdir dizin1 Dosya ve dizin (alt dizinleriyle birlikte) kopyalama aydin@galileo:~$ cp jeosoft/src/ matris. cpp dizin1/ aydin@galileo:~$ cp -r jeosoft/inc/. veya taşıma (. geçerli dizin anlamındadır) aydin@galileo:~$ mv jeosoft/src/ matris. cpp dizin1/ aydin@galileo:~$ mv -r jeosoft/inc/. Sembolik bağ oluşturma aydin@galileo:~$ ln -s ~/ jeosoft/inc/ matris.h aydin@galileo:~$ ls -l lrwxrwxrwx 1 aydin aydin 20 Jul 2 16:29 matris.h -> jeosoft/inc/ matris.h Bir veya birden fazla dosyayı (eşleştirme işaretleri kullanarak) silmek için aydin@galileo:~$ rm sil.dat abc*. txt İçi boş bir dizini silmek için rmdir, belirtilen bir dizini alt dizinleriyle birlikte silmek için rm -r dizinadi aydin@galileo:~$ rmdir dizin1/ aydin@galileo:~$ rm -r dizin2/ rm komutunu kullanırken iki kez düşünülmelidir. Çoğu zaman silinenlerin geri getirilmesi şansı yoktur.
Yardım ve bazı bilgi edinme komutları Komut Açıklaması ve örneği help Kabuk komutlarının listesini verir man komut Komut hakkında sisteme kayıtlı kullanım kılavuzudur. Çıkış için q date Sistem tarih ve zamanını verir $ date Fri Jul 2 20:20:50 EEST 2010 du -sm Geçerli dizinin MB cinsinden diskte ne kadar yer kapladığını verir $ du -s 12768. history Son girilen komutların listesini verir hostname Bilgisayarın konak adını verir $ hostname galileo who Sistemde o an çalışan kullanıcılar hakkında bilgi verir $ who aydin pts/0 2010-07-02 20:23 (195.174.24.109) uname -a Sistem hakkında bilgi verir $ uname -a Linux galileo 2.6.18-5-amd64 #1 SMP Tue Dec 18 21:39:26 UTC 2007 x86 64 GNU/Linux
Dosyalarla çalışma (bilgi alma) putty.png PNG 456x436 456x436+0+0 DirectClass 35 Komut Açıklaması ve örneği file dosya Dosya hakkında bilgi verir $ file linux.tex linux.tex: LaTeX 2e document text identify dosya Resim dosyaları hakkında bilgi verir $ identify putty.png more dosya Dosya içeriğini sayfa sayfa gösterir. Çıkış için q less dosya İçeriğe daha detaylı bakış. Çıkış için q cat dosya İçeriği standart çıktıya (ekrana) döker head dosya İlk 10 satırını ekrana döker tail dosya Son 10 satırını ekrana döker cut -c M-N dosya Her satırda M den ve N ye (dahil) kadar olan karakterleri e grep -e harita dosya İçeriğinde harita kelimesi geçen satırları ekrana döker grep -v harita dosya İçeriğinde harita kelimesi geçmeyen satırları ekrana döker sort dosya Satırları alfabetik olarak sıralar sort -nr dosya Satırları sayısal olarak sıralar wc dosya Satır, kelime ve karakter sayısını verir wc -l dosya Satır sayısını verir
Dosyalarla çalışma (arama ve sıkıştırma) Komut Açıklaması ve örneği locate dosya Veritabanında dosya kelimesi geçen kayıtlar aranır find Belirtilen dizin ve alt dizinlerinde doğrudan arama. Örnekler $ find. -print grep tex $ find / -name tex $ find / -name tex 2> /dev/null $ find / -name tex* 2> /dev/null zip zip biçiminde sıkıştırma (alt dizinleri de kapsaması için -r) $ zip -r dosya.zip dizin/ unzip zip biçimini açma $ unzip dosya.zip tar Unix/Linux sistemlerinin en bilindik sıkıştırma (ve açma) aracı c sıkıştır, x aç, t gözat (sadece biri) z tar.gz biçiminde açma, sıkıştırma ve göz atma j tar.bz2 biçiminde açma, sıkıştırma ve göz atma $ tar -cvf dosya.tar dizin/ $ tar -czvf dosya.tar.gz dizin/ $ tar -cjvf dosya.tar.bz2 dizin/ $ tar -xzvf dosya.tar.gz
Ağ araçları Giriş ftp dosya transfer protokolü. Sunucu adı, kullanıcı ve şifre gerektirir aydin@galileo:~$ ftp atlas. selcuk.edu.tr Connected to atlas. selcuk.edu.tr. 220 Microsoft FTP Service Name ( atlas. selcuk.edu.tr:aydin): austun 331 Password required for austun. Password: 230 User austun logged in. Remote system type is Windows_NT. ftp> quit 221 wget http/ftp üzerinden dosya indirme aracı aydin@galileo:~$ wget -q ftp:// ftp. ulakbim. gov.tr/ssh/ SSHSecureShellClient -3.2.9. e aydin@galileo:~$ ls SSH* SSHSecureShellClient -3.2.9. exe ssh güvenli kabuk bağlantısı. Sunucu adı, kullanıcı ve şifre gerektirir aydin@aydin - laptop:~$ ssh aydin@193.255.245.202 aydin@193.255.245.202 s password: aydin@galileo:~$ lynx interaktif web ve dosya tarayıcısı aydin@aydin - laptop:~$ lynx ftp:// ftp. ulakbim.gov.tr aydin@galileo:~$
Çıktı yönlendirme (>, >>, örnekleri) pics dizin listesini dosyaya yönlendirelim ve ilk üç satırını ekrana dökelim aydin@galileo:~$ ls -l pics > liste aydin@galileo:~$ head -n 3 liste total 5316 -rw-r--r-- 1 aydin aydin 55789 2010-03-19 16:06 austun.tif -rw-r--r-- 1 aydin aydin 2501377 2010-03-19 16:06 selcuk-logo.eps Bir önceki dosyanın sonuna, kaç satır bulunduğu bilgisini ekleyelim ve son iki satırı ekrana dökelim aydin@galileo:~$ wc -l liste >> liste aydin@galileo:~$ tail -n 2 liste -rw-r--r-- 1 aydin aydin 240 2010-03-19 16:06 selcuk- univeristy.tex 7 liste liste isimli dosyanın çıktısını grep komutuna girdi olarak gönderelim ve içinde.tif geçen satır(lar)ı bulalım aydin@galileo:~$ cat liste grep.tif -rw-r--r-- 1 aydin aydin 55789 2010-03-19 16:06 austun.tif pics isimli dizindeki uzantısı eps olan dosyaları bulalım aydin@galileo:~$ ls pics/*. eps pics/selcuk-logo.eps pics/selcuk -logol.eps sonuçların yan yana değil alt alta verilmesini istiyorsak aydin@galileo:~$ ls pics/*.eps tr \n pics/selcuk-logo.eps pics/selcuk- logol.eps
ile veri işleme Giriş Kabuk uygulamalarıyla elde edilen sonuçların bazı durumlarda satır satır taranarak başka biçimlere dönüştürülmesi (işlenmesi) istenir. Sütunlar halinde birbirinden ayrılmış verilerin işlenmesinde awk güçlü bir yorumlayıcıdır ve genellikle tek satırda yazılan komut bu iş için yeterli olur. İçinde son deprem bilgilerinin yer aldığı bir dosyadan ilk iki satır aydin@galileo:~$ cat deprem.dat head -n 2 2010.07.02 23:30:23 38.8477 27.9203 5.4 2.6 -.- -.- AKHISAR 2010.07.02 19:28:15 40.0053 36.4622 5.0 2.6 -.- -.- CAMLIBEL Boşluk karakteri ile birbirinden ayrılmış 9 sütundan 3, 4 ve 9. sütun aydin@galileo:~$ cat deprem.dat awk {print $3,$4,$9} head -n 2 38.8477 27.9203 AKHISAR 40.0053 36.4622 CAMLIBEL Şiddeti 3 den fazla ($6>3) olanların yeri ve zamanı aydin@galileo:~$ awk {if($6 >3) print $1,$2,$3,$4,$9} deprem.dat 2010.07.01 10:52:45 40.6273 34.9480 CORUM 2010.07.01 08:03:53 38.4522 39.1315 GOZELI- SIVRICE Konum bilgisini karşı enlem ve boylam olarak iki basamaklı gösterelim aydin@galileo:~$ awk { printf("%.2 f %.2f %-20s\n",90- $3,$4,$9)} deprem.dat 49.37 34.95 CORUM 51.55 39.13 GOZELI- SIVRICE
Editörler Giriş Editörler Bilim ve mühendislik uygulamaları Yerel uygulamalar Editör Editör metin dosyalarının oluşturulması, düzenlenmesi ve dosya sisteminde kaydedilmesi işini yapan programdır. Her işletim sistemin temel bilşenlerinden biridir. Metin editörleriyle veri, konfigrasyon ve kaynak kodları içeren dosyalar düzenlenir. Kullanımı: aydin@galileo :~$ editoradi [ secenekler] dosya_adi Editör adı nano mcedit vim Açıklaması ve kullanımı Linux a yeni başlayanların kullanabileceği en uygun editör Ctrl tuşlarını kullanır (çıkış ctrl+x) Kişisel (kullanıcıya özgü) ayarlar için $ cp /etc/nanorc ~/.nanorc $ nano ~/.nanorc renklendirmeyi düzenleyebilirsiniz Midnight Commander in editörüdür. Her sistemde olmayabilir. Menu tuşlarını kullanır (çıkış F10 veya esc+0) Unix/Linux kullanıcılarının gözde editörü Türkçe yardım http://tr.pardus-wiki.org/vim adresinden alabilirsiniz veya $ vimtutor diyerek interaktif bir eğitime hemen başlayabilirsiniz
Editörler Bilim ve mühendislik uygulamaları Yerel uygulamalar Uygulama geliştirme ve bilimsel hesaplama g++ kendi yazdığınız c/c++ kaynak kodlarınızı derlemenizi sağlar. Aşağıdaki kodu deneme.c dosyasına yazalım aydin@galileo:~$ nano deneme.c #include <stdio.h> int main() { printf(" Merhaba Dunya\n"); return 0; } aydin@galileo:~$ g++ deneme.c -o deneme aydin@galileo:~$ ls deneme* deneme deneme.c aydin@galileo:~$./ deneme Merhaba Dunya octave matlab benzeri hesaplayıcı ve geliştirme ortamı aydin@galileo:~$ octave octave:1> format long octave:2> a=6387137; f=1/298.257222101 f = 0.00335281068118232 octave:3> b=a*(1- f) b = 6356752.31414036 octave:4> exit
Editörler Bilim ve mühendislik uygulamaları Yerel uygulamalar galileo da jeodezi-kartografya uygulamaları Komut Açıklaması ve kullanımı ell2gkr Elipsoidal koordinatlardan Gauss-Kruger koordinatlara ell2xyz Elipsoidal koordinatlardan global kartezyen koordinatlara gkr2ell Gauss-Kruger koordinatlardan elipsoidal koordinatlara geodesic Elipsoit yüzeyinde 2. temel ödev çözümü (Vincenty ye göre) hgt2xyz SRTM hgt dosyasından boylam, enlem ve yük. (jeoitten) bilgisine harm2hgt GGM katsayılarından gravite alanı ve yükseklik sistemlerine harm2und GGM katsayılarından jeoit yüksekliği, çekülsapması bileşenlerine meanstd Bir dizinin istatistiksel özelliklerini verir nmea2gga GPS NMEA mesajından navigasyon bilgisine nmea2kml GPS NMEA mesajından kml (Google Earth) biçimine sph2xyz Yermerkezli küresel koordinatlardan kartezyen koordinatlara srtmhgt Enlem ve boylam bilgisi bilinen bir nokta için SRTM yuksekliği xyz2ell Global kartezyen koordinatlardan elipsoidal koordinatlara xyz2sph Global kartezyen koordinatlardan yermerkezli küresel koordinatlara Komutların kullanımı hakkında bilgi almak için $ komut -h
Son Giriş Editörler Bilim ve mühendislik uygulamaları Yerel uygulamalar Teşekkürler... Sorular???