Vous êtes ici

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

Utilisateurs en ligne

Il y a actuellement 0 utilisateur connecté.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer