wiki:Linux

Trucs & Astuces

Quelques commandes méconnues

grep expression fichier
Recherche une expression dans un fichier. Très puissant, consulter man grep pour en savoir plus. Par exemple grep -E "[Bb]osons? [A-Z].*decroi|[Ff]ermions" particules.txt va vous trouver tous les bosons (avec/sans majuscule ([Bb]), singulier ou pluriel (s?)) dont le nom est une majuscule ([A-Z]) qui decroissent ou vont decroitre (.* remplace n'importe quoi) ou (|) des fermions (pluriels, mais avec ou sans majuscule) dans le fichier particules.txt.
file f
Détermine le type du fichier f.
sed -i "s/avant/apres/g" test.txt
Remplace tous les avant par apres dans test.txt ('/' peut être remplacé par n'importe quel autre caractère)
sed -e "s/avant/apres/g" test.txt>test_modifie.txt
Si vous êtes plus prudent... il va copier test.txt dans test_modifie.txt en remplaçant les 'avant' par des 'apres'
batch -f file
Faire du batch en local : exécute en arrière plan les commandes données dans file (permet de fermer la session). atq permet de lister les jobs en cours.
watch cmd / repeat n cmd
Exécute périodiquement/n fois la commande cmd. Essayez : watch atq
touch fichier
Change la date de modification du fichier ou le crée s'il n'existe pas.


Si certaines applis ne s'ouvrent pas à distance quand on fait un ssh -X ou -Y

Cela est vrai en particulier celles utilisant GTK

La solution est de faire un "unset XDG_RUNTIME_DIR"


Lire des documents MS Office sous OpenOffice sans problèmes de mise en page

Il faut utiliser les polices Liberation crées par Redhat et disponibles ici. Télécharger le fichier ttf, le décompresser (tar xvzf file.tar.gz) et copier le répertoire dans ~/.fonts/. Les polices Liberation sont maintenant installées.

Sous OpenOffice, aller dans outils/options/polices (tools/options/fonts). Et demander à remplacer (Toujours) :

  • Times New Roman par Liberation Serif
  • Arial par Liberation Sans

Normalement vous ne devriez plus avoir de problèmes de mise en page en ouvrant des documents fait sous MS Windows. Ces polices sont légèrement différentes mais leurs tailles sont identiques à celles de Microsoft.


Configurer son shell

Le shell est l'interpréteur de commandes : c'est lui qui affiche le contenu d'un répertoire lorsque vous tapez ls. Pour une introduction aux commandes unix/linux, voir par exemple ici.

Il existe deux grandes familles de shell sous linux : le bourne shell et dérivés (sh, bash, zsh...) et le c-shell et dérivés (csh, tcsh...). Pour savoir quel type de shell vous utilisez, tapez simplement ps dans un terminal. Ce qui suit est fait pour le csh mais doit pouvoir s'adapter aux shell de type sh.

Lorsque vous ouvrez une session ou un terminal, le fichier ~/.cshrc est lu, c'est lui qui configure le shell (.zshrc en zsh).

Pour commencer

Rajoutez dans votre ~/.cshrc les commandes suivantes :

set prompt="%S[%m]%s%B%~%b(%?)>"            # prompt line
set history=100                             # previous commands to remember
set savehist=100                            # number of commands to save across sessions
set autolist = on                           # possible completions are given with tab
set visiblebell                             # visible bell

Le prompt est ce qui s'affiche dans le terminal avant chaque commande. Il existe plusieurs options (faire man csh pour la liste complète) dont :

  • %/, %~ : the current working directory.
  • %h, %!, ! : the current history event number.
  • %M, %m : the full hostname, the hostname up to the first '.'.
  • %S (%s) : start (stop) standout mode (reverse color).
  • %B (%b) : start (stop) boldfacing mode.
  • %U (%u) : start (stop) underline mode.
  • %t, %@, %T, %p, %P : time in various formats
  • %% A single '%'.
  • %d, %D, %w, %W, %y, %Y : day/month/year in various formats
  • %? The return code of the command executed just before the prompt.

history et savehist concernent les commandes dont le shell se souvient et qui sont accessibles avec les touches haut et bas. autolist propose une complétion lorsque l'on utilise la touche tabulation. Et visiblebell supprime les beep sonores.

Il est aussi possible d'avoir les messages affichés par linux en français en configurant la variable LC_ALL :

setenv LC_ALL fr_FR

Les alias

Les alias permettent de définir de nouvelles commandes ou de redéfinir des commandes existantes. Il suffit de faire alias nom "commande". Certains sont particulièrement utiles comme :

 alias ls "ls --color"			# l'affichage du contenu du répertoire est coloré
 alias grep "grep --colour=auto"	# l'affichage de grep (recherche) est coloré
 alias ssh ssh -X			# connection à une machine avec éléments graphique
 alias pss "ps waux | grep $USER"	# affichage de tous les jobs de l'utilisateur
 # nettoyer les fichiers temporaires
 alias clean     'echo "rm -f .*~ *~ *.bak core #*#" ; rm -f .*~ *~ *.bak core #*#'

À vous de rajouter ceux qui vous seront pratiques. Pour définir automatiquement les alias à chaque connection, mettez ces commandes dans votre ~/.cshrc.

Les complétions

La plupart des commandes proposent une complétion quand vous appuyez sur TAB. Par exemple ls MesRes[TAB] complétera la commande en ls MesResultats. Mais il est possible d'aller plus loin avec :

complete kill 'p/*/`ps -u $USER | awk \{print\ \$1\}`/'
complete alias 'p/1/a/'
complete man 'p/*/c/'
complete set 'p/1/s/'
complete true 'p/1/x:Truth has no options./'
complete cd 'p/1/d/'

qui feront que kill [TAB] proposera une liste de PID à tuer, alias [TAB] la liste d'alias, etc. et que cd [TAB] ne proposera que des répertoires. A rajouter dans le .cshrc

Pour aller plus loin

Il est possible de redéfinir des raccourcis clavier du shell avec bindkey. Tapez :

  • bindkey -u pour voir l'aide
  • bindkey -l pour voir la liste des commandes
  • showkey -a pour le code des touches

Par exemple :

bindkey '^[[3~' delete-char         
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
bindkey -b C-r i-search-back

Les trois premières commandes permettent de redéfinir les touches delete, home et end qui posent parfois problèmes. La quatrième permet de faire une recherche dans l'historique avec Ctrl+r (essayez, c'est très pratiques).


Avoir les accents avec un clavier QWERTY sous linux

Une solution : reconfigurer le clavier avec xmodmap. Cela permet par exemple d'avoir 'é' avec AltGr+e, 'à' avec AtlGr+a, etc. (cf. http://www.eleves.ens.fr/home/didier/ConfigClavier/).

Récupérer le fichier .xmodmaprc ici et copier le là où vous voulez (c'est un fichier caché), par exemple dans votre HOME. Il suffit de faire xmodmap .xmodmaprc pour reconfigurer le clavier. Vous avez alors les accents avec

AtlGr + e r d f c q a h u j i k o l
qui donne é è ê ë ç â à ù û ü î ï ô ö

Pour automatiser ça, il suffit de mettre xmodmap ${HOME}/.xmodmaprc dans votre .cshrc (ou .zshrc/bashrc si vous utilisez zsh/bash).

Le problème c'est que tout votre environnement est affecté, et que si vous vous connectez depuis n'importe quelle machine sur votre compte le clavier sera reconfiguré. Pour éviter cela, il est possible de :

  • tester la machine sur laquelle vous voulez faire la modification (hostname)
  • tester si vous y êtes connecté à distance (REMOTEHOST)
  • créer des commandes pour revenir en arrière.

En csh c'est possible avec :

# Save current config
xmodmap -pke > ~/.xmodmap-default

# create alias
alias keysnew xmodmap ~/.xmodmaprc
alias keysfr 'xmodmap /usr/share/xmodmap/xmodmap.fr-2'
alias keysus 'xmodmap /usr/share/xmodmap/xmodmap.us'
alias keysprev xmodmap $HOME/.xmodmap-default

# use keysnew for my machine
if ( !($?REMOTEHOST) ) then
    set s = `hostname`
    if ( $s == "lpsc0000x.in2p3.fr" ) then
        echo "use new keys"
        keysnew
    endif
endif

à rajouter dans votre .cshrc. Dans ce cas e clavier ne sera reconfiguré que sur la machine lpsc0000.in2p3.fr et vous pourrez revenir en arrière avec la commande keysprev.


Changer le layout d'un clavier sous Fedora

Ouvrir un terminal et entrer les commandes suivantes

localectl status
localectl set-keymap fr (ou us)
localectl set-x11-keymap fr (ou us)
localectl status

Il faut redemarrer le serveur X ou rebooter la machine

Prendre le contrôle à distance du PC Windows de chez vous depuis les PC Linux du labo

Si le PC chez vous est sous Windows Vista >= Pro ou XP Pro

Sur le PC à la maison, autorisez la prise de contrôle à distance dans le menu système du panneau de configuration (Attention pour que cela fonctionne il faut un mot de passe à votre compte Windows)

Sous le PC Linux au labo vous pourrez alors utiliser le logiciel RDesktop (utilisé aussi pour pour les sessions Windows du LPSC) La commande est la suivante :

rdesktop 88.161.202.68 (remplacer par l'IP de votre PC à la maison)

Si le PC chez vous est sous une autre version de Windows ou que RDesktop n'est pas installé sur le PC du labo

Dans ce cas vous pouvez utiliser le logiciel VNC qui est integré dans 90% des Linux mais plus lent que RDesktop.

Sur le PC à la maison, téléchargez le logiciel RealVNC Free Edition for Windows à cette adresse : http://www.realvnc.com/cgi-bin/download.cgi . Il contient à la fois le serveur et le client mais ici seul le serveur nous intéresse (Attention à correctement configurer votre firewall!).

Sur le PC Linux du labo, deux possibilités :

  • Le VNC est déjà installé et dans ce cas vous pouvez utiliser en ligne de commande :
    /usr/bin/vncviewer 88.161.202.68 (remplacer par l'IP de votre PC à la maison)
    
  • VNC n'est pas installé et dans ce cas vous pouvez à la même adresse que tout à l'heure télécharger une version linux du viewer.


Ne plus avoir à taper de mot de pass (password) pour se loguer en ssh sur une autre machine du labo

Commencer par exécuter dans un terminal la commande suivante :

ssh-keygen -t rsa

Cette commande crée 2 fichiers dans le répertoire ~/.ssh: un fichier id_rsa et un fichier id_rsa.pub. Il suffit ensuite d'insérer le contenu du fichier id_rsa.pub dans les fichiers ~/.ssh/authorized_keys (cat id_rsa.pub >> authorized_keys) et ~/.ssh/authorized_keys2 (celui-ci ne semble pas nécessaire).


Réussir enfin à gérer les conversions d'unités

Toutes les unités de mesure que vous avez toujours rêvé de connaître (ex: la chopine impériale, l'amphore romaine et bien d'autres) ont été répertoriées pour vous à cette adresse : http://fr.wikipedia.org/wiki/Conversion_des_unit%C3%A9s. Et pour des conversion de base des unités d'accélération, de masse ... il existe un site qui fait tout ça pour vous (il suffit de lui demander !!!!): http://1000conversions.com/.


Problème avec le prompt après une mise à jour

Si suite à une mise à jour, votre prompt est changé de

[13:26 user@lpsc1121x ~]

en

777;notify;Command completed;jk[13:26 user@lpsc1121x ~]$

Pour annuler cette modification, il suffit de commenter la ligne :

sudo emacs /etc/profile.d/vte.sh

...

_vte_prompt_command() {

...

#printf "\033]777;notify;Command completed;%s\007\033]0;%s@%s:%s\007%s"

"${command}" "${USER}" "${HOSTNAME%%.*}" "${pwd}" "$(vte_osc7)"

}

Last modified 15 months ago Last modified on Jul 29, 2020 11:03:36 AM

Attachments (1)

  • xmodmaprc (5.0 KB) - added by /C=FR/O=CNRS/OU=UMR5821/CN=Frederic Melot/emailAddress=frederic.melot@… 5 years ago.

Download all attachments as: .zip