it-swarm-tr.com

En sevdiğiniz komut satırı özellikleri veya püf noktaları nelerdir?

Unix/Linux için komut satırı özelliklerinizi ve püf noktalarını paylaşın. Mümkünse Shell/distro agnostik kalmaya çalışın. Takma adları, tek satırları, klavye kısayollarını, küçük Kabuk komut dosyalarını vb.

93
cmcginty

Bu bu cevap 'da belirtilen !! Numarasında biraz genişler. Aslında unutulmaya meyilli tarihle ilgili bir sürü komut var (insanlar bıçaklanma eğilimindedir) Up Bunun yerine 100 kez yazdıklarını bildikleri bir komutu aramak için).

  • history komutu, bir olay işaretleyicisinin solda olduğu son çalıştırılan komutların bir listesini gösterir
  • !N, Olay belirleyici N ile ilişkili komutun yerini alacak
  • !-NN yerine geçecek inci en son komut; Örneğin. !-1 En yeni komutun yerini alacak, !-2 En yeni ikinci komutun yerini alacaktır.
  • Diğer cevapta belirtildiği gibi, !!, !-1 İçin son komutu hızlı bir şekilde değiştirmek için kısaltmadır
  • !string, string ile başlayan en son komutun yerine geçecek
  • !?string?, string içeren en son komutun yerine geçecek

Sonuçları tanımlamak için ! Geçmiş komutuna sözcük belirleyicileri eklenebilir. İki nokta üst üste olayı ve Word işaretleyicilerini ayırır, ör. !!:0. Olay belirleyicisi !!, Bir Word işaretçisi kullanılırken yalnızca ! Olarak kısaltılabilir, bu nedenle !!:0, !:0 İle eşdeğerdir.

  • !:0 Yürütülen komutu alacak
  • !:1 İlk argümanı alır (ve !:2 İkincisini vb.)
  • !:2-3 İkinci ve üçüncü bağımsız değişkenleri alacak
  • !:^ İlk argümanı almanın başka bir yoludur. !:$ Sonuncuyu alacak
  • !:* Tüm bağımsız değişkenleri alacak (ancak komutu değil)

Değiştiriciler ayrıca, her biri iki nokta üst üste işareti bulunan bir ! Geçmiş komutuna eklenebilir. Herhangi bir sayı üzerine yığınlanabilir (örneğin !:t:r:p).

  • h - Temel dosya adına sırala
  • t - Yalnızca temel dosya adı
  • r - Dosya adı uzantısına sırala
  • e - Yalnızca dosya adı uzantısı
  • s/search/replacement - search öğesinin ilk oluşumunu replacement ile değiştir
  • gs/search/replacement - search'in tüm tekrarlarını replacement ile değiştir
88
Michael Mrozek

bash - önceki satırın son parametresini ekle

alt-. şimdiye kadarki en yararlı tuş kombinasyonu, denemek ve görmek, nedense kimse bunu bilmiyor.

eski son parametreleri seçmek için tekrar tekrar basın.

bir an önce kullandığınız argüman/dosyaya daha fazla şey yapmak istediğinizde harika.

64
chillitom

Benim favorim

man 7 ascii

