it-swarm-eu.dev

Jaké jsou vaše oblíbené funkce nebo triky příkazového řádku?

Sdílejte funkce a triky příkazového řádku pro systém Unix/Linux. Pokuste se udržet Shell/distro agnostik, pokud je to možné. Zájem o zobrazování aliasu, jednodílných linek, klávesových zkratek, malých skriptů Shell atd.

93
cmcginty

To se poněkud rozšiřuje trikem !! Zmíněným v tato odpověď . Ve skutečnosti existuje spousta příkazů souvisejících s historií, na které se obvykle zapomíná (lidé mají tendenci bodnout) Up 100krát místo toho hledali příkaz, který vědí, že napsali).

  • Příkaz history zobrazí seznam nedávno spuštěných příkazů s označením události vlevo
  • !N Nahradí příkaz spojený s označením události N
  • !-N Nahradí N tis poslední příkaz; např. !-1 Nahradí poslední příkaz, !-2 Druhý nejnovější atd.
  • Jak je uvedeno v jiné odpovědi, !! Je zkratka pro !-1, Aby se rychle nahradil poslední příkaz
  • !string Nahradí poslední příkaz začínající string
  • !?string? Nahradí poslední příkaz, který obsahuje string

K úpravě výsledků lze do příkazu historie ! Přidat slovo. Dvojtečka odděluje událost a označení Word, např. !!:0. Označovač události !! Může být zkrácen na pouhých !, Když se používá textový identifikátor, takže !!:0 Je ekvivalentní !:0.

  • !:0 Získá příkaz, který byl proveden
  • !:1 Získá první argument (a !:2 Druhý atd.)
  • !:2-3 Získá druhý a třetí argument
  • !:^ Je další způsob, jak získat první argument. !:$ Získá poslední
  • !:* Získá všechny argumenty (ale nikoli příkaz)

Modifikátory lze také připojit k historickému příkazu !, Z nichž každý má dvojtečku. Na libovolné číslo lze skládat (např. !:t:r:p).

  • h - Zarovnejte základní název souboru
  • t - Pouze základní název souboru
  • r - Zarovnat se na příponu názvu souboru
  • e - Pouze přípona názvu souboru
  • s/search/replacement - Nahraďte první výskyt search za replacement
  • gs/search/replacement - Nahraďte všechny výskyty search za replacement
88
Michael Mrozek

bash - vložte poslední parametr předchozího řádk

alt-. nejužitečnější kombinace kláves vůbec, zkuste to a uvidíte, z nějakého důvodu o tom nikdo neví.

stiskněte znovu a znovu pro výběr starších posledních parametrů.

skvělé, když chcete udělat něco více s argumentem/souborem, který jste použili před chvílí.

64
chillitom

Moje oblíbená je

man 7 ascii

Jednoduché a tak velmi užitečné.

   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

Podívejte se na tento web commandlinefu.com .

Můžete se také podívat na tyto čtyři články od Peteris Krumins na jeho blogu

49
Moeb

Proveďte poslední příkaz jako root:

Sudo !!
46
Alex B

Nejste si jisti, zda se to počítá jako „trik“, ale lidé se zdají velmi neví o standardních klávesových zkratkách readline. Zvláštní použití ve skořápkách:

  • Ctrl+U - Ořízněte aktuální řádek
  • Ctrl+Y - Vložte čáru řezu pomocí Ctrl+U
  • Ctrl+L - Vymažte obrazovku a překreslete aktuální řádek
  • Ctrl+G - Získat nový řádek a opustit stávající
42
Michael Mrozek

CTRL+R v BASH pro vyhledávání/aktivaci dříve provedených příkazů (obsah ~/.bash_history).

To je často velmi užitečné. Spuštění tohoto aliasu bude sloužit PWD nahoru přes HTTP (indexované) na portu 8000:

alias webserver="python -m SimpleHTTPServer"

