bash: screen Komutu ve İpuçları (screen Command and Tips)

Nedir, ne işe yarar bu screen komutu?

Tek bir terminal penceresi kullanarak birden fazla işlem yapmak (komut işletmek) isteyebilirsiniz. Örneğin ssh ile bir makineye bağlandınız ve aynı ssh oturum ile (farklı bir terminal ile tekrar ssh bağlantısı oluşturmadan) aynı anda birden fazla işlem yapmak istiyorsanız (örneğin bir yandan bir betik çalıştırıp bunun stdout’unu bir dosyaya yönlendirdiniz, bunun bitmesini beklerken bir yandan da tailf ile bu dosyanı izlemek gibi) screen bu işimizi fazlasıyla görecektir. Can alıcı daha güzel bir özelliği de terminal’den kopsanız/çıksanız bile screen ile açtığınız oturum devam edebilir. Bu güzel özellik ne zaman işimize yarayabilir? Örneğin gün ssh ile bir sunucuya bağlandınız ve yaklaşık 2 gün sürecek, ön-tarafta (background job olarak değil) yapılan işlerini izlemek istediğiniz betik çalıştırmak  istiyorsunuz ve aynı zamanda başka işlerde yapmak istiyorsunuz. Normalde ssh bağlantınız koptuğunda bu betiğin çalışması da duracaktır ve diğer işlerde gidecektir. Bu işler bir screen oturumunda yapılmış olsaydı bahsedilen işleri aynı ayda hepsini yapabilirdiniz ve hatta bu ekranları olduğu gibi bırakıp ssh bağlantısını kopartıp tekrar girdiğinizde ekranları açık ve işlemleri devam eder bir şekilde bulabilirsiniz.

 Kurulum

sudo apt-get install screen

Kullanım

screen [options]

Bazı parametre kullanımları:

  • screen –ls: screen oturumlarını listeler
  • screen –r: var olan screen oturumuna bağlanır
  • screen –r oturum-id: oturum listesinden oturum-id’li screen oturumuna bağlanır
  • screen –dR: açık screen oturumu varsa bağlanır; yoksa yeni oturum başlatır
  • screen -S oturum-id -X quit: oturum-id’li screen oturumunu sonlandırır

screen komutları

screen komutları screen oturumunda iken uygulanır. Her komut Ctrl-a ile başlar. Aşağıdaki komutlardan önce de Ctrl-a tuşlarına basılmalı.

Komutlar:

  • c: yeni pencere yaratır
  • a: son iki pencere arasında geçiş yapar
  • n: sonraki pencereye geçer
  • p: bir önceki pencereye geçer
  • N: N numaralı pencereye geçer
  • : etkileşimli pencere listesi gösterir
  • w: etkileşimsiz pencere listesi gösterir
  • A: pencereye isim vermek için kullanılır
  • K: mevcut pencereyi sonlandırır
  • d: screen oturumundan bağlantıyı keser (d: detach, * oturum devam eder)
  • r: bağlantısı kesilmiş (sonlandırılmamış) screen oturumuna bağlanır (r: reattach)
  • [: kopya modu (scrollback buffer)
  • ]: kopyalanan metni yapıştırır (scrollback buffer)
  • :password: screen oturumuna parola koyar
  • :password none: parola korumalı screen oturumundan paroları kaldırır (password komutu verildikten sonra none yazılmalı)
  • :sessionname name: oturum adını isimlendirmeye yarar (* aynı makinede birden fazla screen ile çalışılıyorsa oturumu isimlendirmek çok faydalı oluyor)
  • :quit: screen oturumunu sonlandırır
  • :number N: mevcut screen penceresini numaralandırır

 Açılış mesajını kapatma

/etc/screenrc’deki aşağıdaki satır açılmalı:

startup_message off

 screen pencerelerinde hardstatus bar’ı çıkarma

/etc/screenrc’ye aşağıdaki satırlar eklenmeli:

hardstatus off
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W} %c %{g}]'

screen oturumunu sonlandırma

shell’den ve screen oturumu içinden olmak üzere 2 yöntem ile screen oturumu sonlandırılabilir.

1. yöntem ile (shell):

screen -ls
There is a screen on:
 7991.pts-4.opsy (11/29/2013 09:20:00 AM) (Detached)
1 Socket in /var/run/screen/S-erman.

screen -S 7991 -X quit
screen -ls
No Sockets found in /var/run/screen/S-erman.

2. yöntem ile (screen oturumunda iken):

Ctrl-a :quit

Açık kalmış (attached) oturuma bağlanma

screen -dr 1111

 

Kaynaklar:

Vim İpuçları (vim tips)

Kopyalama-Yapıştırma

  • Clipboard’a içerik kopyalama: “+y[movement] veya :%y+
  • Clipboard’dan içerik yapıştırma: “+p
  • Bir dosyanın tüm içeriğini clipboard’a kopyalama: gg”+yG

Case sensitive-Case insensitive

  • Kalıcı case insensitive ayarlama: :set igorecase veya :set ic
  • Kalıcı case sensitive ayarlama: :set noigorecase veya :set noic
  • Tümü küçük harf girilerek yapılan aramalarda case insensitive davranmasını sağlama: :set smartcase
  • Case insensitive arama yapma: /search\c
  • Case sensitive arama yapma: /search\C

