Posts tagged: Shell

Bash – Transformer une chaîne de caractères en un entier

By , 15/03/2014

Pour transformer une chaîne de caractères numérique en un entier à l’aide de la ligne de commande unix (bash par exemple), il est possible d’utiliser l’opérateur “+” avec son identité soit le “0″.

Cas pratique, lorsqu’on a un programme qui code une adresse IPv4 avec systématiquement 3 digits pour chaque champ de l’adresse on peut éliminer les 0 non nécessaires en combinant cet astuce et la commande awk :

Dans cet exemple, le séparateur est le “.” et chaque partie de l’adresse IP est transformée en entier pour pouvoir supprimer les 0 en préfixes.

Pour plus d’information sur la commande awk : http://www.shellunix.com/awk.html.

Windows shell : sc

By , 26/10/2011

Avec la ligne de commande du shell Windows, il est possible d’interagir sur les services d’une machine Windows locale ou distante. La commande est sc. La syntaxe à utiliser est la suivante :

sc [\\server] [command] [service_name] [Options]

Voici quelques exemples d’utilisation :

  • Créer un nouveau service : sc \\serveurDistant create NewService binpath=C:\…\monService.exe
  • Supprimer un service : sc \\serveurDistant delete ServiceName
  • Lister les services d’un ordinateur : sc \\serveurDistant query
  • Afficher un service en particulier : sc \\serveurDistant query ServiceName
  • Démarrer un service : sc \\serveurDistant start ServiceName
  • Arrêter un service : sc \\serveurDistant stop ServiceName

Pour un service en local il suffit de supprimer la référence au serveur distant. Pour plus d’information : http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sc.mspx?mfr=true

find -exec

By , 21/02/2011

Je ne sais jamais comment utiliser la commande Unix find pour exécuter une autre commande sur la base des fichiers trouvés. C’est une commande très pratique et puissante. Donc un échec se traduit forcément par une grande frustration.

En lisant l’explication du manuel (man find), je comprends rapidement le principe suivant : lorsqu’un fichier est trouvé, la commande suivant l’option -exec est exécutée. Il faut échapper les caractères spéciaux comme le point virgule de fin de commande pour éviter qu’ils ne soient interprétés par le shell lui même. Enfin, les caractères {} servent à utiliser le fichier trouvé par la commande find. Par exemple, voici comment déplacer tous les fichiers .txt d’un répertoire vers un autre :

Il y a trois fichiers txt et un fichier log dans le répertoire test. Le répertoire test2 est vide :

*@*:/home/*$ ll test
total 0
-rwxrwxrwx 1 root root 0 2011-02-20 23:28 txt1.log
-rwxrwxrwx 1 root root 0 2011-02-20 23:27 txt1.txt
-rwxrwxrwx 1 root root 0 2011-02-20 23:28 txt2.txt
-rwxrwxrwx 1 root root 0 2011-02-20 23:28 txt3.txt
*@*:/home/*$ ll test2/
total 0
*@*:/home/*$ find test/ -name *.txt
test/txt1.txt
test/txt2.txt
test/txt3.txt

Pour déplacer les fichiers txt du répertoire test vers le répertoire test2 on utilise la commande mv :

*@*:/home/*$ find test/ -name *.txt -exec mv {} test2/ ;

On vérifie l’opération :

*@*:/home/*$ ll test
total 0
-rwxrwxrwx 1 root root 0 2011-02-20 23:28 txt1.log
*@*:/home/*$ ll test2/
total 0
-rwxrwxrwx 1 root root 0 2011-02-20 23:27 txt1.txt
-rwxrwxrwx 1 root root 0 2011-02-20 23:28 txt2.txt
-rwxrwxrwx 1 root root 0 2011-02-20 23:28 txt3.txt

OfficeFolders theme by Themocracy