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.
touch filename.txt