Un pense-bête

Trucs de geek : Diverses commandes pratiques

Quelques petites commandes qui peuvent vous servir.

LSB_RELEASE

Vous permet de connaitre entre autre le nom de la version d'Ubuntu / Debian que vous avez installez :

$ lsb_release -sc

Vous donne par exemple : 

trusty

L'option "rs" sur Ubuntu permet de connaître le no de sa version :

$ /usr/bin/lsb_release -rs

qui donne

$ 13.10

Pour tout avoir :

$ lsb_release -idcr

donne :

Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:    16.04
Codename:    xenial

Vous pouvez obtenir ces memes informations dans le fichier "/etc/os-releas". Quand on en affiche le contenu on obtient :

NAME="Ubuntu"
VERSION="17.10 (Artful Aardvark)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 17.10"
VERSION_ID="17.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=artful
UBUNTU_CODENAME=artful

 

Shell : Lancer deux commandes avec le seconde dépendant de la première : &

$ cd tmp/a/b/c && tar xvf ~/archive.tar

Shell : Exécuter une commande uniquement si la première ne s'est pas correctement terminée : ||

$ cd /tmp/a/b/c || mkdir /tmp/a/b/c

Blkid : Lister les partitions présentes sur votre système :

$ sudo blkid

Vous donne par exemple :

/dev/sda1: UUID="0450748650747FEA" TYPE="ntfs" 
/dev/sdb1: UUID="8d0b2c0c-7eeb-443e-9cc3-1659d738bb03" TYPE="ext4" 
/dev/sdb5: UUID="8e87be02-5a84-4d37-b79a-1ba0921f386a" TYPE="swap" 

qui vous permet en outre de récupérer les UID des partitions.

Autre moyen de lister les partitions (plus complet) :

$ sudo fdisk -l

qui donne par exemple :

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 têtes, 63 secteurs/piste, 38913 cylindres, total 625142448 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x7bac7bac

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *        2048   625139711   312568832    7  HPFS/NTFS/exFAT

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 têtes, 63 secteurs/piste, 19457 cylindres, total 312581808 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x33d2ff23

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1            2048   234455039   117226496   83  Linux
/dev/sdb2       234457086   312580095    39061505    5  Étendue
/dev/sdb5       234457088   312580095    39061504   82  partition d'échange Linux / Solaris

Créer une archive à partitr d'une commande find:

$ tar -cvf fso.tar $(find -ctime -59  -print)

Gzip

Pour compresser l'archive

$ gzip doc.tar

créera un fichier "doc.tar.gz". Ce qui donne sur un :

$ ls -l

-rw-rw-r--  1 jfd jfd 155082040 nov.  28 16:03 doc.tar.gz

Pour faire le chemin inverse, on fait déjà un "gzip -d" puis un "tar xfz".

La même chose en deux lignes :

$ tar cf - unix | gzip -c > ~/transfert/unix.tar.gz

et

$  gzip -dc ~/transfert/unix.tar.gz | tar xvf -

Echo : Pour empêcher le retour à la ligne aprés un echo, il faut ajouter l'option -n

Read : Permet une lecture au clavier et l'affectation de la saisie à une variable. Pour faire propre il est bon d'ajouter un libellé avec l'option -p

$ read -p "Prénom : " prenom

On pourrait faire :

$  echo -n "Prenom"; read prenom

mais c'est moins propre.

SET

Cette commande permet d'affecter des valeurs à des variables. Si on ne nomme pas de variable, set crée automatiquement les vairables $, $2, etc...

Avec la comamnde date cela peut donner :

$ set $(date)

puis

$ echo $1
mercredi

La commande fonctionne avec le contenu de la variable globale IFS, normalement à espace. Si on modifie le contenu de cette variable, on modifie le résultat de la commande set. Exemple :

export IFS=:
set $(date)
echo $1
mercredi 5 mars 2014, 11

Cela ouvre un paquet de perspectives.

Date : Normalement la commande date vous renvoie la date du jour au format français :

$ date
mercredi 5 mars 2014, 11:58:24 (UTC+0100)

 

Mais vous pouvez avoir besoin d'une date au format anglais. Il suffit de saisir :

