Commandes utiles (Linux)

Linux_logo

Bash

Augmenter le nombre de lignes stockées dans l'historique

Editez:

.bash_profile

Ajoutez:

HISTSIZE=10000
HISTFILESIZE=10000

Source: 15 Examples To Master Linux Command Line History

Système

Lister les entrées d'un dossier par ordre de modification

ls -l -rt

rt (ordre inversé) peut être remplace par t et permet de lister en fonction de la date de modification.

Lister les appels système

strace -p PID -e trace=all

Ou PID est le pid du programme a tracer.

L'argument trace peut prendre plusieurs valeurs (voir la page de man).

Par exemple, pour lister les ouvertures de fichier:

strace -p PID -e trace=open

Surveiller les accès sur un dossier/fichier

Pour récupérer les différents accès fait sur les fichiers d'un dossier:

inotifywatch --recursive /my/path/

Faire ensuite les opérations a tracker. Puis annuler le processus. En quittant, il affiche les informations suivantes:

total  modify  close_write  open  moved_from  moved_to  create  filename
2877    2872     1            1     1           1         1       /my/path/

Connaitre la version de sa distrib

lsb_release -d

Retourne quelque chose comme:

Description:    Ubuntu 10.04.4 LTS

Retrouver le pid d'un programme depuis son nom

ps aux | grep dolphin

Renvoi:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
toto      3033  0.3  0.2 472748 66516 ?        Sl   15:04   0:57 dolphin
toto      7762  0.0  0.0   4304   756 pts/12   S+   19:56   0:00 grep dolphin

Autre methode:

pidof dolphin

Renvoi:

3033

Classer les processus par utilisation mémoire

ps -eo user,size,command | sort -k2 -rn | head -10

sort trie les résultats:

Et head -10 n'affiche que les 10 premiers résultats.

Lister les fichiers ouvert sur le système

lsof

Plus d'exemples ici: lsof - list open files examples

Lister les fichiers ouvert par un programme:

lsof -p 3033

Repeter toute les 3 secondes:

lsof -p 3033 -r 3

Compter le nombre de fichiers ouverts:

lsof -p 3033 | wc -l

Compte le nombre de lignes renvoyées en fait.

Exemples d'utilisation de find

Cherche les fichiers/dossiers dont les noms contiennent “foo”:

find / -name foo

Cherche un fichier ou la dernière modification a été faite il y a moins de sept jours:

find / -type f -mtime -7

Lister les fichiers dont le nom correspond a pattern:

find . -type f -name "*.py" | grep 'pattern'

Lister les fichiers contenant le pattern (recherche directement dans le fichier):

find . -type f -name "*.py" -exec grep -l 'pattern' {} \;

Exemples d'utilisation de grep

Skipper les fichiers binaires:

grep -I "word" ./

Rechercher en récursif:

grep -R "word" ./

Printer le résultat dans un fichier:

grep --line-buffered "word" ./ > output.txt

Ne pas afficher les messages d'erreurs:

grep -s "word" ./

Rechercher un pattern a l’intérieur des fichiers (source):

grep -rn ./ -e "pattern"

-r pour la récursion, -n pour afficher la ligne.

Lister le hardware

lshw

Lister uniquement le contenu du sous menu network:

lshw -C network

Lister les valeurs de S.M.A.R.T. d'un disque dur

sudo smartctl -a /dev/sda

Compiler un package source sous Debian

Source ici: Chapitre 7. Les bases du système de gestion des paquets Debian

Il faut d’abord récupérer les fichiers sources du package:

dpkg-source -x foo_version-revision.dsc

Cela va extraire le package dans un dossier nommé foo-version.

Il suffit d'aller dans le dossier:

cd foo-version/

Puis de construire le package avec

dpkg-buildpackage -rfakeroot -b

Ce qui devrait vous creer un jolie .deb installable via:

dpkg -i ../foo_version-revision_arch.deb

Monter un image ISO

sudo mkdir /mnt/iso
sudo mount -o loop -t iso9660 '/path/to/isoFile.iso' /mnt/iso

Et pour démonter:

sudo umount /mnt/iso
sudo rm /mnt/iso

Connaître le poids d'un dossier

du -hs /path/to/directory

Connaître l'espace disque restant

df -h

Source: Commande espace disque libre

Supprimer récursivement tout les fichier d'un dossier

Cette commande permet de supprimer uniquement les fichiers d'un dossiers et ainsi de conserver la structure des dossiers.

Très pratique pour virer les caches de Nuke sans le faire râler. :)

