Trucs linux

De Wiki de Nelly & Richard.

Sommaire

Commandes UNIX

mon éditeur de texte préféré : vim

Bon je vais pas en faire son apologie mais avec lui on découvre de nouvelles astuces tous les jours (vi improved).

Je vais simplement mettre quelques raccourcis pratiques tant pour le tous les jours que pour des utilisations spécifiques.

Je par du principe que vous avez installez le paquet vim-full qui contient entre autre vimtutor pour bien commencer.

Il ne reste plus qu'à bouquiner l'aide de vim pour aller plus loin.

liens

les frontends graphiques

  • vim pour les nuls : evim (easy vim)
  • vim simplement : gvim

déplacement

  • début de ligne : [^]
  • fin de ligne : [$]
  • début de fichier : [gg]
  • Fin de fichier : [G]

insertion/remplacement

  • insertion : [i]
  • derrière le curseur : [a]
  • début de ligne : [gI]
  • fin de ligne : [A]
  • ligne au-dessus : [O]
  • ligne au-dessous : [o]
  • ajouter x tabulations : x[>>]
  • supprimer x tabulations : x[<<]
  • remplacer x caractères : x + [r]
  • remplacer : [touche inser] ou [R]
  • remplacer le caractère actuel : [s]
  • remplacer la ligne actuelle : [S]
  • défaire : [u]
  • refaire : [Ctrl] + [r]

couper, copier, coller

  • couper x lignes : x[dd]
  • copier x : x[yy]
  • couper x mots : [d]x[w]
  • copier x mots : [y]x[w]
  • coller avant ou après le curseur : [p] ou [P]

chercher/remplacer

  • recherche après le curseur : [/]regex
  • recherche avant le curseur : [?]regex
  • se balader dans la recherche : [n] ou [N]
  • sed : remplacement ligne courante (fonctionne en mode visuel) : [:s/regex_recherchée/remplacement/gi]
  • sed : remplacement sur la totalité du fichier : [:%s/regex_recherchée/remplacement/gi]
  • recherche du mot identique après le curseur : [*]

mode visuel [v]

  • mode visuel standard : [v]
  • mode visuel ligne : [Maj] + [v]
  • mode visuel bloc : [Ctrl] + [v]
  • copie de la sélection : [y]
  • coupe/supprime la sélection : [d]
  • ajout/suppression de tabulations : [>>] ou [<<]

mode Explore

  • Parmi la fulltitude de fonctions que contient vim, la navigation dans votre système de fichier est bien pratique
  • dossier supérieur : [-]
  • éditer le fichier ou se déplacer dans le dossier sous le curseur : [Enter]
  • idem avec un split horizontal : [o]
  • idem avec un split vertical : [v]
  • idem dans un nouvel onglet : [t]
  • prévisualisation du fichier : [p]
  • marquer des fichiers / dossiers : [mf]
  • marquer tous les fichiers / dossiers correspondants à une regexp : [mr] puis entrer la regexp
  • imprimer les fichiers marqués : [mp]
  • tous désélectionner : [mu]
  • exécuter une commande sur tous les fichiers marqués : [mx] puis commande
  • vim . et [F1] pour plus d'options

complétion

  • des mots se trouvant dans votre fichier actuel et séparés par des espaces, des points, slash, ... : [Ctrl] + [p] ou [Ctrl] + [n]
  • des fichiers : [Ctrl] + [x], [Ctrl] + [f] et [Ctrl] + [n] ou [p]
  • python (affiche les choix et split l'écran pour l'aide) : [Ctrl] + [x], [Ctrl] + [o] puis [Ctrl] + [n] ou [p]

onglets

  • nouvel onglet : [:tabnew] ou [:tabnew fichier]
  • onglet suivant : [:tabnext] ou [Ctrl] + [pg down]
  • onglet précédant : [:tablast] ou [Ctrl] + [pg up]

split

  • split vertical (nouveau fichier) : :[vne]
  • split vertical (même fichier) : [Ctrl] + [w], [Ctrl] + [v]
  • split horizontal (nouveau fichier) : [Ctrl] + [w], [Ctrl] + [n] | :[new] | :[split]
  • split horizontal (même fichier) : [Ctrl] + [w], [Ctrl] + [s]
  • switch d'une fenêtre à l'autre : [Ctrl] + [w], [Ctrl] + [w]
  • rotation des splits ouvert : [Ctrl] + [w], [Ctrl] + [r|R|x]