A protože běžím, abych dělal celou dobu, a spaz ven a psát příliš rychle, tyto aliasy jsou pravděpodobně moje nejpoužívanější (vážně):

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

A pravděpodobně můj nejčastěji používaný kousek BASH je jednoduchý skript, který nazývám upload. Používám jej pro smíchání jakéhokoli obsahu s mým Linode a zkopíruje výslednou HTTP URL do mé schránky (prostřední kliknutí). Velmi užitečné pro vkládání věcí lidem v IRC:

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

Jen pár. Mohu přispívat mnohem později, musím se vrátit do práce!

36
Aaron Bockover

diff výstup dvou příkazů bez manuálního vytvoření dočasného souboru (bash):

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

Docela základní, ale zdá se, že lidé nevědí, vrací vás k předchozímu dir:

cd -
30
Robert Swisher

Rozšíření rovnátka :

Ortéza je mechanismus, kterým mohou být generovány libovolné řetězce.

To vám umožní nahradit nudné řádky jako:

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

s kratší instancí

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

některá další použití

# 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 

Aritmetická expanze :

Aritmetická expanze umožňuje vyhodnocení aritmetického výrazu a nahrazení výsledku. Formát pro aritmetické rozšíření je:

$((expression))

S výrazem se zachází jako s dvojitými uvozovkami, ale s dvojitými uvozovkami uvnitř závorek se nebude zacházet zvlášť. Všechny tokeny ve výrazu podléhají expanzi parametrů, rozšiřování řetězce, nahrazování příkazů a odstraňování nabídek. Aritmetická rozšíření mohou být vnořena.

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

To je obvykle v mém spouštěcím skriptu (.bashrc, .profile, cokoli)

shopt bože, podívejte se na komentáře:

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

Alias, který do něj ukládá stisknutí kláves: mkdir a cd:

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

A v neposlední řadě jsem se vzdal zapamatování syntaxe dehtu, takže:

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

Dvě bash funkce, které mi ušetří mnoho klíčových tahů.

Po každém úspěšném CD proveďte automatické ls:

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

Nahoru n úrovně:

# 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

Protože jsem obvykle na půli cesty k příkazové řádce, než chci hledat (CTRL-R v bash), mám ve svém .bashrc následující

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

To znamená, že pokud napíšu cd, stiskem nahoru/dolů uvidím všechny možnosti, které mám cd'd. V podstatě to používám pro často používané dirty. Jako „cd w“ a skončím procházením všemi pracovními prostory, které hodně využívám.

17
mendicant

Jedna věc, která mi ušetří spoustu času, jsou příkazy pushd/popd. Tito kluci vám umožní vytvořit hromadu adresářů a snížit psaní hodně:

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

screenpříkaz . V zásadě ukládá relaci příkazového řádku, když se vrátíte. Je to druh správce terminálů, jako správce oken. V jedné relaci terminálu tak můžete mít spuštěno více virtuálních terminálů. To je hodně dobrý.

Pokud jeden používá screen, tato funkce Shell (vložte ji do .bashrc) je nesmírně užitečné:

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

po zadání scr zkontroluje, zda vaše hlavní relace existuje, a připojí se k ní. Jinak to vytvoří.

14
user394

Pokud potřebujete upravit zvláště dlouhý příkazový řádek v bash

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

otevře v editoru ($ EDITOR).

V zsh můžete získat stejné chování přidáním tohoto do .zshrc:

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

Pokud jste rychlý pisatel, jsou užitečné:

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

Toto makro vám pomůže vypočítat součty sloupce výstupu: velikost souboru, bajty, pakety, vše, co musíte udělat, je zadat sloupec, který chcete přidat:

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

Používáte to takto například, bez argumentů, přidá součet prvního sloupce:

du | total

Pokud zadáte argument, sčítá například tento sloupec, čímž získáte celkový počet bajtů použitých všemi soubory C # v/tmp:

