Я часто случайно выполняю ls для файла, когда я хотел сделать меньше.

Есть ли способ создать псевдоним или функцию, которая будет выполнять ls для каталога, а не для файла.

1 ответ1

2

Основная вещь, которую вы хотите, может выглядеть примерно так:

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

затем

my_less thing

будет делать ls или less зависимости от типа.

Объект obj=$1 получает первый аргумент функции. shift сдвигает оставшиеся аргументы "влево", а $@ - текущий список аргументов.

Если вы хотите иметь некоторую элементарную обработку переключателей, вы можете расширить эту функцию примерно так:

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 $@
}

Это соберет все ведущие переключатели и установит obj на первый не-переключатель. Это будет часто делать неправильно, но это всего лишь предложение для следующего шага.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .