Вы можете использовать цикл for , который устанавливает для переменной i
значение 1
, 2
, ... n-1
, и используйте косвенное расширение , чтобы превратить это в $ 1
, $ 2
], ..., $ n-1
.
for ((i=1; i<$#; i++)); do
echo "${!i}"
done
Вы должны использовать глобальный псевдоним. Кажется, что bash не поддерживает его, но он очень хорошо работает с zsh.
$ sudo apt install zsh
Чтобы получить такой же вид, как у меня, вам следует
Установить Oh My Zsh:
sh -c "$(curl -fsSL https://raw.github.com /robbyrussell/oh-my-zsh/master/tools/install.sh)"
Замените вашу тему на agnoster:
sed 's/^ZSH_THEME=".*"$/ZSH_THEME="agnoster"/' -i .zshrc
И установите шрифты Powerline, чтобы работал agnoster:
curl https://pastebin.com/raw/nD4DTpuF | бить
Установите плагин подсветки синтаксиса:
Загрузите
git clone git://github.com/zsh-users/zsh-syntax-highlighting.git .oh-my-zsh/custom/plugins/zsh- подсветка синтаксиса
И примените:
sed 's/^plugins=\((.*)\)$/plugins=(\1 zsh-syntax-highlighting)'
Наконец, перезагрузите параметры конфигурации:
исходный файл .zshrc.
Извините за длинное руководство, но я надеюсь, оно вам понравится.
Вы ищете опцию cdable_vars
. Чтобы активировать его, запустите shopt -s cdable_vars
, если вы используете bash(setopt cdablevars
в случае zsh ). После этого простой cd mydir
будет работать.
Обратите внимание на то, что если вы попытаетесь cd mydir
из каталога, который содержит файл или каталог с таким же именем, оболочка попытается использовать файл или объект каталога в текущем каталоге вместо расширения Переменная.
Как насчет просто:
mydir
Просто определите переменную, как вы уже сделали, и создайте функцию:
mydir=/etc/insserv.conf.d/testname
mydir(){ cd "$mydir"; }
Готово.
Альтернативой является использование псевдонима:
alias mydir='cd "$mydir"'