Jsou zde standardní nástroje true
a false
. První nedělá nic jiného, než že vrací výstupní stav 0 pro úspěšné provedení, druhý nedělá nic jiného než vrací nenulovou hodnotu označující neúspěšný výsledek. Pravděpodobně budete chtít první.
Ačkoli některé systémy, které opravdu chtějí, abyste zadali nějaký text (potvrzení zpráv atd.), zkontrolují, zda byl „upravený“ soubor skutečně upraven, a pouze spustí true
v tom případě by neletěl. Místo toho touch
Mělo by to fungovat; aktualizuje časová razítka všech souborů, které získá jako argumenty.
Pokud však editor získá jiné argumenty než název souboru touch
vytvoří je jako soubory. Mnoho editorů podporuje argument jako +NNN
říci počátečnímu řádku, aby vložil kurzor, a tak editor může být nazýván jako $EDITOR +123 filename.txt
. (Např. less
dělá toto, git
nezdá se.)
Všimněte si, že budete chtít použít true
, ne např. /bin/true
. Za prvé, pokud je zapojen shell, zadání příkazu bez cesty umožní shellu použít vestavěnou implementaci, a pokud shell není použit, binární soubor bude nalezen v PATH
tak jako tak. Za druhé, ne všechny systémy mají /bin/true
; např. v systému macOS je to /usr/bin/true
. (Díky @jpaugh.)
(* nebo jak to uvádí manuálová stránka GNU, false "[nedělá] nic, neúspěšně". Díky @8bittree.)
V shellu můžete použít vestavěný :
. Není to spustitelný soubor, ale ve skriptu shellu nebo v čemkoli spuštěném ze skriptu shell to udělá:
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
To je možná nejlépe známé pro použití v příkazu while (while :; do break; done
), ale není omezen na takové použití. V případě, že to potřebujete udělat mnohokrát, je mnohem rychlejší nezačínat samostatný proces:
$ 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
@ilkkachu návrh na použití true
příkaz je pravděpodobně nejlepší odpovědí, ale můžete také použít příkaz
sleep 0