Псевдоним с переменной в bash

Я хочу создать псевдоним в bash следующим образом:

alias tail_ls="ls -l $1 | tail"

Таким образом, если кто-то типа:

tail_ls /etc/ 

он отобразит только 10 последних файлов в каталоге.

Но $1, похоже, не работает для меня. Можно ли каким-либо образом ввести переменные в bash.

Ответ 1

Я бы создал функцию для этого, а не псевдоним, а затем экспортировал его, например:

function tail_ls { ls -l "$1" | tail; }

export -f tail_ls

Примечание -f переключиться на export: он сообщает, что вы экспортируете функцию. Поместите это в свой .bashrc, и вам хорошо идти.

Ответ 3

alias tail_ls='_tail_ls() { ls -l "$1" | tail ;}; _tail_ls'

Ответ 4

tail_ls() { ls -l "$1" | tail; }

Ответ 5

Если вы используете оболочку Fish (от http://fishshell.com) вместо bash, они пишут функции несколько иначе.

Вам нужно добавить что-то вроде этого к вашему ~/.config/fish/config.fish, что эквивалентно вашему ~/.bashrc

function tail_ls
  ls -l $1 | tail
end

Ответ 6

Вы можете определить $1 с помощью set, а затем использовать свой псевдоним, как предполагалось:

$ alias tail_ls='ls -l "$1" | tail'
$ set mydir
$ tail_ls