On 08/11/12 00:08, Félix Hauri wrote:

Salut Félix,

Mon grain de sel:

toujours bienvenu !

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 ''. )

Bonne idée !

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''.

Non; le "special case, c'était en cas de nom de repertoire qui contient des espaces. Dans mon bash, la fonction ci-dessus ne marche pas dans un tel cas. D'où les "" dans l'appel de command. Mais dans un tel cas, cd "" semble avoir le même effet que "cd ." (donc rien), et en tout cas pas "cd ~". D'où le cas spécial.

Bref, voici une version très certainement discutable, mais qui le fait:

Ouch; faudra que je regarde en détail. Je vois qu'il y a l'"usage", mais faut quand même décortiquer pour voir ce que font les options... :-)

Merci !

Frédéric

--- 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  -<[email protected]>   -  http://www.f-hauri.ch
_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull

_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à