Могу ли я удалить все файлы оболочки, не связанные с zsh, на Catalina, поскольку bash устаревает в пользу zsh?

Думаю, вам нужна функция, т.е.:

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>
0
28.12.2019, 13:45
2 ответа

Код инициализации оболочки, который вы показываете, не выглядит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
1
28.01.2020, 02:38

С тех пор я узнал, что у zsh есть хук , что означает, что я могу удалить все экземпляры оболочки bash, поскольку системный $PATH в любом случае берется из etc/profile.

Оболочкой macOS по умолчанию теперь является zsh, поэтому для меня нет смысла использовать файлы bash.

0
28.01.2020, 02:38

Теги

Похожие вопросы