La commande whois sous Linux ne retourne pas toutes les informations attendues (par exemple le Registrant Name). On voit en effet des différences entre un Whois réalisé sur un site internet, et un Whois réalisé dans un terminal. Pour palier à ça, il faut procéder en deux temps :
1) d'abord lancer la commande classique :
whois google.com
2) Ensuite, il faut refaire une demande en spécifiant le whois du registrar. Il est disponible à la ligne Registrar WHOIS Server :
whois google.com -h whois.markmonitor.com
On obtient alors les infos souhaitées.
Pour éviter de faire cette double manipulation à chaque fois, on peut faire un petit script et le mettre dans le PATH :
#!/usr/bin/env bash
domain_search="$1"
# Isole le domaine whois du registrar
regws=`whois "$domain_search" | grep "Registrar WHOIS Server" | sed "s/^.*:[ ]*\(.*\)$/\1/"`
# Affiche le whois complet dans le terminal
whois "$domain_search" -h "$regws"
Je ne suis pas sûr que le débutant dont parle sebsauvage tire un grand bénéfice de l'apprentissage sur ce genre de shell. Il aurait mieux valu, à mon avis, adapter le shell bash classique en modifiant la coloration syntaxique. De plus, la suggestion de commande (à l'aide de la tabulation) existe déjà, ainsi que la recherche inversée (CTRL+R).
La petite phrase qui tue au milieu de l'article:
Cependant, c'est une excellente idée que d'avoir mis la configuration de l'outil dans une interface web je trouve. Je garde l'idée, pour faire ça en bash si l'envie me prend.
Pour récupérer le n-ème argument en bash:
#!/bin/bash
n=3
echo "${!n}"
Résultat:
bash script.sh voiture camion "tati danielle" raclette "pommes de terre" exponentielle logarithme
tati danielle
Et pour récupérer les m premiers arguments à partir du n-ème (compris):
#!/bin/bash
n=4
m=2
echo "${@:$n:$m}
Résultat:
bash script.sh voiture camion "tati danielle" raclette "pommes de terre" exponentielle logarithme
raclette pommes de terre
L'astuce du jour.
J'ai un fichier comportant trois colonnes, et structuré de cette manière:
Nom Prénom DateDeNaissance
Le séparateur de colonnes est une tabulation.
Question: comment construire la regexp correcte dans un terminal, pour décrire ce fichier (dans sed ou grep par exemple)?
En effet, il n'est pas possible de "juste" taper sur la touche tabulation. Rien ne se produit.
Pour intégrer la tabulation il faut:
1) Appuyer sur les touches CTRL + V. Cela informe le terminal que la prochaine touche devra être prise "littéralement".
2) Appuyer sur la touche tabulation. Celle-ci est alors inséree dans la ligne de commande comme n'importe quel autre caractère.
Voilà
PS: Je sais maintenant pourquoi un CTRL+V dans un terminal ne "colle" pas le presse-papier.
Une petite particularité des shell dérivés du shell sh.
Il existe la commande : (deux-points). Et elle ... ne fait rien! Ou plus exactement, elle agit comme un non-opérande.
Quand on la "lance", elle retourne un code d'erreur 0:
$ :
$ $?
$ 0
Alors à quoi ça sert?
Dans les vieilles version des shell, cette commande est utilisée en remplacement de la commande "true" (qui n'existait pas).
Alors on peut voir des choses comme:
if commande; then
:
else
autre-commande
fi
Ou avec un double pipe en fin de commande, pour envoyer un code d'erreur 0:
commande || :
Sympa à savoir si on travail à décortiquer de vieux scripts.
Edit: sur le même sujet https://superuser.com/questions/423980/colon-command-for-bash
Dans un script shell bash, pour une utilisation de yum, faire ainsi:
paquets_a_installer="mercurial zip gcc nano"
sudo yum install -y $paquets_a_installer
Le point important est qu'il NE FAUT PAS entourer la variable $paquets_a_installer avec des guillemets, lors de l'appel à yum. Sinon yum s'écrase au sol comme un gros caca des familles: il considère que les différents paquets contenus dans la variable n'en forment en réalité qu'un seul.