Trucs de geek : la commande cat
La comande cat vous permet d'afficher le contenu d'un fichier texte. L'affichage se fait à la console et il n'est pas question d'édition du fichier mais simplement de visualisation.
On a tous fait des trucs comme :
$ cat /etc/passwd
pour voir la liste des utilisateurs d'une machine.
Mais "cat" offre bien d'autres fonctionnalités.
Soit notre fichier test du jour (conv.sh) :
#!/bin/sh
#pour convertir le nom du fichier de iso-8859-1 à utf8
for filename in *do newfilename=`echo $filename | iconv -f iso-8859-1 -t utf-8`;
mv "$filename" "$newfilename";
done
Il est possible d'afficher plusieurs fichiers par la même commande :
$ cat ficheir1.sh fichier2.sh
Vous pouvez créer des fichiers à partir de votre saisie :
# cat > fichier1.sh
#!/bin/sh
ls -l
^C
jfd@jfd-GA-MA770T-UD3P:~$ cat fichier1.sh
#!/bin/sh
ls -l
La commande "^C" correspond à l'appui sur la touche Controle (Ctrl) puis sur la touche "C" et stoppe la saisie.
On voit ici apparaitre une notion qui est développée dans un autre article : les redirections. Le principe est simple. Le résultat d'une commande est envoyé à une autre commande ou dans un fichier.
On peut réaliser la même chose soit dans un script soit à la console avec la tournure suivante :
# cat << EOF > fichier1.sh
> test
> test 1
> test 2
> EOF
ou dans un fichier script :
# cat test.sh
#!/bin/sh
cat << EOF > fichier1.sh
test
test 1
test 2
EOF
Le contenu de votre saisie ou des lignes dans votre script est donc ajouté au fichier fichier1.sh. On a donc un script qui peut générer un autre script ou un programme en C par exemple.
Pour ajouter des lignes à un fichier existant il suffit de saisir un double chevron à la place du simple.Cat permet de copier un fichier
$ cat fichier1.sh >> fichier2.sh
Elle permet de concaténer des fichier :
$ cat fichier1.sh fichier2.sh > fichier3.sh
Avec cette même instruction on peut aussi copier un fichier vers un autre :
$ cat fichier1.sh > /tmp/fichier1.sh
On peut afficher les numéros de lignes. Ce qui donnerait sur notre fichier de test avec la commande :
# cat -n conv.sh
1 #!/bin/sh
2 #pour convertir le nom du fichier de iso-8859-1 à utf8
3
4 for filename in *
5 do
6 newfilename=`echo $filename | iconv -f iso-8859-1 -t utf-8`;
7 mv "$filename" "$newfilename";
8 done
Pour éviter que les lignes vides soient numérotées :
# cat -b conv.sh
1 #!/bin/sh
2 #pour convertir le nom du fichier de iso-8859-1 à utf8
3 for filename in *
4 do
5 newfilename=`echo $filename | iconv -f iso-8859-1 -t utf-8`;
6 mv "$filename" "$newfilename";
7 done
Dernière option : N'afficher qu'une seule ligne vide lorsque le fichier présente plusieurs lignes vides consécutives :
$ cat -s fichier1.sh
Pour afficher un fichier en débutant par la fin, c'est "tac" :
# cat conv.sh
#!/bin/sh
#pour convertir le nom du fichier de iso-8859-1 à utf8
for filename in *
do
newfilename=`echo $filename | iconv -f iso-8859-1 -t utf-8`;
mv "$filename" "$newfilename";
done
Si vous souhaitez afficher l'ensemble des caractères présents dans le fichier, faites le avec l'option "-v".
# cat -v file.tx
Fait le 21/04/2013
- Identifiez-vous pour poster des commentaires
Commentaires récents