it-swarm-id.com

Apa fitur atau trik baris perintah favorit Anda?

Bagikan fitur dan trik baris perintah Anda untuk Unix/Linux. Cobalah untuk menyimpannya Shell/distro agnostik jika memungkinkan. Tertarik melihat alias, one-liner, pintasan keyboard, skrip Shell kecil, dll.

93
cmcginty

Ini agak meluas pada !! trik yang disebutkan di jawaban ini . Sebenarnya ada banyak perintah yang berkaitan dengan sejarah yang cenderung dilupakan (orang cenderung menusuk Up 100 kali alih-alih mencari perintah yang mereka tahu mereka ketikkan).

  • Perintah history akan menampilkan daftar perintah yang baru saja dijalankan dengan penunjuk acara di sebelah kiri
  • !N akan mengganti perintah yang terkait dengan penunjuk acara N
  • !-N akan menggantikan N th perintah terbaru; misalnya !-1 akan menggantikan perintah terbaru, !-2 yang terbaru terbaru, dll.
  • Seperti yang disebutkan dalam jawaban lain, !! adalah singkatan untuk !-1, untuk dengan cepat mengganti perintah terakhir
  • !string akan menggantikan perintah terbaru yang dimulai dengan string
  • !?string? akan menggantikan perintah terbaru yang berisi string

Penunjuk kata dapat ditambahkan ke ! perintah sejarah untuk memodifikasi hasil. Tanda titik dua memisahkan acara dan penunjuk kata, mis. !!:0. Penunjuk acara !! dapat disingkat menjadi hanya ! saat menggunakan penunjuk kata, jadi !!:0 setara dengan !:0.

  • !:0 akan mendapatkan perintah yang dieksekusi
  • !:1 akan mendapatkan argumen pertama (dan !:2 yang kedua, dll.)
  • !:2-3 akan mendapatkan argumen kedua dan ketiga
  • !:^ adalah cara lain untuk mendapatkan argumen pertama. !:$ akan mendapatkan yang terakhir
  • !:* akan mendapatkan semua argumen (tetapi bukan perintah)

Pengubah juga dapat ditambahkan ke ! perintah sejarah, masing-masing diawali oleh tanda titik dua. Nomor apa pun dapat ditumpuk di (mis. !:t:r:p).

  • h - Berbaris ke nama file dasar
  • t - Hanya nama file dasarnya
  • r - Berbaris ke ekstensi nama file
  • e - Hanya ekstensi nama file
  • s/search/replacement - Ganti kemunculan pertama search dengan replacement
  • gs/search/replacement - Ganti semua kemunculan search dengan replacement
88
Michael Mrozek

bash - masukkan parameter terakhir baris sebelumnya

alt-. kombinasi tombol paling berguna yang pernah ada, coba dan lihat, untuk beberapa alasan tidak ada yang tahu tentang yang ini.

tekan lagi dan lagi untuk memilih parameter terakhir yang lebih lama.

hebat ketika Anda ingin melakukan sesuatu yang lebih pada argumen/file yang Anda gunakan beberapa saat yang lalu.

64
chillitom

Favorit saya adalah

man 7 ascii

Sederhana dan sangat bermanfaat.

   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

Lihat situs web ini commandlinefu.com .

Anda juga dapat melihat empat artikel ini oleh Peteris Krumins di blog-nya

49
Moeb

Jalankan perintah terakhir sebagai root:

Sudo !!
46
Alex B

Tidak yakin apakah ini dianggap sebagai "trik", tetapi orang-orang tampaknya tidak menyadari hotkey readline standar. Penggunaan khusus dalam kerang:

  • Ctrl+U - Potong garis saat ini
  • Ctrl+Y - Tempelkan potongan garis dengan Ctrl+U
  • Ctrl+L - Bersihkan layar dan gambar ulang garis saat ini
  • Ctrl+G - Dapatkan baris baru dan abaikan yang sekarang
42
Michael Mrozek

CTRL+R di BASH untuk mencari/mengaktifkan perintah yang sebelumnya dieksekusi (isi ~/.bash_history).

Ini seringkali sangat membantu. Menjalankan alias ini akan melayani PWD di atas HTTP (diindeks) pada port 8000:

alias webserver="python -m SimpleHTTPServer"

Dan karena saya menjalankan make sepanjang waktu, dan memacu dan mengetik terlalu cepat, alias ini mungkin yang paling sering saya gunakan (serius):

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

