Están las utilidades estándar true
y false
. El primero no hace nada más que devolver un estado de salida de 0 para una ejecución exitosa, el segundo no hace nada más que devolver un valor distinto de cero que indica un resultado no exitoso. Probablemente quieras el primero.
Aunque algunos sistemas que realmente quieren que ingrese texto (mensajes de confirmación, etc.) verificarán si el archivo "editado" realmente se modificó y solo ejecutó true
no volaría en ese caso. En su lugar, touch
Podría funcionar; actualiza las marcas de tiempo de los archivos que obtiene como argumentos.
Sin embargo, si el editor obtiene otros argumentos además del nombre de archivo touch
los crearía como archivos. Muchos editores admiten un argumento como +NNN
para indicarle a la línea inicial que coloque el cursor, por lo que el editor puede llamarse como $EDITOR +123 filename.txt
. (Por ejemplo, less
hace esto, git
no parece.)
Tenga en cuenta que querrá usar true
, no por ej. /bin/true
. Primero, si hay un shell involucrado, especificar el comando sin una ruta permitirá que el shell use una implementación integrada, y si no se usa un shell, el archivo binario se encontrará en PATH
de todos modos. En segundo lugar, no todos los sistemas tienen /bin/true
; p.ej. en macOS, es /usr/bin/true
. (Gracias @jpaugh.)
(* o como dice la página man de GNU, falso "[hace] nada, sin éxito". Gracias @8bittree.)
En el shell, puede usar el :
incorporado . No es un archivo ejecutable, pero en un script de shell o cualquier cosa ejecutada desde un script de shell funcionará:
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
Esto es quizás más conocido por su uso en una declaración while (while :; do break; done
), pero no se limita a dicho uso. En caso de que necesite hacer esto muchas veces, es mucho más rápido no iniciar un proceso por separado:
$ time for i in $(seq 1000); do :; done
real 0m0,007s
user 0m0,002s
sys 0m0,004s
$ time for i in $(seq 1000); do /bin/true; done
real 0m0,686s
user 0m0,462s
sys 0m0,217s
La sugerencia de @ilkkachu de usar el true
el comando es probablemente la mejor respuesta, pero también podría usar el comando
sleep 0