GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un fichier exécutable factice standard qui ne fait rien sous Linux ?

Il y a les utilitaires standards true et false . Le premier ne fait que renvoyer un état de sortie de 0 pour une exécution réussie, le second ne fait que renvoyer une valeur non nulle indiquant un résultat non réussi. Vous voulez probablement le premier.

Bien que certains systèmes qui veulent vraiment que vous saisissiez du texte (messages de validation, etc.) vérifieront si le fichier "modifié" a été réellement modifié et exécuteront simplement true ne volerait pas dans ce cas. Au lieu de cela, touch pourrait fonctionner; il met à jour les horodatages de tous les fichiers qu'il reçoit en tant qu'arguments.

Cependant, si l'éditeur obtient d'autres arguments que le nom de fichier touch créerait ceux-ci sous forme de fichiers. De nombreux éditeurs prennent en charge un argument comme +NNN pour dire à la ligne initiale de placer le curseur, et ainsi l'éditeur peut être appelé comme $EDITOR +123 filename.txt . (Ex. less fait cela, git ne semble pas.)

Notez que vous voudrez utiliser true , pas par ex. /bin/true . Tout d'abord, si un shell est impliqué, spécifier la commande sans chemin permettra au shell d'utiliser une implémentation intégrée, et si un shell n'est pas utilisé, le fichier binaire se trouvera dans PATH De toute façon. Deuxièmement, tous les systèmes n'ont pas /bin/true; par exemple. sur macOS, c'est /usr/bin/true . (Merci @jpaugh.)

(* ou comme le dit la page de manuel GNU, false "[ne fait] rien, sans succès". Merci @8bittree.)


Dans le shell, vous pouvez utiliser le : intégré . Ce n'est pas un fichier exécutable, mais dans un script shell ou tout ce qui est exécuté à partir d'un script shell, cela fera l'affaire :

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

Ceci est peut-être mieux connu pour être utilisé dans une instruction while (while :; do break; done ), mais n'est pas limité à une telle utilisation. Au cas où vous auriez besoin de le faire plusieurs fois, il est beaucoup plus rapide de ne pas démarrer un processus séparé :

$ 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 suggestion de @ilkkachu d'utiliser le true command est probablement la meilleure réponse, mais vous pouvez également utiliser la commande

sleep 0

Linux
  1. Linux – Synchronisation de fichiers en temps réel ?

  2. Fichier de tri du shell Linux selon la deuxième colonne ?

  3. Utilisation de rz et sz sous linux shell

  4. Existe-t-il une distribution Linux certifiée UNIX ?

  5. Existe-t-il un shell qui vérifie que le code est signé ?

Commande de fichier Linux :que fait-elle et comment l'utiliser

Comment rendre un fichier exécutable sous Linux

Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

L'utilité de la commande :dans les scripts Shell, étant donné qu'elle ne fait rien explicitement ?

Comment rendre un fichier exécutable dans un terminal Linux ?

Que fait % dans les chaînes du shell Linux ?