Cliquez sur l'image pour voir une version plus grande

1. tar

Créer un nouveau fichier tar

$ tar cvf archive_name.tar dirname/

Extraire un fichier tar

$ tar xvf archive_name.tar

Afficher un fichier tar

$ tar tvf archive_name.tar

2. grep

Rechercher une chaîne dans un fichier (insensible à la casse)

$ grep -i "the" demo_file

Afficher la ligne correspondante trouvée, ainsi que les trois lignes qui suivent cette ligne

$ grep -A 3 -i "example" demo_text

Rechercher récursivement dans un dossier les fichiers contenant une chaîne spécifiée

$ grep -r "ramesh" *

3. find

Trouver des fichiers avec un nom de fichier spécifié (insensible à la casse)

$ find -iname "MyProgram.c"

Exécuter une commande sur les fichiers trouvés

$ find -iname "MyProgram.c" -exec md5sum {} \;

Trouver tous les fichiers vides dans le répertoire personnel

$ find ~ -empty

4. ssh

Se connecter à un hôte distant

$ ssh -l jsmith remotehost.example.com

Déboguer le client ssh

$ ssh -v -l jsmith remotehost.example.com

Afficher la version du client ssh

$ ssh -V

5. sed

Lorsque vous copiez des fichiers d'un système DOS vers Unix/Linux, chaque ligne du fichier se termine par \r\n. sed peut facilement le convertir en un fichier au format Unix, qui utilise \n à la fin des lignes

$ sed 's/.$//' filename

Inverser le contenu du fichier et l'afficher

$ sed -n '1!G; h; p' filename

Ajouter des numéros de ligne aux lignes non vides

$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

6. awk

Supprimer les lignes dupliquées

$ awk '!($0 in array) { array[$0]; print}' temp

Afficher toutes les lignes de /etc/passwd dont l'uid et le gid sont identiques

$ awk -F ':' '$3=$4' /etc/passwd

Afficher les champs spécifiés d'un fichier

$ awk '{print $2,$5;}' employee.txt

7. vim

Ouvrir un fichier et aller à la ligne 10

$ vim +10 filename.txt

Ouvrir un fichier et aller à la première ligne correspondante

$ vim +/search-term filename.txt

Ouvrir un fichier en mode lecture seule

$ vim -R /etc/passwd

8. diff

Ignorer les espaces blancs lors de la comparaison

$ diff -w name_list.txt name_list_new.txt

9. sort

Trier le contenu du fichier par ordre croissant

$ sort names.txt

Trier le contenu du fichier par ordre décroissant

$ sort -r names.txt

Trier le contenu de /etc/passwd par le troisième champ

$ sort -t: -k 3n /etc/passwd | more

10. export

Afficher les variables d'environnement qui correspondent à la chaîne oracle

$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"

Définir des variables d'environnement globales

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0

11. xargs

Copier tous les fichiers image sur un disque externe

$ ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

Compresser et empaqueter tous les fichiers jpd du système

$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

Télécharger les pages correspondant à toutes les URL listées dans le fichier

$ cat url-list.txt | xargs wget –c

12. ls

Afficher la taille du fichier dans un format lisible par l'humain (indiqué en MB, GB, ...)

$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

Lister les fichiers par ordre croissant de date de dernière modification

$ ls -ltr

Afficher le type de fichier après le nom du fichier

$ ls -F

13. pwd

Afficher le répertoire de travail actuel

14. cd

cd - bascule entre les deux répertoires les plus récemment utilisés

Utiliser shopt -s cdspell permet de configurer la correction orthographique automatique pour la commande cd

15. gzip

Créer un fichier compressé *.gz

$ gzip test.txt

Décompresser un fichier *.gz

$ gzip -d test.txt.gz

Afficher le taux de compression

$ gzip -l *.gz
     compressed        uncompressed  ratio uncompressed_name
          23709               97975  75.8% asp-patch-rpms.txt

16. bzip2

Créer un fichier compressé *.bz2

$ bzip2 test.txt

Décompresser un fichier *.bz2

bzip2 -d test.txt.bz2

17. uzip

Décompresser un fichier *.zip

$ unzip test.zip

Afficher le contenu d'un fichier *.zip

$ unzip -l jasper.zip
Archive:  jasper.zip
Length     Date   Time    Name
--------    ----   ----    ----
40995  11-30-98 23:50   META-INF/MANIFEST.MF
32169  08-25-98 21:07   classes_
15964  08-25-98 21:07   classes_names
10542  08-25-98 21:07   classes_ncomp

18. shutdown

Arrêter le système et couper immédiatement l'alimentation

$ shutdown -h now

Éteindre après 10 minutes

$ shutdown -h +10

Redémarrage

$ shutdown -r now

Forcer une vérification du système lors du redémarrage

$ shutdown -Fr now

19. ftp