Lowercase-Uppercase

  • Bir satırdaki tüm harfleri küçük yapma: :s/\(.*\)/\L\1/
  • Bir satırdaki tüm harfleri büyük yapma: :s/\(.*\)/\U\1/
  • Bir satırdaki ilk harfi büyük yapma ve diğerlerini küçük yapma: :s/^\(.\)\(.*\)/\u\1\L\2/
  • Bir satırdaki kelimelerin ilk haflerini büyük diğerlerini küçük yapma: :s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g

Karışık

  • J: mevcut satırı sonraki satırlara birleştirir
  • K: linux’de cursor altındaki kelimenin man sayfasını getirir
  • set nrformats=: bu vim’i onların başında sıfır olduğuna bakmadan tüm sayıları 10’luk olark algılamasını sağlar
  • ,: f{chart},  F{char}, t{char} veya T{char} ile yapılan aramayı tersine doğru tekrarlar
  • ;: f{chart},  F{char}, t{char} veya T{char} ile yapılan arama tekrarlar
  • F{char}: satırdaki bir karakteri geriye dönük arar
  • f{char}: satırdaki bir karakteri ileriye dönük arar
  • s: cl gibi cursor altında karakteri siler ve insert moduna geçer
  • S: ^C gibi satır başına konumlanır, satırı siler ve insert moduna geçer
  • C: c$ gibi mevcut yerden satır sonuna kadar siler ve insert moduna geçer
  • vit: açılmış ve kapanmış tag’lar (<div></div> gibi) arasındaki metni seçer
  • vim -u NONE -N: vim’i .vimrc’siz(-u NONE) ve vi uyumlu olmadan (-N)
  • Tek seferde birden fazla komut çalıştırma: :%s/erman/ERMAN/g | %s/gulhan/GULHAN/g
  • :Helptags: dizinler için help tag dosyalarını oluşturur (* örneğin :help ile arattığınız bir şeyi bulmuyorsa bu komut verilmeli)
  • V125gg: mevcut satırdan yukarıya doğru 125 nolu satıra kadar görsel olarak seçer
  • V125G: mevcut satırdan aşağıya doğru 125 nolu satıra kadar görsel olarak seçer
  • :e $MYVIMRC: .vimrc dosyanızı açar
  • :e $MYGVIMRC: .gvimrc dosyanızı açar
  • :so $MYVIMRC: .vimrc dosyasını tekrar yükler
  • ^M karakterlerini temizleme: :%s/<Ctrl-V><Ctrl-M>//g
  • Vim’i varsayılan svn editörü olarak atama: export SVN_EDITOR=vim
  • Dosyanın karakter kodlamasını öğrenme :set fileencoding
  • Kursörün altındaki karakterin Ascii/Unicode değerini öğrenme: ga veya :as veya :ascii
  • Vim ile açılan son dosyayı açmak: alias lvim=”vim -c \”normal ‘0\””
  • Substitution syntax: :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
  • Tüm satırların başına satır numarası ekleme: :%s/^/\=line(“.”).”- “/g
  • Ortam değişkenlerini gerçek değerleri ile değiştirme: :%s/\$USER/\=expand($USER)/g
  • Php dosyasında syntax hatası kontrolü: :! php5 -l reports.php
  • Bir satırı etiketleme ve ona gitme:
    • etiketleme: m{letter} veya :ma {letter}
    • gitme: ‘{letter}
  • Etiketlenmiş satırı kopyalama: y'{letter}
  • Dosyanın adını gösterme: :echo @%
  • Açılıp-kapanmış (‘, (, {, [, vs.) karakterlere gitme:
    • sonrakine gitme: %
    • öncekine gitme: [{char}
  • :abbr proglang programming language: Yazarken “proglang” kısaltmalarını otomatik olarak “programming language” olarak çevirir
  • U: mevcut satırda değişiklikleri geri alır
  • g+, g-: metin değişikliklerini ileri ve geri alır
  • :0;/echo: echo geçen ilk satırı bulur
  • :/echo/+1: ilk echo geçen satırdan bir sonraki satır
  • :.+5: mevcut satırdan sonraki 5. satır
  • :,+7s/echo/print: mevcut satırla birlikte sonraki 6 satırıdaki echo’ları print’e çevirir (uzun hali: :.,.+7/echo/print)
  • :s/echo/print/ 3: mevcut satırdaki ve sonraki 2 satırdaki echo’ları print’e çevirir
  • :1d 5: mevcut  ve sonraki 4 satırı siler
  • :set paste: clipboard’dakini kopyalarken olduğu gibi kopyalar (kopyalamadan önce bu komut çalıştırılmalıdır [fazladan indent’leri ekleme problemini çözer])
  • :edit: mevcut dosyayı tekrar yüklemek için de kullanılır

Window / split / vsplit

  • :resize 10: pencereyi 10 satırlık ayarlar
  • :res +10: pencerenin yüksekliğine 10 satırlık yükseklik ekler
  • :vertical res 10: pencerenin genişliğini 10’luk yapar
  • Ctrl-w + / Ctrl-w –: split window yüksekliğine 1 satır ekler/çıkarır
  • Ctrl-w > / Ctrl-w <: vsplit window genişliğine 1 satır ekler/çıkarır
  • 5 Ctrl-w +: window yüksekliğine 5 satır ekler
  • Ctrl-w =: split window genişliklerini eşitler
  • Ctrl-w _: vsplit window yüksekliğini maksimum ayarlar

Zoom

  • zt: mevcut satırı en üste çeker (zt: zoom top)
  • zb: mevcut satırı en alta çeker (zb: zoom bottom)
  • zz: mevcut satırı ortaya çeker

* zoom’lama komutları komut modunda yazılmalı