Tags: bash,shell

Sort by: Date / Title /

  1. 1 week ago by yoko
    Voici 2 fonctions bien utiles dans votre shell. Elles fonctionnent dans sh, bash et zsh pour tcsh je ne crois pas. Elles s'utilisent comme des alias. apt-search : permet une recherche simple dans votre base de données APT prs : permet de retrouver le pid d'un processus à partir de son nom
    function apt-search (){
      apt-cache search "$@" | grep -v '^lib' | sort;
    }
    
    function prs (){
      ps faux | grep -v 'grep' | grep "$@" | sed -e 's/^\([^ ]*\) *\([0-9]*\) .*:[0-9][0-9] \(.*\)$/\1 \2 \3/g'
    }
  2. 2 weeks ago by cyo
    1. service httpd reload
  3. 2 months ago by spirit
    1. trap "/usr/bin/mycmd; exit 255" SIGINT SIGTERM
  4. 3 months ago by benoitbalon
    Ce petit script permet d'émuler une barre de progression et le pourcentage associé. La barre s'adapte automatiquement à la largeur du terminal. Pour l'exemple, le script boucle sur le nombre d'arguments qui lui sont passés en entrée. Le script fonctionne avec GNU-Linux et Solaris (cf. commande stty), pour d'autres OS il faudra les ajouter dans le script.
    1. #!/bin/sh
    2.  
    3. # ex :
    4. # ~$ test.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    5. # [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 100.00%
    6.  
    7. barre_progression ()
    8. {
    9.         nb_iterations=$1
    10.         liste_length=$2
    11.         pourcent=`echo "scale=2;($nb_iterations * 100) / $liste_length" | bc`
    12.         pourcent=`printf "% 3.2f" "$pourcent"`
    13.        
    14.         chaine="$pourcent"
    15.         nb_etoiles=`echo "scale=0;$chaine / $diviseur_barre" | bc`
    16.         etoiles=""
    17.         while test $nb_etoiles -gt 0
    18.         do
    19.                 etoiles="${caractere_barre}${etoiles}"
    20.                 nb_etoiles=`echo "$nb_etoiles - 1" | bc`
    21.         done
    22.         etoiles=`printf "[%-${largeur_barre}s]" "$etoiles"`
    23.         pourcentage=`printf "%7s" "$chaine"`
    24.         #echo "\r${etoiles}${pourcentage}%\r\c"
    25.         printf "%b%b%b" "\r${etoiles}" "${pourcentage}" "%\r\c"
    26. }
    27.  
    28. # INITIALISATION DE LA BARRE DE PROGRESSION
    29. init_progress_bar ()
    30. {
    31.         # caractere qui sera affiche dans la barre de progression
    32.         caractere_barre="|"
    33.        
    34.         # detection de l'OS
    35.         os=`uname -s | tr [a-z] [A-Z]`
    36.        
    37.         # recuperation de la largeur en caracteres du terminal
    38.         if test "$os" = "LINUX"
    39.         then
    40.                 largeur_ecran=`stty -a | grep columns | cut -d ' ' -f7 | tr -d ';'`
    41.         elif test "$os" = "SUNOS"
    42.         then
    43.                 largeur_ecran=`stty | grep columns | cut -d ' ' -f6 | tr -d ';'`
    44.         else
    45.                 echo "Systeme d'exploitation incompatible, programme stoppe"
    46.                 exit 1
    47.         fi
    48.        
    49.         # calcul de la largeur optimale de la barre de progression
    50.         largeur_barre=`echo "$largeur_ecran - 7 - 2 - 1" | bc`
    51.         diviseur_barre=`echo "scale=2;100 / $largeur_barre" | bc`
    52.        
    53.         # protection des variables
    54.         readonly largeur_ecran largeur_barre diviseur_barre caractere_barre
    55. }
    56.  
    57. # gestion de la langue de l'environnement
    58. LC_NUMERIC=C
    59.  
    60. init_progress_bar
    61.  
    62. liste_length=$#
    63. nb_iterations=0
    64. if test $liste_length -gt 0
    65. then
    66.         for i in $@
    67.         do
    68.                 nb_iterations=`echo "$nb_iterations + 1" | bc`
    69.                 barre_progression "$nb_iterations" "$liste_length"
    70.                 # sleep 1
    71.         done
    72. fi
    73.  
    74. echo " "
  5. 4 months ago by benoitbalon
    Je sais, c'est moche, mais c'est en attendant de trouver mieux...
    1. for i in `ls -1`; do cd $i; rename 's/ +/_/g' *; cd ..; done
    2. for i in `ls -1`; do cd $i; rename "s/'/-/g" *; cd ..; done
    3. for i in `ls -1`; do cd $i; rename "s/[?!%]//g" *; cd ..; done
    4. for i in `ls -1`; do cd $i; rename "s/[?]//g" *; cd ..; done
    5. for i in `ls -1`; do cd $i; rename 's/[!%?]//g' *; cd ..; done
    6. for i in `ls -1`; do cd $i; rename 's/[àâ]/a/g' *; cd ..; done
    7. for i in `ls -1`; do cd $i; rename 's/[éèêë]/e/g' *; cd ..; done
    8. for i in `ls -1`; do cd $i; rename 's/[oöô]/o/g' *; cd ..; done
    9. for i in `ls -1`; do cd $i; rename 's/[ûù]/u/g' *; cd ..; done
    10. for i in `ls -1`; do cd $i; rename 's/[ä]/a/g' *; cd ..; done
    11. for i in `ls -1`; do cd $i; rename 's/[ü]/u/g' *; cd ..; done
    12. for i in `ls -1`; do cd $i; rename 's/[,]/-/g' *; cd ..; done
    13. for i in `ls -1`; do cd $i; rename 's/[(){}]/-/g' *; cd ..; done
    14. for i in `ls -1`; do cd $i; rename 's/traeve/treve/g' *; cd ..; done
  6. 5 months ago by cyo
    1. Crée un fichier 'sql.tar.gz' à partir de logs d’erreur 'sql-2008-03*' :
    2. tar cvfz sql.tar.gz sql-2008-03*
    3.  
    4. puis déplace le fichier dans le répertoire supérieur :
    5. mv sql.tar.gz ../
  7. 5 months ago by jon207 and saved by 1 other
    1. #Pour changer les permissions récursivement sur les dossiers sans toucher aux autres fichiers :
    2.  
    3. chmod u-w $(ls -l -R | sed -n '/^d/p' | awk '{print $9 }')
    4.  
    5. #va enlever le droit d'écriture à tous les dossiers sans toucher aux autres fichiers
    6. #utile par exemple pour appliquer le droit d'exécution seulement aux dossiers pour pouvoir les parcourir sans pour autant rendre les autres fichiers exécutables
  8. sponsorised links
  9. 6 months ago by benoitbalon
    Parfois, on peut avoir besoin de retrouver la date à partir de son quantième, c'est à dire à partir de son numéro de jour dans l'année. Ce script permet de retourner la date comprise entre aujourd'hui et il y a un an si l'année n'est pas précisée, ou bien de retourner la date dans l'année qui a été précisée.
    1. #!/bin/sh
    2.  
    3. usage="Usage : $0 -q `date +'%j'` [-y `date +'%Y'`]"
    4.  
    5. # gestion de la ligne de commande
    6. if test "$#" -eq 2
    7. then
    8.         if test "$1" != "-q"
    9.         then
    10.                 echo $usage
    11.                 exit 1
    12.         fi
    13. elif test "$#" -eq 4
    14. then
    15.         if test "$1" != "-q"
    16.         then
    17.                 echo $usage
    18.                 exit 1
    19.         fi
    20.         if test "$3" != "-y"
    21.         then
    22.                 echo $usage
    23.                 exit 1
    24.         fi
    25. else
    26.         echo $usage
    27.         exit 1
    28. fi
    29.  
    30. qte=$2
    31.  
    32. if test "$4" != ""
    33. then
    34.         annee_act=$4
    35.         val_y=`expr $annee_act + 1 2>> /dev/null`
    36.         if test "$?" != "0"
    37.         then
    38.                 echo $usage
    39.                 exit 1
    40.         fi
    41. fi
    42.  
    43. # verification des nombres
    44. val_q=`expr $qte + 1 2>> /dev/null`
    45. if test "$?" != "0"
    46. then
    47.         echo $usage
    48.         exit 1
    49. fi
    50.  
    51. # depassements de valeurs
    52. if test "$qte" -gt 366
    53. then
    54.         echo $usage
    55.         exit 1
    56. fi
    57.  
    58. if test "$qte" -lt 1
    59. then
    60.         echo $usage
    61.         exit 1
    62. fi
    63.  
    64. # comparaison avec le quantieme actuel
    65. if test "$4" = ""
    66. then
    67.         qte_act=`date +'%j'`
    68.         annee_act=`date +'%Y'`
    69.  
    70.         if test "$qte_act" -gt "$qte"
    71.         then
    72.                 continue
    73.         elif test "$qte_act" -lt "$qte"
    74.         then
    75.                 # la date recherchee est dans l'annee passee
    76.                 annee_act=`expr $annee_act - 1`
    77.         else
    78.                 # la date recherchee est celle d'aujourd'hui
    79.                 echo `date +'%Y-%m-%d'`
    80.                 exit 0
    81.         fi
    82. fi
    83.  
    84.  
    85. bis=`expr $annee_act % 4`
    86. if test "$bis" -gt 0
    87. then
    88.         fin_janvier=31
    89.         fin_fevrier=`expr 31 + 28`
    90.         fin_mars=`expr 31 + 28 + 31`
    91.         fin_avril=`expr 31 + 28 + 31 + 30`
    92.         fin_mai=`expr 31 + 28 + 31 + 30 + 31`
    93.         fin_juin=`expr 31 + 28 + 31 + 30 + 31 + 30`
    94.         fin_juillet=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31`
    95.         fin_aout=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31`
    96.         fin_septembre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30`
    97.         fin_octobre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31`
    98.         fin_novembre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30`
    99.         #fin_decembre=`expr 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31`
    100. else
    101.         fin_janvier=31
    102.         fin_fevrier=`expr 31 + 29`
    103.         fin_mars=`expr 31 + 29 + 31`
    104.         fin_avril=`expr 31 + 29 + 31 + 30`
    105.         fin_mai=`expr 31 + 29 + 31 + 30 + 31`
    106.         fin_juin=`expr 31 + 29 + 31 + 30 + 31 + 30`
    107.         fin_juillet=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31`
    108.         fin_aout=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31`
    109.         fin_septembre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30`
    110.         fin_octobre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31`
    111.         fin_novembre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30`
    112.         #fin_decembre=`expr 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31`
    113. fi
    114.  
    115. # annee non bissextile
    116. if test "$qte" -eq 366 && test "$bis" -gt 0
    117. then
    118.         exit 1
    119. fi
    120.  
    121. # detection de l'annee bissextile
    122. if test "$qte" -le "$fin_janvier"
    123. then
    124.         mois="01"
    125.         jour=`expr $qte + 0`
    126. elif test "$qte" -le "$fin_fevrier"
    127. then
    128.         mois="02"
    129.         jour=`expr $qte - 31`
    130. elif test "$qte" -le "$fin_mars"
    131. then
    132.         mois="03"
    133.         if test "$bis" -gt 0
    134.         then
    135.                 jour="`expr $qte - 31 - 28`"
    136.         else
    137.                 jour="`expr $qte - 31 - 29`"
    138.         fi
    139. elif test "$qte" -le "$fin_avril"
    140. then
    141.         mois="04"
    142.         if test "$bis" -gt 0
    143.         then
    144.                 jour="`expr $qte - 31 - 28 - 31`"
    145.         else
    146.                 jour="`expr $qte - 31 - 29 - 31`"
    147.         fi
    148. elif test "$qte" -le "$fin_mai"
    149. then
    150.         mois="05"
    151.         if test "$bis" -gt 0
    152.         then
    153.                 jour="`expr $qte - 31 - 28 - 31 - 30`"
    154.         else
    155.                 jour="`expr $qte - 31 - 29 - 31 - 30`"
    156.         fi
    157. elif test "$qte" -le "$fin_juin"
    158. then
    159.         mois="06"
    160.         if test "$bis" -gt 0
    161.         then
    162.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31`"
    163.         else
    164.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31`"
    165.         fi
    166. elif test "$qte" -le "$fin_juillet"
    167. then
    168.         mois="07"
    169.         if test "$bis" -gt 0
    170.         then
    171.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30`"
    172.         else
    173.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30`"
    174.         fi
    175. elif test "$qte" -le "$fin_aout"
    176. then
    177.         mois="08"
    178.         if test "$bis" -gt 0
    179.         then
    180.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31`"
    181.         else
    182.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31`"
    183.         fi
    184. elif test "$qte" -le "$fin_septembre"
    185. then
    186.         mois="09"
    187.         if test "$bis" -gt 0
    188.         then
    189.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31`"
    190.         else
    191.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31`"
    192.         fi
    193. elif test "$qte" -le "$fin_octobre"
    194. then
    195.         mois="10"
    196.         if test "$bis" -gt 0
    197.         then
    198.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31 - 30`"
    199.         else
    200.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31 - 30`"
    201.         fi
    202. elif test "$qte" -le "$fin_novembre"
    203. then
    204.         mois="11"
    205.         if test "$bis" -gt 0
    206.         then
    207.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31`"
    208.         else
    209.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31`"
    210.         fi
    211. else
    212.         mois="12"
    213.         if test "$bis" -gt 0
    214.         then
    215.                 jour="`expr $qte - 31 - 28 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31 - 30`"
    216.         else
    217.                 jour="`expr $qte - 31 - 29 - 31 - 30 - 31 - 30 - 31 - 31 - 30 - 31 - 30`"
    218.         fi
    219. fi
    220.  
    221. # affichage de la date trouvee
    222. if test "$jour" -lt 10
    223. then
    224.         echo "${annee_act}-${mois}-0${jour}"
    225. else
    226.         echo "${annee_act}-${mois}-${jour}"
    227. fi
  10. 6 months ago by cyo
    Sous WinSCP, cette commande permet de changer les droits et le propriétaire d'un ou plusieurs fichiers et/ou répertoires : Dans le cas ci-dessus on change pour l'utilisateur 'utilisateur' et le groupe 'ftp'; puis on change les droits avec la valeur 664. Il faut bien entendu avoir les droits suffisants pour que cela fonctionne.
    1. chown utilisateur:ftp !&; chmod 0664 !&
  11. 6 months ago by henri and saved by 4 others
    Une option toute bête pour grep qui permet d'afficher en couleur l'expression recherchée dans le résultat. Ca ne casse pas trois pattes à un canard mais c'est sympa. Cela permet aussi de voir sur quelle partie du résultat, le match de l'expression s'est faite. C'est bien pour progresser et comprendre les regexp.
    1. grep --color EXPRESSION [FICHIER]

First / Previous / Next / Last / Page 1 of 4 (34 posteets)