Bash

De bricosoft
(Redirigé depuis .profile)
Aller à la navigation Aller à la recherche
Erreur dans le widget Twitter Search: unable to write file /home/gbp4dt5/zones/bricosoft.com/www/extensions/Widgets/compiled_templates/wrt696ae502c36e94_19659156

Une bonne Bash ça peut toujours servir pour couvrir quelque chose.

Unix bashing time!

Les raccourcis clavier

C'est un raccourcis facile mais les raccourcis peuvent faire gagner du temps.

ctrl-d			quitter la session (== "exit" ou "logout")
ctrl-l			effacer tout ce qui est affiché (== "clear")
ctrl-a			aller en début de ligne
ctrl-e			aller en fin de la ligne
alt-c			effacer le mot précédent
alt-f			aller au mot suivant
alt-b			aller au mot précédent
alt-t			intervertir deux mots (devant et derrière le curseur) 
ctrl-r<cmd>		recherche les occurrences de <cmd> dans l'historique
ctrl-u			coupe tout ce qui est avant le curseur
ctrl-v + <tab>		insère une tabulation (sinon ça complète la saisie)
ctrl-w			couper le mot précédent le curseur
ctrl-y			coller ce qui a été coupé
ctrl-s			masquer la saisie (ctrl-q pour rétablir)
esc-.			insère le dernier argument de la commande précédente (fonctionne également avec alt-.)
!!			ré-exécute la dernière commande
!gni			ré-exécute la dernière commande commençant par 'gni'
!gni:p			affiche la dernière commande commençant par 'gni' mais ne l'exécute pas
commande !*		exécute la commande avec tous les paramètres de la dernière commande
commande !$		exécute la commande avec le dernier paramètre de la dernière commande


fichiers de configuration

Il existe plein de fichiers pour y placer les variables d'environnement : L'ordre d'éxécution est :

  1. /etc/profile : utilisez ce fichier pour les variables disponibles pour tout le système(tous les utilisateurs utilisant bash) au login
  2. ~/.profile ou exclusivement : ~/.bash_profile ou ~/.bash_login (~/.profile est exécuté si aucun des ~/.bash_profile et ~/.bash_login ne sont présents) : utilisez ce fichier pour les variables disponibles dans votre session shell : à l'ouverture d'un terminal par exemple
  3. ~/.bashrc : on y place des alias communs ou des modifs pérennes du $PATH
  4. ~/.bash_aliases : vos alias et les modifs temporaires du $PATH
  5. ~/.bash_logout : qu'en fin de session

CLI utiles ou pas

<google uid="C08" position="left"></google>

Afficher les dix derniers fichiers modifiés, sans backups

<source lang="bash"> find . -print | xargs ls --color=none --sort=time -lgoh 2> /dev/null | grep -v "~" | head </source>

~/.bashrc

<source lang="bash">

  1. nettoie les fichiers de backup sous $HOME

nettoie() { find ~ -name "*~" -exec rm {} \; } </source>

~/.bash_logout

Liste des choses à effectuer à la déconnexion, nettoyages, màj page web, etc.

Verif host on line ou pas

<source lang="bash"> if eval "ping -c 1 -w 5 $1 &>/dev/null"; then

   echo "$1 OK :)"

else

   echo "$1 KO :("

fi </source>

ou, verifier si serveur web présent

netcat -zv $1 80

set gid

Utile pour un dossier partagé samba :

chmod 2750 .

Paste

fichier1.txt

1
2
3

fichier2.txt

a
b
c
$ paste fichier1.txt fichier2.txt
1   a
2   b
3   c

antislash backslash pour ignorer l'alias

<google uid="C08" position="right"></google>

Avec des alias qui redefinissent une commande :

$ alias | grep ls=
alias ls='ls --color=auto'
$ ls /var/lock
apache2  logcheck   <--- c'est en bleu sisi!

Il suffit de faire préceder la commande d'un antislash pour ignorer l'option dans l'alias

$ \ls /var/lock
apache2  logcheck   <--- pas de bleu sisi regardez bien

empêcher l'expand du tilde ~ lors de la complétion

Le tilde ~ s'expand en /home/toto dès qu'on utilise la complétion (tab), pour empêcher ça modifiez le fichier :

/etc/bash_completion

Dans la fonction _filedir() :

