Tags: shell

Sort by: Date / Title /

  1. 1 week ago by matt
    -e filename
        True if filename exists.
    -d filename
        True if filename exists and is a directory.
    -f filename
        True if filename exists and is a plain file.
    -h filename
        True if filename exists and is a symbolic link.
    -r filename
        True if filename exists and is readable.
    -w filename
        True if filename exists and is writable.
    -n string
        True if the length of string is non-zero.
    -z string
        True if the length of string is zero.
    string
        True if string is not the empty string.
    s1 = s2
        True if the strings s1 and s2 are identical.
    s1 != s2
        True if the strings s1 and s2 are not identical.
    n1 -eq n2
        True if the numbers n1 and n2 are equal.
    n1 -ne n2
        True if the numbers n1 and n2 are not equal.
    n1 -gt n2
        True if the number n1 is greater than n2.
    n1 -ge n2
        True if the number n1 is greater than or equal to n2.
    n1 -lt n2
        True if the number n1 is less than n2.
    n1 -le n2
        True if the number n1 is less than or equal to n2.
    ! expression
        Negates expression, that is, returns true iff expression is false.
    expr1 -a expr2
        True if both expressions, expr1 and expr2 are true.
    expr1 -o expr2
        True if either expression, expr1 or expr2 is true.
    ( expression )
        True if expression is true. This allows one to nest expressions.
  2. 2 weeks ago by spirit
    1. trap "/usr/bin/mycmd; exit 255" SIGINT SIGTERM
  3. 1 month 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 " "
  4. 3 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
  5. 3 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 ../
  6. 3 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
  7. 4 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
  8. sponsorised links
  9. 4 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 !&
  10. 4 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]
  11. 4 months ago by cyo and saved by 1 other
    Il suffit de créer une page PHP et y placer un phpinfo() ou si vous avez accès au serveur en ligne de commande (Putty, WinSCP, ...), vous pouvez tapez cette commande. Dans l'exemple, nous souhaitons savoir si l'extension openssl est présente et nous recherchons donc la chaîne 'SSL'. On indique l'option -i pour ne pas tenir compte de la casse.
    1. php -i | grep -i 'SSL'

First / Previous / Next / Last / Page 1 of 5 (48 posteets)