¿Cómo creo un nuevo archivo vacío en un script bash?

Estoy ejecutando un script de Perl de terceros escrito de tal manera que requiere un archivo de salida para la marca de salida, -o.

Desafortunadamente, el script parece requerir un archivo real, es decir, los usuarios deben crear un archivo vacío filename.txt con 0 bytes y luego ingresar esto archivo vacío en la línea de comandos de la secuencia de comandos

perl script1.pl -o filename.txt 

Pregunta: ¿Cómo podría crear un archivo vacío dentro de una secuencia de comandos bash? Si uno simplemente intenta perl script1.pl -o filename.txt, el script da un error de que el archivo no» existe.

Comentarios

Responder

Use touch comm y. touch filename.txt.

Comentarios

  • echo -n >file
  • tenga cuidado, esto no vaciará su archivo si ya existe
  • De hecho, intenté tocar y " echo -n > file " dentro de mi script bash pero obtengo un error cuando ejecuto el script: " No existe tal archivo o directorio " en esa línea. ¿Alguien puede ayudar por favor?
  • echo -n "" > filename vaciará el archivo si existe o crea un archivo si no ' no existen.

Respuesta

Utilice el comando nulo (:) redireccionar (> filename) truco (:>), ya que esto se truncará a cero o creará el archivo con nombre.

$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea 

(Esto fallará si el shell establece una opción NOCLOBBER.)

Comentarios

  • Si no se establece noclobber, use la redirección >| a clobber, por lo que :>| filea – documentado en el manual
  • Solo > filename.txt sería suficiente, sin necesidad de :. O >> filename.txt si no ' no queremos eliminarlo si existe.
  • @ilkkachu aunque la pregunta especifica Bash, el uso de : hace que el script tenga más probabilidades de lograr su tarea con otros shells, por ejemplo Zsh.

Respuesta

También puede usar perl.

$ stat filename.txt stat: cannot stat "filename.txt": No such file or directory $ perl -e "open($fh,">","filename.txt") or die $!;close($fh)" $ stat filename.txt File: "filename.txt" Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 280728 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ xieerqi) Gid: ( 1000/ xieerqi) Access: 2017-02-08 13:51:01.479121995 -0700 Modify: 2017-02-08 13:51:01.479121995 -0700 Change: 2017-02-08 13:51:01.479121995 -0700 Birth: - 

Respuesta

La forma más corta:

>filename 

Comentarios

  • Mejor respuesta. No podría ' ser más corto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *