Dove iniziare a creare applicazioni CLI? [chiuso]


8

Dopo aver usato Linux per un mese o due, so cosa sto facendo ora.

Quando ho creato programmi, usando qualunque linguaggio, ovviamente ho usato codice come questo:

$ python test.py

E quindi se volessi test.pyleggere un determinato file, dovrei usare:

$ python test.py something.file

Quello che mi piacerebbe fare ora è provare a creare un'applicazione da riga di comando, così posso usarla

$ myapp something.file

Un programma come pythonin $ python test.pyo nanoin$ nano program.pl

Ma da dove comincio a costruire applicazioni come queste? Un po 'di pesca a strascico non mi ha portato da nessuna parte.

Se puoi dirmi che sarebbe fantastico, ma accetterò prontamente un sacco di link.

Sono totalmente aperto se c'è più di un modo, non mi dispiace davvero quale lingua (una scusa per impararne un altro!) O qualunque altra cosa.


3
Vuoi imparare la programmazione Unix C o vuoi solo essere in grado di eseguire i tuoi script Python senza dover specificare la pythonparte?
jw013,

@ jw013 Voglio imparare la programmazione Unix C. (Anche se sarei interessato a sapere come è possibile eseguire script Python senza il python.)
ACarter

4
Probabilmente dovresti risolvere la tua domanda quindi :) Le applicazioni CLI possono essere scritte in qualsiasi lingua che abbia un compilatore o un interprete Unix, quindi se sei interessato solo a C, dillo. La programmazione Unix C è in realtà composta da due parti: la parte Unix e la parte C. Come è, "Come posso imparare la programmazione Unix C?" probabilmente verrà chiuso per essere troppo generico e probabilmente ci sono duplicati in tutto questo sito. "Come imparo la programmazione in C" è anche troppo generale e forse anche fuori tema. Sarebbe sicuramente chiuso su SO.
jw013,

@ jw013 Quello che sto veramente cercando è un consiglio come "Le applicazioni CLI possono essere scritte in qualsiasi lingua che abbia un compilatore o un interprete Unix", quindi grazie.
ACarter

1
Ah ok. Quando si cerca di entrare nell'ambiente Unix, c'è sempre una leggera gobba iniziale nella curva di apprendimento, ma una volta superato, sono sicuro che ne valga la pena. Sfortunatamente, non conosco nessuna risorsa a cui posso puntare per iniziare: in pratica devi raccogliere frammenti mentre
procedi

Risposte:


15

È possibile eseguire script Python rendendoli eseguibili ( chmod +x test.py) e creando #!/usr/bin/env pythonla prima riga. Una volta fatto ciò, l'esecuzione test.py argsinvocherà Python per eseguire lo script. Leggi di Shebang se vuoi saperne di più.


Non ha funzionato per me. $ test.py 30ha dato un errore di bash: -bash: test.py: command not found. Grazie per il tuo aiuto finora!
ACarter

8
@ACarter Questo perché non è nel tuo $PATH. Usa un percorso, come /path/to/test.pyo ./test.pyse sei /path/togià dentro , o aggiungi /path/toal tuo $PATH. Ci sono molte domande duplicate su questo sito su quest'ultimo.
jw013,

Non appena metti qualcosa nel tuo $PATH, lascia fuori i finali di file come .py.
Reactormonk,

È necessario #!/usr/bin/env pythonnella parte superiore dello script prima di poter rimuovere l'estensione .py. Ma qualsiasi script che contiene questa invocazione o qualcosa di simile (ad es. #!/bin/shPer gli script di shell) può essere nominato senza estensione. Non ha nulla a che fare con il fatto che sia nel tuo PERCORSO o meno.
Michael Hampton,

2
Per essere chiari, le estensioni non contano nel mondo Unix, a differenza di Windows. dove le estensioni piacciono .EXEe .COMcontano. Tuttavia, la logica alla base della rimozione dell'estensione è che gli eseguibili generici dovrebbero essere solo eseguibili generici. Il significato di questa tautologia è che gli utenti vogliono solo la funzionalità e non dovrebbero avere bisogno di sapere o preoccuparsi se si tratta di Perl o Python o sh o bash o awk ecc. - Questo è un dettaglio di implementazione per lo più irrilevante. Inoltre, rendere eseguibile uno script e aggiungere uno shebang lo rende un eseguibile generico.
jw013,

2

In C, assomiglia a questo:

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

L'argc è il numero di argomenti. Si noti che il nome del programma / strumento conta.

Gli argomenti stessi finiscono nel vettore argomento (o array), argv.

Poi c'è la parte difficile della scrittura del codice per gestirli nel modo previsto.

Quindi compilare con gcc. Si specifica il nome del programma con il -oflag (outfile). Esegui il file dalla sua directory corrente in questo modo: ./tool_name input_file_1 ... input_file_n(o mettilo in una directory che appare quando scrivi echo $PATH, quindi puoi invocarlo da qualsiasi luogo, cioè senza il punto).


1

Io uso Go. È un linguaggio compilato, multipiattaforma, con la facilità di programmazione di un linguaggio dinamico e il supporto per la concorrenza e la comunicazione.

Non tornerò su Python poiché è molto divertente svilupparsi con Go.

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

Qui hai un semplice programma che ottiene gli argomenti usati in quel comando:

package main

import (
  "fmt"
  "flag"
)

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

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


Go è ottimo per alcuni casi d'uso mirati; tuttavia, confrontare Go e Python con le utility generali è come confrontare un coltello da caccia (Go) con un coltellino svizzero (Python)
Mike Pennington,

1
Go è un linguaggio generico, che viene utilizzato, ad esempio, su Youtube, nelle applicazioni Web o per creare giochi (c'è un gioco finito e un altro in fase di sviluppo). Oltre a essere utilizzato nelle applicazioni CLI.
Marc,

5
Vuole solo sapere come creare un programma eseguibile; non abbiamo davvero bisogno di entrare in una guerra linguistica
Michael Mrozek
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.