divers

  • ouverture d'un fichier : [:e nom_du_fichier]
  • activation de la coloration syntaxique : [:syntax on]
  • changement de colorscheme : [:colorscheme slate]
  • adapter son colorscheme à son environnement : [:set background=dark|light]
  • quitter tout : [:qa]
  • quitter et sauver : [:x] ou [:wq]
  • quitter sans sauver : [:q!]
  • ouverture d'un shell : [:sh] (le quitter avec [Ctrl] + [d])
  • agrandir reduire la taille du texte : [Ctrl] + [-] ou [+]
  • répète la dernière commande : [.]
  • ...

Terminal

Les raccourcis utiles du terminal:

  • Nouvel onglet : Ctrl + Maj + t
  • Début de ligne : Ctrl + a
  • Fin de ligne : Ctrl + e
  • Effacer le dernier mot : Ctrl + w
  • Effacer toute la ligne : Ctrl + u
  • Navigation dans les dernières commandes : ↓ ↑
  • Recherche : Ctrl + r (répéter l'opération pour retrouver les commandes précédentes)
  • Inversion des 2 derniers caractères : Ctrl + t
  • Coller la sélection : Maj + inser ou Clic droit ou Clic bouton du milieu ou Clic simultané gauche et droit
  • Completion : Tabulation
  • Afficher les différentes solutions : Tabulation Tabulation
  • Avorte le processus courant : Ctrl + z
  • Processus au premier plan : fg
  • Kill processus : Ctrl + c
  • Deconnexion : Ctrl + d

Terminator

split

Horizontal
  • split horizontal : [Ctrl]+[maj]+[o]
  • resize horizontal : [Ctrl]+[maj]+[↓]|[↑]
Vertical
  • split vertical : [Ctrl]+[maj]+[e]
  • resize vertical : [Ctrl]+[maj]+[←]|[→]
Navigation
  • preview screen : [Ctrl]+[maj]+[p]
  • next screen : [Ctrl]+[maj]+[n]
  • switch between split : [Ctrl]+[Tab]

Tab

  • new tab : [Ctrl]+[maj]+[t]

Outils

  • search : [Ctrl]+[maj]+[f]
  • zoom le split courant : [Ctrl]+[maj]+[z]

Configuration

  • fichier .config/terminator/config
# terminator config file

# aspect
#font = Monospace 8
background_type = "transparent"
enable_real_transparency = True
use_theme_colors = False
background_darkness = 0.9
background_color = "#000000"
foreground_color = "#FFFFFF"
borderless = True
maximise = True
extreme_tabs = False
mouse_autohide = False
word_chars = "-A-Za-z0-9,./?&_+@~"

# nb de lignes enregistrées
scrollback_lines = 2000
scrollbar_position = "disabled"
# flash lors des erreurs de frappe
audible_bell = False
# suppression des bips
force_no_bell = True
# pas de curseur clignotant
cursor_blink = False

[keybindings]
# ne pas interférer avec le déplacement dans les onglets de vim 
next_tab = <Ctrl>Down
prev_tab = <Ctrl>Up

screen

fichier ~/.screenrc

vbell on
autodetach on
defscrollback 5000
hardstatus alwayslastline "%{= k}%{+ y}%w%{-}%=%{+ b}load:%l%{-}%=%{+ y}%D%d/%m/%Y - %c%{-}"

commandes

Les commandes de base :

  • Lancement d'un nouveau screen : screen
  • Lister les screen en cours : screen -ls
  • Réattache le dernier screen (ou liste si > 1) : screen -r


Les commandes qui suivent sont à taper dans un screen :

  • Détacher le screen : Ctrl + a puis d


  • Nouveau shell dans le même screen : Ctrl + a puis Ctrl + c
  • Switch dans les shell d'un screen : Ctrl + a puis [0-9]
  • ou : Ctrl + a puis ' puis nom du shell ou # du shell
  • ou : Ctrl + a puis n ou : Ctrl + a puis p
  • Where are you : Ctrl + a puis N
  • Liste des shell du screen en cours : Ctrl + a puis "
  • ou : Ctrl + a puis w
  • Renommer le shell en cours : Ctrl + a puis A


  • Split : Ctrl + a puis S
  • Changement de région : Ctrl + a puis TAB
  • Tuer la région : Ctrl + a puis X
  • Nouveau shell dans le même screen : Ctrl + a puis Ctrl + c

watch

  • watch permet d'afficher une commande à interval régulier, et entre autre de mettre en surbrillance les différences
# exemple
$ watch -d -n 2 date
  • En voilà une commande qu'elle est sympathique :)

Zsh : le shell alternatif

  • Zsh offre des fonction de complétion avancées.
  • Concernant l'UTF-8, 16, 32 préféré une version beta supérieure à 4.3.1 zsh-beta
  • Sur une ubuntu 9.04 zsh est en version 4.3.9
  • On en profitera pour mettre des couleurs à less

fichier ~/.zshrc

# prompt shell
export PS1="$(print '%{\e[3;32m%}%m%{\e[0m%}'):$(print '%{\e[1;33m%}%~%{\e[0m%}')"
if [ $USER = "root" ] ; then
 export PS1="$PS1%# "
else
 export PS1="$PS1%% "
fi

# inscription des info dans la barre de titre des terminaux
case $TERM in
 rxvt|*term)
   precmd() { print -Pn "\e]0;%n@%m:%~\a" }
   preexec () { print -Pn "\e]0;$1\a" }
 ;;
