Appeler ls ou moins dans bash en fonction du type de fichier


0

J'effectue souvent accidentellement un fichier sur un fichier, alors que je voulais en faire moins.

Existe-t-il un moyen de créer un alias, ou une fonction, qui exécute ls sur un répertoire et moins sur un fichier.


Regardez test. -d vérifiera si l'argument est un répertoire, -f pour le fichier. Donc dans un script pourrait avoir quelque chose comme if [-f "$ 1"]; alors moins "$ 1"; elif [-d "$ 1"]; alors ls "$ 1"; Fi . Bien que je sois sûr qu'il y ait des erreurs car je n'utilise pas beaucoup de scripts, ajoutez-les simplement dans un fichier, avec shebang, et rendez les exécutables ..
Guy,

Réponses:


1

La chose de base que vous voulez pourrait ressembler à quelque chose comme ça:

function my_less()
  {
  obj=$1
  shift
  test -d $obj && ls $obj $@
  test -f $obj && less $obj $@
  }

ensuite

my_less thing

fera un lsou un lessselon le type.

Le obj=$1saisit le premier argument de la fonction. Les shiftchangements les arguments restants « à gauche » et $@est la liste des arguments en cours.

Si vous voulez avoir un traitement rudimentaire des commutateurs, vous pouvez étendre cette fonction comme ceci:

function my_less()
  {
  switches=
  obj=
  while true
  do
    case $1 in
      -*)
        switches="$switches $1"
        shift
        ;;
      *)
        obj=$1
        shift
        break
        ;;
    esac
  done
  test -d $obj && ls $switches $obj $@
  test -f $obj && less $switches $obj $@
}

Cela collectera tous les principaux commutateurs et définira objle premier non-commutateur. Cela fera souvent la mauvaise chose, mais il ne s'agit que d'une suggestion pour la prochaine étape.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.