Réponses:
Cela élargit quelque peu le !!
truc mentionné dans cette réponse . Il y a en fait un tas de commandes liées à l'histoire qui ont tendance à être oubliées (les gens ont tendance à poignarder Up100 fois au lieu de chercher une commande qu'ils savent qu'ils ont tapée).
history
commande affichera une liste des commandes récemment exécutées avec un indicateur d'événement à gauche!N
remplacera la commande associée à l'indicateur d'événement N
!-N
remplacera la commande N
la plus récente; par exemple !-1
, substituera la commande la plus récente, !-2
la deuxième la plus récente, etc.!!
est un raccourci pour !-1
, pour remplacer rapidement la dernière commande!string
remplacera la commande la plus récente qui commence par string
!?string?
remplacera la commande la plus récente qui contient string
Des indicateurs de mot peuvent être ajoutés à une !
commande d'historique pour modifier les résultats. Les deux points séparent les désignateurs d'événement et de mot, par exemple !!:0
. Le désignateur d’événement !!
peut être abrégé uniquement !
lorsque vous utilisez un désignateur de mot, ce qui !!:0
équivaut à !:0
.
!:0
obtiendra la commande qui a été exécutée!:1
recevra le premier argument (et !:2
le second, etc.)!:2-3
recevra les deuxième et troisième arguments!:^
est un autre moyen d'obtenir le premier argument. !:$
obtiendra le dernier!:*
obtiendra tous les arguments (mais pas la commande)Les modificateurs peuvent également être ajoutés à une !
commande d'historique, chacun précédé d'un deux-points. N'importe quel nombre peut être empilé (par exemple !:t:r:p
).
h
- Aligner le nom du fichier de baset
- Seul le nom de fichier de baser
- Aligner à l'extension du nom de fichiere
- Seulement l'extension de nom de fichiers/search/replacement
- Remplacer la première occurrence de search
avecreplacement
gs/search/replacement
- Remplacer toutes les occurrences de search
avecreplacement
!-#
non plus. J'avais l'habitude !string
d'exécuter la dernière commande qui commence par string, mais je la complète généralement par tabulation (zsh) pour m'assurer que la bonne chose est exécutée
!N
lancera la commande ..." est une description trop étroite; en fait, !N
sera remplacé par la commande ...; et ainsi de suite pour toutes les descriptions dans la réponse. Plus correct et ouvrant des possibilités beaucoup plus utiles! Par exemple, le mentionné sudo !!
.
bash
; Dans Emacs, pour parcourir l'historique des commandes d'entrée et des valeurs (pour Mx ou d'autres valeurs lues), on utilise Meta-R à la place (Meta-R est également utilisé eshell
dans Emacs). Alors je les gâche souvent.
bash - insère le dernier paramètre de la ligne précédente
alt- . La combinaison de touches la plus utile à ce jour, essayez-la et voyez, pour une raison quelconque, personne ne la connaît.
appuyez encore et encore pour sélectionner les derniers paramètres plus anciens.
super quand vous voulez faire quelque chose de plus avec l'argument / le fichier que vous avez utilisé il y a un instant.
alt
, .
la commande précédente est extraite de la commande précédente. Donc , si vous voulez que le dernier argument il y a trois commandes, vient de frapper alt
- .
trois fois.
yank-last-arg
commande readline. Elle devrait donc fonctionner avec tout programme lié à readline, pas seulement BASH ou ZSH.
Mon favori est
man 7 ascii
Simple et très 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
Jetez un coup d'œil à ce site Web commandlinefu.com .
Vous pouvez également consulter ces quatre articles de Peteris Krumins sur son blog
ascii
programme séparé est également utile. Outre l'impression d'une table, il vous permet de rechercher un ou plusieurs caractères individuels.
Je ne sais pas si cela compte comme un "truc", mais les gens ne semblent pas très conscients des raccourcis clavier ReadLine standard. D'utilisation particulière dans les coquilles:
Ctrl+L
correspond au caractère ascii FormFeed. Il va généralement redessiner l'écran dans les applications texte avec une fenêtre d'écran (par exemple, vim, less, mc, etc.). Bien si l'écran a été "pollué" par une sortie d'un autre programme.
Ctrl+W
pour supprimer un mot en arrière, Alt+F
pour avancer d'un mot, Alt+B
pour reculer d'un mot dans une ligne. J'aime Ctrl+Y
et Shift+Insert
parce que vous pouvez avoir deux lignes copiées. Un avec Ctrl+U
(coller avec Ctrl+Y
) et en même temps vous pouvez copier un autre mot (sélectionner la ligne) coller avec ( Shift+Insert
).
CTRL+ Rdans BASH pour rechercher / activer des commandes précédemment exécutées (le contenu de ~ / .bash_history).
Ceci est souvent extrêmement utile. L'exécution de cet alias servira la PWD jusqu'à HTTP (indexée) sur le port 8000:
alias webserver="python -m SimpleHTTPServer"
Et parce que je cours constamment, que je tape trop vite et que je tape trop vite, ces alias sont probablement les plus utilisés (sérieusement):
alias maek=make
alias mkae=make
alias meak=make
alias amka=make
alias akme=make
Et mon morceau BASH le plus fréquemment utilisé est probablement un script simple que j'appelle uploader. Je l'utilise pour intégrer n'importe quel type de contenu à mon Linode, et il copie l'URL HTTP résultante dans mon presse-papiers (clic du milieu). Très utile pour coller des choses aux gens dans IRC:
scp -r $* $user@$host:public_html && {
URL="http://$host/~$user/$(basename $1)"
echo "$URL"
xselection -replace PRIMARY "$URL"
}
Juste un couple. Je peux poster beaucoup plus tard, je dois retourner au travail!
alias mk=make
Plus rapide à taper et moins susceptible de se tromper. Ou compilez à partir de votre éditeur à l'aide d'un raccourci clavier ...
alias m=make
, ou même m=make -j6
ou similaire - sauf que j'utilise déjà alias m=mutt
☺
Assez basique, mais les gens ne semblent pas savoir, vous ramène à la phrase précédente:
cd -
cd..
de DOS est enraciné dans ma mémoire musculaire ...
cd
(sans argument) ce qui vous amène à votre répertoire personnel.
Le développement d'accolades est un mécanisme par lequel des chaînes arbitraires peuvent être générées.
Il vous permet de remplacer des lignes fastidieuses comme:
mv loong/and/complex/file/name loong/and/complex/file/name.bacukup
avec une instance plus courte
mv loong/and/complex/file/name{,backup}
quelques autres utilisations
# 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
Expansion arithmétique :
L'expansion arithmétique permet l'évaluation d'une expression arithmétique et la substitution du résultat. Le format de développement arithmétique est le suivant:
$((expression))
L'expression est traitée comme si elle se trouvait entre guillemets doubles, mais les guillemets doubles entre parenthèses ne font pas l'objet d'un traitement particulier. Tous les jetons de l'expression subissent une extension de paramètre, une extension de chaîne, une substitution de commande et une suppression de devis. Les développements arithmétiques peuvent être imbriqués.
$ a=1
$ b=2
$ echo $(( a+(b*2) ))
5
foo[123]
laquelle évoluer foo1 foo2 foo3
, mais ils doivent être des noms de fichiers pour pouvoir fonctionner dans ce cas
C’est généralement dans mon script de démarrage (.bashrc, .profile, peu importe)
shopt
bonté, vérifiez les commentaires:
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 qui sauve les frappes au clavier:
mkdir
et cd
dans celui-ci:
mkcd () { mkdir -p "$@" && cd "$@"; }
Et enfin, j'ai renoncé à la mémorisation de la syntaxe tar, donc:
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
celle que je nomme id md
. Cependant, l’utilisation de "$ @" en tant qu’argument de cd n’a aucun sens car vous ne pouvez pas cd dans plus d’un répertoire. "$ @" fonctionnera pour mkdir, mais ensuite vous manipulerez les arguments différemment pour mkdir et cd, je suggérerais donc plutôtmd () { mkdir -p "$1"; cd "$1" }
Deux fonctions bash qui me permettent d’économiser beaucoup de touches.
Faites automatiquement une lecture après chaque disque réussi:
function cd {
builtin cd "$@" && ls
}
Montez n niveaux:
# 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
pour définir une fonction cd
. Je l'utilise chdir
dans mes fonctions. Handy
cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }
Comme je suis généralement à mi-chemin d'une ligne de commande avant de vouloir effectuer une recherche (CTRL-R sous bash), j'ai les éléments suivants dans mon .bashrc
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
Cela signifie que si je tape cd puis appuie en haut / en bas, je peux voir toutes les options que j'ai enregistrées. Fondamentalement, je l’utilise pour les répertoires souvent utilisés. Comme "cd w" et je finis par parcourir tous les espaces de travail que j'utilise beaucoup.
Une chose qui me fait gagner beaucoup de temps, ce sont les commandes pushd / popd. Ces gars-là vous permettent de créer une pile de répertoires et de réduire considérablement la saisie:
/foobar/ > pushd /src/whatever/foo/test
/foobar/src/whatever/foo/test > make run
/foobar/src/whatever/foo/test > popd
/foobar/ > make
u
et o
représentent ici?
setopt autopushd
modifier automatiquement tous les changements de répertoire.
La screen
commande . Il enregistre essentiellement votre session en ligne de commande pour votre retour. C'est un peu un gestionnaire de terminal, comme un gestionnaire de fenêtres. De cette façon, dans une session de terminal unique, vous pouvez avoir plusieurs terminaux virtuels actifs. C'est vraiment cool.
Si on utilise screen
, cette fonction shell .bashrc
est extrêmement utile:
function scr {
if screen -ls | grep -q Main; then
# reattach to Main:
screen -xr Main
else
# name session "Main":
screen -S Main
fi
}
lors de la saisie scr
, il vérifiera si votre session principale existe et s’y attachera. Sinon, ça va le créer.
Si vous avez besoin de modifier une ligne de commande particulièrement longue dans bash
^X^E (Ctrl-X Ctrl-E)
l'ouvrira dans l'éditeur ($ EDITOR).
En zsh, vous pouvez obtenir le même comportement en ajoutant ceci à .zshrc:
autoload edit-command-line
zle -N edit-command-line
bindkey '^X^e' edit-command-line
Si vous êtes un dactylographe rapide, ceux-ci sont utiles:
alias grpe='grep --color=tty'
alias gpre='grep --color=tty'
alias rgep='grep --color=tty'
alias gerp='grep --color=tty'
Cette macro vous aide à calculer les totaux d'une colonne de sortie: tailles de fichier, octets, paquets, il vous suffit de spécifier la colonne que vous souhaitez ajouter:
total ()
{
if [ x$1 = x ]; then set `echo 1`; fi
awk "{total += \$$1} END {print total}"
}
Vous l'utilisez comme ceci par exemple, sans arguments, il ajoute le total de la première colonne:
du | total
Si vous fournissez l'argument, la somme de cette colonne sera ajoutée, par exemple, cela vous donnera le nombre total d'octets utilisés par tous les fichiers C # de / tmp:
ls -l /tmp/*cs | total 5
Parfois, votre console est perturbée parce que vous avez accidentellement consulté un fichier binaire (cat / bin / ls par exemple), vous pouvez restaurer le terminal avec cette fonction shell:
restaura ()
{
perl -e 'print "\e)B";'
}
J'aime que mon ls utilise des caractères pour distinguer la classe de fichiers, mais aussi pour masquer les fichiers de sauvegarde générés par mon éditeur (les fichiers de sauvegarde se terminent par le caractère ~):
alias ls='ls -FB'
s/fast/sloppy/
reset
où vous utilisez restaura
.
alias s='sudo'
alias r='rake' # i'm a ruby developer
alias ..='cd ..' # although with autocd feature for zsh this comes packed.
Un de mes favoris quand j'oublie s
:
$ s !! # last command with super user priviledges
bindkey -s '\e[12~' "sudo !!\n"
lier (dans ce cas) F2 pour exécuter cette commande. J'ai cette liaison, donc quand je lance quelque chose et que je vois le message d'erreur "tu as oublié 'sudo', imbécile", je peux juste poignarder F2 avec contrariété
Si une commande prend une entrée stdin, vous pouvez lire l'entrée d'un fichier avec <filename
. Cela peut apparaître n'importe où dans la commande, donc ces lignes sont équivalentes:
cat filename
cat <filename
<filename cat
Ceci est particulièrement utile pour grep, car il vous permet de placer l'expression à la fin de la ligne. Vous pouvez ainsi modifier rapidement une commande grep en appuyant dessus Up, sans avoir à faire défiler à gauche pour aller au-delà du nom de fichier:
<filename grep 'expression'
<input foo | bar | baz >output
, cela ne fonctionne pas si vous essayez de mélanger certaines primitives de bouclage de shell telles que while
ou for
au milieu. J'ai donc abandonné et je l'ai mis à la fin, conformément à la convention.
Vous pouvez utiliser CDPATH
pour configurer l’équivalent répertoire de PATH
; si vous essayez cd foo
et qu'il n'y a pas de foo
dans le répertoire en cours, le shell vérifiera chacun des répertoires en CDPATH
cherchant foo
dans ceux-ci, et basculera vers le premier trouvé:
export CDPATH="/usr"
cd bin # switches to 'bin' if there is one in the current directory, or /usr/bin otherwise
vi `which scriptname`
Pour quand vous ne savez pas où quelque chose vit, et vous ne vous souciez pas non plus.
which
automatiquement = foovi =scriptname
$(scriptname)
Le esperluette . Il met votre commande en arrière-plan pour que vous puissiez continuer à taper.
$> sudo updatedb &
En travaillant, et après un moment, vous voyez:
[1] 17403
Et votre processus est terminé! Idéal pour les choses où vous n'avez pas besoin d'attendre qu'elles se terminent.
&!
en arrière-plan le travail et le désavoue du shell!
bash
.
nohup
accomplit ceci.
Complétez l'onglet . Comment serait-il nul de devoir taper tous les caractères de chaque chemin?
rm -fr /
. Donc oui, la fin des onglets est assez vitale ...
ls /usr/lib/game-d*/rott*
rm -rf /
désactivé dans la plupart des systèmes Linux?
Umount dernier appareil monté:
mount /media/whatever
...
u!mo
!mo
étend la dernière commande qui a commencé avec mo
(au moins en bash). Parfois, on le fait mv
au milieu, alors ça u!m
ne marche pas aussi souvent.
J'ai ceci dans mon .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]"
}
Et quand j'ai le code source HTML dans le presse-papier et que je veux trouver tous les liens que j'utilise
c-v | find-all 'href="([^"]*)"' | c-c
Et j'ai toutes les urls dans le presse papier
J'ai aussi cette fonction
function lsq(){
ls -lh $@ | tr -s ' ' | cut -d' ' -f5,8
}
quelle taille d'affichage (lisible par l'homme) et nom de fichier.
alias temp='cat /proc/acpi/thermal_zone/THRM/temperature'
cet alias est pour afficher la température
function separate() {
python -c "import sys,re; print '$1'.join(re.split('\s*', sys.stdin.read().strip()))";
}
avec cette fonction, je peux calculer le produit ou la somme des arguments.
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()))";
}
C'est une fonction utile qui scinde l'entrée standard séparée par regex puis joint le résultat.
function factorial() {
seq -s* $1 | bc
}
fonction factorielle
function wiki() { dig +short txt $1.wp.dg.cx; }
Cette fonction affiche le texte du wiki sur DNS
J'ai aussi trois funcions de couleurs
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]
}
Cette fonction valide le fichier hash md5.
cela affichera un message d'erreur pour un code donné
function strerror() { python -c "import os; print os.strerror($1)"; }
Vous pouvez imprimer tous les messages avec
alias all-errors='for i in `seq 131`; do echo -n "$i: "; strerror $i; done'
Une autre astuce utile ZSH:
Traiter la sortie d'une commande en tant que fichier:
emacs =(hg cat -r 100 somefile)
Ceci ouvre une ancienne version d’un fichier suivi par Mercurial dans emacs pour la visualisation avec mise en surbrillance de la syntaxe. Sans cela, je dois mess avec hg revert
, hg archive
ou envoyer explicitement la hg cat
sortie à un fichier temporaire.
Bien entendu, cela fonctionne avec tout programme qui ouvre des fichiers et tout programme qui imprime sur une sortie standard.
Une fonctionnalité spécifique à ZSH est un alias de suffixe, défini en donnant à alias
l' -s
indicateur:
alias -s ext=program
Si une extension donnée a un suffixe alias, vous pouvez exécuter directement un fichier portant cette extension, et ZSH lancera le programme donné et transmettra le nom du fichier en tant qu'argument. Donc si l'alias ci-dessus est en vigueur, ces lignes sont équivalentes:
/path/to/foo.ext
program /path/to/foo.ext
Une de mes fonctionnalités ZSH préférées de tous les temps est les répertoires nommés. Vous pouvez exporter une variable avec un nom donné, avec une valeur qui pointe vers un certain chemin:
export foo=/usr/bin
Vous pouvez maintenant utiliser ~foo
une commande pour faire référence à /usr/bin
:
cd ~foo
~foo/ls
cat ~foo/filename
Voir cette question .
Quand tu cours 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
la dernière ligne contenant grep
est quelque chose d'un peu anoyant
Vous pouvez vous en débarrasser en exécutant 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
update : ou tout simplement courirpgrep string
'[o]penbox'
). Les crochets fonctionneront comme une sorte de glob, donc s'il y a openbox dans votre répertoire (disons que vous êtes dedans /usr/bin
) bash utilisera simplement openbox, ce qui empêchera l'astuce de grep.
La commande ne rien faire :
comme dans
while :; do :; done
Extension de brace en combinaison avec les boucles for:
for c in {1..3}; do :; done
!
opérateur et opérateurs de court-circuit ||
et&&
[ -d /tmp/dir ] || mkdir /tmp/dir
if ! ping 34.41.34.1; then :; fi
utiliser des sous-coquilles au lieu de pop / push (très pratique dans les scripts)
~$ ( cd /tmp; echo $PWD )
/tmp
~$
le genre de- what-is commandetype
~$ type type
type is a shell builtin
~$ type ls
ls is aliased to `ls --color=auto'
~$ f(){ :; }
~$ type f
f is a function
f ()
{
:
}
aussi très sympa: here-strings
~$ cat <<<"here $PWD"
here /home/yourname
~$
et mon préféré: redirection sur une liste de commandes
{ w; ps; ls /tmp; } 2>/dev/null |less
J'adore mettre autant de choses que je peux sur ma PS1. Quelques choses utiles à retenir:
\e[s
et \e[u
enregistrez et enregistrez la position du curseur, respectivement. J'utilise ceci pour créer une "barre d'informations" en haut de l'écran, d'une longueur de deux lignes, qui peut contenir plus de choses. Exemple:
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\]\$ '
Combinez avec alias clear='echo -e "\e[2J\n"'
. Essaye le!
En outre, la PROMPT_COMMAND
variable définit une commande à exécuter avant la PS1 à chaque fois.
Un autre est la bg
commande. Si vous oubliez de mettre &
à la fin d'une commande, appuyez simplement sur ^Zet tapez bg
, et elle s'exécute en arrière-plan.
bg
, quand j'ai un programme en arrière-plan et appuyez accidentellement sur fg
je ne sais pas comment le repousser: D
PS1
alors je mets la plupart des choses que je veux dans mon écran ...