ls -l /tmp/*cs | total 5

Někdy je vaše konzole zmatená, protože jste omylem prohlíželi binární soubor (například kočka/bin/ls), můžete terminál obnovit pomocí této funkce Shell:

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

Líbí se mi, že moje znaky používají k rozlišování třídy souborů a také ke skrytí záložních souborů generovaných mým editorem (záložní soubory končí znakem ~):

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.

Jeden z mých oblíbených, když zapomenu s:

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

Pokud příkaz vezme vstup stdin, můžete přečíst vstup ze souboru pomocí <filename. To se může objevit kdekoli v příkazu, takže tyto řádky jsou rovnocenné:

cat filename
cat <filename
<filename cat

To je zvláště užitečné pro grep, protože vám umožňuje umístit výraz na konec řádku, takže můžete rychle upravit příkaz grep tím, že stisknete Up, aniž byste museli posouvat doleva, abyste se dostali za název souboru:

<filename grep 'expression'
10
Michael Mrozek

Pomocí CDPATH můžete nastavit ekvivalent adresáře PATH; pokud se pokusíte cd foo a v aktuálním adresáři není foo, Shell zkontroluje každý z adresářů v CDPATH hledá v nich foo a přepne na první najde:

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`

Nebo když nevíte, kde něco žije, a nestaráte se o to.

9
Matt Simmons

ampersand. Umístí váš příkaz na pozadí, takže můžete pokračovat v psaní.

$> Sudo updatedb &

Pracujete spolu a po chvíli uvidíte:

[1] 17403

A váš proces je hotový! Skvělé pro věci, u kterých nemusíte čekat, až skončí.

9
user394

Dokončení karty. Jak špatné by to bylo sát, kdybyste museli zadat všechny znaky každé cesty?

8
user394

Mám to ve svém .bashrc

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

A když mám ve schránce zdrojový kód html a chci najít všechny odkazy, které používám

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

A mám všechny adresy URL ve schránce

Také mám tuto funkci

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

které zobrazují velikost (lidsky čitelné) a název souboru.

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

tento alias slouží pro ukázkovou teplotu

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

pomocí této funkce mohu spočítat produkt nebo součet argumentů.

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

Toto je užitečná funkce, která rozdělí standardní vstup oddělený regexem a pak se připojí k výsledku.

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

faktoriální funkce

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

Tato funkce zobrazuje wiki text přes DNS

Mám také tři barevné funkce

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

Tato funkce ověřuje hash souboru md5.

zobrazí se chybová zpráva pro daný kód

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

Všechny zprávy můžete vytisknout pomocí

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

Počet naposledy připojených zařízení:

mount /media/whatever
...
u!mo

!mo expanduje na poslední příkaz, který začal s mo (alespoň v bash). Někdy je uprostřed mv, takže u!m nebude fungovat tak často.

7

Další užitečný trik ZSH:

Považujte výstup příkazu za soubor:

emacs =(hg cat -r 100 somefile)

Otevře se stará verze souboru sledovaného Mercurial v emacs pro syntakticky zvýrazněné prohlížení. Bez toho bych se musel pohrávat s hg revert, hg archive nebo explicitně poslat hg cat výstup do dočasného souboru.

Samozřejmě to funguje s jakýmkoli programem, který otevírá soubory, a jakýmkoli programem, který tiskne na standardní výstup.

6
Matthew Flaschen

Funkce specifická pro ZSH je aliasy přípon, které jsou nastaveny tak, že příznak alias-s:

alias -s ext=program

Pokud má daná přípona alias přípony, můžete spustit soubor s tímto rozšířením přímo a ZSH spustí daný program a předá název souboru jako argument. Pokud tedy výše uvedený alias existuje, jsou tyto řádky rovnocenné:

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

Jedna z mých nejoblíbenějších funkcí ZSH je pojmenovaná adresáře. Můžete exportovat proměnnou s daným názvem s hodnotou, která ukazuje na určitou cestu:

export foo=/usr/bin

Nyní můžete použít ~foo v příkazu odkazovat na /usr/bin:

cd ~foo
~foo/ls
cat ~foo/filename
5
Michael Mrozek
  • Příkaz do-nic : jako v

    while :; do :; done
    
  • Ortéza v kombinaci s pro smyčky:

    for c in {1..3}; do :; done
    
  • ! operátor a zkratující operátoři || a &&

    [ -d /tmp/dir ] || mkdir /tmp/dir
    
    if ! ping 34.41.34.1; then :; fi
    
  • použití subshellů namísto pop/Push (přichází vhod v skriptech)

    ~$ ( cd /tmp; echo $PWD )
    /tmp
    ~$
    
  • druh what-is příkaz 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 () 
    { 
         :
    
    }
    
  • také velmi pěkné: zde řetězce

    ~$ cat <<<"here $PWD"
    here /home/yourname
    ~$
    
  • a můj oblíbený: přesměrování na seznam příkazů

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

Podívejte se na to otázka.

Když spustíte 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

poslední řádek obsahující grep je něco anoying

Můžete se toho zbavit spuštěním 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

aktualizace : nebo stačí spustit pgrep string

4
Stefan

Někdy jsou bashová nastavení taková, že rm je pojmenováno na rm -i, a proto vyžaduje potvrzení každého mazaného souboru. Když na takovém účtu občas pracuji, používám \rm pro načtení původního chování rm bez změny konfigurace uživatele.

3
mouviciel

Miluju, jak se do svého PS1 chucků tolik věcí, kolik můžu. Některé užitečné věci k zapamatování:

\e[s a \e[u uložení a uložení pozice kurzoru. Používám to k vytvoření „informačního pruhu“ v horní části obrazovky, pár řádků dlouhých, které se vejdou více věcí. Příklad:

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

Kombinováno s alias clear='echo -e "\e[2J\n"'. Vyzkoušej to!

Také Prompt_COMMAND proměnná definuje příkaz, který se má pokaždé provést před PS1.

Dalším příkazem je příkaz bg. Pokud zapomenete dát & Na konci příkazu stačí stisknout ^Z a zadejte bg a spustí se na pozadí.

3
Lucas Jones

Zobrazte větev a stav Git v řádku

 export GIT_PS1_SHOWDIRTYSTATE = true 
 
 pokud ["$ color_Prompt" = yes]; pak 
 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

Můj oblíbený příkaz je 'najít', používám ho všude ... příklady:

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

Stačí zobrazit nejtěžší soubory ve formátu ls -l (dlouhý).

Pokud potřebujete kód s oprávněními 0640, stačí hledat:

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

nebo nahradit:

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

Pak potřebujete symbol a nevíte, kde to je?

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

Novější soubory než XFILE ??

find . -newer XFILE -type f

Jo, "najdi" pravidlo!

3
D4RIO

Jednou tak často, když jste zadali dlouhý příkaz a před jeho dokončením jste si uvědomili, že to nebude fungovat hned, protože musíte spustit něco jiného (např. Zadat git commit -m "long commit message here"), můžete zasáhnout ^A^K na začátek řádku a jeho zabití (uložení do vyrovnávací paměti), další spuštění příkazu k opravě věcí a nakonec ^Y vložit zabitý příkaz a pokračovat. Šetří hodně přepisování. To vše samozřejmě je, když readline je v Emacs módu.

Další spořič času: mkdir -p some/nested/dirs/to/be/created vytvoří všechny diry v cestě, pokud chybí.

3
alex

Zobrazuje pěkné ASCII umění současného stromu procesů se zvýrazněným procesem s nejintenzivnějším procesorem.

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

Zabijte to pomocí Ctrl + C

3
Stefan

Viz výstup příkazů aktualizovaný každých n sekund

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

Zobrazit statistiky o síťovém zařízení wlan0

ip -s link ls wlan0

Zobrazit směrovací tabulku pro zařízení eth1

ip route ls dev eth1

Zobrazení statistik všech paketů směrovačů, které prochází, aby dosáhly hostitele

mtr --interval 5 HOSTNAME

Podívejte se na reverzní záznamy DNS ohledně názvů hostitelů na SÍTI

nmap -sL NETWORK

Porovnejte web

ab

Získejte všechny odkazy z webové stránky

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

Zobrazit výchozí bránu

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

Zápis standardní chyby do souboru

foo 2> errors.txt

Přesměrujte stderr na stdout

foo 2>&1

Přesměrujte stderr i stdout do stejného souboru.

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

Nahradit části předchozího příkazu:

^Vyhledávání^nahradit

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

Skvělé pro překlepy:

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

Shrňte velikost adresáře s klesající lidskou velikostí

du -hs */ | sort -hr

