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