К сожалению, Ваш пример:
execindirectory -d /var/log "cp *.log ~/Desktop"
не нуждается в изменении в dir, потому что
cp /var/log/*.log ~/Desktop
сделал бы то же. Разве Вы не можете стать ближе к своей настоящей проблеме? Поскольку мы могли бы знать лучшее решение для этого также.
Сложным способом решить Вашу проблему, которая является далеко от элегантности решения Michaels, является использование находки, которая имеет переключатель '-execdir', чтобы быть выполненной в dir, где файл найден. Плохо принятый к Вашему примеру:
find /var/log -maxdepth 1 -type f -name "*.log" -execdir echo cp {} ~/Desktop ";"
Возможно, это полезно для Вашей настоящей проблемы.-okdir вместо-execdir попросит, чтобы Вы подтвердили каждый вызов.
- okdir и-execdir, возможно, должны были бы найти гну, чтобы быть установленными, который обычно используется на Linux.
В ksh, ударе и подобных оболочках,
LANG=es_MX.utf8 ./hellogt
установит LANG=es_MX.utf8
только для вызова ./hellogt
.
Более портативно существует названная программа env
env LANG=es_MX.utf8 ./hellogt
который установит переменные среды и запустит указанную программу. Это работает во всех оболочках, включая csh
и традиционный sh
(которые не поддерживают первый метод).
Вы имеете в виду что-то как:
LANG=es_MX.utf8 ./hellogt
? Или возможно Вы подразумеваете, что хотите проанализировать командную строку (argv), найти, что язык передал в, и передайте его setlocale?