L'utilisation de la commande ftp et de la commande sftp est globalement similaire : se connecter à un serveur FTP et télécharger plusieurs fichiers

$ ftp IP/hostname
ftp> mget *.html

Afficher la liste des fichiers sur l'hôte distant

ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

20. crontab

Afficher les entrées crontab d'un utilisateur

$ crontab -u john -l

Configurer une tâche planifiée qui s'exécute toutes les dix minutes

*/10 * * * * /home/ramesh/check-disk-space

21. service

La commande service est utilisée pour exécuter les scripts d'initialisation System V, qui se trouvent généralement dans /etc/init.d. Cette commande peut exécuter directement les scripts de ce dossier sans ajouter le chemin

Afficher l'état du service

$ service ssh status

Afficher l'état de tous les services

$ service --status-all

Redémarrer un service

$ service ssh restart

22. ps

La commande ps est utilisée pour afficher des informations sur les processus en cours d'exécution. La commande ps possède de nombreuses options ; seules quelques-unes sont répertoriées ici

Afficher tous les processus en cours d'exécution

$ ps -ef | more

Afficher les processus en cours d'exécution sous forme d'arborescence. L'option H indique d'afficher la hiérarchie des processus

$ ps -efH | more

23. free

Cette commande est utilisée pour afficher l'utilisation actuelle de la mémoire du système, y compris la mémoire utilisée, la mémoire disponible et la mémoire d'échange

Par défaut, free affiche l'utilisation de la mémoire en bytes

$ free
             total       used       free     shared    buffers     cached
Mem:       3566408    1580220    1986188          0     203988     902960
-/+ buffers/cache:     473272    3093136
Swap:      4000176          0    4000176

Si vous souhaitez afficher l'utilisation de la mémoire dans d'autres unités, vous devez ajouter une option : -g pour GB, -m pour MB, -k pour KB, -b pour bytes

$ free -g
             total       used       free     shared    buffers     cached
Mem:             3          1          1          0          0          0
-/+ buffers/cache:          0          2
Swap:            3          0          3

Si vous souhaitez afficher un résumé de toute la mémoire, utilisez l'option -t. L'utilisation de cette option ajoute une ligne de résumé à la sortie

$ free -t
             total       used       free     shared    buffers     cached
Mem:       3566408    1592148    1974260          0     204260     912556
-/+ buffers/cache:     475332    3091076
Swap:      4000176          0    4000176
Total:     7566584    1592148    5974436

24. top

La commande top affiche les processus qui occupent actuellement le plus de ressources dans le système (triés par utilisation du CPU par défaut). Si vous souhaitez modifier la méthode de tri, vous pouvez appuyer sur O (O majuscule) dans la liste des résultats pour afficher toutes les colonnes disponibles pour le tri, puis vous pouvez sélectionner la colonne selon laquelle vous souhaitez trier

Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id              v: nDRT       = Dirty Pages count
  d: UID        = User Id                 y: WCHAN      = Sleeping in Function
  e: USER       = User Name               z: Flags      = Task Flags
  ........

Si vous souhaitez uniquement afficher les processus d'un utilisateur spécifique, vous pouvez utiliser l'option -u

$ top -u oracle

25. df

Afficher l’utilisation du disque du système de fichiers. Par défaut, df -k affiche l’utilisation du disque en octets

$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29530400   3233104  24797232  12% /
/dev/sda2            120367992  50171596  64082060  44% /home

L’utilisation de l’option -h affiche l’utilisation du disque dans un format plus lisible par l’humain

$ df -h
Filesystem                  Size   Used  Avail Capacity  iused      ifree %iused  Mounted on
/dev/disk0s2               232Gi   84Gi  148Gi    37% 21998562   38864868   36%   /
devfs                      187Ki  187Ki    0Bi   100%      648          0  100%   /dev
map -hosts                   0Bi    0Bi    0Bi   100%        0          0  100%   /net
map auto_home                0Bi    0Bi    0Bi   100%        0          0  100%   /home
/dev/disk0s4               466Gi   45Gi  421Gi    10%   112774  440997174    0%   /Volumes/BOOTCAMP
//app@izenesoft.cn/public  2.7Ti  1.3Ti  1.4Ti    48%        0 18446744073709551615    0%   /Volumes/public

Utilisez l’option -T pour afficher le type de système de fichiers

$ df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    29530400   3233120  24797216  12% /
/dev/sda2     ext4   120367992  50171596  64082060  44% /home

26. kill

kill est utilisé pour terminer un processus. En général, on utilise d’abord ps -ef pour trouver un processus et obtenir son numéro de processus, puis on utilise kill -9 numéro de processus pour le terminer. Vous pouvez aussi utiliser killall, pkill ou xkill pour terminer des processus

$ ps -ef | grep vim
ramesh    7243  7222  9 22:43 pts/2    00:00:00 vim

