2016-09-16 2 views
1

J'ai remarqué que j'ai tendance à fausser ls en tant que ;s, donc j'ai décidé que je devrais juste créer un alias afin qu'au lieu de lancer une erreur, il lance simplement la commande I signifier. Toutefois, sachant que le caractère de point-virgule a une signification dans les scripts/commandes shell, est-il possible de me permettre de créer un alias avec la clé de point-virgule? Je l'ai essayé ce qui suit en vain:Créer un alias de shell avec le caractère en point-virgule

alias ;s=ls 
alias ";s"=ls 
alias \;=ls 

Est-il possible d'utiliser le point-virgule comme un personnage dans un alias de shell? Et comment puis-je le faire en ZSH?

Répondre

0
  • d'abord et avant tout: Tenir compte résoudre votre problème différemment - lutte contre la grammaire shell est ainsi d'avoir des ennuis.

  • Pour autant que je peux dire, alors que vous pouvez définir une telle commande - mais pas avec un alias - la seule façon de appel il est cité, par exemple comme \;s - qui bat l'objectif; Lire la suite pour les détails techniques.

    • Un alias ne fonctionnera pas: alors que zsh vous permet de définir (ce qui, sans doute, il ne devrait pas), le mécanisme même qui serait nécessaire pour appel il - en citant - est également le mécanisme même que contourne aliases et donc empêche invocation.

    • Vous pouvez cependant définir une fonction (zsh uniquement) ou un script dans vos $PATH (œuvres en zsh ainsi que dans bash, ksh et dash), aussi longtemps que vous l'invoquer cité (par exemple, comme \;s ou ';s' ou ";s"), ce qui annule l'objectif.

Pour mémoire, voici les définitions de commandes, mais, encore une fois, ils ne peuvent être invoqués cité.

Fonction (fonctionne zsh uniquement, dans un fichier d'initialisation, comme ~/.zshrc):

';s'() { ls "[email protected]" } 

script exécutable ;s (œuvres dans dash, bash, ksh et zsh, dans un répertoire dans votre $PATH) :

#!/bin/sh 
ls "[email protected]" 
+0

donc long et court, il est que je ne peux pas créer un alias 'l'état brut, à s'' ls' pour contourner ma frappe incorrecte? –

+0

Vous ne pouvez pas définir un _alias_, mais vous pouvez définir un _function_ (ou même un script exécutable dans votre $ PATH). – mklement0

+0

Mais je ne peux pas appeler cette fonction sans citer/échapper le caractère de point-virgule? –