esac

# historique
export HISTFILE=~/.histfile
export SAVEHIST=5000
export HISTSIZE=5000
setopt HIST_REDUCE_BLANKS # suppression des doublons inutiles
setopt HIST_SAVE_NO_DUPS # ne sauvegarde pas les doublons
setopt SHARE_HISTORY # partage instantanee des historiques

# alias
. ~/.bash_aliases

# ls
eval "`dircolors -b`"

# less
export LESS="-rIg"
export LESSOPEN='| /usr/bin/lesspipe %s'
export LESSCLOSE='/usr/bin/lesspipe %s %s'
# Less Colors for Man Pages
export LESS_TERMCAP_mb=$'\E[01;32m'       # begin blinking
export LESS_TERMCAP_md=$'\E[03;32m'       # begin bold
export LESS_TERMCAP_me=$'\E[0m'           # end mode
export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
export LESS_TERMCAP_so=$'\E[01;42m'       # begin standout-mode - info box
export LESS_TERMCAP_ue=$'\E[0m'           # end underline
export LESS_TERMCAP_us=$'\E[04;37m'       # begin underline

# inscription des info dans la barre de titre des terminaux
case $TERM in
 rxvt|*term)
   precmd() { print -Pn "\e]0;%n@%m:%~\a" }
   preexec () { print -Pn "\e]0;$1\a" }
 ;;
esac

# Completion of hostnames, pulled out of ~/.ssh/config.
_myhosts=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p'))
zstyle ':completion:*' hosts ${_myhosts[1, -2]} # Slices off the last entry

# process completion
zstyle ':completion:*:processes' command 'ps -au$USER'
zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31"

# zstyle
zstyle ':completion:*' completer _expand _complete _ignored _approximate
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' menu select=2
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
zstyle ':completion:*:descriptions' format '%U%F{yellow}%d%f%u'
zstyle :compinstall filename '/home/user/.zshrc'

autoload -Uz compinit
autoload colors
compinit

Problème avec les touches suppr, début, fin, Ctrl + ←|→

  • utiliser le script zkbd pour les codes qui créait un fichier sous le dossier ~/.zkbd
user:~% zsh -f /usr/share/zsh/4.3.10/functions/Misc/zkbd
  • vous pourrez ensuite récupérer les codes qui vous interesse pour compléter votre .zshrc
[...]
typeset -g -A key
key[Insert]='^[[2~'
key[Home]='^[OH'
key[PageUp]='^[[5~'
key[Delete]='^[[3~'
key[End]='^[OF'
key[PageDown]='^[[6~'
bindkey "${key[Insert]}" overwrite-mode
bindkey "${key[Home]}" beginning-of-line
bindkey "${key[Delete]}" delete-char
bindkey "${key[End]}" end-of-line
bindkey ";5C" forward-word
bindkey ";5D" backward-word
[...] 
  • Pour plus de détails :

Les touches multimedia

  • Sous gnome:
Bureau > Préférences > Raccourcis clavier (ou gnome-keybinding-properties)

Vous devriez trouver facilement des touches non définies.

Vous pouvez également les modifier avec gconf-editor

Voici les chemins:
~/.gconf/apps/metacity/global_keybindings
~/.gconf/apps/metacity/window_keybindings
~/.gconf/apps/gnome_settings_daemon/keybindings 
  • En utilisant Xmodmap:

Vous pouvez utiliser xev pour retrouver les keycodes correspondant aux actions, puis à l'aide de /usr/share/X11/XKeysymDB vous pourrez aisément compléter /etc/X11/Xmodmap.