Basit ve çok kullanışlı.

   Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
   ────────────────────────────────────────────────────────────────────────
   000   0     00    NUL '\0' (null character)   100   64    40    @
   001   1     01    SOH (start of heading)      101   65    41    A
   002   2     02    STX (start of text)         102   66    42    B
   003   3     03    ETX (end of text)           103   67    43    C
   004   4     04    EOT (end of transmission)   104   68    44    D
   005   5     05    ENQ (enquiry)               105   69    45    E
   006   6     06    ACK (acknowledge)           106   70    46    F
   007   7     07    BEL '\a' (bell)             107   71    47    G
   010   8     08    BS  '\b' (backspace)        110   72    48    H
   011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
   012   10    0A    LF  '\n' (new line)         112   74    4A    J
   013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
   014   12    0C    FF  '\f' (form feed)        114   76    4C    L
   015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
   016   14    0E    SO  (shift out)             116   78    4E    N
   017   15    0F    SI  (shift in)              117   79    4F    O
   020   16    10    DLE (data link escape)      120   80    50    P
   021   17    11    DC1 (device control 1)      121   81    51    Q
   022   18    12    DC2 (device control 2)      122   82    52    R
   023   19    13    DC3 (device control 3)      123   83    53    S
   024   20    14    DC4 (device control 4)      124   84    54    T
   025   21    15    NAK (negative ack.)         125   85    55    U
   026   22    16    SYN (synchronous idle)      126   86    56    V
   027   23    17    ETB (end of trans. blk)     127   87    57    W
   030   24    18    CAN (cancel)                130   88    58    X
   031   25    19    EM  (end of medium)         131   89    59    Y
   032   26    1A    SUB (substitute)            132   90    5A    Z
   033   27    1B    ESC (escape)                133   91    5B    [
   034   28    1C    FS  (file separator)        134   92    5C    \  '\\'
   035   29    1D    GS  (group separator)       135   93    5D    ]
   036   30    1E    RS  (record separator)      136   94    5E    ^
   037   31    1F    US  (unit separator)        137   95    5F    _
   040   32    20    SPACE                       140   96    60    `
   041   33    21    !                           141   97    61    a
   042   34    22    "                           142   98    62    b
   043   35    23    #                           143   99    63    c
   044   36    24    $                           144   100   64    d
   045   37    25    %                           145   101   65    e
   046   38    26    &                           146   102   66    f
   047   39    27    '                           147   103   67    g
   050   40    28    (                           150   104   68    h
   051   41    29    )                           151   105   69    i
   052   42    2A    *                           152   106   6A    j
   053   43    2B    +                           153   107   6B    k
   054   44    2C    ,                           154   108   6C    l
   055   45    2D    -                           155   109   6D    m

   056   46    2E    .                           156   110   6E    n
   057   47    2F    /                           157   111   6F    o
   060   48    30    0                           160   112   70    p
   061   49    31    1                           161   113   71    q
   062   50    32    2                           162   114   72    r
   063   51    33    3                           163   115   73    s
   064   52    34    4                           164   116   74    t
   065   53    35    5                           165   117   75    u
   066   54    36    6                           166   118   76    v
   067   55    37    7                           167   119   77    w
   070   56    38    8                           170   120   78    x
   071   57    39    9                           171   121   79    y
   072   58    3A    :                           172   122   7A    z
   073   59    3B    ;                           173   123   7B    {
   074   60    3C    <                           174   124   7C    |
   075   61    3D    =                           175   125   7D    }
   076   62    3E    >                           176   126   7E    ~
   077   63    3F    ?                           177   127   7F    DEL

Bu web sitesine bir göz atın commandlinefu.com .

Peteris Krumins'in bu dört makalesine blogunda da bakabilirsiniz.

49
Moeb

Son komutu root olarak çalıştır:

Sudo !!
46
Alex B

Bu bir "hile" olarak sayılır emin değilim, ama insanlar standart readline kısayol tuşlarından çok habersiz görünüyor. Kabuklarda özel kullanım:

  • Ctrl+U - Geçerli satırı kes
  • Ctrl+Y - Birlikte bir çizgi yapıştırın Ctrl+U
  • Ctrl+L - Ekranı temizle ve geçerli satırı yeniden çiz
  • Ctrl+G - Yeni bir hat alın ve mevcut hattı terk edin
42
Michael Mrozek

CTRL+R önceden çalıştırılan komutları aramak/etkinleştirmek için BASH'de (~/.bash_history içeriği).

Bu genellikle çok yardımcı olur. Bu takma adı çalıştırmak, PWD'yi 8000 numaralı bağlantı noktasında HTTP (dizine eklenmiş) üzerinden sunacaktır:

alias webserver="python -m SimpleHTTPServer"

Her zaman koştuğum ve çok hızlı bir şekilde spaz edip yazdığım için, bu takma adlar muhtemelen en çok kullandığım (ciddi):

alias maek=make
alias mkae=make
alias meak=make
alias amka=make
alias akme=make

Ve muhtemelen en sık kullandığım BASH parçası upload dediğim basit bir script. Linode'um için herhangi bir içeriği karıştırmak için kullanıyorum ve ortaya çıkan HTTP URL'sini panomuza kopyalar (orta tıklama). IRC'deki kişilere yapıştırmak için çok yararlı:

scp -r $* [email protected]$Host:public_html && {
    URL="http://$Host/~$user/$(basename $1)"
    echo "$URL"
    xselection -replace PRIMARY "$URL"
}

Sadece bir çift. Çok daha sonra yayınlayabilirim, işe geri dönmeliyim!

36
Aaron Bockover

diff manuel olarak geçici bir dosya oluşturmadan iki komutun çıktısı (bash):

diff <(ls dir1) <(ls dir2)
31
Alex B

Oldukça basit, ama insanlar bilmiyor gibi görünüyor, bir önceki dirse dönüyor:

cd -
30
Robert Swisher

Destek Genişletme :

Küme ayracı genişletme, rastgele dizelerin üretilebileceği bir mekanizmadır.

Sıkıcı çizgileri değiştirmenize izin verir:

mv loong/and/complex/file/name loong/and/complex/file/name.bacukup

daha kısa bir örnekle

mv loong/and/complex/file/name{,backup}

diğer bazı kullanımlar

# to display the diff between /etc/rc.conf and /etc/rc.conf.pacsave
diff /etc/rc.conf{,.pacsave}

# to list files in both /usr/share and /usr/local/share
ls /usr/{,local}/share 

Aritmetik Genişleme :

Aritmetik genişleme, aritmetik bir ifadenin değerlendirilmesine ve sonucun ikamesine izin verir. Aritmetik genişleme formatı:

$((expression))

İfade, çift tırnak içine alınmış gibi kabul edilir, ancak parantez içindeki çift tırnak özel olarak ele alınmaz. İfadedeki tüm jetonlar parametre genişletme, dize genişletme, komut değiştirme ve tırnak kaldırma işlemlerinden geçer. Aritmetik açılımlar yuvalanabilir.

$ a=1
$ b=2
$ echo $(( a+(b*2) ))
5
29
Stefan

Bu genellikle başlangıç ​​komut dosyamda (.bashrc, .profile, ne olursa olsun)

shopt iyilik, yorumları kontrol et:

shopt -s cdspell        # try to correct typos in path
shopt -s dotglob        # include dotfiles in path expansion
shopt -s hostcomplete   # try to autocomplete hostnames

Tuş vuruşlarını kaydeden bir takma ad: mkdir ve cd içine:

mkcd () { mkdir -p "[email protected]" && cd "[email protected]"; }

Son olarak, tar sözdizimini ezberlemekten vazgeçtim, yani:

extract () {
    if [ -f $1 ] ; then
        case $1 in
            *.tar.bz2)  tar xjf $1      ;;
            *.tar.gz)   tar xzf $1      ;;
            *.bz2)      bunzip2 $1      ;;
            *.rar)      rar x $1        ;;
            *.gz)       gunzip $1       ;;
            *.tar)      tar xf $1       ;;
            *.tbz2)     tar xjf $1      ;;
            *.tgz)      tar xzf $1      ;;
            *.Zip)      unzip $1        ;;
            *.Z)        uncompress $1   ;;
            *)          echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}
29
Sygo

Bana birçok tuş vuruşu sağlayan iki bash işlevi.

Her başarılı cd'den sonra otomatik olarak bir ls yapın:

function cd {
    builtin cd "[email protected]" && ls
}

N seviye yukarı git:

# Usage .. [n]
function .. (){
    local arg=${1:-1};
    local dir=""
    while [ $arg -gt 0 ]; do
        dir="../$dir"
        arg=$(($arg - 1));
    done
    cd $dir #>&/dev/null
}
21
Maik

Genellikle arama yapmak istemeden önce komut satırının yarısında olduğumdan (bash'da CTRL-R) .bashrc dosyamda aşağıdakiler var

bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward

Bu, cd yazdığımda yukarı/aşağı tuşlarına basarsam, cd'lediğim tüm seçenekleri görebileceğim anlamına gelir. Temelde bunu sık kullanılan dirs için kullanıyorum. "Cd w" gibi ve ben de çok kullandığım tüm çalışma alanlarından geçiyorum.

17
mendicant

Bana çok zaman kazandıracak bir şey pushd/popd komutları. Bu adamlar bir dizin yığını oluşturmanıza ve yazmayı çok azaltmanıza izin verir:

/foobar/ > pushd /src/whatever/foo/test
/foobar/src/whatever/foo/test > make run
/foobar/src/whatever/foo/test > popd
/foobar/ > make
17
jacksonh

screenkomut . Temel olarak geri döndüğünüzde komut satırı oturumunuzu kaydeder. Bir tür pencere yöneticisi gibi bir terminal yöneticisi. Bu şekilde, tek bir terminal oturumunda, devam eden birden çok sanal terminaliniz olabilir. Çok havalı.

Biri screen kullanıyorsa, bu Kabuk işlevi (.bashrc) son derece kullanışlıdır:

function scr {
    if screen -ls | grep -q Main; then
         # reattach to Main: 
         screen -xr Main
    else
         # name session "Main":
         screen -S Main
    fi
   }

scr yazdığınızda, ana oturumunuzun var olup olmadığını kontrol eder ve eklenir. Aksi takdirde yaratacaktır.

14
user394

Özellikle bash'ta uzun bir komut satırı düzenlemeniz gerekiyorsa

^X^E (Ctrl-X Ctrl-E) 

bunu düzenleyicide açar ($ EDITOR).

Zsh'de bunu .zshrc'ye ekleyerek aynı davranışı elde edebilirsiniz:

autoload edit-command-line
zle -N edit-command-line
bindkey '^X^e' edit-command-line 
13
redacted

Hızlı bir daktilo iseniz, bunlar işe yarar:

alias grpe='grep --color=tty'
alias gpre='grep --color=tty'
alias rgep='grep --color=tty'
alias gerp='grep --color=tty'

Bu makro, bir çıktı sütununun toplamını hesaplamanıza yardımcı olur: dosya boyutları, baytlar, paketler, tek yapmanız gereken eklemek istediğiniz sütunu belirtmektir:

total ()
{
        if [ x$1 = x ]; then set `echo 1`; fi
        awk "{total += \$$1} END {print total}"
}

Örneğin, böyle bir argüman kullanmadan, ilk sütunun toplamını ekler:

du | total

Argümanı sağlarsanız, bu sütunu toplar, örneğin, bu size/tmp içindeki tüm C # dosyaları tarafından kullanılan toplam bayt sayısını verir:

ls -l /tmp/*cs | total 5

Bazen bir ikili dosyayı (örneğin cat/bin/ls) yanlışlıkla görüntülediğiniz için konsolunuz dağınık hale gelir, terminali bu Shell işleviyle geri yükleyebilirsiniz:

restaura ()
{
    Perl -e 'print "\e)B";'
}

Ben ls dosya sınıfını ayırt etmek için karakterler kullanmak ve aynı zamanda benim editörü (yedekleme dosyaları ~ karakteri ile biten) tarafından oluşturulan yedek dosyaları gizlemek gibi:

alias ls='ls -FB'
12
miguel.de.icaza
alias s='Sudo'
alias r='rake' # i'm a Ruby developer
alias ..='cd ..' # although with autocd feature for zsh this comes packed.

s'yi unuttuğumda favorilerimden biri:

$ s !! # last command with super user priviledges
11
Eimantas

Bir komut stdin girdisini alırsa, <filename. Bu komutun herhangi bir yerinde görünebilir, bu nedenle bu satırlar eşdeğerdir:

cat filename
cat <filename
<filename cat

Bu, ifadeyi satırın sonuna yerleştirmenize izin verdiği için grep için özellikle yararlıdır, böylece bir grep komutunu vurarak hızlı bir şekilde değiştirebilirsiniz. Up, dosya adını geçmek için sola kaydırmanıza gerek kalmadan:

<filename grep 'expression'
10
Michael Mrozek

CDPATH dizin dizinini ayarlamak için PATH kullanabilirsiniz; cd foo ve geçerli dizinde foo yoksa, Kabuk CDPATH içindeki foo içindeki dizinlerin her birini kontrol eder ve ilk dizine geçer buluntular:

export CDPATH="/usr"
cd bin # switches to 'bin' if there is one in the current directory, or /usr/bin otherwise
9
Michael Mrozek
vi `which scriptname`

Çünkü bir şeyin nerede yaşadığını bilmiyorsan ve sen de umursamıyorsun.

9
Matt Simmons

ve işareti. Komutunuzu arka plana koyar, böylece yazmaya devam edebilirsiniz.

$> Sudo updatedb &

Birlikte çalışıyoruz ve bir süre sonra görüyorsunuz:

[1] 17403

Ve işleminiz bitti! Sonlanmalarını beklemeniz gerekmeyen şeyler için harika.

9
user394

Sekme tamamlama. Her yolun tüm karakterlerini yazmak zorunda olsaydınız ne kadar kötü olurdu?

8
user394

Bunu .bashrc dosyamda var

#shortcut for CTRL+C and CTRL+V
alias c-c='xclip -sel clip'
alias c-v='xclip -o -sel clip'

function find-all() {
    python -c "import re
import sys
for i in re.findall('$1', sys.stdin.read()):
    if type(i) == type(''):
        print i
    else:
        print i[0]"
}

Panodaki html kaynak koduna sahip olduğum ve kullandığım tüm bağlantıları bulmak istediğimde

c-v | find-all 'href="([^"]*)"' | c-c

Ve panodaki tüm url'lerim var

Bende bu fonksiyon var

function lsq(){
    ls -lh [email protected] | tr -s ' ' | cut -d' ' -f5,8
}

hangi ekran boyutu (okunabilir) ve dosya adı.

alias temp='cat /proc/acpi/thermal_zone/THRM/temperature'

bu takma ad gösteri sıcaklığı için

function separate() {
    python -c "import sys,re; print '$1'.join(re.split('\s*', sys.stdin.read().strip()))";
}

bu fonksiyon ile ürün veya argüman toplamını hesaplayabilirim.

alias sum='separate + | bc'
alias product='separate * | bc'

function split-join() {
    python -c "import sys,re; print '$2'.join(re.split('$1', sys.stdin.read().strip()))";
}

Bu, normal girdiyi regex ile ayrılmış ve ardından sonuca katılan yararlı bir işlevdir.

function factorial() {
    seq -s* $1 | bc
}

faktöriyel fonksiyon

function wiki() { Dig +short txt $1.wp.dg.cx; }

Bu işlev DNS üzerinden wiki metnini görüntüler

Ayrıca üç renk fonksiyonum var

function blue() {
    echo -e "\x1b[34m\x1b[1m"[email protected]"\x1b[0m";
}

function green() {
    echo -e "\x1b[32m\x1b[1m"[email protected]"\x1b[0m";
}

function red() {
    echo -e "\x1b[31m\x1b[1m"[email protected]"\x1b[0m";
}

function md5check() {
    test `md5sum $2 | cut -d' ' -f1` = "$1" && green [OK] || red [FAIL]
}

Bu işlev md5 karma dosyasını doğrular.

bu belirli bir kod için hata mesajı gösterecektir

function strerror() { python -c "import os; print os.strerror($1)"; }

İle tüm mesajları yazdırabilirsiniz

alias all-errors='for i in `seq 131`; do echo -n "$i: "; strerror $i; done'
7
jcubic

Son monte edilen cihazı çıkar:

mount /media/whatever
...
u!mo

!mo, mo ile başlayan son komuta kadar genişler (en azından bash'ta). Bazen ortada mv yapar, bu yüzden u!m sık çalışmaz.

7
Roberto Bonvallet

Başka bir yararlı ZSH hilesi:

Bir komutun çıktısını dosya olarak kabul edin:

emacs =(hg cat -r 100 somefile)

Bu, sözdizimi vurgulanmış görüntüleme için Mercurial izlenen bir dosyanın emac'larda eski bir sürümünü açar. Bu olmadan, hg revert, hg archive veya hg cat geçici bir dosyaya çıktı.

Tabii ki, bu dosyaları açan herhangi bir program ve standart çıktıya yazdırılan herhangi bir program ile çalışır.

6
Matthew Flaschen

ZSH'ye özgü bir özellik, alias the -s bayrağı:

alias -s ext=program

Belirli bir uzantıda son ek takma adı varsa, bu uzantıyla doğrudan bir dosya yürütebilirsiniz ve ZSH verilen programı başlatır ve dosya adını bağımsız değişken olarak iletir. Yukarıdaki takma ad geçerliyse, bu satırlar eşdeğerdir:

/path/to/foo.ext
program /path/to/foo.ext
5
Michael Mrozek

Tüm zamanların en sevdiğim ZSH özelliklerinden biri dizinler. Belirli bir yola işaret eden bir değere sahip belirli bir ada sahip bir değişkeni dışa aktarabilirsiniz:

export foo=/usr/bin

Şimdi ~foo komutuna /usr/bin:

cd ~foo
~foo/ls
cat ~foo/filename
5
Michael Mrozek
  • Hiçbir şey yapma komutu : de olduğu gibi

    while :; do :; done
    
  • Destekler ile birlikte destek desteği:

    for c in {1..3}; do :; done
    
  • ! operatör ve kısa devre operatörleri || ve &&

    [ -d /tmp/dir ] || mkdir /tmp/dir
    
    if ! ping 34.41.34.1; then :; fi
    
  • pop/Push yerine alt kabuklar kullanma (komut dosyalarında kullanışlıdır)

    ~$ ( cd /tmp; echo $PWD )
    /tmp
    ~$
    
  • türünün ne olduğ komut type

    ~$ type type
    type is a Shell builtin
    ~$ type ls
    ls is aliased to `ls --color=auto'
    ~$ f(){ :; }
    ~$ type f
    f is a function
    f () 
    { 
         :
    
    }
    
  • ayrıca çok güzel: burada dizeleri

    ~$ cat <<<"here $PWD"
    here /home/yourname
    ~$
    
  • ve benim favorim: bir komutlar listesine yönlendirme

    { w; ps; ls /tmp; } 2>/dev/null |less
    
