Думаю, вам нужна функция, т.е.:
function dl() {
URL="$1"
NAME=$(egrep -io 'filename[0-9]{1,2}\.ext' <<< "$URL")
echo wget -O "$NAME" "$URL"
}
Теперь вы можете использовать функцию dl
:
$ for url in $(cat url_list.txt); do dl $url; done
wget -O Filename01.ext https://server.com/Nonsense%20text%20Actual%20Filename01.ext<br>
wget -O Filename02.ext https://server.com/Non%20essential%20text%20Actual%20Filename02.ext<br>
wget -O Filename03.ext https://server.com/Not%20required%20text%20Actual%20Filename03.ext<br>
Код инициализации оболочки, который вы показываете, не выглядитbash
-специфичным и должен работать с zsh
также, при условии, что различные сценарии, которые он извлекает, тоже работают(shell.bash
иconda.sh
). Если есть сценарий shell.zsh
, вы, очевидно, можете использовать его вместо shell.bash
.
В оболочке zsh
переменная PATH
привязана к массиву path
. Вы можете сделать так, чтобы они содержали только уникальные записи, используя typeset -U
.
Это пример использования вашего конкретного значения дляPATH
:
$ print -rC1 -- $path
/Users/ty604/anaconda3/bin
/Users/ty604/anaconda3/condabin
/Users/ty604/anaconda3/bin
/Users/ty604/.cargo/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/usr/local/share/dotnet
/Users/ty604/flutter/bin
Путь /Users/ty604/anaconda3/bin
дублируется в начале. Сделать пути уникальными (сейчас и в будущем):
$ typeset -U PATH path
$ print -rC1 $path
/Users/ty604/anaconda3/bin
/Users/ty604/anaconda3/condabin
/Users/ty604/.cargo/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/usr/local/share/dotnet
/Users/ty604/flutter/bin
См. также, что произойдет, если я нажму /bin
на начало пути:
$ path=( /bin $path )
$ print -rC1 -- $path
/bin
/Users/ty604/anaconda3/bin
/Users/ty604/anaconda3/condabin
/Users/ty604/.cargo/bin
/usr/local/bin
/usr/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/usr/local/share/dotnet
/Users/ty604/flutter/bin
(Второй /bin
удаляется.)
Поскольку массив path
привязан к переменной PATH
, изменения будут видны и там:
$ print -rC1 -- $PATH
/bin:/Users/ty604/anaconda3/bin:/Users/ty604/anaconda3/condabin:/Users/ty604/.cargo/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/share/dotnet:/Users/ty604/flutter/bin
С тех пор я узнал, что у zsh есть хук , что означает, что я могу удалить все экземпляры оболочки bash, поскольку системный $PATH в любом случае берется из etc/profile
.
Оболочкой macOS по умолчанию теперь является zsh, поэтому для меня нет смысла использовать файлы bash.