$ LC_ALL=C date

Wed Mar  5 11:59:18 CET 2014

Et cela marche avec toutes les commandes :

$ LC_ALL=C ls -l
drwxrwxr-x  5 jfd jfd     4096 Mar  4 15:41 temp
drwx------   16 jfd jfd     4096 Feb  7 10:04 workspace

LS

Pour ne lister que les fichiers dont le noms débutent par une majuscule :

$ ls [[:upper:]]* -d

Les autres classes de caractères sont :

  • [:lower:] (minuscules)
  • [:digit:] (chiffres, 0 à 9)
  • [:alnum:] (caractères alphanumériques).

 

HELP : Permet d'afficher la liste des commandes internes du bash:

GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Ces commandes de shell sont définies de manière interne. Saisissez « help » pour voir cette liste.
Tapez « help nom » pour en savoir plus sur la fonction qui s'appelle « nom ».
Utilisez « info bash » pour en savoir plus sur le shell en général.
Utilisez « man -k » ou « info » pour en savoir plus sur les commandes qui
ne font pas partie de cette liste.

Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.

 job_spec [&]                                                          history [-c] [-d décalage] [n] ou history -anrw [nomfichier] ou hi>
 (( expression ))                                                      if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ].>
 . nom_fichier [arguments]                                             jobs [-lnprs] [jobspec ...] ou jobs -x commande [args]
 :                                                                     kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ou kill>
 [ arg... ]                                                            let arg [arg ...]
 [[ expression ]]                                                      local [option] nom[=valeur] ...
 alias [-p] [nom[=valeur] ... ]                                        logout [n]
 bg [job_spec ...]                                                     mapfile [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C call>
 bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r >  popd [-n] [+N | -N]
 break [n]                                                             printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]                                     pushd [-n] [+N | -N | rép]
 caller [expr]                                                         pwd [-LP]
 case MOT in [MOTIF [| MOTIF]...) COMMANDES ;;]... esac                read [-ers] [-a tableau] [-d delim] [-i texte] [-n nchars] [-N nch>
 cd [-L|[-P [-e]] [-@]] [dir]                                          readarray [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C ca>
 command [-pVv] commande [arg ...]                                     readonly [-aAf] [nom[=valeur] ...] ou readonly -p
 compgen [-abcdefgjksuv] [-o option]  [-A action] [-G motif_glob] [->  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G mo>  select NOM [in MOTS ... ;] do COMMANDES; done
 compopt [-o|+o option] [-DE] [nom ...]                                set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [arg ...]
 continue [n]                                                          shift [n]
 coproc [NOM] commande [redirections]                                  shopt [-pqsu] [-o] [nom_opt ...]
 declare [-aAfFgilnrtux] [-p] [name[=value] ...]                       source nom_fichier [arguments]
 dirs [-clpv] [+N] [-N]                                                suspend [-f]
 disown [-h] [-ar] [jobspec ...]                                       test [expr]
 echo [-neE] [arg ...]                                                 time [-p] pipeline
 enable [-a] [-dnps] [-f nomfichier] [nom ...]                         times
 eval [arg ...]                                                        trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a nom] [commande [arguments ...]] [redirection ...]      true
 exit [n]                                                              type [-afptP] nom [nom ...]
 export [-fn] [nom[=valeur] ...] ou export -p                          typeset [-aAfFgilrtux] [-p] nom[=valeur] ...
 false                                                                 ulimit [-SHabcdefilmnpqrstuvxT] [limit]
 fc [-e ename] [-lnr] [premier] [dernier] ou fc -s [ancien=nouveau] >  umask [-p] [-S] [mode]
 fg [job_spec]                                                         unalias [-a] nom [nom ...]
 for NOM [in MOTS ... ] ; do COMMANDES; done                           unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDES; done                        until COMMANDES; do COMMANDES; done
 function nom { COMMANDES ; } ou nom () { COMMANDES ; }                variables - Nom et signification de certaines variables du shell
 getopts chaineopts nom [arg]                                          wait [-n] [id ...]
 hash [-lr] [-p nomchemin] [-dt] [nom ...]                             while COMMANDES; do COMMANDES; done
 help [-dms] [motif ...] { COMMANDES ; }

 

Groups: Cette comamnde permet de lister les principaux groupes

la commande seule donne  :

$ jfd adm cdrom sudo dip plugdev lpadmin netdev sambashare libvirtd

Connaître les groupes auxquels un utilisateur appartient :

$ groups jfd

qui donne :

$ jfd : jfd adm cdrom sudo dip plugdev lpadmin netdev sambashare libvirtd

Time : Cette comamnde permet de savoir combien de temps à pris une commande pour s'exécuter en distinguant le temps utilisateur, le temps système et le temps total. Exemple sur une suppression de fichiers :

On liste les fichiers

$ ls .Xauthority.*
.Xauthority.2PMX2W  .Xauthority.6YZZ2W  .Xauthority.81TM3W  .Xauthority.HVVH2W  .Xauthority.LNTLZW  .Xauthority.PWPCZW  .Xauthority.RTYUZW  .Xauthority.XG8P1W
.Xauthority.5AYJ2W  .Xauthority.71942W  .Xauthority.8XSZZW  .Xauthority.JOUC3W  .Xauthority.OXU3ZW  .Xauthority.QUT31W  .Xauthority.RX9I2W
.Xauthority.5C7C3W  .Xauthority.7RFFZW  .Xauthority.GJ4M2W  .Xauthority.K2HJ2W  .Xauthority.P7R72W  .Xauthority.R1DZ1W  .Xauthority.U32N2W

Et on les supprime :

jfd@m0440588:~$ time rm -f .Xauthority.*

real    0m0.006s
user    0m0.000s
sys     0m0.004s

Si on veut enregistrer le résultat dans un fichier on utilise l'option -o nom_du_ficheir.txt. Si on veut ajouter les informations à un fichier existant on ajoute l'option "-a".

Gpasswd :  Ajouter un utilisateur à un groupe :

$ gpasswd -a {username} vboxusers

Su : Connaître la taille d'un répertoire

$ du -sh /home/jfd/Documents (s pour summerize et h pour human)

donne

162M    /home/jfd/Documents/

Nombre de coeurs du processeur :

$ nproc

ou

$ lscpu

qui donne :

Architecture:          x86_64
Mode(s) opératoire(s) des processeurs :32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) par cœur : 1
Cœur(s) par socket : 2
Socket(s):             1
Nœud(s) NUMA :       1
Identifiant constructeur :GenuineIntel
Famille de processeur :6
Modèle :             60
Model name:            Intel(R) Pentium(R) CPU G3250 @ 3.20GHz
Révision :           3
Vitesse du processeur en MHz :869.625
CPU max MHz:           3200,0000
CPU min MHz:           800,0000
BogoMIPS:              6385.91
Virtualisation :      VT-x
Cache L1d :           32K
Cache L1i :           32K
Cache L2 :            256K
Cache L3 :            3072K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer xsave rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust erms invpcid xsaveopt dtherm arat pln pts

ou

$ grep 'model name' /proc/cpuinfo | wc -l

ou

cat /proc/cpuinfo | grep processor | wc -l

qui vous donne le bon décompte.

Set -x:

Si vous voulez savoir ce que fait votre shell quand vous lui passez une commande essayez cette commande :

$ set -x

Sur le coup rien ne se passe. Mais ensuite le shell vous indiquera tout ce qu'il fait. Exemple : Vous saisissez la commande 'ls' et désormais le shell vous affiche ceci :

+ ls --color=auto
2017_06_Juin                         digikam4.db          hdr.jpg           IMG_7739.JPG     recognition.db         titre1.png  Tuto
2489.jpg                             fleche.png           IMG_0060.CR2      IMG_7739S.JPG    romain.kra             titre2.png  Wallpapers

La première ligne est la commande qui a été passée.

Si vous tabulez pour provoquer la complétion, vous allez voir s'afficher un paquet de lignes. A essayer de toute urgence.

EFI: Pour savoir si vous avez bootez en EFI ou en Legacy saisissez la commande suivante :

$ [ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"

Fait le 08/01/2014