4
artistoex

Bkz. sor.

ps ax | grep string:

[[email protected] ~]$ ps ax | grep 'openbox'
 3363 ?        Ss     0:00 /usr/bin/openbox
 3382 ?        Ss     0:00 /usr/bin/ssh-agent -- /usr/bin/openbox-session
 3386 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 3388 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 3389 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 3390 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 5100 pts/0    S+     0:00 grep openbox

grep içeren son satır biraz anoying

ps ax | grep '[s]tring':

[[email protected] ~]$ ps ax | grep '[o]penbox'
 3363 ?        Ss     0:00 /usr/bin/openbox
 3382 ?        Ss     0:00 /usr/bin/ssh-agent -- /usr/bin/openbox-session
 3386 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 3388 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 3389 ?        S      0:00 /bin/sh /usr/bin/openbox-session
 3390 ?        S      0:00 /bin/sh /usr/bin/openbox-session

güncelleme : veya sadece pgrep string

4
Stefan

Bazen bash ayarları rm ile rm -i ve bu nedenle, silinen her dosya için onay gerektirir. Bazen böyle bir hesapta çalıştığımda \rm kullanıcı yapılandırmasını değiştirmeden rm orijinal davranışını almak için.

3
mouviciel

PS1'ime olabildiğince çok şey takmayı seviyorum. Hatırlamanız gereken bazı yararlı şeyler:

