Насколько я понимаю, вы хотите открыть больше терминалов и просматривать их все одновременно. Если вы используете графический интерфейс, вы можете захватить свою вкладку и перемещать ее, изменять ее размер и вставлять в любое место на экране, как вы перемещаете любое другое приложение. Если вы используете CLI, вы можете использовать программу tmux
.
Вы пытаетесь использовать расширенный шаблон подстановки в сценарии, работающем под /bin/sh
, который представляет собой оболочку, которая обычно не понимает такого рода шаблоны.
Либо переключитесь на оболочку, которая знает об этих шаблонах, например bash
, ksh
или zsh
(, с соответствующими параметрами, установленными в каждой оболочке ), либо используйте что-то, что /bin/sh
поймет, например какfind
:
#!/bin/sh
find kube/xx/bb -prune ! -name 'abc*' ! -name 'cdf*' -type d -exec basename {} \;
Или, если вы используете GNUfind
:
#!/bin/sh
find kube/xx/bb -prune ! -name 'abc*' ! -name 'cdf*' -type d -printf '%f\n'
В обоих этих примерах я предполагаю, что !
перед cdf*
в вопросе является опечаткой.
Обратите внимание, что редко возникает необходимость запускать xargs
в конвейере с find
, поскольку find
имеет вполне пригодный для использования предикат -exec
для выполнения произвольно сложных команд.
Кроме того, Почему *не *parse `ls`(и что делать вместо )?
Более ручной подход:
#!/bin/sh
for pathname in kube/xx/bb/*/; do
[ -d "$pathname" ] || continue
name=${pathname%/}
name=${name#kube/xx/bb/}
case $name in
abc*|cdf*) continue ;;
esac
printf '%s\n' "$name"
done