$ kill -9 7243

27. rm

Confirmer avant de supprimer un fichier

$ rm -i filename.txt

L’utilisation de métacaractères du shell dans les noms de fichiers peut être très utile. Affichez les noms de fichiers et confirmez avant de les supprimer

$ rm -i file*

Supprimer récursivement tous les fichiers d’un dossier et supprimer également le dossier lui-même

$ rm -r example

28. cp

Copier file1 vers file2, en préservant les permissions, le propriétaire et l’horodatage du fichier

$ cp -p file1 file2

Copier file1 vers file2. Si file2 existe, il demandera s’il faut écraser

$ cp -i file1 file2

29. mv

Renommer file1 en file2. Si file2 existe, il demandera s'il faut l'écraser

$ mv -i file1 file2

Notez que si l'option -f est utilisée, aucune invite ne sera affichée

-v affiche le processus de renommage. Cette option est très pratique lorsque les noms de fichiers contiennent des caractères génériques

$ mv -v file1 file2

30. cat

Vous pouvez afficher le contenu de plusieurs fichiers à la fois. La commande suivante affiche d'abord le contenu de file1, puis celui de file2

$ cat file1 file2

L'option -n ajoute des numéros de ligne au début de chaque ligne

$ cat -n /etc/logrotate.conf
/var/log/btmp {
missingok
3        monthly
4        create 0660 root utmp
5        rotate 1
6 }

31. mount

Pour monter un système de fichiers, vous devez d'abord créer un répertoire, puis monter le système de fichiers dans ce répertoire

# mkdir /u01

# mount /dev/sdb1 /u01

Vous pouvez également l'ajouter à fstab pour un montage automatique, afin que le système de fichiers soit chargé à chaque redémarrage du système

/dev/sdb1 /u01 ext2 defaults 0 2

32. chmod

chmod est utilisé pour modifier les permissions des fichiers et des répertoires

Accorder au propriétaire et au groupe du fichier spécifié toutes les permissions (y compris lecture, écriture et exécution)

$ chmod ug+rwx file.txt

Supprimer toutes les permissions du groupe du fichier spécifié

$ chmod g-rwx file.txt

Modifier les permissions d'un répertoire et modifier récursivement les permissions de tous les fichiers et sous-répertoires de ce répertoire

$ chmod -R ug+rwx file.txt

33. chown

chown est utilisé pour changer le propriétaire et le groupe d'un fichier

Changer simultanément le propriétaire d'un fichier en oracle et le groupe en db

$ chown oracle:dba dbora.sh

Utiliser l'option -R pour modifier récursivement un répertoire et les fichiers qu'il contient

$ chown -R oracle:dba /home/oracle

34. passwd

passwd est utilisé pour changer un mot de passe sur la ligne de commande. L'utilisation de cette commande nécessite de saisir d'abord l'ancien mot de passe, puis de saisir un nouveau mot de passe

$ passwd

Le superutilisateur peut utiliser cette commande pour changer les mots de passe d'autres utilisateurs. Dans ce cas, il n'est pas nécessaire de saisir le mot de passe de l'utilisateur

# passwd USERNAME

passwd peut également supprimer le mot de passe d'un utilisateur. Cette commande ne peut être utilisée que par l'utilisateur root. Après la suppression du mot de passe, l'utilisateur peut se connecter au système sans saisir de mot de passe

# passwd -d USERNAME

35. mkdir

Créer un répertoire nommé temp dans le répertoire personnel

$ mkdir ~/temp

Utilisez l'option -p pour créer tous les répertoires inexistants le long d'un chemin

$ mkdir -p dir1/dir2/dir3/dir4/

36. ifconfig

ifconfig permet d'afficher et de configurer les interfaces réseau d'un système Linux

Afficher toutes les interfaces réseau et leur état

$ ifconfig -a

Utilisez les commandes up et down pour démarrer ou arrêter une interface

$ ifconfig eth0 up
$ ifconfig eth0 down

37. uname

uname peut afficher certaines informations système importantes, telles que le nom du noyau, le nom d'hôte, la version du noyau, le type de processeur, etc.

$ uname -a Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

38. whereis

Lorsque vous ne connaissez pas l'emplacement d'une commande, vous pouvez utiliser la commande whereis. L'exemple suivant utilise whereis pour trouver l'emplacement de ls

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

Lorsque vous souhaitez trouver l'emplacement d'un programme exécutable, mais que le programme ne se trouve pas dans les répertoires par défaut de whereis, vous pouvez utiliser l'option -B et spécifier un répertoire comme argument de cette option. La commande suivante recherche la commande lsmk dans le répertoire /tmp

$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

39. whatis

whatis affiche des informations de description pour une commande

$ whatis ls
ls        (1)  - list directory contents

$ whatis ifconfig
ifconfig (8)         - configure a network interface

