Я знаю, что это очень простой вопрос, и многие из них похожи (но сложнее!) вопросы были заданы - так что я хотел бы задать это в очень плоской манере. Извините, если это аннулирует правила поведения на этом сайте! Я очень новичок в использовании Unix.

У меня есть программа, которая преобразует файл .evt в .rq1, который используется для анализа данных. Команда для этого проста, например: Convert data.evt (это выводит data.rq1).

Скажем, эта программа находится в каталоге /A, и у меня есть файл данных, который я хочу преобразовать в каталог /B. Как мне выполнить эту программу, не перемещая программу конвертации в каталог B?

5 ответов5

4

Это очень просто:

./A/Convert B/some_file  

Это означает, что перейдите в каталог A и запустите программу с заданным вами параметром.

3

В файловой системе UNIX все ваши встроенные команды являются двоичными файлами (программами), написанными для выполнения определенных задач. Команда ls список каталогов, команда mv перемещает или переименовывает файлы и т. д.

Все эти двоичные файлы хранятся в вашем каталоге /usr/bin . И путь к этому каталогу хранится в переменной среды PATH.

Если у вас есть много скриптов, которые выполняют определенные задачи, я бы порекомендовал их перемещать в одну папку. скажем, например, /yourname/scripts а затем установите этот путь в переменной PATH.

Переменная PATH может быть установлена в вашем файле .bashrc или .bash_profile, который загружается при запуске сеанса терминала. Вы можете просмотреть настройки переменных PATH, выполнив echo .

[jaypal~]$ echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/mysql/bin:/Developer/usr/bin:/usr/local/ActivePerl-5.12/bin:/Library/Ruby/Site/1.8/rubygems:/Library/Ruby/Gems/1.8/gems/wkpdf-0.5.3-universal-darwin/bin:/Library/Ruby/Gems/1.8/gems/wkpdf-0.5.3-universal-darwin/lib

В вашем файле .profile просто добавьте :/yourname/scripts папку и сделайте . .profile в командной строке. Это заставит ваш текущий сеанс загрузить файл профиля без необходимости выходить и снова входить в систему.

Как только файл .profile был загружен, вы можете запустить свой скрипт из любого места, просто набрав при scriptname опции имени скрипта или другие аргументы.

Этот урок будет вам полезен.

1

Одно соглашение, используемое большинством опытных пользователей Unix (не предоставляется системой), заключается в создании локального каталога bin - внутри домашнего каталога пользователя - в качестве хранилища для пользовательских скриптов и программ. (взято отсюда)

Поместите вашу программу в каталог ~/bin (сокращение от /home/yourname/bin), и вы сможете запускать вашу программу из любого места, потому что, когда ~/bin существует, bash добавляет ее в PATH по умолчанию (в хотя бы на Ubuntu). Вам нужно будет создать этот каталог, если он не существует.

Если вы хотите стать более продвинутым пользователем Linux - используйте ln -s чтобы связать вашу программу с ее местоположением на ~/bin

0
/path/to/A/Convert /path/to/B/data.evt

... и ваш выходной файл должен оказаться в вашем текущем каталоге (при условии, что у вас есть права на запись).

Кроме того, какой вариант Unix вы используете?

0

Запустите его просто так:

/A/Convert /B/data.evt

Помните, чтобы не вести /A с . , означает текущий каталог. Если, конечно, путь, который вы указываете, относится к текущему каталогу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .