Risposte:
Questo si espande in qualche modo sul !!
trucco menzionato in questa risposta . In realtà ci sono un sacco di comandi relativi alla storia che tendono a dimenticarsi (le persone tendono a pugnalare Up100 volte invece di cercare un comando che sanno di aver digitato).
history
comando mostrerà un elenco di comandi eseguiti di recente con un designatore di eventi a sinistra!N
sostituirà il comando associato a designatore di eventi N
!-N
sostituirà il N
th comando più recente; ad esempio !-1
sostituirà il comando più recente, !-2
il secondo più recente, ecc.!!
è una scorciatoia per !-1
sostituire rapidamente l'ultimo comando!string
sostituirà il comando più recente che inizia con string
!?string?
sostituirà il comando più recente che contiene string
I designatori di parole possono essere aggiunti a un !
comando di cronologia per modificare i risultati. I due punti separano l'evento e i designatori di parole, ad es !!:0
. Il designatore di eventi !!
può essere abbreviato solo !
quando si utilizza un designatore di parole, quindi !!:0
equivale a !:0
.
!:0
otterrà il comando che è stato eseguito!:1
otterrà il primo argomento (e !:2
il secondo, ecc.)!:2-3
otterrà il secondo e il terzo argomento!:^
è un altro modo per ottenere il primo argomento. !:$
otterrà l'ultimo!:*
otterrà tutti gli argomenti (ma non il comando)I modificatori possono anche essere aggiunti a un !
comando di cronologia, ciascuno preceduto da due punti. È possibile impilare qualsiasi numero (ad es !:t:r:p
.).
h
- Allinea al nome file di baset
- Solo il nome file di baser
- Allinea all'estensione del nome filee
- Solo l'estensione del nome files/search/replacement
- Sostituisci la prima occorrenza di search
conreplacement
gs/search/replacement
- Sostituisci tutte le occorrenze di search
conreplacement
!-#
quelli. Uso !string
per eseguire l'ultimo comando che inizia con la stringa, ma generalmente prima lo tab-complete (zsh) per essere sicuro di eseguire la cosa giusta
!N
eseguirà il comando ..." è una descrizione troppo stretta; in realtà, !N
sarà sostituito dal comando ...; e così via per tutte le descrizioni nella risposta. Più corretto e aprendo possibilità molto più utili! Ad esempio, il citato sudo !!
.
bash
; in Emacs, per sfogliare la cronologia dei comandi e dei valori di input (per Mx o altri valori letti) si usa invece Meta-R (Meta-R è usato anche eshell
in Emacs). Quindi spesso li incasino.
bash - inserisce il parametro finale della riga precedente
alt- . la combinazione di tasti più utile di sempre, provala e vedi, per qualche motivo nessuno lo sa.
premerlo più volte per selezionare gli ultimi parametri più vecchi.
ottimo quando vuoi fare qualcosa di più sull'argomento / file che hai usato solo un momento fa.
alt
- .
andrà al comando precedente e tirare l'ultimo argomento da esso. Quindi, se vuoi l'ultimo argomento di tre comandi fa, premi alt
- .
tre volte.
yank-last-arg
comando readline, quindi dovrebbe funzionare con qualsiasi programma collegato contro readline, non solo BASH o ZSH.
Il mio preferito è
man 7 ascii
Semplice e molto utile.
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
Dai un'occhiata a questo sito web commandlinefu.com .
Puoi anche dare un'occhiata a questi quattro articoli di Peteris Krumins sul suo blog
ascii
programma separato è utile. Oltre a stampare una tabella, ti consente di eseguire una query per uno o più singoli caratteri.
Non sono sicuro che questo valga come un "trucco", ma le persone sembrano molto inconsapevoli dei tasti di scelta rapida standard readline. Di particolare utilità nelle conchiglie:
Ctrl+L
corrisponde al carattere ascii FormFeed. In genere ridisegna lo schermo in applicazioni di testo con una finestra dello schermo (ad esempio vim, less, mc, ecc.). Bello se lo schermo è stato "inquinato" da alcuni output di un altro programma.
Ctrl+W
tagliare una parola all'indietro, Alt+F
andare avanti di una parola, Alt+B
andare indietro di una parola in una riga. Mi piace Ctrl+Y
e Shift+Insert
perché puoi avere due righe copiate. Uno con Ctrl+U
(incollalo con Ctrl+Y
) e allo stesso tempo puoi copiare un'altra parola (seleziona la riga) incolla con ( Shift+Insert
).
CTRL+ Rin BASH per cercare / attivare comandi precedentemente eseguiti (il contenuto di ~ / .bash_history).
Questo è spesso estremamente utile. L'esecuzione di questo alias servirà il PWD su HTTP (indicizzato) sulla porta 8000:
alias webserver="python -m SimpleHTTPServer"
E poiché corro per tutto il tempo, spaziando e digitando troppo velocemente, questi alias sono probabilmente i miei più usati (seriamente):
alias maek=make
alias mkae=make
alias meak=make
alias amka=make
alias akme=make
E probabilmente il mio pezzo di BASH usato più di frequente è un semplice script che chiamo upload. Lo uso per aggiungere qualsiasi tipo di contenuto al mio Linode e copia l'URL HTTP risultante nei miei appunti (clic centrale). Molto utile per incollare roba alle persone in IRC:
scp -r $* $user@$host:public_html && {
URL="http://$host/~$user/$(basename $1)"
echo "$URL"
xselection -replace PRIMARY "$URL"
}
Solo un paio. Posso pubblicare molto più tardi, devo tornare al lavoro!
alias mk=make
Più veloce da digitare e meno probabile che si sbagli. Oppure compila dal tuo editor usando un tasto di scelta rapida ...
alias m=make
, o anche m=make -j6
o simile - tranne che uso già alias m=mutt
☺
Abbastanza semplice, ma la gente non sembra saperlo, ti riporta alla directory precedente:
cd -
cd..
dal DOS è radicato nella mia memoria muscolare ...
cd
(senza argomenti) che ti porta alla tua home directory.
L'espansione del controvento è un meccanismo mediante il quale è possibile generare stringhe arbitrarie.
Ti permette di sostituire linee noiose come:
mv loong/and/complex/file/name loong/and/complex/file/name.bacukup
con un'istanza più breve
mv loong/and/complex/file/name{,backup}
alcuni altri usi
# 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
Espansione aritmetica :
L'espansione aritmetica consente la valutazione di un'espressione aritmetica e la sostituzione del risultato. Il formato per l'espansione aritmetica è:
$((expression))
L'espressione viene trattata come se fosse racchiusa tra virgolette doppie, ma una virgoletta doppia tra parentesi non viene trattata in modo speciale. Tutti i token nell'espressione subiscono l'espansione dei parametri, l'espansione della stringa, la sostituzione dei comandi e la rimozione delle virgolette. Le espansioni aritmetiche possono essere nidificate.
$ a=1
$ b=2
$ echo $(( a+(b*2) ))
5
foo[123]
che si espanderà in foo1 foo2 foo3
, ma devono essere nomi di file per funzionare in quel caso
Questo di solito è nel mio script di avvio (.bashrc, .profile, qualunque cosa)
shopt
bontà, controlla i commenti:
shopt -s cdspell # try to correct typos in path
shopt -s dotglob # include dotfiles in path expansion
shopt -s hostcomplete # try to autocomplete hostnames
Un alias che salva i tasti premuti:
mkdir
e cd
in esso:
mkcd () { mkdir -p "$@" && cd "$@"; }
E, ultimo ma non meno importante, ho rinunciato a memorizzare la sintassi tar, quindi:
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
}
mkcd
solo a quella che ho chiamato id md
. Tuttavia, l'utilizzo di "$ @" come argomento per cd non ha alcun senso poiché non è possibile eseguire il cd in più di una singola directory. "$ @" funzionerà per mkdir, ma poi md () { mkdir -p "$1"; cd "$1" }
Due funzioni bash che mi salvano molti tasti.
Esegui automaticamente una ls dopo ogni cd riuscito:
function cd {
builtin cd "$@" && ls
}
Sali su n livelli:
# Usage .. [n]
function .. (){
local arg=${1:-1};
local dir=""
while [ $arg -gt 0 ]; do
dir="../$dir"
arg=$(($arg - 1));
done
cd $dir #>&/dev/null
}
builtin foo
per andare in giro con una funzione definita cd
; Ho usato chdir
nelle mie funzioni. Handy
cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }
Dato che di solito sono a metà strada nella riga di comando prima di voler cercare (CTRL-R in bash) ho il seguente nel mio .bashrc
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
Questo significa che se scrivo cd quindi premo su / giù posso vedere tutte le opzioni che ho fatto su cd. Fondamentalmente lo uso per dirs spesso usati. Come "cd w" e sto finendo per esaminare tutte le aree di lavoro che uso molto.
Una cosa che mi fa risparmiare molto tempo sono i comandi pushd / popd. Questi ragazzi ti permettono di creare una pila di directory e ridurre molto la digitazione:
/foobar/ > pushd /src/whatever/foo/test
/foobar/src/whatever/foo/test > make run
/foobar/src/whatever/foo/test > popd
/foobar/ > make
u
e o
rappresentano qui?
setopt autopushd
e tutte le modifiche alla directory verranno inviate automaticamente
Il screen
comando . In pratica salva la sessione della riga di comando per quando torni. È una specie di gestore di terminali, come un gestore di finestre. In questo modo, in una singola sessione di terminale, puoi avere più terminali virtuali in corso. È molto bello.
Se si usa screen
, questa funzione di shell (inserirla .bashrc
) è estremamente utile:
function scr {
if screen -ls | grep -q Main; then
# reattach to Main:
screen -xr Main
else
# name session "Main":
screen -S Main
fi
}
durante la digitazione scr
, controllerà se esiste la sessione principale e si collegherà ad essa. Altrimenti lo creerà.
Se è necessario modificare una riga di comando particolarmente lunga in bash
^X^E (Ctrl-X Ctrl-E)
lo aprirà nell'editor ($ EDITOR).
In zsh puoi ottenere lo stesso comportamento aggiungendolo a .zshrc:
autoload edit-command-line
zle -N edit-command-line
bindkey '^X^e' edit-command-line
Se sei un dattilografo veloce, questi sono utili:
alias grpe='grep --color=tty'
alias gpre='grep --color=tty'
alias rgep='grep --color=tty'
alias gerp='grep --color=tty'
Questa macro ti aiuta a calcolare i totali di una colonna di output: dimensioni del file, byte, pacchetti, tutto ciò che devi fare è specificare la colonna che vuoi aggiungere:
total ()
{
if [ x$1 = x ]; then set `echo 1`; fi
awk "{total += \$$1} END {print total}"
}
Lo usi in questo modo, ad esempio, senza argomenti, aggiunge il totale della prima colonna:
du | total
Se fornisci l'argomento, sommerà quella colonna, per esempio, questo ti darà il numero totale di byte usati da tutti i file C # in / tmp:
ls -l /tmp/*cs | total 5
A volte la tua console viene incasinata perché hai accidentalmente visualizzato un file binario (cat / bin / ls per esempio), puoi ripristinare il terminale con questa funzione di shell:
restaura ()
{
perl -e 'print "\e)B";'
}
Mi piace che io usi i caratteri per distinguere la classe di file e anche per nascondere i file di backup generati dal mio editor (i file di backup terminano con il carattere ~):
alias ls='ls -FB'
s/fast/sloppy/
reset
dove usi tu restaura
.
alias s='sudo'
alias r='rake' # i'm a ruby developer
alias ..='cd ..' # although with autocd feature for zsh this comes packed.
Uno dei miei preferiti quando dimentico s
:
$ s !! # last command with super user priviledges
bindkey -s '\e[12~' "sudo !!\n"
legare (in questo caso) F2 per eseguire quel comando. Ho quell'associazione, quindi quando eseguo qualcosa e vedo il messaggio di errore "hai dimenticato 'sudo', sciocco", posso solo infastidire F2 con fastidio
Se un comando accetta l'input stdin, è possibile leggere l'input da un file con <filename
. Questo può apparire ovunque nel comando, quindi queste linee sono equivalenti:
cat filename
cat <filename
<filename cat
Ciò è particolarmente utile per grep, in quanto consente di posizionare l'espressione alla fine della riga, quindi è possibile modificare rapidamente un comando grep colpendolo Up, senza dover scorrere a sinistra per superare il nome file:
<filename grep 'expression'
<input foo | bar | baz >output
, non funziona se provi a mescolare alcune primitive di shell loop come while
o for
nel mezzo. Quindi ho rinunciato e l'ho messo alla fine come da convenzione.
È possibile utilizzare CDPATH
per impostare l'equivalente di directory di PATH
; se provi a farlo cd foo
e non ce n'è foo
nella directory corrente, la shell controllerà ciascuna delle directory che sta CDPATH
cercando foo
in essa e passerà alla prima che trova:
export CDPATH="/usr"
cd bin # switches to 'bin' if there is one in the current directory, or /usr/bin otherwise
vi `which scriptname`
Per quando non sai dove abita qualcosa e non ti interessa neanche.
which
automaticamente, quindivi =scriptname
$(scriptname)
La e commerciale . Mette il tuo comando in background, così puoi continuare a digitare.
$> sudo updatedb &
Lavorando insieme e dopo un po 'vedi:
[1] 17403
E il tuo processo è fatto! Ottimo per le cose in cui non è necessario attendere che terminino.
&!
allo sfondo il lavoro e rinnegalo dalla shell!
bash
.
nohup
questo compie questo.
Completamento della scheda . Quanto sarebbe dannoso se dovessi scrivere tutti i personaggi di ogni percorso?
rm -fr /
. Quindi sì, il completamento della scheda è piuttosto vitale ...
ls /usr/lib/game-d*/rott*
rm -rf /
disabilitato nella maggior parte dei sistemi Linux?
Smonta ultimo dispositivo montato:
mount /media/whatever
...
u!mo
!mo
si espande all'ultimo comando iniziato con mo
(almeno in bash). A volte uno fa mv
nel mezzo, quindi u!m
non funzionerà così spesso.
Ho questo nel mio .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]"
}
E quando ho il codice sorgente HTML negli Appunti e voglio trovare tutti i collegamenti che uso
c-v | find-all 'href="([^"]*)"' | c-c
E ho tutti gli URL negli appunti
Ho anche questa funzione
function lsq(){
ls -lh $@ | tr -s ' ' | cut -d' ' -f5,8
}
quale dimensione di visualizzazione (leggibile dall'uomo) e nome file.
alias temp='cat /proc/acpi/thermal_zone/THRM/temperature'
questo alias è per la temeratura dello spettacolo
function separate() {
python -c "import sys,re; print '$1'.join(re.split('\s*', sys.stdin.read().strip()))";
}
con questa funzione posso calcolare il prodotto o la somma degli argomenti.
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()))";
}
Questa è una funzione utile che divide l'input standard separato da regex e quindi unisce il risultato.
function factorial() {
seq -s* $1 | bc
}
funzione fattoriale
function wiki() { dig +short txt $1.wp.dg.cx; }
Questa funzione visualizza il testo wiki su DNS
Ho anche tre funzioni di colore
function blue() {
echo -e "\x1b[34m\x1b[1m"$@"\x1b[0m";
}
function green() {
echo -e "\x1b[32m\x1b[1m"$@"\x1b[0m";
}
function red() {
echo -e "\x1b[31m\x1b[1m"$@"\x1b[0m";
}
function md5check() {
test `md5sum $2 | cut -d' ' -f1` = "$1" && green [OK] || red [FAIL]
}
Questa funzione convalida l'hash del file md5.
questo mostrerà un messaggio di errore per un dato codice
function strerror() { python -c "import os; print os.strerror($1)"; }
Puoi stampare tutti i messaggi con
alias all-errors='for i in `seq 131`; do echo -n "$i: "; strerror $i; done'
Un altro utile trucco ZSH:
Tratta l'output di un comando come un file:
emacs =(hg cat -r 100 somefile)
Questo apre una vecchia versione di un file tracciato da Mercurial in emacs per la visualizzazione evidenziata dalla sintassi. Senza questo, avrei dovuto pasticciare con hg revert
, hg archive
o in modo esplicito di inviare hg cat
l'output a un file temporaneo.
Ovviamente, questo funziona con qualsiasi programma che apre file e qualsiasi programma che stampa sullo standard output.
Una caratteristica specifica di ZSH sono gli alias di suffisso, impostati dando alias
il -s
flag:
alias -s ext=program
Se una data estensione ha un alias di suffisso, puoi eseguire direttamente un file con quella estensione e ZSH avvierà il programma dato e passerà il nome del file come argomento. Quindi, se l'alias sopra è attivo, queste righe sono equivalenti:
/path/to/foo.ext
program /path/to/foo.ext
Una delle mie funzioni preferite di sempre di ZSH è denominata directory. Puoi esportare una variabile con un determinato nome, con un valore che punta a un determinato percorso:
export foo=/usr/bin
Ora puoi usare ~foo
in un comando per fare riferimento a /usr/bin
:
cd ~foo
~foo/ls
cat ~foo/filename
Vedere questo domanda .
Quando corri ps ax | grep string
:
[steve@sage-arch ~]$ 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
l'ultima riga contenente grep
è qualcosa di un po ' ansioso
Puoi liberarti di questo eseguendo ps ax | grep '[s]tring'
:
[steve@sage-arch ~]$ 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
aggiornamento : o semplicemente eseguipgrep string
'[o]penbox'
). Le parentesi funzioneranno come una specie di glob, quindi se nella tua directory c'è openbox (diciamo che sei dentro /usr/bin
) bash userà semplicemente openbox, il che impedirà il trucco grep.
Il comando do-nothing :
come in
while :; do :; done
Espansione del rinforzo in combinazione con per i loop:
for c in {1..3}; do :; done
!
operatore e operatori di corto circuito ||
e&&
[ -d /tmp/dir ] || mkdir /tmp/dir
if ! ping 34.41.34.1; then :; fi
usando sub shell invece di pop / push (è utile negli script)
~$ ( cd /tmp; echo $PWD )
/tmp
~$
il tipo di comando what-istype
~$ type type
type is a shell builtin
~$ type ls
ls is aliased to `ls --color=auto'
~$ f(){ :; }
~$ type f
f is a function
f ()
{
:
}
anche molto bello: qui-stringhe
~$ cat <<<"here $PWD"
here /home/yourname
~$
e il mio preferito: reindirizzamento su un elenco di comandi
{ w; ps; ls /tmp; } 2>/dev/null |less
Adoro buttare quanta più roba possibile nella mia PS1. Alcune cose utili da ricordare:
\e[s
e \e[u
salva e salva la posizione del cursore rispettivamente. Lo uso per creare una "barra delle informazioni" nella parte superiore dello schermo, lunga un paio di righe, che può contenere più cose. Esempio:
PS1='\[\e[s\e[7m\e[1;1H\]\w\n\t \j / \! / \#\[\e[u\e[0m\e[33;1m\][\u@\h \[\e[34m\]\W]\[\e[0m\]\$ '
Unisci con alias clear='echo -e "\e[2J\n"'
. Provalo!
Anche il PROMPT_COMMAND
variabile definisce un comando da eseguire prima di PS1 ogni volta.
Un altro è il bg
comando. Se si dimentica di mettere &
alla fine di un comando, basta premere ^Ze digitare bg
e verrà eseguito in background.
bg
, quando ho un programma in esecuzione in background e premo accidentalmente fg
non so come respingerlo: D
PS1
quindi ho messo la maggior parte delle cose che voglio nella mia linea di fondo dello schermo ...