find /tmp/nuke/ -type f -exec rm -v '{}' \;

Source: rm files only - retain directory structure

Utiliser les liens symboliques pour stocker des infos courtes

J'avoue que c'est un peu dégueulasse mais le fait de pouvoir stocker/accéder a une information sans faire d'ouverture de fichier sur le système est très intéressant.

$ ln -s "the data" ./a_file
$ readlink ./a_file
the data

Déplacer tous les fichiers d'un certain type vers un dossier

find ./ -iname "*.pdf" -exec mv {} /your/dst \;

Lister les lib résolues par le système

Cette commande liste les libs résolues par le système quand un programme les appelle.

ldconfig -p

Récupérer le nom d’un paquet depuis un fichier

dpkg -S /usr/lib/x86_64-linux-gnu/mesa/libGL.so

Ou :

dpkg -S libGL

Démarrage

Quelques outils/conseils pour gérer le démarrage de Linux.

sysv-rc-conf

Ce petit tool permet de gérer le lancement des services Linux facilement.

sudo sysv-rc-conf

Source:

Lister tous les services actifs

sudo service --status-all

Permissions

Impossible de lancer des commandes en sudo

Si vous rencontrez ce message:

 user is not in the sudoers file.  This incident will be reported.

Passez en root:

su

Puis éditez le fichier des groupes:

/etc/group

Verifiez que votre user est dans le groupe sudo:

sudo:x:27:narann

Relogguez vous, le problème devrait être résolu.

Notez que le problème est le même si vous avez le message d'erreur suivant:

Le mécanisme d'autorisation sous-jacent (sudo) ne vous autorise pas à lancer ce programme.

Réseau

Lister les ports ouverts sur la machine

netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      353/sshd        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      883/mysqld      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      899/nginx       
tcp6       0      0 :::22                   :::*                    LISTEN      353/sshd        
tcp6       0      0 :::9090                 :::*                    LISTEN      1028/apache2    
tcp6       0      0 :::443                  :::*                    LISTEN      1028/apache2    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           792/dhclient    
udp        0      0 0.0.0.0:60370           0.0.0.0:*                           697/avahi-daemon: r
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           697/avahi-daemon: r

Il y a aussi:

sudo netstat -lp --inet

Plus d'infos:Quels sont mes ports ouverts sous Ubuntu ?

Récupérer les ports ouverts depuis l’extérieur

