GNU/Linux >> Znalost Linux >  >> Linux

Existuje standardní fiktivní spustitelný soubor, který v Linuxu nic nedělá?

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

Linux
  1. Najděte soubor a poté cd do tohoto adresáře v Linuxu

  2. (C/C++) Jak vygenerovat spustitelný soubor, který lze spustit na Windows i Linuxu?

  3. Existuje protokol, který zaznamenává vypnutí v Linuxu?

  1. Proč se Ctrl + V nevloží do Bash (Linux shell)?

  2. Linux Bash Shell – soubor globbing specifický rozsah?

  3. Co dělá % v řetězcích shellu Linux?

  1. Linux – synchronizace souborů v reálném čase?

  2. Existuje distribuce Linuxu s certifikací UNIX?

  3. Existuje shell, který kontroluje, zda je kód podepsán?