1
votes

Automatiser la commande ls après chaque commande cd dans tcsh

Je change de répertoire en donnant cd (dir_path) . Quand je donne cela, il veut également afficher le contenu dans le répertoire. Dites comme si nous tapons ls après être allé dans ce répertoire. Fondamentalement, les deux commandes doivent exécuter ensemble cd (dir_path) et un ls dans ce chemin uniquement en donnant la commande cd (dir_path) .

Comment faire cela dans tcsh ?


0 commentaires

4 Réponses :


-1
votes

Il existe un moyen d'exécuter des commandes l'une après l'autre en utilisant l'opérateur &&

cd `directory` && ls


2 commentaires

Si vous utilisez uniquement un alias, vous ne pouvez pas passer un argument de ligne de commande à la commande cd à l'intérieur de l'alias. Une fonction permet de passer la ligne de commande arg.


En effet. Ma faute.



3
votes

Selon le commentaire de uzsolt , cette réponse ne s'applique pas à tcsh . La question initiale ne mentionnait pas cette exigence. La question a été modifiée plus tard après que l'OP a mentionné tcsh dans un commentaire.

Voir la réponse d'uzsolt a > pour une solution qui fonctionne avec tcsh . Cette réponse doit être votée positivement.

Dans bash ou zsh , vous pouvez définir une fonction nommée cd

XXX

Lorsque vous exécuterez ensuite cd somedir , vous appellerez votre fonction cd au lieu de la commande. Si vous voulez appeler la commande normale cd , utilisez

unalias cd

Ou vous pouvez supprimer la fonction plus tard en utilisant

command cd [somedir]


4 commentaires

cette fonction cdls () doit être ajoutée dans le fichier tcshrc, non?


Désolé, je ne peux pas vous aider avec tcsh . Vous ne l'avez pas mentionné dans votre question. Une fonction cdls peut être définie pour chaque shell (y compris les non interactifs), une fonction ou un alias cd qui remplace la commande cd normale doit être défini pour un shell interactif uniquement.


@VicKy Essayez si la fonction (et l'alias) fonctionnent dans tcsh . Si vous voulez savoir dans quel fichier de démarrage vous devez placer la définition de la fonction ou de l'alias, ajoutez ceci à votre question.


@Bodo tcsh ne prend pas en charge les fonctions, donc votre solution ne peut pas s'adapter à tcsh .



1
votes

Je pense que la méthode la plus simple est d'utiliser cwdcmd:

alias cwdcmd ls

Peut être mis dans ~ / .tcshrc . p>

Voir man tcsh :

Alias ​​spéciaux

....

cwdcmd

S'exécute après chaque changement de répertoire de travail.


0 commentaires

0
votes
alias cd 'cd \!* && ls && pwd'

0 commentaires