40. locate

La commande locate peut afficher le chemin d'un fichier spécifié (ou d'un groupe de fichiers). Elle utilise une base de données créée par updatedb

La commande suivante affichera tous les fichiers du système qui contiennent la chaîne crontab

$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim

41. man

Afficher la page de manuel d'une commande

$ man crontab

Certaines commandes peuvent avoir plusieurs pages de manuel ; chaque page de manuel correspond à un type de commande

$ man SECTION-NUMBER commandname

Les pages de manuel peuvent généralement être divisées en 8 types de commandes

  1. Commandes utilisateur
  2. Appels système
  3. Fonctions de bibliothèque C
  4. Périphériques et interfaces réseau
  5. Formats de fichiers
  6. Jeux et économiseurs d'écran
  7. Environnement, tables et macros
  8. Commandes d'administrateur système et commandes exécutées en arrière-plan
  9. Par exemple, lorsque nous exécutons whatis crontab, vous pouvez voir que crontab a deux types de commandes, 1 et 5. Nous pouvons donc utiliser la commande suivante pour afficher la page de manuel du type de commande 5

    $ whatis crontab
    crontab (1)          - maintain crontab files for individual users (V3)
    crontab (5)          - tables for driving cron
    
    $ man 5 crontab

    42. tail

    La commande tail affiche par défaut les 10 dernières lignes de texte d'un fichier

    $ tail filename.txt

    Vous pouvez utiliser l'option -n pour spécifier le nombre de lignes à afficher

    $ tail -n N filename.txt

    Vous pouvez également utiliser l'option -f pour visualiser en temps réel. Après l'exécution de cette commande, elle attend. Si de nouvelles lignes sont ajoutées à la fin du fichier, elle continuera à afficher les nouvelles lignes. Cette option est très utile lors de la consultation des journaux. Vous pouvez interrompre la commande en appuyant sur CTRL-C.

    $ tail -f log-file

    43. less

    Cette commande peut afficher le contenu du fichier sans charger le fichier entier, ce qui est très utile lors de la consultation de grands fichiers journaux.

    $ less huge-log-file.log

    Lorsque vous ouvrez un fichier avec la commande less, les deux touches suivantes vous aideront beaucoup ; elles servent à faire défiler vers l'avant et vers l'arrière.

    CTRL+F – forward one window
    CTRL+B – backward one window

    44. su

    su命令用于切换用户账号,超级用户使用这个命令可以切换到任何其他用户而不用输入密码
    $ su - USERNAME

    Exécutez une commande avec un autre nom d'utilisateur. Dans l'exemple ci-dessous, l'utilisateur john exécute la commande ls en utilisant le nom d'utilisateur raj, puis revient au compte de john après l'exécution.

    [john@dev-server]$ su - raj -c 'ls'
    
    [john@dev-server]$

    Connectez-vous en tant qu'utilisateur spécifié et utilisez le programme shell spécifié au lieu de celui par défaut.

    $ su -s 'SHELLNAME' USERNAME

    45. mysql

    MySQL est peut-être la base de données la plus largement utilisée sous Linux. Même si vous n'avez pas installé MySQL sur votre serveur, vous pouvez toujours utiliser le client MySQL pour vous connecter à un serveur MySQL distant.

    Pour vous connecter à une base de données distante, vous devez saisir le mot de passe.

    $ mysql -u root -p -h 192.168.1.2

    Se connecter à une base de données locale.

    $ mysql -u root -p

    Vous pouvez également saisir le mot de passe de la base de données sur la ligne de commande. Ajoutez simplement le mot de passe comme argument après -p. Il peut être écrit directement après p sans espace.

    46. yum

    Installez Apache avec yum.

    $ yum install httpd

    Mettez à jour Apache.

    $ yum update httpd

    Désinstallez/supprimez Apache.

    $ yum remove httpd

    47. rpm

    Installer Apache avec rpm.

    # rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm

    Mettez à jour Apache.

    # rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm

    Désinstallez/supprimez Apache.

    # rpm -ev httpd

    48. ping

    Pinguez un hôte distant, en n'envoyant que 5 paquets de données.

    $ ping -c 5 gmail.com

    49. date

    Régler la date du système.

    # date -s "01/31/2010 23:59:53"

    Lorsque vous avez modifié l'heure du système, vous devez synchroniser l'heure matérielle et l'heure du système.

    # hwclock –systohc
    
    # hwclock --systohc –utc

    50. wget

    Utilisez wget pour télécharger des logiciels, de la musique et des vidéos depuis Internet.

    $ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

    Téléchargez un fichier et enregistrez-le avec un nom de fichier spécifié.

    $ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

    Traduction : https://zhuanlan.zhihu.com/p/28674639

    Original : http://www.thegeekstuff.com/2010/11/50-linux-commands/