\e[s Ve \e[u İmleç konumunu sırasıyla kaydedip kaldırıyor. Bunu ekranın üst kısmında, birkaç satır uzunluğunda, daha fazla şey sığabilecek bir 'bilgi çubuğu' oluşturmak için kullanıyorum. Misal:

PS1='\[\e[s\e[7m\e[1;1H\]\w\n\t        \j / \! / \#\[\e[u\e[0m\e[33;1m\][\[email protected]\h \[\e[34m\]\W]\[\e[0m\]\$ '

alias clear='echo -e "\e[2J\n"' İle birleştirin. Denemek!

Ayrıca, Prompt_COMMAND Değişkeni her seferinde PS1'den önce yürütülecek bir komut tanımlar.

Diğeri bg komutudur. Bir komutun sonuna & Koymayı unutursanız, ^Z ve bg yazdığınızda arka planda çalışır.

3
Lucas Jones

Git dalını ve durumunu Bilgi İsteminde göster

 dışa aktar GIT_PS1_SHOWDIRTYSTATE = true 
 
 eğer ["$ color_Prompt" = evet]; sonra 
 PS1 = '$ {debian_chroot: + ($ debian_chroot)}\[\ 033 [01; 32m \]\u @\h\[\ 033 [00m \]:\[\ 033 [01; 34m \]\w\[\ 033 [00m \] $ (__ git_ps1 "#% s")\$ '
 Başka 
 PS1 =' $ {debian_chroot: + ($ debian_chroot)}\u @\h:\w $ (__ git_ps1 "#% s")\$ '
 fi 
3
Bauna

En sevdiğim komut 'find', her yerde kullanıyorum ... örnekler:

find . -name "*.log" -exec ls -l {} \; | grep "$(find . -name "*.log" -exec ls -l {} \;| nawk '{print $5}' | sort -n | tail )"

Sadece en ağır dosyaları ls -l (uzun) biçiminde görüntüleyin.

Sonra, kodunuza 0640 izinleri ile ihtiyacınız varsa, aramanız yeterlidir:

find . \( \( ! -perm 0640 \) -a \( -name "*.cpp" -o -name "*.h" \) \) -ls | nawk '{print $3"\t"$11}'

veya değiştirin:

find . \( -name "*.cpp" -o -name "*.h" \) | xargs chmod 640

O zaman, bir sembole ihtiyacınız var ve nerede olduğunu bilmiyor musunuz ??

(
  for myObj in $(find . -name "*.o"); do
    gotSym=$(dump -Xany -t $myObj | grep .MY_SYMBOL)
    if ! test "x$gotSym" = "x"
    then
      echo "OBJECT [$myObj] ========================"
      echo "$gotSym"
      echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"^
    fi
  done
)

XFILE'dan daha yeni dosyalar ??

find . -newer XFILE -type f

Evet, "bul" rulez!

3
D4RIO

Uzun bir komut yazdığınızda ve bitirmeden önce hemen işe yaramayacağını fark ettiğinizde, çünkü daha önce başka bir şey çalıştırmanız gerekir (ör. git commit -m "long commit message here"), ^A^K satırın başına gitmek ve öldürmek (bir arabellek içine kaydetmek), daha sonra bir şeyleri düzeltmek için bir komut çalıştırın ve son olarak ^Y öldürülen komutu yapıştırın ve devam edin. Yeniden yazmaktan çok tasarruf sağlar. Bütün bunlar, elbette readline Emacs modundayken.

Başka bir zaman kazandırıcı: mkdir -p some/nested/dirs/to/be/created eksikse yoldaki tüm dizinleri oluşturur.

3
alex

Mevcut işlem ağacının güzel bir ascii sanatını görüntüler, en yoğun işlemci yoğun süreci vurgulanır.

while true; do 
  clear; 
  pstree $( ps -eo pid --sort %cpu | tail -n 1 ); 
  sleep 1;
done

Ctrl + C İle öldür

3
Stefan

Her n saniyede bir güncellenen komut çıkışına bakın

watch -n 60 df -h (displays df -h every 60 seconds)

Ağ cihazı wlan0 ile ilgili istatistikleri göster

ip -s link ls wlan0

Aygıt eth1 için yönlendirme tablosunu göster

ip route ls dev eth1

Ana bilgisayara ulaşmak için seyahat eden tüm yönlendiriciler paketlerinin istatistiklerini görüntüleme

mtr --interval 5 HOSTNAME

NETWORK üzerindeki Ana bilgisayar adları için ters DNS kayıtlarına bakın

nmap -sL NETWORK

Bir web sitesini karşılaştırma

ab

Bir web sayfasındaki tüm bağlantıları alma

lynx -dump http://www.yahoo.com | awk '/http/{print $2}'

Varsayılan ağ geçidini göster

netstat -rn | awk '/UG/{print $2}'

Bir dosyaya standart hata yazma

foo 2> errors.txt

Stderr'ı stdout'a yönlendir

foo 2>&1

Stderr ve stdout'u aynı dosyaya yeniden yönlendirin.

foo > file.txt 2>&1
2
boardstretcher
# change chmod to file dowloaded --> $_

wget -c http://link/to/file -O /path/to/save/namefile && chmod 0755 $_

# extract tar.bz2 or tar.gz whit less work
# this avoids having to unpack and then move the files to another location, in this case have # already extracted in the desired location

tar jxvf file.tar.bz2 -C /pat/to/extract

# calculator with bc - in bashrc
calc(){ echo "scale=2;[email protected]" | bc;}

# set magic-space in bashrc
bind Space:magic-space                 # !pin<space>  expand last cmd pin...

# alias to open last edited file in vim
alias lvim="vim -c \"normal '0\""

# alias to show your path set
alias path='echo -e ${PATH//:/\\n}'
2
SergioAraujo

Önceki komutun parçalarını değiştirin:

^arama^replace

$ echo a b c d
a b c d
$ ^b c^X
echo a X d
a X d

Yazım hataları için harika:

$ mkae
-bash: mkae: command not found
$ ^ka^ak
make
[...]
2
user6362

Dizin boyutunu, azalan insan boyutuyla özetleme

du -hs */ | sort -hr

örneğin.

10.2G   foo/
4M      bar/
2
Eric Fortis

zsh ile çift yıldız genişletme (dizin ağacını özyineli olarak yalnızca bir düzey değil, $(find ! -type d) benzeri bir şey olarak alçaltır:

grep string **/*.cc
2
Andre Holzner

en sevdiğim özellik RENK YOK! =)

TERM = xterm-mono veya TERM = linux-m işletim sistemine bağlıdır ...

Siyah beyaz IRSSI, mc ve diğer herhangi bir "Metin kullanıcı arayüzü" aracını gerçekten seviyorum

2
holms

ZSH'nin global takma adları vardır. Diğer adı komut satırında herhangi bir yerde genişletir. Bunu ana bilgisayar adları için yararlı buldum:

Örneğin.:

alias -g sub='sub.domain.tld'

Sonra, örneğin:

sftp sub
ssh sub

vb.

2
Matthew Flaschen

Gerçekten bir astar değil ama bence yararlı. Birçok dosyayı büyük harfe dönüştürün, örneğin file_to_upper *php *c. Daha düşük bir biçime dönüştürme, tüm dosyaları sonek/önek vb. İle yeniden adlandırma gibi birçok benzer durum vardır.

file_to_upper ()
{
    for file in "[email protected]"
    do
        if [ ! -f "$file" ]; then
            echo "File $file does not exist";
        else
            mv -f "$file" "`echo "$file" | tr '[a-z]' '[A-Z]'`"
        fi
    done

    return 0
}
1
sakisk

geçerli dizinde en son zaman damgasına sahip dosya adını alın:

latest () { ls -lrt | tail -1 | awk '{print $NF}' }

1
Moses Xu
function calc() { echo $* p | dc }

dc bir RPN hesap makinesidir; bu işlev, ifadeyi komut bağımsız değişkenleri olarak yazmama olanak tanır:

$ calc 5 3 +
8
1
André Paramés

Ana bilgisayar adının kalın olduğu bir Bilgi İstemi görüntüleyin. Bir süre renk istemleri denedim, ancak arka plana bağlı olarak renk bazen kötü görünebilir. Kalın, benim için açık renkli, koyu arka plan, mavi arka planlar vb.

Bu benim .bashrc içinde:

    bold=$(tput bold)
    reset=$(tput sgr0)
    export PS1="\[email protected]\[$bold\]\h\[$reset\]:\w \$ "
1
Stefan Lasiewski

Windows ve Unix/Linux arasında sürekli geçiş yaparken aşağıdakileri yararlı buldum:

alias dir="ls -l"
alias copy="cp"
alias del="rm"
1
artdanil

Bu zsh, bash, fyi için değil (eğer kullanmadıysanız, denemek için pişman olmayacaksınız). Bu, scp aktarımları için uzun yolları hızlı bir şekilde yazmak için gerçekten yararlıdır. Kullanılabilir dosya adlarını/dizinleri tamamlamak veya listelemek için kullanmak gibi çalışır.

Misal

scp [email protected]:/home/webdev/domains/example.com/http.public/long<tab>

/home/webdev/domains/example.com/http.public/longdirname.

Örneklerde kötüyüm, ama bu size fikir vermeli. Deneyin, gerçekten parmaklarınızı yazmaktan kurtarabilir.

# SSH Completion
zstyle ':completion:*:scp:*' tag-order \
   files users 'hosts:-Host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
zstyle ':completion:*:scp:*' group-order \
   files all-files users hosts-domain hosts-Host hosts-ipaddr
zstyle ':completion:*:ssh:*' tag-order \
   users 'hosts:-Host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
zstyle ':completion:*:ssh:*' group-order \
   hosts-domain hosts-Host users hosts-ipaddr
zstyle '*' single-ignored show
1
pho3nixf1re

ReTTY , çalışan bir programı bir terminalden diğerine taşımanıza izin verir. Bu şekilde, ekran, tmux veya ssh dışında çalışan bir ncurses programınız varsa, söz konusu programı kullanmak istediğiniz terminalin içinde ReTTY'yi çalıştırarak bir ssh oturumuna veya ağa bağlı bir ekrana veya tmux oturumuna ekleyebilirsiniz. Başka bir deyişle, ekran ve tmux'a benzer, ancak (a) bir seferde yalnızca bir program çalıştırabileceği ve (b) çalıştırılabileceği after alt süreç.

1
mmirate

Benim favorim geçici http sunucusunu yapmak için python komutunu kullanmaktır:

python -m SimpleHTTPServer

ve bu makinedeki dosyalara lan üzerinden şu şekilde erişebilirsiniz:

http://192.168.1.70:80

Bir diğeri tar dosyasını ayıklanmış biçimde indirmektir:

wget -qO - http://192.168.1.70:8000/test.bz2 | tar xjvf -

Burada bağlantı www ve bz2 üzerinden herhangi biri olabilir gz, tgz veya bz2 kendisi için bu konuda.

1
SHW

Süslü nokta dosyalarınızı otomatik olarak yedekleyin

Modüler .bashrc -> .bashrc.d

mkdir -p ~/.bashrc.d
cat<<'EOF' >> ~/.bashrc
echo ""
echo -n ".bashrc.d warming up: "
for script in ~/.bashrc.d/* ; do
  if [ -x "$script" ] ; then
    echo -n "${script##*/} "
    . "$script"
  fi
done
echo ""
echo ""
echo "  All systems are go."
echo ""
EOF

Linux ve Mac OS X ile uyumlu daha güvenli rm

rm() {
  local src
  local final_status=0

  for src in "[email protected]"; do
    # Process only non command-line arguments.
    if [[ "$src" != -* ]]; then
      local trash="$HOME/.Trash"
      if [ ! -e "$src" ]; then
        echo "Safer rm: $src: No such file or directory."
        final_status=1
      fi
      # Create the trash directory if needed.
      if [ ! -d "$trash" ]; then
        # Assume Mac trash, but it'll work on *nix too.
        mkdir -p "$trash"
        if [ ! -d "$trash" ]; then
          echo "Safer rm: Unable to create trash directory $trash"
          echo ""
          echo "   Nothing moved or deleted.  Consider carefully:"
          echo ""
          echo "      /bin/rm -rf $src"
          return 1
        fi
      fi
      local dest="$trash/${src##*/}"

      # Find a filename combination which does not already exist.
      if [ -e "$dest" ]; then
        # Try appending ISO datetime.
        dest="$dest.$(date +%Y-%m-%dT%H-%M-%S)"
        if [ -e "$dest" ]; then
          local n=1
          # Try increasing monotony.
          while [ -e "$dest.$n" ]; do
            n = $[n + 1]
          done
          dest="$dest.$n"
        fi
      fi
      echo -n "Safer rm: Trashing $src to $dest ..."
      /bin/mv "$src" "$dest"
      echo " done."
      echo ""
      echo "  To restore:  /bin/mv     '$dest' '$src'"
      echo ""
      echo "  To purge:  /bin/rm -rf '$dest'"
      echo ""
      echo ""
    fi
  done
  return $final_status
}

Süper sıcak 'cd' yukarı eylem

# Don't ask why I need 15 levels of cd ..

alias ..='cd ..'
alias .2='cd ../..'
alias ...='.2'
alias .3='cd ../../..'
alias .4='cd ../../../..'
alias .5='cd ../../../../..'
alias .6='cd ../../../../../..'
alias .7='cd ../../../../../../..'
alias .8='cd ../../../../../../../..'
alias .9='cd ../../../../../../../../..'
alias .10='cd ../../../../../../../../../..'
alias .11='cd ../../../../../../../../../../..'
alias .12='cd ../../../../../../../../../../../..'
alias .13='cd ../../../../../../../../../../../../..'
alias .14='cd ../../../../../../../../../../../../../..'
alias .15='cd ../../../../../../../../../../../../../../..'

Readline senin tek tanrın.

bind -p | egrep -v '(not|self)' # No existential jokes included.

Terminal yazı tipleri

Bazilyonlarca yazı tipine baktıktan sonra 14 pt Monaco, Anti-aliased ile iTerm2.

Mac'te (Uygulamalar): Anahtar bağlantıları veren bu uygulamayı deneyin.

KeyCue (tm) (r) (c) ($), herhangi bir şekilde çalıştırarak neredeyse HERHANGİ çalışan uygulamanın bağlamını verir command.

1
dhchdhd

zsh'ın otomatik pushd özelliği:

setopt autopushd

ve bununla birlikte:

alias dirs='dirs -v'

Böylece herhangi bir zamanda, dirs yazabilirim ve bulunduğum yerin geçmişini elde ederim:

0   /var/log
1   /tmp
2   /usr/local/bin
3   ~

ve sonra cd ör. /usr/local/bin yazarak:

cd ~2
1
Andre Holzner

Aşağıdaki 'hilelerin' hiçbiri teknik olarak zor veya etkileyici değildir, ancak diğer kişi üzerinde bazı etkileri vardır. Eğer işimizi hayatımızı daha mutlu etmek için kullanamazsak, o zaman bazı şeyleri tekrar düşünmeliyiz.

alias 'ı seviyorum. En sevdiğim hile o eksik gibi benim gf bilgisayar ~ ~ .bash_aliases düzenlemek ve gibi bir satır eklemek için:

alias gfname='echo Myname is thinking of you'

ya da başka bir romantik alıntı.

Özellikle sevdiğim bir başka "numara":

#!/bin/bash
xaa=123`
for ((a=1; a <= xaa; a++))
do
#sleep 1;
mail -s "Happy Birthday $a" [email protected] < mails.txt
done
exit 0`

123, doğum günün kutlu olsun dilediğim kişi ve mails.txt e-postanın gövdesi olarak yazmak istediğim mesajı içeriyor. Uyku 1; çatal () için bir sınır olduğu için bazen gereklidir. Komut satırı argümanlarını da $1 Vb. Kullanabilirsiniz ...

1
Dimitris Leventeas

Giriş klasörümde Belge, İndirilenler, Temp vb. Olarak adlandırılan klasörleri var, ilk harf büyük harfle yazılıyor. Ben terminal üzerinde çalışırken bir dizine cd'ing zaman ilk tuşuna basın kaydırmak için can sıkıcı bir durum. Terminalinize aşağıdakileri girmeniz yeterlidir ve bash bu durumu sizin için otomatik olarak düzeltir.

shopt -s nocaseglob
1
tsudot

Kaç tane gıda örneğinin çalıştığını ve kapsüllerini bulmak istiyorsanız pgrep foo Yerine ps aux | grep foo Kullanın:

örneğin. ps aux | grep firefox yerine pgrep firefox kullanın

1
user1888

Onsuz yaşayamam

set editing-mode vi
set blink-matching-paren on

~/.inputrc.

Bunları readline özellikli her uygulamada etkinleştirir. Shell'de yalnızca vi komut satırı düzenlemesini etkinleştirmek şu yöntemlerle çalışır:

set -o vi

Böylece, ESC veya CTRL + [tuşlarına basmak size iyi bilinen vi-komut modunu getirir. Ve her yerde güçlü vi komutları kullanabilirsiniz!

1
maxschlepzig

Bunun için harika bir site var: http://www.commandlinefu.com/commands/browse

1
Andrew Stern

Benim kişisel favorim

find . -name <i>filename</i> | xargs grep -in '<i>pattern to search for</i>'

Yukarıdaki komutun yaptığı, x adında bir dosya bulmak ve daha sonra adı geçen dosyada aradığınız deseni arar. Alt dizinlerinizdeki bir yerde belirli bir kod parçasını arıyorsanız inanılmaz derecede faydalıdır.

0
Mark D
find path expr -exec ls -ld {} \;

Sahiplik, izinler, boyutlar (dosyalar varsa) ve 'bul' ifadenizin döndürdüğü her şeyin diğer özelliklerini görmenin kolay ve kolay bir yolu.

0
TCKMusing

Sıklıkla, 15 dakikalık bir komuta başladıktan sonra, && Kullanarak komut satırına başka şeyler eklemek isteyebileceğimi fark ediyorum. Halihazırda çalışmakta olan işi kesmek yerine, ikincisini sıralamak için at kullanma eğilimindeyim, terminali izlememe gerek kalmadan kendime daha uzun zaman ayırıyorum.

Genellikle, at işleri belirli bir zamanda yürütmek üzere sıralar:

$ at 14:30
> myscript
> anotherscript
> <CTRL-D>

Kuyruğa girişler atq ile görüntülenebilir ve atrm ile kaldırılabilir.

Bas İstemi özelleştirme ipuçlarına başka bir ek: Komut çıkışının uzun terminal listelerinde başladığı ve bittiği yerde iyi görsel ipuçları verdiği için İstemi ters çevirmeyi seviyorum. Bu hem parlak hem de karanlık arka planlar için iyi çalışır.

export PS1="\[\e[7m\][\[email protected]\h \w]\[\e[0m\]$ "
0
jstarek

senkronizasyon; senkron; senkron; yeniden

bazen gerçekten yararlı olabilir. Dikkatli ol !

0
Tony Lambert

Bas tuş vuruşlarının daha etkili bombardımana yol açtığını anlıyorum ve bunların birçoğu doğrudan emacs'tan yararlanıyor (yani meta-XXX Genellikle ctrl-XXX Komutunun ağabey versiyonu).

"Meta" tuşu genellikle "alt" tuşudur, ancak "esc" tuşu da olabilir. Örneğin. meta-f, alt-f Veya esc f İle alınabilir.

Alt tuş eşlemelerinin çalışması için konsol seçeneklerinde "menü erişim tuşlarını" veya eşdeğerini ayarlamanız gerekebilir. Temel olarak alt-f tuşlarına basar ve Bilgi istemi dosya menüsünü alırsanız, alt tuş erişim menülerini kapatın.

ctrl-a / ctrl-e : move to start / end of line Olmadan yapamayacağınız temel bilgiler

ctrl-f, meta-f : forward char/Word Alt-f tuşlarına bastığınızda, komut satırında hemen hemen bir komut veya bağımsız değişken olan "1 Word" iletilir

ctrl-b, meta-b : backwards char/Word Alt-f ile aynı, ancak komut satırında geriye doğru atlamak için geri

ctrl-d, meta-d : delete char/Word Alt-d tuşlarına basıldığında imlecin altındaki geçerli Word silinir (bitecek). silme işlemini 30 saniye basılı tuttuktan sonra çok daha hızlı. Bir şeyin ortasında sekme tamamladığınızda ve silmek istediğiniz sözcüğü Word'ün sonuna iletmek istediğinizde kullanışlıdır.

ctrl-k : kill line Satır sonuna kadar silindi

ctrl-u : undo Ör. bir şifre yazdığınızda, bir yerde yanlış yaptığınızı biliyorsunuz, geri tuşuna 20 kez vurmak yerine, ctrl-u tuşlarına basın. geçerli komut satırını da temizler.

meta-# : insert comment Bu, önce başka bir şey yapmanız gerekiyorsa, çalıştırmadan önce yorum olarak oluşturduğunuz komut satırınızı tutmak için mükemmeldir. komut geçmişinize girecek, ancak çalışmayacak.

ctrl-r : reverse search Shell geçmişinizde geriye doğru arama yapıyor (bir sonraki maç için ctrl-r'yi tekrarladı)

ctrl-g : abortctrl-r Ortasındaysanız ve yazdığınız yere geri dönmek istiyorsanız, ctrl-g İle aramanızı iptal edin

meta-space / ctrl-x ctrl-x : set mark and jump to mark Komut satırınızdaki bir konuma hızlı bir şekilde atlamanız gerekiyorsa, önce işareti ayarlayın, ardından ctrl-x ctrl-x İle geri dönün. esc-space İşaretinin genellikle konsol menüsünü aşağı indirmeye bağlı olduğu için alt-space Kullanmanız gerekebileceğini unutmayın.

ctrl-] <char> : quick jump to <char>, Komut satırında ctrl-] Öğesinden sonra yazılan karaktere atlar. Ağabey Meta-ctrl-] <char> Geriye atlar.

0
markf

Benim favorilerim aşağıda. Çoğunu düzenli kullanıyorum

df -k (dosya sistemlerini kontrol edin) kill or kill -9 (bir işlemi öldür) set -o vi (komut satırınızı vi olarak ayarlayın) topas (performans aracı) tak/çıkar

oh evet ve nasıl unutabilirim> (çıktıyı bir dosyaya yönlendirmek için) ls> /tmp/tmp.txt

Çok daha fazlası ama bazıları benim tepemde.

0
vegasbrianc