2010-10-01 6 views
0

Je veux un alias qui produisent résultat folowing:Créer un alias avec l'argument

$cd /home/ok 

[clear screen] 
/home/ok 
total 452K 
-rwx--x--x 1 user gigl 16K Oct 1 14:08 ok0 
drwx------ 5 user gigl 0 Oct 1 14:02 ok1 
drwx------ 5 user gigl 0 Oct 1 13:59 ok2 
drwx------ 9 user gigl 0 Oct 1 14:01 ok3 
-rw------- 1 user gigl 32 Sep 30 14:36 ok4 

Je l'ai fait un script comme

$cat ~/.cd.sh 
#!/bin/bash 
cd $1 && clear && pwd && ls -lh --color=auto 

Mais ça ne change pas le répertoire courant. C'est probablement parce que dans le script il va changer le dir mais quand il revient à bash je suis de retour dans le répertoire que j'ai exécuté le script.

Une idée?

Merci, de réponses que j'ai quelque chose comme ce grand travail:

alias ls="clear && pwd && ls -lh --color=auto" 
cd() { builtin cd "$1" && ls; } 
+1

Ce n'est pas un alias. –

+0

Je voulais réutiliser le terme "cd", de cette façon je crois que c'est un alias, incorrectement. –

Répondre

9

Personnellement, je recommande d'écrire une fonction plutôt que d'un alias chargé de votre .bashrc ou .bash_profile.

La fonction ressemblerait un peu comme ce que vous avez déjà:

cdd() { 
    cd "$1" 
    clear 
    pwd 
    ls -lh --color=auto 
} 

Je ne suis pas positif pourquoi l'alias vous fait de revenir en arrière, mais j'ai testé la fonction et cela fonctionne.

+0

Je pense que la question n'était pas claire. Son script est retourné, et il ne peut pas comprendre comment obtenir un argument dans un alias. Comme vous le dites, une fonction est la bonne solution. – Darron

+0

Pour la conformité aux normes, évitez le mot clé 'function'. Utilisez une syntaxe comme 'cdd() {}'. Si vous faites cela, et remplacer '$ 1' par' "$ 1' (pour les répertoires avec des espaces), vous obtiendrez un +1 de moi .. – Lekensteyn

+0

@Lekensteyn: Bons points.Fixé – Bryan

1

utiliser une fonction à la place, par exemple

mycd() { cd "${1?}" && clear && pwd && ls -lh --color=auto; } 
+0

Le point d'interrogation provoque une faute de frappe –

+0

Le point d'interrogation provoque une erreur si aucun paramètre n'est passé. n'est pas aussi joli qu'une vérification manuelle mais donne un code plus court :) – jilles

+0

builtin cd ne génère pas d'erreur sans params, cela pourrait être utile pour ne pas effacer l'écran, le "normalement" optionnel, c'est fou ils jettent une erreur pour ça. Je voudrais exce pt ne pas avoir d'erreur du tout. –

0

Je ne pense pas que vous voulez & & soit. Cela va exécuter chaque commande simultanément, iirc. Vous devriez utiliser des points-virgules.

+0

Non, il ne les exécute pas simultanément - il fonctionne chacun conditionnellement au succès du précédent. Une seule esperluette les exécuterait en arrière-plan. –

+0

Vous avez raison. Les points-virgules les exécuteraient quel que soit le statut de sortie précédent. – beta0x64