É muito simples:
./A/Convert B/some_file
Significa ir ao diretório A e executar o programa com o parâmetro que você fornecerá.
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?
É muito simples:
./A/Convert B/some_file
Significa ir ao diretório A e executar o programa com o parâmetro que você fornecerá.
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ê.
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
/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?
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.
Tags unix