13 Aralık 2017 Çarşamba

Bazı yararlı komutlar

apt-get
Bu komut Ubuntu, Debian'da bulunur. İlginç bir şekilde bu komut hiç bir zaman restart etmeyi teklif etmez. Bu komut yerine daha görsel olan Ubuntu Software Center da kullanılabilir.

autoremove
Eğer paket ismi belirtilmezse kullanılmayan dependency paketleri kaldırır
sudo apt-get autoremove
Açıklaması şöyle
autoremove
       autoremove is used to remove packages that were automatically
       installed to satisfy dependencies for other packages and are now no
       longer needed.
Eğer paket ismi belirtilirse o paket ve ona bağlı dependency'leri kaldırır.
sudo apt-get autoremove packageA

clean
İndeksi temizler
sudo apt-get clean
install
Programı yükler
sudo apt-get install python
remove seçeneği
Yüklü programı kaldırır.
sudo apt-get remove python
Yüklü program kalktıktan sonra bazen dependency paketleri kalabiliyor. Dolayısıyla bu komut genelde şöyle kullanılır.
sudo apt-get remove python 
sudo apt-get autoremove
Bu iki komu yerine tek hamlede yapmak istersek şöyle yaparız.
sudo apt-get remove --auto-remove python
Açıklaması şöyle
--auto-remove
       If the command is either install or remove, then this option acts
       like running the autoremove command, removing unused dependency
       packages.

update seçeneği
Sadece indeksi günceller. Herhangi bir uygulamayı güncellemez.
sudo apt-get update
upgrade seçeneği
Update komutundan sonra çalıştırılır. Uygulamaları günceller.
sudo apt-get upgrade
awk
awk başlıklı yazıya taşıdım.
cp 
-r seçeneği
Dizin kopyalamak için kullanılır. Dizinler dosya sisteminde, farklı saklandıkları için komuta, dosya değil de dizin kopyalaması gerektiğini belirtmek için kullanılır.

cp -r dir1 copyDir1
cut
cut awk gibi satırı alanlara ayırır. Ancak awk'a göre kullanımı çok daha kolay bir komuttur.
-c(character) seçeneği
-c karakterler ile çalışır. -f ise fieldlar ile çalışır. Her iki seçenek birbirlerine çok benzerler.Örnek'te 6. karakter ve sonrası çıktı olarak veriliyor.
grep Path filename |cut -c6-
-d (delimiter) seçeneği
Cut ile satır belirtilen delimeter ile ayrılır. Örnekte delimeter boşluk olarak veriliyor ve 1,2,5,6. sütunlara erişiliyor.
cut -d" " -f1,2,5,6 infile.txt > outfile.txt
-f (field) seçeneği
Yukarıdaki örnekte -f ile erişilmek istenen field'lar veriliyor.
Eğer belli bir sütundan sonrasına erişmek isteseydik aşağıdaki gibi yapardık. Örnekte 2. sütundan sonraki herşey dahil ediliyor.
cut -d' ' -f2-

du
Disk usage komutu.

-c seçeneği
-c ile belirtilen her dizin ve altındaki dizinler ayrı ayrı ve en alttada toplam (grand total) olarak görmek mümkün.
du -ch /path/to/folder/

-s seçeneği
-s ile simple -h ile human readable çıktı verir
$ du -sh path/to/dir | awk '{print $1}'
118M
find
Konuyu find ve dir komutu başlıklı yazıya taşıdım.

grep
Konuyu grep komutu başlıklı yazıya taşıdım.

head
Head komutu dosyanın başındaki belirtilen sayıda satırı okumak için kullanılır. Örnek'te html ile başlayan tüm dosyalar kullanıcıya sorularak siliniyor.
for i in *; do if [ "$(head -n 1 "$i")" == '<html>' ]; then rm -i "$i"; fi; done  
ip komutu
ip komutu Linux'ta Routing tablolarını görmek, değiştirmek , tunnel ayarları gibi bir çok şey için kullanılır. Bu komut iptables ile karıştırılmamalı. İkisi farklı şeyler. Çoğu Linux'ta route komutu da tabloları düzenlemek için kullanılabilir. route komutunun çıktısı şöyle. ip route komutunun çıktısı ise daha farklı
% route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
1. Yeni Route eklemek
Kendi subnetimizde olmayan bir ip'yi belli bir arayüzden göndermek istiyorsak şöyle yaparız. Komutlarda genellikle subnet maskesi olarak /24 görülür.

ip route add 192.168.124.0/24 dev eth0

2. Default route eklemek
Şöyle yaparız
ip route add default via 192.168.2.1

Şimdi daha karışık bir çalışmaya bakalım. Elimizde şöyle bir ağ olsun. Node 1 ve Node 4 haberleşebilsinler istiyoruz.
Node1            Node2            Node3            Node4
eth[10.1.3.3]<-->eth[]            eth[10.1.2.1]<-->eth[10.1.2.2]
                 eth[10.1.1.3]<-->eth[10.1.1.2]
