Quais idiomas são usados ​​para criar comandos do Unix?

9

Exemplos de comandos que me refiro são ls, pwde cd. Além disso, como eles são construídos? Você tem um exemplo?

fronthem
fonte
2
Isso é lição de casa?
Stefan Lasiewski

Respostas:

26

Geralmente é simples C. Os comandos lse pwdvêm do GNU Coreutilspacote em (a maioria?) Distribuições Linux (e talvez em outros sistemas). Você pode encontrar o código na página inicial .

Para coreutilsespecificamente, você as constrói com as etapas usuais: após descompactar a fonte, emita:

./configure --prefix=/some/path
                   # type ./configure --help to get the available options
make
make install       # could require root access depending on the path you used

Cuidado: a instalação de utilitários básicos, como aqueles sobre a cópia deles da sua distribuição, é uma má ideia . Use qualquer gerenciador de pacotes fornecido com o seu sistema para isso. Você pode instalar em um prefixo diferente (instalar em algum lugar no diretório inicial é uma boa ideia, se você quiser experimentar).

Observe que, embora exista um cdexecutável , o cdque você utilizará na maioria das circunstâncias não é um executável separado. Ele deve ser um build-in do shell (caso contrário, não poderá alterar o diretório atual do shell - isso deve ser feito pelo próprio processo), portanto, ele é escrito no mesmo idioma do shell (o que geralmente Ctambém é).

Outros exemplos:

  • pwdFonte OpenSolaris .
  • FreeBSD ls

Você pode encontrar muitos outros online.

Esteira
fonte
5

Apenas para adicionar um pouco mais à resposta de Mat, embora o Unix os implemente como programas independentes, muitos comandos também são implementados dentro bash(para evitar que seja necessário gerar um novo processo), consulte a bashpágina do manual para obter mais detalhes ou dê uma olhada no tag.

bash também está escrito em C

Pode ser interessante notar que esses comandos não precisam ser escritos em C - de fato, várias distribuições de mini linux usam luaimplementações desses e de outros.

symcbean
fonte
2
Bem bash, ou qualquer outra boa concha.
Rds
11
Observe também que alguns comandos, como cddeve ser um shell integrado para funcionar de maneira eficaz.
AProgrammer