9
votes

Comment obtenir le nom du programme dans un script de poisson shell?

En bash, comme dans Ruby, le nom du programme est donné de 0 $. Qu'est-ce que c'est dans le poisson? Je peux faire ce qui suit si je dois: xxx

mais je suis sûr que le nom du programme doit être déjà disponible quelque part. Je pourrais également définir le nom du programme en variable sur le talon de chaque programme, mais qui a des problèmes de maintenance.


0 commentaires

3 Réponses :


4
votes

pour poisson Utilisez $ _ pour le nom du programme.


4 commentaires

Merci. Je ne reçois rien avec $ _. Il y a une référence courte à $ _ dans lien . Aussi dans lien . A quelque chose à voir avec le titre de la fenêtre, mais ce n'est pas le nom du programme réel.


Interactivement, c'est le nom de la commande actuelle, par exemple. Pour echo $ _ il "renvoie echo . Dans les fonctions, il est toujours la commande interactive de niveau supérieur que vous avez saisie (par exemple fonction F; g; fin; fonction g; echo $ _; fin; fin , puis vous tapez f , Il imprimera f ). Dans un script non interactif, il semble être vide. En tout cas, pas ce que vous voulez.


Y a-t-il une liste de ces noms de variables spéciaux n'importe où? (Un autre serait $ argv .) Ils sont plutôt difficiles à google pour ...


€ _ a été obsolète dans poisson 3.0.0 en faveur de Status actuel-commande github.com/fish shell/fish shell/blob/master/...



18
votes

Pour obtenir le même résultat que votre commande, c'est le nom de fichier que vous recherchez.

Ces informations ne sont pas stockées dans une variable, mais vous obtenez ceci en interrogeant le statut code>.

basename (status -f)      # The name of the file
status -f                 # The full path of the file


3 commentaires

Cela ne fonctionne pas si le nom du programme est différent du fichier exécuté. Par exemple, si la commande est une fonction définie dans config.fish ou un fichier symbolique.


S'il vous plaît essayez de ne pas définir les fonctions de votre config.fisfish , à la place, sauvegardez vos fichiers sur un emplacement de votre $ poisson_function_path et let Les poissons chargent paresseusement la fonction quand elles sont utilisées pour la première fois.


Status -F me donne le nom du fichier, pas le chemin complet.



4
votes

poisson 3.x xxx

voir Déprécations section de la documentation 3.0

poisson 2.x

Utilisez $ _ pour le nom du programme.

Voir titre programmable section du code 2.0 Documentation.


0 commentaires