Vous pouvez le faire avec une fonction:
$ cdls() { cd "$@" && ls; }
Le &&
moyen " cd
vers un répertoire, et en cas de succès (par exemple, le répertoire existe), exécutez ls
". Il &&
vaut mieux utiliser l' opérateur que d'utiliser un ;
opérateur en point-virgule entre les deux commandes { cd "$@" ; ls; }
. Cette deuxième commande sera exécutée ls
indépendamment du cd
travail effectué ou non. En cas d' cd
échec, ls
imprimera le contenu de votre répertoire actuel, ce qui déroutera l'utilisateur. En tant que meilleure pratique, utilisez &&
et non ;
.
$ cdls /var/log
CDIS.custom fsck_hfs.log monthly.out system.log
$ pwd
/var/log
En règle générale, il est déconseillé de renommer une commande existante, en particulier pour une commande appelée, par exemple cd
. Au lieu de cela, créez une nouvelle commande avec un nom différent. Si vous écrasez cd
avec une fonction ou un alias également nommé cd
, qu'arrivera-t-il lorsque vous entrerez dans un répertoire contenant 100 000 fichiers? Il existe de nombreux utilitaires qui utilisent cd
, et ils peuvent être déroutés par ce comportement inhabituel. Si vous utilisez un compte partagé (par exemple root
lorsque vous travaillez avec d'autres administrateurs système), il peut s'avérer très dangereux de remplacer une commande existante car l'environnement est différent de celui attendu par les utilisateurs.
Stefan Lasiewski
la source
pwd
. Pas sûr que ce soit une bonne pratique, mais c'est couramment fait. Voir tldp.org/LDP/abs/html/aliases.html pour quelques exemples.cd() { builtin cd "$@" && pwd; };
- en utilisant shell standard bourne sur macOS (Sierra 10.12.6)J'ai ceci dans mon .bashrc, et cela fonctionne très bien.
Plus tôt dans mon .bashrc, j'ai:,
[ -z "$PS1" ] && return
et tout ce qui suit ne concerne que les sessions interactives, donc cela n’affecte pas lecd
comportement des scripts.la source
[ -z "$PS1" ] && return
?[ -z "$PS1" ]
vérifie si$PS
(variable d'invite interactive) est "longueur zéro" (-z). Si sa longueur est égale à zéro, cela signifie qu'il n'a pas été défini. Bash ne doit donc pas être exécuté en mode interactif. La&& return
pièce quitte le sourcing.bashrc
à ce stade, dans ces conditions.i
dans"$-"
:case "$-" in *i*) ;; *) return ;; esac
.PS1
variable peut être non définie ou vide et le shell peut toujours être interactif (mais sans invite). Je vérifierais$-
pour être sûr.hors sujet, puisque la question est marquée / bash, mais que certaines questions sont fermées comme une copie de celle-ci sans mentionner bash:
Avec zsh:
La fonction chpwd () est appelée par zsh chaque fois que le répertoire en cours change (via cd, pushd, popd ...). tcsh a une fonctionnalité similaire et c'est probablement d'où zsh l'a obtenue.
la source
Pourquoi ne pas ajouter un alias à votre fichier .bashrc?
Quelque chose comme:
la source
La solution habituelle consistant à créer un alias pour la commande cd n’est pas parfaite, car il existe d’autres commandes qui peuvent modifier votre répertoire actuel, comme Popd, ou même l’exécution d’un script contenant la commande cd.
Il est préférable d'utiliser le crochet Bash $ PROMPT_COMMAND qui exécute une commande avant de renvoyer une invite.
La commande (une fonction dans notre cas) ne sera exécutée que si le répertoire a été modifié pour réduire le bruit d'écran. Code pour .bashrc:
la source
Copier ceci:
Maintenant, vous pouvez simplement faire un cd simple:
la source
En bash, vous ne pouvez pas avoir recours à des alias pour les actions nécessitant un paramètre. Pour cela, il y a des fonctions. Alors mettez dans
~/.bashrc
le suivantla source
cd "$1" && ls
serait mieux.function mycd { builtin cd "$1" && ls "$2" }
.Placez le code ci-dessous dans le fichier .profile et cela fonctionne. Testé sur HP-Unix.
la source
Encore plus pratique - avec la possibilité de remonter dans l'histoire :
Lorsque vous changez de répertoire, une ligne avec:
Stack: (current_dir) (previous_dir) ...
sera affichée, puisls
sortie. Pour revenir dans l' histoire dirs pop juste cette commande:popd
.J'ai ajouté
else
afin que vous verrez une erreur lorsque vous essayez d'accéder à un mauvais répertoire.la source
Je pense qu’il est bon d’activer
ls
les options de cette manière, car celacd
ne prend aucune option.la source
cd
prend des options.Voici ce que je trouve utile (sur Debian 9):
Cela me donne une sortie tronquée avec des points de suspension au cas où il y aurait trop d'éléments dans ce répertoire pour que la console reste propre:
la source
la source