Вызовите команду, как если бы она была вызвана в другом каталоге

3

Я использую программу командной строки, в документации которой указано:

  

"Вы можете запустить XXX на входе, расположенном в другом каталоге, но его вывод будет   всегда быть помещенным в текущий рабочий каталог ". Я хотел бы, чтобы вывод был записан в другой каталог.

Я мог бы (либо с cd , либо pushd + popd )

  1. изменить каталог вывода
  2. запустите команду, чтобы выход был помещен туда
  3. , затем измените

или

  1. запустите команду в моем текущем расположении
  2. переместите вывод в папку вывода

... но оба кажутся неуклюжими и подвержены ошибкам, если скрипт должен быть отредактирован кем-то, кто не знает об этом требовании. Единственное другое решение, о котором я могу думать, - это присоединиться к командам с точкой с запятой. Есть ли другой способ?

Это в bash, кстати.

    
задан pufferfish 22.02.2014 в 12:19
источник

1 ответ

5

используйте круглые скобки, поэтому cd встречается в подоболочке:

(cd other_dir && xxx)

Когда это закончится, текущий рабочий каталог не изменится.

cd может выйти из строя, поэтому используйте && для условного выполнения программы.

    
ответ дан glenn jackman 22.02.2014 в 12:23
источник