Dan mungkin BASH saya yang paling sering digunakan adalah skrip sederhana yang saya sebut unggah. Saya menggunakannya untuk mencabut segala jenis konten ke Linode saya, dan menyalin URL HTTP yang dihasilkan ke clipboard saya (klik tengah). Sangat berguna untuk menempelkan hal-hal kepada orang-orang di IRC:

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

Hanya pasangan. Saya dapat memposting lebih banyak lagi nanti, harus kembali bekerja!

36
Aaron Bockover

diff output dari dua perintah tanpa membuat file sementara secara manual (bash):

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

Cukup mendasar, tetapi orang-orang tampaknya tidak tahu, mengembalikan Anda ke dir sebelumnya:

cd -
30
Robert Swisher

Ekspansi Brace :

Perluasan Brace adalah mekanisme dimana string sewenang-wenang dapat dihasilkan.

Ini memungkinkan Anda untuk mengganti garis yang membosankan seperti:

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

dengan contoh yang lebih pendek

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

beberapa kegunaan lain

# 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 

Perluasan Aritmatika :

Ekspansi aritmatika memungkinkan evaluasi ekspresi aritmatika dan penggantian hasilnya. Format untuk ekspansi aritmatika adalah:

$((expression))

Ekspresi diperlakukan seolah-olah itu dalam tanda kutip ganda, tetapi tanda kutip ganda di dalam tanda kurung tidak diperlakukan secara khusus. Semua token dalam ekspresi mengalami ekspansi parameter, ekspansi string, penggantian perintah, dan penghapusan kutipan. Ekspansi aritmatika mungkin bersarang.

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

Ini biasanya dalam skrip startup saya (.bashrc, .profile, apa pun)

shopt Ya ampun, periksa komentarnya:

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

Sebuah alias yang menyimpan penekanan tombol: mkdir dan cd di dalamnya:

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

Dan last but not least, saya sudah menyerah pada menghafal sintaks tar, jadi:

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

Dua fungsi bash yang menyelamatkan saya dari banyak goresan kunci.

Lakukan secara otomatis setelah setiap cd yang berhasil:

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

Naik n level:

# 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

Karena saya biasanya setengah jalan ke baris perintah sebelum ingin mencari (CTRL-R di bash) saya punya yang berikut di .bashrc saya

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

Ini berarti bahwa jika saya mengetik cd maka tekan atas/bawah saya bisa melihat semua opsi yang saya punya cd. Pada dasarnya saya menggunakan ini untuk dirs yang sering digunakan. Seperti "cd w" dan saya akhirnya melalui semua ruang kerja yang saya gunakan banyak.

17
mendicant

Satu hal yang menghemat banyak waktu adalah perintah pushd/popd. Orang-orang ini memungkinkan Anda membuat setumpuk direktori dan mengurangi banyak mengetik:

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

screenperintah . Ini pada dasarnya menyimpan sesi baris perintah Anda ketika Anda kembali. Ini semacam manajer terminal, seperti manajer jendela. Dengan begitu, dalam satu sesi terminal, Anda dapat memiliki beberapa terminal virtual. Keren sekali.

Jika seseorang menggunakan screen, fungsi Shell ini (masukkan ke dalam .bashrc) sangat berguna:

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

saat mengetik scr, itu akan memeriksa apakah sesi utama Anda ada dan akan melampirkannya. Kalau tidak, itu akan membuatnya.

14
user394

Jika Anda perlu mengedit baris perintah yang sangat panjang di bash

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

akan membukanya di editor ($ EDITOR).

Di zsh Anda bisa mendapatkan perilaku yang sama dengan menambahkan ini ke .zshrc:

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

Jika Anda seorang pengetik cepat, ini berguna:

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

Makro ini membantu Anda menghitung total kolom output: ukuran file, byte, paket, yang harus Anda lakukan adalah menentukan kolom yang ingin Anda tambahkan:

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

Anda menggunakannya seperti ini misalnya, tanpa argumen, itu menambah total kolom pertama:

du | total

Jika Anda memberikan argumen, itu akan menjumlahkan kolom itu, misalnya, ini memberi Anda jumlah total byte yang digunakan oleh semua file C # di/tmp:

