Comment puis-je créer un fichier vide à partir de la ligne de commande?
Utilisez le touch commande:
The touch utility sets the modification and access times of files to thecurrent time of day. If the file doesn't exist, it is created withdefault permissions.Exemple:
touch newfile
> newfileSera également créer un fichier vide. Si le fichier existe déjà, il sera tronquer (vide). Pour conserver le contenu du fichier, utilisez >> pour l'ajout comme dans:
>> fileMême si le fichier existe, le contenu sera intact.
Modifier: Si vous n'avez pas de contenu à taper, celui-ci est plus rapide:
user@host$ :> newfileuser@host$ :>> new_or_existing_fileNote. : c'est le commandement ici. Cela ne fait pas partie de l'invite.
cat /dev/null > file1.ext de la manière exacte, il y a aussi une autre façon
echo "" > file2.ext La différence est file1.ext sera de zéro octet et file2.ext serait un octet. Vous pouvez vérifier cela en
ls -l file*.*
Utiliser vim éditeur vous pouvez également créer un fichier vide.
vim filenamePuis enregistrez
:wq
Commande
echo -n > filecrée un fichier vide, si votre version de echo prend en charge le commutateur-n.
Ou vous pourriez utiliser printf
printf '' > file
En général, créer n'importe quel régulier1 fichier sur Linux. open(2) ,openat(2), et creat(2) appels système (et plus précisément avec O_CREAT drapeau). Cela signifie que si vous appelez un utilitaire de ligne de commande qui effectue ces appels système, vous pouvez créer un nouveau fichier vide.
Le plus souvent, un nouveau nom de fichier est créé avec quelque chose comme ceci:
touch /tmp/new_file: > /tmp/new_filetrue > /tmp/new_file-
> /tmp/new_file(shell bash uniquement )
toucher est un utilitaire autonome. Son but initial est de mettre à jour l'heure d'accès et de modification d'un fichier, mais si le fichier n'existe pas, il sera créé. Notez également qu'un nom de fichier - est traité spécialement, donc si vous voulez créer un fichier nommé littéralement -, vous devrez l'inclure entre guillemets simples ou doubles.
Par contraste, > est un opérateur de redirection shell pour flux de sortie standard. Le > l'opérateur appelle spécifiquement le openat() appel système avec O_WRONLY|O_CREAT|O_TRUNC drapeau. Cela signifie que si le nom de fichier n'existe pas - il sera créé, et si c'est le cas-les données seront tronquées (et donc disparues, donc > doit être utilisé avec précaution). Dans la plupart des coquilles de nos jours true ou : est un intégré, faisant ainsi : > /tmp/new_file va être plus efficace, bien que marginalement comparé à touch /tmp/new_file.
Mais bien sûr, cela ne s'arrête pas là. Comme mentionné, tout ce qui peut effectuer open(), openat() et, create() les appels système créeront un fichier. Par conséquent, nous pouvons faire:
true|dd of=/tmp/newfiletruncate --size 0 /tmp/new_filename.txtcp /dev/null /tmp/null_filetrue|tee /tmp/some_other_file-
mktempoutempfile(pour créer des fichiers temporaires qui n'ont pas besoin d'exister entre les redémarrages !)
Bien entendu, tous les utilitaires mentionnés ci-dessus ne créent pas exclusivement des fichiers. Mais ils effectuent l'appel système nécessaire et cela nous permet d'adapter les commandes.
Bien sûr, au niveau de la programmation ou des scripts, nous pouvons également vouloir créer un fichier, en particulier pour des raisons d'efficacité (car l'appel de commandes externes telles que touch à partir d'un script Perl ou Python nécessitera des ressources supplémentaires).
Python one-liner:
$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txtNous pouvons le raccourcir avec ceci:
$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt Et en Perl:
$ perl -e 'open(my $fh,">","/tmp/perlfile")'1 D'autres types de fichiers tels que les liens physiques/logiciels,les périphériques spéciaux de caractères ou de blocs, les répertoires,les tuyaux nommés ou les sockets nécessitent des appels système entièrement différents.