GNU/Linux >> Tutoriales Linux >  >> Linux

¿Existe un archivo ejecutable ficticio estándar que no hace nada en Linux?

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

Linux
  1. Linux:¿cómo se inspecciona la información de la estructura del directorio de un archivo Unix/linux?

  2. ¿La utilidad del comando :en las secuencias de comandos de Shell, dado que explícitamente no hace nada?

  3. ¿Existen códigos de estado de salida estándar en Linux?

  4. ¿Archivo de ordenación de shell de Linux de acuerdo con la segunda columna?

  5. ¿Existe un registro que registre los apagados en Linux?

Comando de archivo de Linux:qué hace y cómo usarlo

Cómo hacer un archivo ejecutable en Linux

Linux – ¿Sincronización de archivos en tiempo real?

¿Cómo hacer un archivo ejecutable en la terminal de Linux?

El ejecutable de Linux falla con Archivo no encontrado a pesar de que el archivo está allí y en PATH

¿Plantillas con Linux en un script de Shell?