ls -l /tmp/*cs | total 5

Kadang-kadang konsol Anda menjadi kacau karena Anda secara tidak sengaja melihat file biner (cat/bin/ls misalnya), Anda dapat memulihkan terminal dengan fungsi Shell ini:

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

Saya suka ls saya menggunakan karakter untuk membedakan kelas file, dan juga untuk menyembunyikan file cadangan yang dihasilkan oleh editor saya (file cadangan diakhiri dengan ~ karakter):

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.

Salah satu favorit saya ketika saya lupa s:

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

Jika suatu perintah mengambil input stdin, Anda dapat membaca input dari file dengan <filename. Ini bisa muncul di mana saja di perintah, jadi baris ini setara:

cat filename
cat <filename
<filename cat

Ini sangat berguna untuk grep, karena memungkinkan Anda untuk menempatkan ekspresi di akhir baris, sehingga Anda dapat dengan cepat memodifikasi perintah grep dengan menekan Up, tanpa perlu menggulir ke kiri untuk melewati nama file:

<filename grep 'expression'
10
Michael Mrozek

Anda dapat menggunakan CDPATH untuk mengatur direktori yang setara dengan PATH; jika Anda mencoba cd foo dan tidak ada foo di direktori saat ini, Shell akan memeriksa setiap direktori di CDPATH mencari foo di dalamnya, dan beralih ke yang pertama menemukan:

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`

Karena ketika Anda tidak tahu di mana sesuatu tinggal, dan Anda juga tidak peduli.

9
Matt Simmons

The ampersand. Ini menempatkan perintah Anda di latar belakang, sehingga Anda dapat melanjutkan mengetik.

$> Sudo updatedb &

Bekerja bersama, dan setelah beberapa saat Anda melihat:

[1] 17403

Dan proses Anda selesai! Sangat bagus untuk hal-hal di mana Anda tidak perlu menunggu mereka berakhir.

9
user394

Tab selesai. Seberapa burukkah itu jika Anda harus mengetikkan semua karakter dari setiap jalur?

8
user394

Saya punya ini di .bashrc saya

#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]"
}

Dan ketika saya memiliki kode sumber html di clipboard dan ingin menemukan semua tautan yang saya gunakan

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

Dan saya memiliki semua url di clipboard

Saya juga punya fungsi ini

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

yang ukuran tampilan (dapat dibaca manusia) dan nama file.

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

alias ini untuk acara temerature

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

dengan fungsi ini saya dapat menghitung produk atau jumlah argumen.

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()))";
}

Ini adalah fungsi yang berguna yang membagi input standar dipisahkan oleh regex dan kemudian bergabung dengan hasilnya.

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

fungsi faktorial

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

Fungsi ini menampilkan teks wiki melalui DNS

Saya juga memiliki tiga fungsi warna

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]
}

Fungsi ini memvalidasi hash file md5.

ini akan menampilkan pesan kesalahan untuk kode yang diberikan

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

Anda dapat mencetak semua pesan dengan

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

Umount perangkat yang terakhir dipasang:

mount /media/whatever
...
u!mo

!mo memperluas ke perintah terakhir yang dimulai dengan mo (setidaknya dalam bash). Terkadang seseorang melakukan mv di tengah, jadi u!m tidak akan bekerja sesering ini.

7

Trik ZSH lain yang bermanfaat:

Perlakukan output dari perintah sebagai file:

emacs =(hg cat -r 100 somefile)

Ini membuka versi lama file Mercurial-dilacak di emacs untuk melihat sintaks yang disorot. Tanpa itu, saya harus main-main dengan hg revert, hg archive, atau mengirim secara eksplisit hg cat output ke file sementara.

Tentu saja, ini berfungsi dengan program apa pun yang membuka file, dan program apa pun yang mencetak ke output standar.

6
Matthew Flaschen

Fitur khusus ZSH adalah alias suffix, diset dengan memberikan alias the -s tanda:

alias -s ext=program

Jika ekstensi yang diberikan memiliki alias suffix, Anda dapat menjalankan file dengan ekstensi itu secara langsung, dan ZSH akan meluncurkan program yang diberikan dan meneruskan nama file sebagai argumen. Jadi jika alias di atas berlaku, garis-garis ini setara:

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

Salah satu fitur ZSH favorit saya sepanjang masa adalah bernama direktori. Anda bisa mengekspor variabel dengan nama yang diberikan, dengan nilai yang menunjuk ke jalur tertentu:

export foo=/usr/bin

Sekarang Anda dapat menggunakan ~foo dalam perintah untuk merujuk ke /usr/bin:

cd ~foo
~foo/ls
cat ~foo/filename
5
Michael Mrozek
  • Perintah do-nothing : seperti dalam

    while :; do :; done
    
  • Perluasan brace dalam kombinasi dengan untuk loop:

    for c in {1..3}; do :; done
    
  • ! operator dan operator hubungan pendek || dan &&

    [ -d /tmp/dir ] || mkdir /tmp/dir
    
    if ! ping 34.41.34.1; then :; fi
    
  • menggunakan sub shell bukannya pop/Push (berguna dalam skrip)

    ~$ ( cd /tmp; echo $PWD )
    /tmp
    ~$
    
  • jenis apa-ada perintah 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 () 
    { 
         :
    
    }
    
  • juga sangat bagus: di sini-string

    ~$ cat <<<"here $PWD"
    here /home/yourname
    ~$
    
  • dan favorit saya: pengalihan pada daftar perintah

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

Lihat ini pertanyaan.

Saat Anda menjalankan 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

baris terakhir yang mengandung grep sedikit lebih banyak anoying

Anda dapat membebaskan diri dari hal ini dengan menjalankan 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

pembaruan : atau jalankan pgrep string

4
Stefan

Terkadang pengaturan bash sedemikian rupa sehingga rm alias alias rm -i dan karenanya memerlukan konfirmasi untuk setiap file yang dihapus. Ketika saya sesekali bekerja pada akun seperti itu, saya menggunakan \rm untuk mengambil perilaku asli rm tanpa mengubah konfigurasi pengguna.

3
mouviciel

Saya suka membuang barang sebanyak yang saya bisa ke PS1 saya. Beberapa hal berguna untuk diingat:

\e[s dan \e[u simpan dan hapus posisi kursor masing-masing. Saya menggunakan ini untuk membuat 'info-bar' di bagian atas layar, panjang beberapa baris, yang dapat memuat lebih banyak barang. Contoh:

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\]\$ '

Gabungkan dengan alias clear='echo -e "\e[2J\n"'. Cobalah!

Juga Prompt_COMMAND variabel mendefinisikan perintah untuk dieksekusi sebelum PS1 setiap kali.

Satu lagi adalah perintah bg. Jika Anda lupa menaruh & di akhir perintah, cukup tekan ^Z dan ketik bg, dan itu berjalan di latar belakang.

3
Lucas Jones

Tampilkan cabang dan status Git di Prompt

 ekspor GIT_PS1_SHOWDIRTYSTATE = true 
 
 jika ["$ color_Prompt" = yes]; lalu 
 PS1 = '$ {debian_chroot: + ($ debian_chroot)}\[\ 033 [01; 32m \]\u @\h\[\ 033 [00m \]:\[\ 033 [01; 34m \]\w\[\ 033 [00m \] $ (__ git_ps1 "#% s")\$ '
 Else 
 PS1 =' $ {debian_chroot: + ($ debian_chroot)}\u @\h:\w $ (__ git_ps1 "#% s")\$ '
 fi 
3
Bauna

Perintah favorit saya adalah 'temukan', saya menggunakannya di mana-mana ... contoh:

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

Cukup tampilkan file terberat dalam format ls-l (panjang).

Kemudian, jika Anda memerlukan kode Anda dengan izin 0640, cukup cari:

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

atau ganti:

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

Lalu, apakah Anda memerlukan simbol dan tidak tahu di mana itu ??

(
  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
)

File yang lebih baru dari XFILE ??

find . -newer XFILE -type f

Ya, "temukan" rulez!

3
D4RIO

Sekali begitu sering ketika Anda mengetikkan perintah yang panjang dan sebelum menyelesaikannya Anda menyadari bahwa itu tidak akan bekerja segera, karena Anda perlu menjalankan sesuatu yang lain sebelumnya (mis. Memasukkan git commit -m "long commit message here"), Anda dapat menekan ^A^K untuk pergi ke awal baris dan membunuhnya (menyimpan ke dalam buffer), selanjutnya jalankan perintah untuk memperbaiki keadaan, dan akhirnya ^Y untuk menempelkan perintah yang terbunuh, dan melanjutkan. Menghemat banyak pengetikan ulang. Semua ini, tentu saja adalah ketika readline dalam mode Emacs.

Penghemat waktu lain: mkdir -p some/nested/dirs/to/be/created membuat semua dir di path jika tidak ada.

3
alex

Menampilkan seni ascii yang bagus dari pohon proses saat ini, dengan proses paling intensif CPU disorot.

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

Bunuh dengan Ctrl + C

3
Stefan

Lihat output perintah yang diperbarui setiap n detik

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

Tampilkan statistik tentang perangkat jaringan wlan0

ip -s link ls wlan0

Tampilkan tabel routing untuk perangkat eth1

ip route ls dev eth1

Tampilkan statistik untuk semua router yang dilalui paket untuk mencapai Host

mtr --interval 5 HOSTNAME

Konsultasikan catatan DNS terbalik untuk nama Host di NETWORK

nmap -sL NETWORK

Benchmark sebuah situs web

ab

Dapatkan semua tautan dari halaman web

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

Tampilkan gateway default

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

Tulis kesalahan standar ke file

foo 2> errors.txt

Redirect stderr ke stdout

foo 2>&1

Arahkan stderr dan stdout ke file yang sama.

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

Ganti bagian dari perintah sebelumnya:

^Cari^menggantikan

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

Bagus untuk kesalahan ketik:

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

Ringkas ukuran direktori, dengan ukuran manusia yang menurun

du -hs */ | sort -hr

