Я часто случайно выполняю ls для файла, когда я хотел сделать меньше.
Есть ли способ создать псевдоним или функцию, которая будет выполнять ls для каталога, а не для файла.
Я часто случайно выполняю ls для файла, когда я хотел сделать меньше.
Есть ли способ создать псевдоним или функцию, которая будет выполнять ls для каталога, а не для файла.
Основная вещь, которую вы хотите, может выглядеть примерно так:
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
на первый не-переключатель. Это будет часто делать неправильно, но это всего лишь предложение для следующего шага.