GNU/Linux >> Linux Esercitazione >  >> Linux

Esiste un file eseguibile fittizio standard che non fa nulla in Linux?

Ci sono le utilità standard true e false . Il primo non fa altro che restituire un exit status 0 per esecuzione riuscita, il secondo non fa altro che restituire un valore diverso da zero che indica un esito non riuscito. Probabilmente vorrai il primo.

Anche se alcuni sistemi che vogliono davvero che tu inserisca del testo (messaggi di commit, ecc.) verificheranno se il file "modificato" è stato effettivamente modificato e stanno semplicemente eseguendo true non volerei in quel caso. Invece, touch potrebbe funzionare; aggiorna i timestamp di tutti i file che riceve come argomenti.

Tuttavia, se l'editor riceve argomenti diversi dal nome file touch li creerebbe come file. Molti editor supportano argomenti come +NNN per indicare alla riga iniziale in cui inserire il cursore, e quindi l'editor può essere chiamato come $EDITOR +123 filename.txt . (Es. less fa questo, git non sembra.)

Nota che vorrai usare true , non ad es. /bin/true . Innanzitutto, se è coinvolta una shell, specificando il comando senza un percorso consentirà alla shell di utilizzare un'implementazione incorporata e, se non viene utilizzata una shell, il file binario verrà trovato in PATH comunque. Secondo, non tutti i sistemi hanno /bin/true; per esempio. su macOS, è /usr/bin/true . (Grazie @jpaugh.)

(* o come dice la pagina man di GNU, false "[non fa] nulla, senza successo". Grazie @8bittree.)


Nella shell, puoi usare l'integrato : . Non è un file eseguibile, ma in uno script di shell o qualsiasi cosa eseguita da uno script di shell funzionerà:

$ help :
:: :
    Null command.
     
    No effect; the command does nothing.
     
    Exit Status:
    Always succeeds.

Questo è forse meglio conosciuto per l'uso in un'istruzione while (while :; do break; done ), ma non si limita a tale uso. Nel caso in cui tu abbia bisogno di farlo molte volte, è molto più veloce non avviare un processo separato:

$ 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

Il suggerimento di @ilkkachu di utilizzare il true command è probabilmente la risposta migliore, ma potresti anche usare il comando

sleep 0

Linux
  1. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  2. Linux:sincronizzazione dei file in tempo reale?

  3. Trova il file quindi cd in quella directory in Linux

  4. File di ordinamento della shell Linux in base alla seconda colonna?

  5. Utilizzo di rz e sz sotto la shell Linux

Comando file Linux:cosa fa e come usarlo

Come rendere eseguibile un file in Linux

Come rendere eseguibile un file nel terminale Linux?

Esiste una shell che verifica che il codice sia firmato?

L'eseguibile Linux non riesce con File non trovato anche se il file è presente e in PATH

Creazione di modelli con Linux in uno script Shell?