Como executar programas de um diretório diferente no unix

0

Eu sei que esta é uma pergunta muito simples, e que muitas perguntas semelhantes (mas mais complicadas!) foram feitas- Então, eu queria perguntar isso de uma maneira muito plana. Desculpe se isso anula as regras de conduta neste site! Eu sou muito novo em usar o unix.

Eu tenho um programa que converte um arquivo ".evt" em um .rq1, que é usado para análise de dados. O comando para fazer isso é simples, por exemplo: Converter dados.evt (isso gera dados.rq1).

Este programa, digamos, está localizado no diretório / A e eu tenho um arquivo de dados que eu quero converter no diretório / B. Como eu iria executar esse programa sem mover o programa de conversão para o diretório B?

    
por Der Hochstapler 26.11.2011 / 23:39

5 respostas

4

É muito simples:

./A/Convert B/some_file  

Significa ir ao diretório A e executar o programa com o parâmetro que você fornecerá.

    
por 26.11.2011 / 23:42
3

No sistema de arquivos UNIX, todos os seus comandos internos são binários (programas) escritos para executar determinadas tarefas. O comando ls faz a listagem de diretórios, o comando mv move ou renomeia arquivos etc.

Todos esses binários são armazenados no diretório /usr/bin . E o caminho para esse diretório é armazenado em sua variável de ambiente PATH.

Se você tiver muitos scripts que executam determinadas tarefas, recomendo que eles sejam movidos em uma pasta. Por exemplo, por exemplo, /yourname/scripts e, em seguida, defina esse caminho em sua variável PATH.

A variável PATH pode ser definida no arquivo .bashrc ou .bash_profile, que é carregado sempre que você dispara uma sessão de terminal. Você pode visualizar as configurações da variável PATH fazendo um 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

No seu arquivo .profile, simplesmente adicione a pasta :/yourname/scripts e faça . .profile no prompt do seu shell. Isso forçará sua sessão atual a carregar seu arquivo de perfil sem precisar sair e fazer login novamente.

Uma vez que o arquivo .profile tenha sido carregado, você pode executar seu script de qualquer lugar simplesmente digitando scriptname opções ou outros argumentos conforme necessário.

Este tutorial será útil para você.

    
por 26.11.2011 / 23:47
1

One convention used by most experienced unix users (not supplied by the system) is to create a local bin directory--inside the user's home directory--as a repository for user-created scripts and programs. (taken from here)

Posicione seu programa no diretório ~/bin (que é uma abreviação de /home/yourname/bin ) e você poderá executar seu programa em qualquer local, porque quando ~/bin existir, o bash o adicionará ao PATH por padrão (pelo menos no Ubuntu). Você precisará criar este diretório se ele não existir.

Se você quiser se tornar um usuário Linux mais avançado, use ln -s para vincular seu programa de sua localização a ~/bin

    
por 27.11.2011 / 07:40
0
/path/to/A/Convert /path/to/B/data.evt

... e seu arquivo de saída deve terminar no diretório atual (supondo que você tenha acesso de gravação).

Além disso, qual sabor do Unix você está usando?

    
por 26.11.2011 / 23:43
0

Execute apenas assim:

/A/Convert /B/data.evt

Lembre-se de não liderar / A com . as , significa o diretório atual. A menos que o caminho que você está fornecendo seja relativo ao diretório atual.

    
por 26.11.2011 / 23:45

Tags