Как выполнить команду в любом месте, если определенные требуемые файлы находятся в разных каталогах? - PullRequest
0 голосов
/ 09 сентября 2018

Пусть, скажем, команда будет my_command

И эта команда должна быть подготовлена ​​для определенных файлов (file1, file2 и file3) в текущем рабочем каталоге.

Поскольку я часто используюmy_command во многих различных каталогах, я хотел бы сохранить определенные файлы в определенном каталоге и выполнить my_command без этих трех файлов в рабочем каталоге.Я имею в виду, что я не хочу копировать эти три файла в каждый рабочий каталог.

Например:

Каталог, содержащий три файла /home/chest

Рабочий каталог: /home/wd

Если я выполню команду my_command, она автоматически распознает три файла в /home/chest/

Я думал, что путь похож на добавление $ PATH, а не на исполняемые файлы, нопросто файлы.

1 Ответ

0 голосов
/ 10 сентября 2018

Похоже, что файлы должны находиться в текущем рабочем каталоге, чтобы команда vasp_std работала должным образом. Я думаю, что вы можете просто добавить все файлы в папку include в вашем домашнем каталоге и затем создать символическую ссылка на эту папку из вашего скрипта. В конце вашего скрипта будет удалена символическая ссылка:

#!/bin/bash

# create a symbolic link to our resource folder
ln -s ~/include src

# execute other commands here

# finally remove the symbolic link from the current directory
unlink src

Если команда vasp_std требует, чтобы файлы были размещены непосредственно в текущем рабочем каталоге, вы можете вместо этого создать символическую ссылку для каждого файла:

#!/bin/bash

# create link for to all resource files
for file in ~/include/*
do
  ln -s $file `basename $file`
done

# execute other commands here

# remove any previously created links
for file in ~/include/*
do
  unlink `basename $file`
done
...