J'exécute fréquemment la ls
commande après avoir exécuté la cd
commande. Comment créer un alias (comme cs
) pour cette opération?
la source
J'exécute fréquemment la ls
commande après avoir exécuté la cd
commande. Comment créer un alias (comme cs
) pour cette opération?
De Bash Trucs et Astuces: « cd » avec un style :
Enfin, je veux vous montrer comment écrire votre propre remplacement personnalisé pour la commande 'cd'.
Vous trouvez-vous toujours en train de taper la même chose lors de la modification d'un répertoire? Vous avez probablement au moins la liste des fichiers à chaque fois, peut-être à un point tel que vos mains tapent automatiquement "ls" après chaque "cd".
En essayant de toutes les manières possibles, il s’avère qu’il n’ya qu’une façon d’atteindre correctement le but recherché. Nous devons créer une fonction shell.
Les fonctions shell font partie de la programmation shell. Comme dans les langages de programmation compilés, les fonctions offrent une sorte de modularité procédurale. On peut créer une fonction générique pour exécuter un bit de logique souvent utilisé ou un calcul avec différents paramètres. Dans ce cas, le paramètre est le répertoire de travail en cours.
Voici un simple:
function cs () { cd $1 ls }
Comme @geirha le note correctement, la fonction ci-dessus échouera si vous essayez de basculer vers un répertoire avec un espace dans son nom:
$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>
Vous devriez plutôt utiliser la fonction suivante:
function cs () {
cd "$@" && ls
}
Une fois que vous avez ajouté ce code à votre ~/.bashrc
, vous devriez pouvoir le faire:
hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
Vous pouvez utiliser la
builtin
commande dans bash:la source
function ls() { /usr/bin/ls $* }
cd
parcervm
que macd
définition aussi. Voir stackoverflow.com/a/19941991/1601989Utilisez une fonction au lieu d'un alias:
la source
Merci Florian Diesch pour le conseil d'utiliser une fonction. Je ne peux pas utiliser
cs
le nom car il y a unecs
commande dans le package csound , alors j'ai utilisélc
.J'ai ajouté ceci à
~/.bash_aliases
(nano ~/.bash_aliases
):Le terminal doit être
reset
pour que cela entre en vigueur.la source
$1
non cotées comme ça va le faire échouer si le répertoire contient des espaces blancs. En outre, vous devriez vérifier la valeur de retour decd
; en cas d'échec (par exemple, autorisation refusée), il est inutile d'exécuter le programmels
.lc() { cd "$@" && ls; }
Comme une extension à cette fonction:
cs() { cd "$1" && ls; }
, vous pouvez passer tous les arguments de la fonction àcd
l'aide au$@
lieu de en"$1"
tant que tel:cs() { cd $@ && ls; }
.la source
J'ai eu du mal à redéfinir
cd
parcervm
que macd
définition aussi. Voir https://stackoverflow.com/a/19941991/1601989 . Je ne voulais pas vraiment utiliserbuiltin
parce que cela ferait sauter tout ce quirvm
se fait.J'ai ajouté ce qui suit à mon
.bashrc
:Et puis après la
rmv
ligne dans le.bashrc
:la source