Önce tüm düğümlerde "IP Forwarding" etkin olmalı.
Node 1
Şunları ekleriz. Böylece 10.1.1 ve 10.1.2'ye giden tüm paketler 10.1.3.3 arayüzü ile gönderilir.
ip route add 10.1.1.0/24 via 10.1.3.3
ip route add 10.1.2.0/24 via 10.1.3.3
Node 2
Şunları ekleriz. Böylece 1.2'ye giden tüm paketler 10.1.1.3 arayüzü ile gönderilir.
ip route add 10.1.2.0/24 via 10.1.1.3
Node 3
Şunları ekleriz. Böylece 10.1.3'e giden tüm paketler 10.1.1.2 arayüzü ile gönderilir.
ip route add 10.1.3.0/24 via 10.1.1.2
Node 4
Şunları ekleriz. 
ip route add 10.1.3.0/24 via 10.1.2.2
ip route add 10.1.1.0/24 via 10.1.2.2

mv
Unix'te bu komut rename olarak çalışır.
perform actions equivalent to the rename() function
Bu işlem taşınan dosya aynı dosya sistemi üzerindeyse atomiktir. Eğer taşınan dosya başka bir cihaz üzerindeyse işlem atomik değildir. Atomik olmasının sebebi inode verisine değil file-system verisine değişiklik yapılmasıdır.
Dolayısıyla açılmış ve sonuna veri eklenmekte (append) olan bir dosya mv komutu ile aynı dosya sistemi üzerinde rahatlıkla taşınabilir.

notify-send
Ekran küçük bir pencere açar ve belirtilen metni yazar. Komutun bittiğini anlamak için kullanılabilir.
myscript.sh && notify-send 'DONE'

ps
ppid seçeneği
Verilen uygulamanın çocuklarını gösterir. Örnekte foo'nun çocukları bulunuyor.
ps --ppid $(pidof foo)
Bu komut yerine varsa pstree de kullanılabilir.

etime seçeneği
Uygulamanın başlama zamanını belirtir. Örnek:
LC_ALL=C ps -eo etime= $PIDS

route
route -p add 192.168.1.100 mask 255.255.255.255 10.0.1.100

rm
-f seçeneği
Dosyayı hiç bir uyarı vermeden siler
-f
       Do not prompt for confirmation. Do not write diagnostic messages or modify
       the exit status in the case of nonexistent operands. Any previous
       occurrences of the -i option shall be ignored.
-i seçeneği
Dosyayı onay alarak siler
-i
       Prompt for confirmation as described previously. Any previous occurrences
       of the -f option shall be ignored.

sort
-k seçeneği
Sıralanması istenen sütun belirtilir. Tek bir sütuna göre sıralama yapmak istiyorsak dikkat edilmesi gereken nokta sütun numarasını virgül ile ayırarak iki kere yazmaktır. Eğer bu yazılmazsa belirtilen sütundan satır sonuna kadar olan alana göre sıralama yapılır. Örnek'te sadece 2. sütuna göre sıralama yapılıyor.
sort -k2,2 <people.txt
Bu örnekte ise 9. sütundan satır sonuna kadar olan alanlar sıralanır.
sort -k9 -o <out.log> <in.log>
Eğer bir sütunun belli bir karaterine göre sıralamak istersek -ksütun.harfsırası şeklinde yazarız. Örnek'te 2. sütunun 3. karakterine göre sıralama yapılıyor. Harf sırası 1'den başlar.
sort -t' ' -k2.3 input

Eğer birden fazla sütuna göre sıralamak istersek  -k ile sütunları belirtiriz. 9. sütundaki iki değer eşit ise 14. sütundaki değer o da eşitse bu sefer 16. sütundaki değer göre sıralama yapılır.
sort -t '\t' -k9,9 -k14,14 -k16,16n
Birden fazla sütüna göre sırlama yapmanın bir diğer yolu ise sütunlaru virgül ile ayırarak vermek. Bu durumda 1,2,3. sütunlara göre sıralama yapılır.
sort -t$'\t' -k1,3


Locale Atama
Uygulama sistem locale'ini kullanır.
C programlama diline göre sıralama yapmak için
LANG=C sort test2.txt
C locale açıklaması aşağıda.
*** WARNING *** The locale specified by the  environment  affects  sort
   order.  Set LC_ALL=C to get the traditional sort order that uses native
   byte values.
-R seçeneği
Rastgele (random) sıralar. Örnek:
sort -R filename | head -n1

-t seçeneği
Field Seperator değerini belirler. Sütunlar normalde boşluk karakteri ile ayrılı şekilde beklenir. Örnek'te tab karakteri alan ayracı olarak kullanılıyor.
sort -t $'\t' 
-u seçeneği
unique olmasını sağlar. Çift sütunları eleriz.
cat input | sort -u -n