Voici les touches du volume :
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume

Encodage

  • Informations sur le type et l'encodage de votre fichier :
$ file fichier
  • Convertir des noms de fichiers venant de zindozs par exemple :
$ convmv -r --nosmart --notest -f iso-8859-1 -t utf8 *
  • Convertir des fichiers venant de zindozs par exemple :
$ iconv -f iso-8859-1 -t utf8 file.iso -o file.utf8
  • Pour plus de précision cet article est complet.

Conversions

HTML > WIKI

  • Convertir des pages HTML au format wiki (mediawiki, pmwiki, moinmoin, ...)
$ sudo apt-get install libhtml-wikiconverter-perl
$ html2wiki --dialect mediawiki file.html > file.wiki

HTML <> text

  • Convertir du texte HTML en texte et vice versa o_O
$ recode UTF-8..HTML /tmp/index.html

PDF > HTML

  • Conversion d'un fichier PDF en fichier HTML
$ pdftohtml file.pdf file.html

Infos système

Alternatives aux cat /proc/cpuinfo et compagnies lshw avec les options -html ou -xml ou encore -short Aida n'a qu'à bien se tenir.

  • dmidecode
# dmidecode -t
dmidecode: option requires an argument -- t
Type number or keyword expected
Valid type keywords are:
 bios
 system
 baseboard
 chassis
 processor
 memory
 cache
 connector
 slot
  • lspci
  • lsusb
  • lshw

Un man vous en expliquera plus que moi, sinon je vous en laisse deux ou trois sympathiques :

# lshw -class disk -class volume -short
# lshw -html > `hostname`.html && firefox `hostname`.html

Redirection dans un pts

  • On utilisera la commande script
# sur la machine distante
riri:~$ w
rdeniro    pts/1    :0.0             12:54    5:36m  0.08s  0.08s /bin/bash
riri       pts/2    :0.0             17:17    2:39m  0.14s  0.04s ssh riri@machine
riri:~$ script -c uptime -f /dev/pts/1
Le script a débuté, le fichier est /dev/pts/1
 18:35:57 up  6:15,  4 users,  load average: 0.06, 0.04, 0.00
Script complélé, le fichier est /dev/pts/1 

# localement sur pts/1 robert verra :
rdeniro:~$
Le script complété sur dim. 26 Avril 2009 00:00:00 CEST
 18:35:57 up  6:15,  4 users,  load average: 0.06, 0.04, 0.00
Script complélé sur dim. 26 Avril 2009 00:00:10 CEST

liens mailto firefox

  • Dans firefox vous pouvez faire que les liens du type mailto: pointe sur gmail ou yahoo facilement. Mais vous pouvez également paramétrer un webmail différent :

configuration

  • Dans votre barre d'adresse : about:config (puis une recherche sur mailto)
gecko.handlerService.schemes.mailto.2.name=webmail du boulot
gecko.handlerService.schemes.mailto.2.uriTemplate=http://example.org/squirrelmail/src/mailto.php?emailaddress=%s
  • Pour que les modifications prennent effet incrémentez la valeur de la clef qui suit
gecko.handlerService.defaultHandlersVersion=2
  • Redémarrez firefox
  • Dans le choix des préférences, onglet application, mailto vous trouverez votre nouvelle entrée.

documentation

  • dans votre barre d'adresse : chrome://browser-region/locale/region.properties (puis une recherche sur mailto)

Recherche sur le site http://www.commandlinefu.com/

  • Ajouter cette fonction dans votre .bashrc ou .bash_aliases
 [...]
 # command line fu search
 function clfu-search() {
  wget -q -O /dev/stdout --post-data "q=$1" http://www.commandlinefu.com/search/autocomplete | \
  grep "class=\"autocomplete-command\"" | \
  sed -e 's/^.*<strong>\(.*\)<\/strong>/\1/' -e 's/<\/div>//' | sort -u
 }
 [...]
  • Utilisation
user@machine:~# clfu-search find
find . -name "*.[ch]" -exec grep -i -H "search pharse" {} \;
find . -name "*.php" -exec iconv -f ISO-8859-1 -t UTF-8 {} -o ../newdir_utf8/{} \;
find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;
find /path/to/dir -type f -print0 | xargs -0 rm
find * -type d -exec mkdir /where/you/wantem/\{\} \;
find ./ -type f -exec chmod 644 {} \;
user@machine:~#
Outils personnels