Можно использовать l
расширение параметра отмечает для заполнения числа слева.
i=0; for x in *; do ((++i)); mv -- $x new/${(l:6::0:)i}; done
Существует относительно простой способ сделать это только с функциями POSIX: начните нумеровать по телефону 1000001 (для 6 цифр) вместо 1 и снимите изоляцию с продвижения 1
. Это менее просто, но несколько символов короче.
i=1000000; for x in *; do i=$((i+1)); mv -- "$x" new/${i#1}; done
Если Вы хотите использовать в своих интересах zmv
, можно использовать арифметическое выражение, которое увеличивает i
в тексте замены.
i=0; zmv '*' '${(l:6::0:)$((++i))}'
i=1000000; zmv '*' '${$((++i))#1}'
Добавьте o
спецификатор шарика, если необходимо отсортировать файлы в другом порядке. С zmv
, необходимо передать -Q
отметьте, когда шаблон будет содержать спецификаторы шарика.
В большинстве конфигураций sudo заменяет PATH
переменная среды значением по умолчанию времени компиляции или значением, указанным в /etc/sudoers
.
Можно сделать поиск пути прежде, чем передать команду sudo
.
db2=$(unset -f db2; unalias db2 2>/dev/null; command -v db2)
sudo -u db2inst1 sh -c '"$0" connect to db; "$0" set …' "$db2"
В общем падеже, когда Вы знаете, что команда не является функцией, ни псевдонимом в Вашей текущей оболочке и что полный путь не содержит специального символа:
sudo -u db2inst1 sh -c "$(command -v db2) connect to db; $(command -v db2) set …"
Отметьте использование двойных кавычек здесь, так, чтобы $(command -v db2)
оценен во внешней оболочке. Можно подать команды на стандартном входе для сохранения большего количества ввода:
sudo -u db2inst1 $(command -v db2) <<\EOF
connect to db
set …
EOF
sudo -u db2inst1 sh -c "type db2"
? У Вас есть доступ кsudoers
файл, и если так, каковы соответствующие настройки (применимоеDefaults
строки и строка, которые позволяют Вам работатьdb2
какdb2inst1
)? – Gilles 'SO- stop being evil' 07.11.2012, 02:38sudo -u db2inst1 sh -c "type db2"
дает мнеsh: line 0: type: db2: not found
– Radek 07.11.2012, 02:47sudo -u db2inst1 sh -c "id;$PATH;ls /opt/ibm/db2/V9.7/bin/db2"
расширяетсяPATH
во внешней оболочке. Вы действительно находитеdb2
в пути текущего пользователя, не вdb2inst1
путь. А-ч – Gilles 'SO- stop being evil' 07.11.2012, 02:56