-V seçeneği
Portable bir seçenek değildir.
nimbox-apexer_1.0.0-12
nimbox-apexer_1.1.0-2
nimbox-apexer_1.1.0-1
nimbox-apexer_1.0.0-13 
şeklindeki metinleri versiyonları artacak şekilde sıralar. Örnek'te çıktı olarak en büyük versiyon olan nimbox-apexer_1.1.0.2 satırı verilir.
cat file.txt | sort -V | tail -n1
top
top komutu durduruluncaya kadar çalışır. Sadece bir kere çalışsın istiyorsak
top -i 1  
yapılmalı.

Top komutu ile hyperthreading her zaman karşımıza çıkıyor. Hyper-threading bir çekirdeğin aynı anda iki instruction setini çalıştırabilmesi demek. Dolayısıyla fiziksel olarak 4 çekirdek 8 tane işlemci olarak gösterilebiliyor. Artık sisteme daha hızlı bir çekirdek yerine daha fazla core eklenmesi tercih ediliyor.

S sütunu
Uygulamanın state'ini gösterir. S sleeping, R running anlamına gelir.
20. S  --  Process Status
   The status of the task which can be one of:
       D = uninterruptible sleep
       R = running
       S = sleeping
       T = traced or stopped
       Z = zombie

   Tasks  shown  as running should be more properly thought of as
   'ready to run'  --  their task_struct is simply represented on
   the Linux run-queue.  Even without a true SMP machine, you may
   see numerous tasks in this  state  depending  on  top's  delay
   interval and nice value.
Running uygulamaları parlak renkte göstermek için y tuşuna basılır. Tekrar basılırsa eski rengine döner.

y :Row-Highlight toggle
  Changes highlighting for "running" tasks.   For  additional
  insight into this task state, see topic 3a. DESCRIPTIONS of
  Fields, the 'S' field (Process Status).

  Use of this provision provides important insight into  your
  system's  health.   The only costs will be a few additional
  tty escape sequences.

touch
-t seçeneği
touch -t 03201600 myfile
ile Windows'ta access ve modification time 20 Nisan 16:00 olarak verilir.
03201600 şöyle okunur
-t STAMP
          use [[CC]YY]MMDDhhmm[.ss] instead of current time
ulimit
-f seçeneği
File sistem kotası belirtilir

#! /bin/bash
ulimit -f 1073741824   # 1GB
java ....
-n seçeneği
File descriptor sayısını sınırlar.
$ ulimit -n 3
$ echo > /dev/null
zsh: too many open files: /dev/null

-s seçeneği
Ne kadar stack kullanılacağı atanabilir.

wc
word count ile satır, harf gibi şeyler sayılabilir.
-m seçeneği
Karakter sayar. Örnek:

$ echo -n $variable | wc -m
which
Verilen dosya ismini path içinde bulmaya çalışır. Bulursa dosyanın yerini gösterir. Bazı komutlar shell built-in'lerdir. Bir komutu shell built-in olup olmadığını anlamak için type built-in komutu kullanılır.
$ type pwd
pwd is a shell builtin
$ which pwd
/bin/pwd

wget
Loglama ve I/O seçenekleri
-q seçeneği
Sessiz (quite) çalıştırır.

Download Seçenekleri
-A seçeneği
Uzantısı verilen dosyaları indirir.
wget -r -l1 -np -Ajpg,jpeg,png,bmp,gif http://codegolf.stackexchange.com/questions/$1
-c seçeneği (continue)
Dosyanın büyüklüğüne bakarak geri kalan byte'ları ister. Yani kaldığı yerden devam eder.
wget -c "https://cdn.sstatic.net/askubuntu/img/logo.png"

-O seçeneği
 Çıktı pipe ile başka komuta geçilir.
Örnek:
wget "http://api.icndb.com/jokes/random" -qO- | jshon -e value -e joke -u

-S seçeneği
Sunucu tarafından gönderilen HTTP Header bilgilerini yazar. Örnek:

$ wget -S http://api.audiotool.com/track/haunt_opaque/mixdown.mp3
  ... 
  HTTP/1.1 200 OK
  Server: nginx/1.5.6
  Date: Fri, 26 Sep 2014 22:34:20 GMT
  Content-Type: audio/mpeg
  Transfer-Encoding: chunked
  Connection: keep-alive
  Keep-Alive: timeout=65
  Access-Control-Allow-Origin: *
  Expires: Fri, 26 Sep 2014 22:34:20 GMT
  Cache-Control: no-cache, private, no-store
  Content-Disposition: attachment; filename="opaqity - Haunt (opaque).mp3"
  Pragma: no-cache
  X-Lift-Version: 2.4
  Length: unspecified [audio/mpeg]
  Saving to: `mixdown.mp3'

yes
Y veya belirtilen herhangi bir karekteri çıktı olarak verir. Örnekte iki çıktı arasına boşluk kullanmak için kullanılıyor
blank() { yes "" | head -n "$1"; }
blank 20
Yes programı sadece döngüden ibaret.
class A{static void Main(){for(;;)System.Console.WriteLine((char)('y'));}}







Hiç yorum yok:

Yorum Gönder