[gull] Astuce shell: ls automatique après un cd
Félix Hauri
felix at f-hauri.ch
Thu Nov 8 00:08:15 CET 2012
Salut Fred,
Mon grain de sel:
On Wed, Nov 07, 2012 at 02:04:50PM +0100, Frédéric Schütz wrote:
> "ls" ? Si c'est le cas, pourquoi ne pas automatiser la chose ?
(Perso, voyangeant a travers de nombreux répertoires au contenu long
comme un jour sans pain, j'ajouterai `` | tail -n $LINES ''. )
> function cd ()
> {
> # If empty, cd to home directory
> # Special case, because cd "" stays in the same directory
> # -z: true if the length of the argument is 0
> if [ -z "$1" ]
> then
> command cd "$HOME" && ls -F --color=auto
> else
> command cd "$1" && ls -F --color=auto
> fi
> }
> [clairement améliorable]
(On peut toujours faire ``mieux'' et ``le mieux est l'ennemi du bien.''
... mais mon petit grain de sel quand même ;-)
Et j'aurrai utilisé la commande ``builtin'' plutôt que ``command'',
qui semble plus indiquée pour ce genre d'applications.
Par ailleur, je ne comprend pas pkoi le ``special case'': il me semble
que
function cd() { command cd $@ && /bin/ls -ltr | /usr/bin/tail -n $LINES; }
Mais on peut égallement se dire que le ``spécial case'' pourrait se justifier
pour éviter de remplir l'écran à chaque ``retour à la maison''.
Bref, voici une version très certainement discutable, mais qui le fait:
--- cd_ls_sourcefile.bash ---
TEXTDOMAIN=bash
cd() {
local -a ARGS
local extra_ls print_wd
while [ ! -z "$1" ] ;do case $1 in
-n ) extra_ls=false; shift;;
-f ) extra_ls=true; shift;;
-p ) print_wd=true; shift;;
-q ) print_wd=false; shift;;
-Q ) print_wd=false;extra_ls=false; shift;;
-- ) ARGS+=($1); shift;;
-L|-P ) ARGS+=($1); shift;;
-|~ ) [ $print_wd ] || print_wd=true; ARGS+=($1); shift;;
-* ) printf $0:\ $"%s: invalid option"\\n $1
echo "Usage: cd [-L|-P] [-Q|[-f|-n][-p|-q]] [dir]"
return ;;
* ) [ $extra_ls ] || extra_ls=true; ARGS+=("$1"); shift;;
esac;done
builtin cd "${ARGS[@]}" >/dev/null && \
[ $extra_ls ] && \
$extra_ls && /bin/ls -ltrF --color | tail -n $((LINES-1))
[ $print_wd ] && $print_wd && echo $PWD
}
unset TEXTDOMAIN
--- cd_ls_sourcefile.bash ---
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list