_filedir()
{ ...

Changez la ligne suivante en la commentant de :

_expand || return 0

en :

#_expand || return 0

au prochain shell cd ~ + TAB ne se transformera pas en cd /home/toto/ :

Mais ça peut provoquer des effets de bords avec des variables shell qui utilisent ~

saisir une très longue commande

Pour saisir une très longue commande l'idéal est de le faire depuis son editeur

<Ctrl-x> <Ctrl-e>

Ou fc, vim sera automagiquement ouvert avec la dernière commande saisie :

$ fc


fonction

Les fonctions de bash permettent de créer des alias avec paramètre.

Dans ~/.bash_aliases :

bindversion() { dig +short @$* CH TXT version.bind; }

Exemple :

$ bindversion a.dns.gandi.net
"Bind :)"

bash et les formats de date

Vous avez le choix dans la date (contrepèterie inside) :

%a                      mer.                                                           les noms abrégés des jours de la semaine (p. ex. lun.)
%A                      mercredi                                                       les noms complets localisés des jours de la semaine (p. ex. lundi)
%b                      janv.                                                          les noms abrégés localisés des mois (p. ex. janv.)
%B                      janvier                                                        les noms complets localisés des mois (p. ex. janvier)
%c                      mer. 30 janv. 2013 10:08:24 CET                                la date et l'heure localisées (p. ex. mar. 28 avril 2009 08:37:32 CEST)
%C                      20                                                             siècle ; comme %Y, sans les 2 derniers chiffres (p. ex. 20)
%d                      30                                                             jour du mois (p. ex. 01)
%D                      01/30/13                                                       date, identique à %m/%d/%y
%e                      30                                                             jour du mois, complété avec une espace, identique à %%d
%F                      2013-01-30                                                     la date complète, identique à %Y-%m-%d
%g                      13                                                             les deux derniers chiffres de l'année du numéro de semaine ISO (voir %G)
%G                      2013                                                           l'année correspondant au numéro de semaine ISO (voir %V) ; normalement       utile seulement avec %V
%h                      janv.                                                          identique à %b
%H                      10                                                             heure (00..23)
%I                      10                                                             heure (01..12)
%j                      030                                                            jour de l'année (001..366)
%k                      10                                                             heure avec espace ( 0..23), identique à %%H
%l                      10                                                             heure avec espace ( 1..12), identique à %%I
%m                      01                                                             mois (01..12)
%M                      08                                                             minute (00..59)
%n
un retour à ligne
%N                      845714561                                                      nanosecondes (000000000..999999999)
%p                      indicateur localisé AM ou PM en majuscules (blanc si inconnu)
%P                      identique à %p mais en minuscules
%r                      10:08:24                                                       heure locale au format 12-heure (p. ex. 11:11:01 PM)
%R                      10:08                                                          heure en format 24-heure identique à %H:%M
%s                      1359536904                                                     secondes depuis 1970-01-01 00:00:00 UTC
%S                      24                                                             secondes (00..60)
%t                      	                                                               une tabulation
%T                      10:08:24                                                       l'heure, identique à %H:%M:%S
%u                      3                                                              le jour de la semaine (1..7) ; 1 représente le lundi
%U                      04                                                             le numéro de la semaine de l'année, avec le dimanche comme premier jour
de la semaine (00..53)
%V                      05                                                             le numéro de la semaine ISO, avec le lundi comme premier jour de la
semaine (01..53)
%w                      3                                                              le jour de la semaine (0..6), avec 0 étant le dimanche
%W                      04                                                             le numéro de la semaine, avec le lundi comme premier jour de la semaine
(00..53)
%x                      30/01/2013                                                     représentation localisée de la date (p. ex. 12/31/99)
%X                      10:08:24                                                       représentation localisée de l'heure (p. ex. 23:13:48)
%y                      13                                                             les deux derniers chiffres de l'année (00..99)
%Y                      2013                                                           l'année
%z                      +0100                                                          fuseau horaire numérique +hhmm  (p. ex. -0400)
%:z                     +01:00                                                         fuseau horaire numérique +hh:mm (p. ex. -04:00)
%::z                    +01:00:00                                                      fuseau horaire numérique +hh:mm:ss (p. ex. -04:00:00)
%:::z                   +01                                                            fuseau horaire numérique selon la précision nécessaire (p. ex. -04, +05:30)
%Z                      CET                                                            abréviation alphabétique des fuseaux horaires (p. ex. EDT)


{{#switch:|subgroup|child=|none=|#default=

}}