misalnya.

10.2G   foo/
4M      bar/
2
Eric Fortis

ekspansi bintang ganda dengan zsh (yang secara rekursif turun pohon direktori, bukan hanya satu tingkat, sesuatu yang mirip dengan $(find ! -type d):

grep string **/*.cc
2
Andre Holzner

fitur favorit saya adalah TANPA WARNA! =)

JANGKA = xterm-mono atau JANGKA = linux-m tergantung pada OS ...

Saya sangat suka IRSSI hitam dan putih, mc dan alat "Text user interface" lainnya

2
holms

ZSH memiliki alias global. Itu memperluas alias di mana saja di baris perintah. Saya menemukan ini berguna untuk nama host:

Misalnya.:

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

Lalu, saya bisa melakukan mis .:

sftp sub
ssh sub

dll.

2
Matthew Flaschen

Tidak benar-benar satu kalimat tetapi saya pikir ini berguna. Konversikan banyak file menjadi huruf besar, misalnya file_to_upper *php *c. Ada banyak kasus serupa seperti mengonversi ke yang lebih rendah, mengganti nama semua file dengan akhiran/awalan, dll.

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

dapatkan nama file dengan stempel waktu terkini di direktori saat ini:

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

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

dc adalah kalkulator RPN; fungsi ini memungkinkan saya untuk mengetik ekspresi sebagai argumen perintah:

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

Tampilkan Prompt dengan nama host tebal. Saya mencoba meminta warna untuk sementara waktu, tetapi warnanya kadang-kadang akan terlihat buruk tergantung pada latar belakang. Berani bekerja untuk saya untuk latar belakang terang, latar belakang gelap, latar belakang biru, dll.

Ini ada di .bashrc saya:

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

Saya menemukan hal-hal berikut yang berguna ketika terus berpindah antara Windows dan Unix/Linux:

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

Ini untuk zsh, bukan bash, fyi (jika Anda belum menggunakannya, Anda tidak akan menyesal mencobanya). Ini sangat berguna untuk mengetik jalur panjang dengan cepat untuk transfer scp. Ini berfungsi seperti menggunakan untuk melengkapi atau daftar nama file/direktori yang tersedia.

Contoh

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

akan melengkapi jalur ke /home/webdev/domains/example.com/http.public/longdirname.

Saya buruk dalam contoh, tapi itu seharusnya memberi Anda ide. Cobalah, itu benar-benar dapat menyelamatkan Anda dari mengetik.

# 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 , yang memungkinkan Anda untuk memindahkan program yang sedang berjalan dari satu terminal ke terminal lainnya. Dengan begitu, jika Anda memiliki program ncurses yang berjalan di luar layar, tmux, atau ssh, Anda dapat melampirkannya pada sesi ssh atau layar jaringan atau sesi tmux dengan menjalankan RETTY di dalam terminal tempat Anda ingin menggunakan program yang dimaksud. Dengan kata lain, ini mirip dengan layar dan tmux tetapi dengan pengecualian bahwa (a) hanya dapat menjalankan satu program pada satu waktu, dan (b) dapat dijalankan setelah Anda memulai proses anak.

1
mmirate

Favorit saya adalah menggunakan perintah python untuk membuat server http sementara:

python -m SimpleHTTPServer

dan mengakses file dari mesin ini melalui lan sebagai:

http://192.168.1.70:80

Yang lain adalah mengunduh file tar dalam bentuk yang diekstraksi sebagai:

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

Di sini tautannya dapat berupa www dan bz2 dapat berupa gz, tgz atau bz2 sendiri.

1
SHW

Cadangkan file titik mewah Anda secara otomatis

Modular .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

Aman, kompatibel dengan Linux dan Mac OS X

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
}

Tindakan 'cd' up super hot

# 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 adalah satu-satunya tuhan sejati Anda.

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

Font terminal

Setelah melihat bazillions font, saya menggunakan 14 pt Monaco, Anti-aliased dengan iTerm2.

Di Mac (Aplikasi): Coba aplikasi ini yang memberikan binding utama.

KeyCue (tm) (r) (c) ($) memberikan konteks hampir semua aplikasi yang sedang berjalan hanya dengan memegang command.

1
dhchdhd

fitur auto pushd zsh:

setopt autopushd

dan bersama dengan itu:

alias dirs='dirs -v'

Sehingga kapan saja, saya bisa mengetik dirs dan saya mendapatkan sejarah di mana saya berada:

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

dan kemudian saya dapat cd kembali ke mis. /usr/local/bin dengan mengetik:

cd ~2
1
Andre Holzner

Tidak satu pun dari 'trik' berikut ini yang secara teknis menantang atau mengesankan, tetapi mereka memiliki dampak pada orang lain. Jika kita tidak dapat menggunakan pekerjaan kita untuk membuat hidup kita lebih bahagia, maka kita harus memikirkan lagi beberapa hal.

Saya suka alias. Trik favorit saya adalah mengedit ~/.bash_aliases di komputer gf saya saat dia hilang dan tambahkan baris seperti:

alias gfname='echo Myname is thinking of you'

atau kutipan romantis lainnya.

"Trik" lain yang sangat saya sukai adalah:

#!/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`

di mana 123 adalah milik orang yang ingin saya ucapkan selamat ulang tahun dan mails.txt berisi pesan yang ingin saya tulis sebagai badan surel. Tidur 1; kadang-kadang diperlukan karena ada batasan pada fork (). Anda juga bisa menggunakan argumen baris perintah $1 dll ...

1

Saya memiliki folder bernama di folder rumah saya sebagai Dokumen, Unduhan, Temp, dll dengan huruf pertama dalam huruf besar. Ketika saya bekerja di terminal, itu mengganggu untuk menggeser tekan tombol pertama ketika Anda cd ke direktori. Cukup masukkan yang berikut ini di terminal Anda dan bash akan memperbaiki kasus secara otomatis untuk Anda.

shopt -s nocaseglob
1
tsudot

Gunakan pgrep foo dari pada ps aux | grep foo jika Anda ingin menemukan berapa instance foo yang sedang berjalan dan pidsnya:

misalnya dari pada ps aux | grep firefox, gunakan pgrep firefox

1
user1888

Saya tidak bisa hidup tanpanya

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

di ~/.inputrc saya.

Aktifkan mereka di setiap aplikasi yang diaktifkan readline. Hanya mengaktifkan pengeditan baris perintah vi di Shell yang bekerja melalui:

set -o vi

Dengan demikian, menekan ESC atau CTRL + [memberi Anda mode vi-perintah yang terkenal. Dan Anda dapat menggunakan perintah vi yang kuat di mana-mana!

1
maxschlepzig

Ada situs hebat untuk ini di: http://www.commandlinefu.com/commands/browse

1
Andrew Stern

Favorit pribadi saya adalah

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

Apa yang dilakukan perintah di atas adalah menemukan file nama x dan kemudian mencari file tersebut untuk pola apa pun yang Anda cari. Sangat berguna jika Anda mencari sedikit kode tertentu dalam file yang berada di suatu tempat di subdirektori Anda.

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

Cara mudah dan menyenangkan untuk melihat kepemilikan, izin, ukuran (jika file), dan karakteristik lain dari apa pun yang 'ditemukan' oleh ekspresi Anda.

0
TCKMusing

Saya sering memperhatikan, setelah memulai perintah 15 menit, saya ingin menambahkan beberapa hal lain ke baris perintah menggunakan &&. Alih-alih mengganggu pekerjaan yang sudah berjalan, saya cenderung menggunakan at untuk mengantri yang kedua, memberi saya waktu yang lebih lama saya tidak perlu menonton terminal.

Secara umum, at mengantri pekerjaan untuk dieksekusi pada waktu tertentu:

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

Entri ke antrian dapat dilihat dengan atq dan dihapus dengan atrm.

Tambahan lain untuk tip kustomisasi bash Prompt: Saya suka membalikkan Prompt, karena ini memberikan isyarat visual yang baik di mana output perintah dimulai dan berakhir pada daftar terminal yang panjang. Ini bekerja dengan baik untuk latar belakang yang terang dan gelap.

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

sinkronisasi; sinkronisasi; sinkronisasi; reboot

terkadang bisa sangat berguna. Hati-hati !

0
Tony Lambert

Saya menemukan memahami pukulan tombol bash mengarah ke penembakan yang lebih efisien, dan bahwa banyak dari mereka langsung dari emacs memperjelas penggunaannya (mis. Bahwa meta-XXX adalah versi kakak dari ctrl-XXX perintah biasanya).

Kunci "meta" biasanya merupakan kunci "alt", tetapi juga bisa menjadi kunci "esc". misalnya meta-f bisa didapat dengan baik alt-f atau esc f.

Agar pemetaan alt berfungsi, Anda mungkin harus menghapus "kunci akses menu" atau yang setara di opsi konsol. Pada dasarnya jika Anda menekan alt-f dan mendapatkan menu file Prompt, matikan menu akses alt-key.

ctrl-a / ctrl-e : move to start / end of line dasar-dasar yang tidak dapat Anda lakukan tanpa

ctrl-f, meta-f : forward char/Word menekan alt-f membuat Anda maju "1 Word" yang pada baris perintah cukup banyak perintah atau argumen

ctrl-b, meta-b : backwards char/Word sama dengan alt-f, tetapi mundur untuk melompat mundur melalui baris perintah

ctrl-d, meta-d : delete char/Word menekan alt-d akan menghapus (ke akhir) kata saat ini di bawah kursor. jauh lebih cepat daripada menahan hapus selama 30 detik. Berguna saat Anda sedang menyelesaikan tab di tengah-tengah sesuatu dan ingin meneruskan hapus ke akhir Word.

ctrl-k : kill line dihapus ke akhir baris

ctrl-u : undo mis. mengetikkan kata sandi, dan Anda tahu Anda salah melakukannya di suatu tempat, alih-alih memukul mundur 20 kali, cukup tekan ctrl-u. juga menghapus baris perintah saat ini.

meta-# : insert comment ini bagus untuk menjaga baris perintah yang Anda bangun sebagai komentar sebelum menjalankannya jika Anda perlu melakukan sesuatu yang lain terlebih dahulu. itu akan masuk ke histori perintah Anda tetapi tidak berjalan.

ctrl-r : reverse search mencari mundur melalui riwayat Shell Anda (ctrl-r berulang untuk pertandingan berikutnya)

ctrl-g : abort jika Anda berada di tengah ctrl-r dan ingin kembali ke tempat Anda mengetik, batalkan pencarian Anda dengan ctrl-g

meta-space / ctrl-x ctrl-x : set mark and jump to mark jika Anda perlu dengan cepat melompat ke posisi di baris perintah Anda, pertama-tama atur tanda, kemudian melompat kembali ke sana dengan ctrl-x ctrl-x. Catatan Anda mungkin harus menggunakan esc-space untuk mendapatkan tanda yang ditetapkan sebagai alt-space sering terikat untuk menjatuhkan menu konsol.

ctrl-] <char> : quick jump to <char> melompat maju ke karakter yang diketik setelah ctrl-] pada baris perintah. Kakaknya Meta-ctrl-] <char> melompat mundur.

0
markf

Favorit saya di bawah. Saya menggunakan sebagian besar dari mereka secara teratur

df -k (periksa filesystems) bunuh atau bunuh -9 (bunuh proses) set -o vi (atur baris perintah Anda ke vi) topas (alat kinerja) mount/unmount

oh yeah dan bagaimana saya bisa melupakan> (untuk mengarahkan ulang output ke file) ls> /tmp/tmp.txt

Banyak lagi tetapi sebagian dari kepala saya.

0
vegasbrianc