nmap supersite.com -p0-65500
Starting Nmap 5.00 ( <http://nmap.org>) at 2011-11-01 18:00 CET
Illegal character(s) in hostname -- replacing with '*'
Interesting ports on localhost* (127.0.0.1):
Not shown: 65496 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
443/tcp   open  https
3306/tcp  open  mysql
9090/tcp  open  http-proxy
Nmap done: 1 IP address (1 host up) scanned in 4.78 seconds

Configurer un .htaccess

Empêcher de lister les éléments d'un dossier:

IndexIgnore *

Empêcher de lister les .pdf d'un dossier:

IndexIgnore *.pdf

Using .htaccess

Rediriger le display d'un serveur X en ssh

Il est possible de rediriger la sortie display d'un serveur X pour ouvrir une application depuis ssh.

setenv DISPLAY hostname:0

Il faut que hostname soit accessible depuis la machine sur laquelle on est loggué.

Savoir si une extension PHP est installée

php -i | grep -i 'SSL'

Source: http://snipplr.com/view/5068/

X

Regénérer un fichier xorg.conf

sudo Xorg -configure

Source: Create A xorg.conf File

Reconfigurer xserver

Sous Debian:

dpkg-reconfigure xserver-xorg

Sous les autres:

cd /etc/X11/ && Xorg -configure

Source: http://www.cyberciti.biz/faq/howto-linux-configure-xorg-x11/

Tester un fichier xorg.conf

X -config -retro /root/xorg.conf.new
X -config -retro /etc/X11/xorg.conf

Récupérer des informations sur une fenêtre

>xwininfo

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x1eac011 "bin - Dolphin"

  Absolute upper-left X:  2135
  Absolute upper-left Y:  26
  Relative upper-left X:  0
  Relative upper-left Y:  16
  Width: 1490
  Height: 919
  Depth: 24
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x20 (installed)
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +2135+26  -215+26  -215-135  +2135-135
  -geometry 1490x919+2134+9

Conflit entre xfdestop et le desktop Gnome

Il faut savoir que lancer nautilus sans l'option --no-desktop force l'affichage du desktop Gnome...

C'est particulièrement gênant si nautilus est lancé après le démarrage d'une session. Dans mon cas, nautilus et xfdestop sont lancé tout les deux au démarrage et c'était nautilus (et donc le desktop Gnome) qui avaient l'avantage.

Le problème c'est qu'il n'est pas forcément aisé de s'assurer que tout les nautilus lancés le soit bien avec l'option --no-desktop. Il existe donc une option pour ça. Ouvrez gconf-editor.

gconf-editor

Puis d'aller dans:

 apps/nautilus/preferences

Et de decocher l'option:

 show_desktop

Si vous n'avez pas gconf-editor, ouvrez:

.gconf/apps/nautilus/preferences/%gconf.xml

Puis editez la ligne:

<entry name="show_desktop" mtime="1326487410" type="bool" value="true"/>

Et passez la valeur à false.

Mettre a jour cache des fonts

Si vous mettez une nouvelle police de caractère (dans .fonts par exemple), il faut mettre a jour le cache:

fc-cache

Réinitialiser la sensibilité et l’accélération de la souris

xset mouse 0 0

Vous pouvez placer cette commande dans votre .xsession pour en profiter à chaque démarrage.

Activer les compose key et faire des accents sous avec clavier anglais

setxkbmap -option compose:ralt

Faites ensuite un AltDroite+` (tilde) puis tapez la lettre a et vous obtenez un à. Vous pouvez aussi faire l'inverse: AltDroite+a puis tapez `(tilde). Pour le â: AltDroite+a puis tapez Shift+6 (du clavier alphabétique): â. Faites quelques essais pour trouver les différents accents.

Cette combine peut fonctionner pour les lettres suivantes:

Source: Getting your way with setxkbmap

Reinitialiser les options de setxkbmap

setxkbmap -option

Activer TearFree pour avoir VSync propre

xrandr --output DVI-D-0 --set "TearFree" on

Où DVI-D-0 est le port de votre moniteur.

Pour lister les ports et leur features:

xrandr --prop

Audio

Supprimer PulseAudio au profit d'ALSA

Si vous désinstallez PulseAudio, il peut arriver que vous ayez des soucis de son. Un exemple flagrant est une lenteur au démarrage d'une application sonore (VLC, Flash, etc...) car il essaye de se connecter au serveur PulseAudio alors que celui ci n'est plus la...

La faute a un fichier de config:

 /etc/asound.conf

ou

 ~/.asoundrc

Qui est la version “user” du premier.

Ces fichiers servent a dire avec quel matériel, serveur sonore, etc... ALSA doit lire tel ou tel type de son. C'est vraiment la config de ALSA.

Si vous n'avez pas de matériel spécial, le plus simple est de le supprimer pour forcer l'utilisation de ALSA dans tout les cas (c'est ce que j'ai fait). Sinon vous pouvez supprimer les groupes faisant référence a pulse. De cette façon, ALSA n'essaiera pas de lancer PulseAudio.

Compression/Décompression

tar

Compresser une archive tar

Compresser le dossier myArchive (en gzip):

tar -czvf myArchive.tar.gz myArchive

L'argument z, c'est pour compresser en gzip.

Décompresser une archive tar

Decompresser dans un sous dossier myArchive:

tar -xvf myArchive.tar

Lister le contenu d'une archive tar

Pour afficher la liste du contenu d'un fichier myArchive.tar :

tar -tvf myArchive.tar

Source: http://fr.wikipedia.org/wiki/Tar_%28informatique%29

Compresser/Décompresser une archive zip

Compresser récursivement le dossier myArchive:

zip -r myArchive.zip myArchive

Décompresser dans un sous dossier myArchive:

unzip myArchive.zip -d myArchive

Décompresser tout les fichier zip d'un dossier:

unzip *.zip

Ou bien:

for z in *.zip; do unzip $z; done

Compresser/Décompresser une archive rar

unrar e myArchive.rar
unrar x myArchive.rar

Source: Open RAR File / Extract RAR Files Under Linux or UNIX

7z

Compresser:

7z a -t7z -mx9 -mmt=on -pmypassword archive.7z files

Plus complexe:

7z a -t7z -mx9 -mfb=256 -md=256m -ms=on -mmt=on archive.7z files

Décompresser:

7z x stuff.7z

Divers

Logiciels divers

Clipboard managers

Ces petits logiciels se calent souvent dans la barre des taches et stockent le contenu des copier/coller. Très pratique pour les utilisateurs avancés.

Source: http://www.webupd8.org/2010/08/best-linux-clipboard-manager.html

Changer la résolution de grub2

Il faut d'abord connaître la résolution VESA disponible (VESA ne supporte pas 1920x1080).

sudo hwinfo --framebuffer

Ce qui vous donne une liste.

Par exemple, chez moi je prend la plus haute disponible:

 Mode 0x0346: 1400x1050 (+5632), 24 bits

Éditez le fichier:

sudo nano /etc/default/grub

Décommentez:

 #GRUB_GFXMODE=640x480

Et mettez:

 GRUB_GFXMODE=1400x1050x24
 GRUB_GFXPAYLOAD_LINUX=keep

GRUB_GFXPAYLOAD_LINUX dit a grub2 de ne pas changer la résolution si on lance linux (cela permet d'avoir des terminaux tty en haute résolution).

C'est fini! Faite un:

sudo update-grub2

Puis redémarrez votre ordinateur.

Des liens en vrac:

Lancer nedit en utf8

Cette manip marche sûrement pour d'autres logiciels.

LANG=fr_FR nedit&

Screencast

ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -s 1680x1050 -r 30 -i :0.0 -vcodec mpeg2video -sameq -acodec libmp3lame -ab 128k screencast.mpg

Supprimer les associations de fichier Wine

rm -fr ~/.local/share/applications/wine-extension-*
rm -fr ~/.local/share/mime/packages/*wine-extension*
rm -fr ~/.local/share/icons/*wine-extension*

Source: https://linuxfr.org/forums/astucesdivers/posts/wine-extension-desktop

Créer un nouveau Wineprefix

Pour créer un nouveau dossier Wine prêt a l'emploi:

WINEPREFIX=~/.wine-foo wineboot

Mais ce dossier ne sera pas accessible depuis le menu 'Winetricks''. Pour ça il faut lancer le faire dans le bon dossier:

WINEPREFIX=~/.local/share/wineprefixes/foo wineboot

On peut meme pousser le vice en créant un fichier wrapper.cfg avec le nom du préfixe dedans (pour qu'il apparaisse dans Winetricks:

echo ww_name=\"My Foo\" > ~/.local/share/wineprefixes/wrapper.cfg

Repérer des fichiers identiques

Très pratique pour trouver des photos identiques.

fdupes -r repertoire

Exemple:

$ fdupes -r ./
./IMG_7608 (copie).JPG
./IMG_7608.JPG

Renommer toutes les extensions des fichiers d'un dossier

Cet exemple renomme tout les .txt en .dat.

for i in *.txt;do mv $i ${i%txt}dat ;done

Source: Renommer une série de fichiers sous Unix

Activer l'anti-aliasing dans une application Java

java -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -jar <your_jar_file>

Acquisition vidéo (composite)

Pour récupérer l’image d’une console.

Initialisation

$ lsusb
Bus 001 Device 039: ID eb1a:2861 eMPIA Technology, Inc.

Il s’agit du module em28xx à charger et décharger, respectivement, avec :

$ sudo modprobe em28xx
$ sudo modprobe -r em28xx

En cas d’erreur de déchargement, vous pouvez lister les modules l’utilisant via :

$ lsmod | grep em28xx

Récupérer des informations

Voici différentes lignes de commandes permettant de récupérer des informations.

$ v4l2-ctl -d /dev/video1 --list-inputs
$ v4l2-ctl --device /dev/video1 --get-standard
$ v4l2-ctl --device /dev/video1 --all
$ v4l2-ctl --device /dev/video1 --list-formats
$ v4l2-ctl --device /dev/video1 --list-formats-ext

Application

Pour VLC Celle commande a fonctionné pour moi (mais énorme latence) :

$ vlc v4l2:///dev/video1 --deinterlace-mode=disabled :v4l2-standard=PAL :v4l2-width=720 :v4l2-height=576 :v4l2-fps=25 :v4l2-aspect-ratio=4\:3 :v4l2-input=1 :v4l2-chroma=yuyv

Input à 1 permettait de sélectionner composite.

Les options pour V4L2 sont disponibles ici.

xawtv a aussi fonctionné, bien qu’entrelacé.

tvtime était, visuellement, le plus efficace. Je n’ai pas testé avec le son.

Extraction et conversion de fichiers

Créer un gif animé depuis un movie

ffmpeg -ss 431 -t 20 -i my_movie.mp4 -vf crop=1280:536:0:92 -r 15 toto%05d.png

Voyez large et supprimez les images en trop au début et en fin de vidéo.

Puis:

convert -delay 6.666 -resize 200x200 toto*.png -loop 0 toto.gif

Et si je gif animé s'y prette, une ligne qui réduit le nombre de couleur, et donc, sa taille:

gifsicle --color-method median-cut --colors 256 --optimize=03 toto200.gif > toto200optim.gif

Optimiser un PNG

pngquant trouve la meilleur palette, optipng trouve la meilleur compression.

pngquant --speed 1 *.png
optipng -o7 -zm1-9 *-fs8.png
# supprimer les images originales
rename  's/-fs8.png/.png/' *

Convertir un PDF en fichier image

pdftoppm /path/to/the/my_file.pdf /path/to/extract/images

Vous pouvez extraire que les pages voulues:

pdftoppm -f 12 -l 12 /path/to/the/my_file.pdf /path/to/extract/images

Extraire les images d'un fichier PDF

pdfimages /path/to/the/my_file.pdf /path/to/extract/images

Vous pouvez extraire les images des pages uniquement voulues:

pdfimages -f 12 -l 12 /path/to/the/my_file.pdf /path/to/extract/images

Source: Extract images from a PDF document

Extraire la piste Ogg d'une vidéo WebM sans ré-encodage

Le format WebM est un container Matroska qui empaquète un (ou plusieurs) flux vidéos encodés en VP8 et un (ou plusieurs) flux audios encodés en Vorbis. Le Ogg est un container principalement (de facto disons) utilisé pour l'audio encodé en Vorbis.

De ce fait, il est possible d'extraire la piste audio d'un fichier WebM de la placer dans un container Ogg sans avoir à la modifier, et donc, sans avoir à la ré-encoder. La méthode ici consiste à utiliser jDownloader pour télécharger une vidéo Youtube au format WebM dans sa plus haute résolution disponible (Ici, 720p).

Jdownloader_webm_001

Une fois le fichier téléchargé, il suffit d'extraire la piste audio grâce à cette commande (nécessite le package mkvtoolnix).

$ mkvextract tracks "Avicii - Super Mario World Levels (Full Version)(720p_VP8-Vorbis).webm" 2:monSuperFichierOgg.ogg
Extracting track 2 with the CodecID 'A_VORBIS' to the file 'monSuperFichierOgg.ogg'. Container format: Ogg (Vorbis in Ogg)
Avancement : 100%

Le chiffre 2 correspond au numéro de la piste à extraire.

Et bam! Vous avez un fichier Ogg de super qualité!

Source: http://notepad.patheticcockroach.com/2430/extracting-a-vorbis-audio-track-to-an-ogg-audio-file/

Extraire le son d'une vidéo MP4 sans ré-encodage

ffmpeg -i myVideo.mp4 -vn -acodec copy mySound.aac

Source Best way to extract AAC from mp4 losslessly

Extraire le son de vidéos WebM en Opus sans ré-encodage

for i in *.webm; do ffmpeg -i "$i" -vn -acodec copy "${i%.*}.opus"; done

Couper un Opus sans ré-encodage

ffmpeg -i input.opus -ss 2200 -t 213 -c copy output.opus

Source Split Ogg Opus audio file without losing quality?

Convertir un CD audio en wav

Cette commande fait un rapport des pistes disponibles:

cdparanoia -vsQ

Cette commande va extraire le CD audio en wav en mode batch (les fichiers sont séparés: Un par piste).

cdparanoia -B

Cette commande extrait du début de la piste deux à la fin de la piste deux (soit, juste la piste deux).

cdparanoia "2-2"

Sur certains CD, il se peut que la derniere piste affiche des messages d'erreurs et que l'extraction ne finisse jamais. Il suffit d'ouvrir avec Audacity le fichier .wav généré et de le resauvegarder en wav.

Source: http://www.cyberciti.biz/faq/linux-ripping-and-encoding-audio-files/

Dumper un CD

Il y a plusieurs façons de dumper un CD. La plus simple étant celle ci:

dd if=/dev/cdrom of=mydump.iso

Cette methode fonctionne egalement avec des DVDs.

En revanche, si votre CD contient des pistes audios, il vaut mieux utiliser cette méthode:

cdrdao read-cd --read-raw --datafile mydump.bin --device /dev/cdrom --driver generic-mmc-raw mydump.toc
toc2cue mydump.toc mydump.cue

N'oubliez pas de démonter le lecteur CD avant de faire cette manipulation:

sudo umount /dev/cdrom

Source: Trouver des fichiers identiques sous Linux avec fdupes

Liens utiles

Dernière mise à jour : jeu. 02 juin 2022