např.

10.2G   foo/
4M      bar/
2
Eric Fortis

dvojitá hvězdná expanze se zsh (která rekurzivně sestupuje do adresářového stromu, nejen na jedné úrovni, něco podobného $(find ! -type d):

grep string **/*.cc
2
Andre Holzner

moje oblíbená funkce je ŽÁDNÉ BARVY! =)

TERM = xterm-mono nebo TERM = linux-m závisí na OS ...

Moc se mi líbí černá a bílá IRSSI, MC a jakýkoli jiný nástroj „Textové uživatelské rozhraní“

2
holms

ZSH má globální aliasy. Rozšiřuje alias kdekoli v příkazovém řádku. Toto se mi hodilo pro názvy hostitelů:

Např.:

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

Pak mohu udělat např .:

sftp sub
ssh sub

atd.

2
Matthew Flaschen

Ve skutečnosti není jednosložková loď, ale myslím, že je to užitečné. Převést mnoho souborů na velká písmena, například file_to_upper *php *c. Existuje mnoho podobných případů, jako je převod na nižší, přejmenování všech souborů příponou/předponou atd.

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

získat název souboru s nejnovější časovou značkou v aktuálním adresáři:

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

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

dc je RPN kalkulačka; tato funkce mi umožňuje zadat výraz jako argumenty příkazu:

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

Zobrazí výzvu, kde je hostname tučně. Chvíli jsem vyzkoušel barevné výzvy, ale barva by někdy vypadala špatně v závislosti na pozadí. Tučné práce pro mě pro světlé pozadí, tmavé pozadí, modré pozadí atd.

Toto je v mém .bashrc:

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

Při neustálém přepínání mezi Windows a Unix/Linux mi připadalo užitečné:

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

Toto je pro zsh, ne bash, fyi (pokud jste ho nepoužili, nebudete litovat, že to vyzkoušíte). To je opravdu užitečné pro rychlé zadání dlouhých cest pro přenosy scp. Funguje to stejně jako pomocí k dokončení nebo seznamu dostupných názvů souborů/adresářů.

Příklad

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

dokončí cestu k /home/webdev/domains/example.com/http.public/longdirname.

Jsem špatný na příkladech, ale to by vám mělo dát nápad. Vyzkoušejte to, může vám opravdu ušetřit prsty při psaní.

# 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 , což vám umožňuje přesunout běžící program z jednoho terminálu na druhý. Pokud tedy máte ncurses program spuštěný mimo obrazovku, tmux nebo ssh, můžete jej připojit k ssh relaci nebo síťové obrazovce nebo relaci tmux spuštěním ReTTY uvnitř terminálu, kde chcete daný program použít. Jinými slovy, je to podobné obrazovce a tmuxu, ale s výjimkou, že (a) může současně spustit pouze jeden program a (b) může být spuštěn po zahájíte podřízený proces.

1
mmirate

Můj oblíbený je použít příkaz python) k vytvoření dočasného http serveru:

python -m SimpleHTTPServer

a přístup k souborům z tohoto stroje přes lan jako:

http://192.168.1.70:80

Dalším je stáhnout soubor dehtu v extrahované podobě jako:

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

Zde může být odkaz přes www a bz2 může být buď gz, tgz nebo bz2 samotný.

1
SHW

Zálohujte své oblíbené soubory automaticky

Modulární .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

Bezpečnější rm, kompatibilní s Linuxem a 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
}

Super horká akce „CD“

# 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 je váš jediný pravý bůh.

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

Terminál písma

Poté, co jsem se podíval na baziliony písem, používám 14 pt Monaco, Anti-aliased s iTerm2.

V systému Mac (aplikace): Vyzkoušejte tuto aplikaci, která poskytuje klíčové vazby.

KeyCue (tm) (r) (c) ($) poskytuje kontext téměř jakékoli spuštěné aplikace pouhým přidržením command.

1
dhchdhd

funkce automatického push zsh:

setopt autopushd

a spolu s tím:

alias dirs='dirs -v'

Takže kdykoli mohu napsat dirs a dostanu historii toho, kde jsem byl:

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

a pak mohu cd zpět do např. /usr/local/bin zadáním:

cd ~2
1
Andre Holzner

Žádný z následujících „triků“ není technicky náročný ani působivý, ale mají na jiného člověka určitý dopad. Pokud nemůžeme využít našich pracovních míst k tomu, aby náš život byl šťastnější, měli bychom znovu myslet na některé věci.

Líbí se mi alias. Můj oblíbený trik je upravit ~/.bash_aliases na počítači mého gf, protože chybí, a přidat řádek jako:

alias gfname='echo Myname is thinking of you'

nebo jinou romantickou nabídku.

Dalším „trikem“, který se mi obzvláště líbí, je:

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

kde 123 je osoba, které bych chtěl popřát všechno nejlepší k narozeninám a mails.txt obsahuje zprávu, kterou bych chtěl napsat jako tělo e-mailu. Spánek 1; je někdy nutné, protože na vidlici je omezený limit (). Mohli byste také použít argumenty příkazového řádku $1 atd...

1

Ve své domovské složce mám složky pojmenované jako Dokument, Stahování, Temp atd. S prvním písmenem velkými. Když pracuji na terminálu, je nepříjemné posunout stiskem první klávesy, když cd'ing do adresáře. Stačí zadat následující v terminálu a bash by případ automaticky opravil.

shopt -s nocaseglob
1
tsudot

Použijte pgrep foo namísto ps aux | grep foo Pokud chcete zjistit, kolik případů foo běží a jejich pids:

např. namísto ps aux | grep firefox, použijte pgrep firefox

1
user1888

Bez nich nemůžu žít

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

v mém ~/.inputrc.

Aktivuje je v každé aplikaci s povoleným readline. Aktivace editace příkazového řádku vi v prostředí Shell funguje pouze prostřednictvím:

set -o vi

Úderem do ESC nebo CTRL + [získáte tak dobře známý režim příkazů vi. A všude můžete používat výkonné příkazy vi!

1
maxschlepzig

Existuje skvělý web pro toto: http://www.commandlinefu.com/commands/browse

1
Andrew Stern

Můj osobní oblíbený je

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

Výše uvedený příkaz dělá soubor s názvem x a poté prohledá uvedený soubor podle vzoru, který hledáte. Neuvěřitelně užitečné, pokud hledáte určitý kousek kódu v souboru, který je někde ve vašich podadresářích.

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

Pěkný snadný způsob, jak vidět vlastnictví, oprávnění, velikosti (pokud jsou soubory) a další vlastnosti, ať už se váš výraz „najít“ vrátí.

0
TCKMusing

Často jsem si hned po spuštění 15minutového příkazu všiml, že bych chtěl přidat další příkazy do příkazového řádku pomocí &&. Místo toho, abych přerušil již spuštěnou úlohu, mám tendenci používat at do fronty ve druhé frontě, takže si delší dobu nemusím dívat na terminál.

Obecně at fronty úloh pro provedení v daném čase:

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

Položky do fronty lze zobrazit pomocí atq a odstranit pomocí atrm.

Další doplněk k tipům pro přizpůsobení bash Prompt: Rád invertuji Prompt, protože to dává dobré vizuální podněty, kde výstup příkazů začíná a končí dlouhými výpisy terminálů. To funguje dobře pro světlé i tmavé pozadí.

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

sync; sync; sync; restartujte počítač

může být někdy užitečné. Buď opatrný !

0
Tony Lambert

Zjistil jsem, že porozumění bash klíčovým tahům vede k efektivnějšímu ostřelování a že mnoho z nich je přímo z emacsu objasňuje jejich použití (tj. Že meta-XXX Je verze velkého bratra příkazu ctrl-XXX Obvykle).

Klávesa „meta“ je obvykle klávesa „alt“, ale může to být také klávesa „esc“. např. meta-f Lze získat buď s alt-f Nebo esc f.

Aby mapování kláves alt fungovalo, možná budete muset zrušit „přístupové klávesy nabídky“ nebo jejich ekvivalent v možnostech konzoly. V zásadě, pokud stisknete klávesu alt-f a dostanete nabídku Soubor výzva, vypněte přístupové nabídky alt-key.

ctrl-a / ctrl-e : move to start / end of line Základy, bez kterých se neobejdete

ctrl-f, meta-f : forward char/Word Stisknutí alt-f skočí vpřed "1 slovo", které na příkazovém řádku je do značné míry příkaz nebo argument

ctrl-b, meta-b : backwards char/Word Stejný jako alt-f, ale dozadu pro skok dozadu přes příkazový řádek

ctrl-d, meta-d : delete char/Word Stisknutím alt-d odstraníte (na konec) aktuální slovo pod kurzorem. mnohem rychleji, poté přidržte smazání po dobu 30 sekund. Je to užitečné, když uprostřed něčeho dokončujete kartu a chcete přeposlat smazání na konec aplikace Word.

ctrl-k : kill line Odstraní na konec řádku

ctrl-u : undo Např. zadáním hesla a víte, že jste to někde udělali špatně, namísto toho, abyste dvakrát zasáhli backspace, stačí stisknout ctrl-u. také vymaže aktuální příkazový řádek.

meta-# : insert comment Je to skvělé pro udržení své příkazové řádky, kterou vytváříte jako komentář před spuštěním, pokud potřebujete udělat něco jiného. půjde to do vaší historie příkazů, ale nebude spuštěna.

ctrl-r : reverse search Vyhledávání zpět ve vaší historii Shell (opakované ctrl-r pro další zápas)

ctrl-g : abort Pokud jste uprostřed ctrl-r A chcete se vrátit zpět na místo, kde jste psali, jednoduše vyhledávání ukončete pomocí ctrl-g

meta-space / ctrl-x ctrl-x : set mark and jump to mark, Pokud potřebujete rychle přejít na místo v příkazovém řádku, nejprve nastavte značku a poté na ni přeskočte pomocí ctrl-x ctrl-x. Možná budete muset použít esc-space, Abyste získali značku nastavenou, protože alt-space Je často vázáno na vyvolání menu konzoly.

ctrl-] <char> : quick jump to <char> Skočí vpřed na znak zadaný po ctrl-] Na příkazovém řádku. Velký bratr Meta-ctrl-] <char> Skočí dozadu.

0
markf

Moje oblíbené jsou níže. Většinu z nich používám pravidelně

df -k (zkontrolujte souborové systémy) kill or kill -9 (kill process) set -o vi (nastavte příkazový řádek na vi) topas (výkonný nástroj) mount/unmount

jo jo a jak bych mohl zapomenout> (přesměrovat výstup do souboru) ls> /tmp/tmp.txt

Mnohem více, ale někteří mimo mě.

0
vegasbrianc