! (UsageRequest.csv)
- это оператор подстановки ksh
, он работает только с ksh
( также с zsh -o kshglob
или bash -O extglob
, но эти оболочки не входят в Solaris по умолчанию).
Итак, вам нужно запустить эти команды в ksh
. Обратите внимание, что / bin / sh
Solaris 11 теперь основан на ksh93, поэтому он будет работать там, но вы все равно не должны использовать эти нестандартные расширения в сценариях sh
там .
В Solaris 10 и более ранних версиях / bin / sh
является оболочкой Борна. Стандартный sh
можно найти в другом месте в / usr / xpg4 / bin / sh
. sh
основан на ksh88
. Опять же ! (X)
будет работать там, но не должен использоваться там.
Итак, используйте:
#! /usr/bin/ksh -
rm -- !(UsageRequest.csv)
Или:
#! /usr/xpg4/bin/sh -
ksh -c 'rm -- !(UsageRequest.csv)'
POSIX (или Bourne) глобусы не имеют операторов отрицания. Вам нужно будет делать такие громоздкие вещи, как:
set -- *
for i do
[ UsageRequest.csv = "$i" ] || set -- "$@" "$i"
shift
done
rm -- "$@"
Или вы можете использовать find
:
find . ! -name . -prune ! -name '.*' ! -name 'UsageRequest.csv' \
-exec rm -f {} +
Установка arandr (графический интерфейс для randr) каким-то образом полностью решила мою проблему! :)