Por onde começar a criar aplicativos CLI? [fechadas]

8

Depois de usar o linux por um mês ou dois, eu sei o que estou fazendo agora.

Ao criar programas, usando qualquer linguagem, obviamente eu tenho usado códigos como este:

$ python test.py

E assim, se eu quisesse test.pyler um determinado arquivo, teria que usar:

$ python test.py something.file

O que eu gostaria de fazer agora é tentar criar um aplicativo de linha de comando, para que eu possa usar

$ myapp something.file

Um programa como o pythonin $ python test.pyou o nanoin$ nano program.pl

Mas onde diabos eu começo a criar aplicativos como esses? Um pouco de rede de arrasto não me levou a lugar algum.

Se você pode me dizer que seria ótimo, mas eu aceitarei prontamente vários links.

Estou totalmente aberto se houver mais de uma maneira, não me importo com qual idioma (uma desculpa para aprender outra!) Ou o que for.

ACarter
fonte
3
Você quer aprender a programação do Unix C ou deseja executar seus scripts python sem precisar especificar a pythonparte?
Jw013
@ jw013 Quero aprender programação em Unix C. (Embora eu estaria interessado em saber como você pode executar scripts python sem a python.)
ACarter
4
Provavelmente, você deve corrigir sua pergunta :) Os aplicativos CLI podem ser escritos em qualquer idioma que tenha um compilador ou intérprete Unix; portanto, se você estiver interessado apenas em C, diga-o. A programação do Unix C é na verdade duas partes - a parte Unix e a parte C. Como é, "Como aprendo programação Unix C?" provavelmente será fechado por ser muito geral e provavelmente haverá duplicatas por todo o site. "Como eu aprendo programação C" também é muito geral e possivelmente fora de tópico. Certamente ficaria fechado no SO.
Jw013
@ jw013 O que realmente quero é conselhos como "aplicativos CLI podem ser escritos em qualquer idioma que tenha um compilador ou intérprete Unix", então obrigado.
ACarter
1
Ah ok. Sempre há um pequeno obstáculo inicial na curva de aprendizado ao tentar entrar no ambiente Unix, mas quando você passar por isso, tenho certeza que descobrirá que o esforço valeu a pena. Infelizmente, eu não conheço nenhum recurso que eu possa apontar para começar - você basicamente precisa pegar pedaços de peças à medida que avança: \
Boa

Respostas:

15

Você pode executar scripts python, tornando-os executáveis ​​( chmod +x test.py) e criando #!/usr/bin/env pythona primeira linha. Depois de fazer isso, a execução test.py argschamará python para executar seu script. Leia sobre o shebang 's se você quiser saber mais.

jw013
fonte
Isso não funcionou para mim. $ test.py 30deu um erro bash: -bash: test.py: command not found. Obrigado por sua ajuda até agora!
ACarter
8
@ Carter Isso é porque não está no seu $PATH. Ou usar um caminho, como /path/to/test.pyou ./test.pyse você estiver em /path/tojá, ou adicionar /path/toao seu $PATH. Existem muitas perguntas duplicadas neste site sobre o último.
Jw013
Assim que você colocar algo no seu $PATH, deixe de fora as terminações de arquivos como .py.
Reactormonk
Você precisa da #!/usr/bin/env pythonparte superior do seu script antes de poder remover a extensão .py. Mas qualquer script que contenha essa invocação ou semelhante (por exemplo, #!/bin/shpara scripts de shell) pode ser nomeado sem uma extensão. Não tem nada a ver com se está no seu PATH ou não.
Michael Hampton
2
Só para esclarecer, as extensões não importam no mundo Unix, ao contrário do Windows. onde extensões gostam .EXEe .COMimportam. No entanto, a lógica por trás da remoção da extensão é que executáveis ​​genéricos devem ser executáveis ​​genéricos. O significado dessa tautologia é que os usuários querem apenas a funcionalidade e não precisam saber ou se importar se é Perl ou Python ou sh ou bash ou awk etc. - esse é um detalhe de implementação principalmente irrelevante. E, tornar um script executável e adicionar um shebang o torna um executável genérico.
Jw013 15/07
2

Em C, fica assim:

int main(int argc, char *argv[]) {

O argumento é o número de argumentos. Observe que o nome do programa / ferramenta conta.

Os argumentos em si acabam no vetor de argumento (ou matriz), argv.

Depois, há a parte complicada de escrever código para lidar com eles da maneira pretendida.

Em seguida, compile com o gcc. Você especifica o nome do programa com o -osinalizador (outfile). Execute o arquivo do diretório atual como este: ./tool_name input_file_1 ... input_file_n(ou coloque-o em um diretório que aparece quando você escreve echo $PATH, então você pode invocá-lo de qualquer lugar, ou seja, sem o ponto).

Emanuel Berg
fonte
1

Eu uso Go. É uma linguagem compilada, multiplataforma, com a facilidade de programação de uma linguagem dinâmica e suporte para simultaneidade e comunicação.

Não voltarei ao Python, pois é muito engraçado desenvolver com o Go.

http://golang.org/
https://github.com/languages/Go

Aqui você tem um programa simples que obtém os argumentos usados ​​nesse comando:

package main

import (
  "fmt"
  "flag"
)

func main() {
  fmt.Println("Arguments: ", flag.Args())
}

http://play.golang.org/p/1dpUT11-cc

Marc
fonte
O Go é ótimo para alguns casos de uso direcionados; No entanto, comparando Go e Python para utilitários gerais é como comparar uma faca de caça (Go) com um canivete suíço (Python)
Mike Pennington
1
Go é uma linguagem de uso geral, que está sendo usada, ou seja, no Youtube, em aplicativos da Web ou na criação de jogos (existe um jogo terminado e outro em desenvolvimento). Além de ser usado em aplicativos CLI.
Marc
5
Ele só quer saber como criar um programa executável; nós realmente não precisa entrar em uma guerra de linguagem
Michael Mrozek