Wo kann ich mit der Erstellung von CLI-Anwendungen beginnen? [geschlossen]

8

Nachdem ich ein oder zwei Monate lang Linux verwendet habe, weiß ich, was ich jetzt mache.

Beim Erstellen von Programmen in einer beliebigen Sprache habe ich offensichtlich folgenden Code verwendet:

$ python test.py

Wenn ich also test.pyeine bestimmte Datei lesen wollte , musste ich Folgendes verwenden:

$ python test.py something.file

Was ich jetzt tun möchte, ist es, eine Befehlszeilenanwendung zu erstellen, damit ich sie verwenden kann

$ myapp something.file

Ein Programm wie das pythonin $ python test.pyoder das nanoin$ nano program.pl

Aber wo um alles in der Welt beginne ich mit der Erstellung solcher Anwendungen? Ein bisschen Web-Trawling hat mich nicht weiter gebracht.

Wenn Sie mir selbst sagen können, wäre das großartig, aber ich werde gerne eine Reihe von Links akzeptieren.

Ich bin völlig offen, wenn es mehr als einen Weg gibt. Es macht mir nichts aus, welche Sprache (eine Ausrede, um eine andere zu lernen!) Oder was auch immer.

ACarter
quelle
3
Möchten Sie die Unix C-Programmierung lernen oder möchten Sie nur Ihre Python-Skripte ausführen können, ohne den pythonTeil angeben zu müssen?
jw013
@ jw013 Ich möchte Unix C-Programmierung lernen. (Obwohl ich interessiert wäre zu wissen, wie Sie Python-Skripte ohne die python
ausführen können
4
Sie sollten Ihre Frage dann wahrscheinlich beheben :) CLI-Anwendungen können in jeder Sprache geschrieben werden, die einen Unix-Compiler oder -Interpreter hat. Wenn Sie also nur an C interessiert sind, sagen Sie es. Die Unix C-Programmierung besteht eigentlich aus zwei Teilen - dem Unix-Teil und dem C-Teil. Wie lerne ich Unix C-Programmierung? wird wahrscheinlich geschlossen, weil es zu allgemein ist, und es gibt wahrscheinlich Duplikate auf dieser Seite. "Wie lerne ich C-Programmierung?" Ist ebenfalls zu allgemein und möglicherweise auch nicht zum Thema gehörend. Es würde sicherlich auf SO geschlossen werden.
jw013
@ jw013 Was ich wirklich suche, sind Ratschläge wie "CLI-Anwendungen können in jeder Sprache geschrieben werden, die einen Unix-Compiler oder -Interpreter hat", also danke.
ACarter
1
Ah, ok. Es gibt immer einen steilen anfänglichen Buckel in der Lernkurve, wenn Sie versuchen, in die Unix-Umgebung zu gelangen, aber wenn Sie es einmal hinter sich gebracht haben, werden Sie sicher feststellen, dass sich die Mühe gelohnt hat. Leider kenne ich keine Ressource, auf die ich verweisen kann, um loszulegen - Sie müssen im Grunde genommen
Kleinigkeiten aufheben

Antworten:

15

Sie können Python-Skripte ausführen, indem Sie sie ausführbar machen ( chmod +x test.py) und #!/usr/bin/env pythondie erste Zeile erstellen. Sobald Sie dies tun, wird beim Ausführen test.py argsPython aufgerufen, um Ihr Skript auszuführen. Lesen Sie mehr über Shebangs , wenn Sie mehr erfahren möchten.

jw013
quelle
Das hat bei mir nicht funktioniert. $ test.py 30gab einen Bash-Fehler : -bash: test.py: command not found. Vielen Dank für Ihre bisherige Hilfe!
ACarter
8
@ACarter Das liegt daran, dass es nicht in deinem ist $PATH. Verwenden Sie entweder einen Pfad wie /path/to/test.pyoder, ./test.pywenn Sie /path/tobereits vorhanden sind, oder fügen Sie /path/toIhren hinzu $PATH. Auf dieser Seite gibt es viele doppelte Fragen zu letzterem.
jw013
Sobald Sie etwas in Ihre $PATHDatei eingefügt haben, lassen Sie Dateiendungen wie .py.
Reactormonk
Sie benötigen das #!/usr/bin/env pythonoben in Ihrem Skript, bevor Sie die Erweiterung .py entfernen können. Jedes Skript, das diesen oder einen ähnlichen Aufruf enthält (z. B. #!/bin/shfür Shell-Skripte), kann jedoch ohne Erweiterung benannt werden. Es hat nichts damit zu tun, ob es in Ihrem Pfad ist oder nicht.
Michael Hampton
2
Um ganz klar zu sein, spielen Erweiterungen in der Unix-Welt im Gegensatz zu Windows keine Rolle. wo Erweiterungen mögen .EXEund .COMwichtig sind. Der Grund für das Entfernen der Erweiterung ist jedoch, dass generische ausführbare Dateien nur generische ausführbare Dateien sein sollten. Die Bedeutung dieser Tautologie ist, dass die Benutzer nur die Funktionalität wünschen und nicht wissen oder sich darum kümmern müssen, ob es sich um Perl oder Python oder sh oder bash oder awk usw. handelt - das ist ein größtenteils irrelevantes Implementierungsdetail. Wenn Sie ein Skript ausführbar machen und einen Shebang hinzufügen, wird es zu einer generischen ausführbaren Datei.
jw013
2

In C sieht es so aus:

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

Das Argument ist die Anzahl der Argumente. Beachten Sie, dass der Name des Programms / Werkzeugs zählt.

Die Argumente selbst enden im Argumentvektor (oder Array) argv.

Dann gibt es den schwierigen Teil des Schreibens von Code, um mit ihnen auf die beabsichtigte Weise umzugehen.

Dann kompiliere mit gcc. Sie geben den Namen des Programms mit dem -oFlag (outfile) an. Führen Sie die Datei aus dem aktuellen Verzeichnis wie folgt aus: ./tool_name input_file_1 ... input_file_n(oder legen Sie sie in einem Verzeichnis ab, das beim Schreiben angezeigt wird echo $PATH, und rufen Sie sie dann von überall auf, dh ohne Punkt).

Emanuel Berg
quelle
1

Ich benutze Go. Es ist eine kompilierte Sprache, plattformübergreifend, mit der einfachen Programmierung einer dynamischen Sprache und Unterstützung für Parallelität und Kommunikation.

Ich gehe nicht zurück zu Python, da es sehr lustig ist, mit Go zu entwickeln.

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

Hier haben Sie ein einfaches Programm, das die in diesem Befehl verwendeten Argumente abruft:

package main

import (
  "fmt"
  "flag"
)

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

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

Marc
quelle
Go eignet sich hervorragend für einige gezielte Anwendungsfälle. Der Vergleich von Go und Python für allgemeine Dienstprogramme ist jedoch wie der Vergleich eines Jagdmessers (Go) mit einem Schweizer Taschenmesser (Python)
Mike Pennington
1
Go ist eine Allzwecksprache, die beispielsweise in Youtube, in Webanwendungen oder zum Erstellen von Spielen verwendet wird (es ist ein Spiel fertig und ein anderes in der Entwicklung). Zusätzlich zur Verwendung in CLI-Anwendungen.
Marc
5
Er möchte nur wissen, wie man ein ausführbares Programm erstellt. Wir müssen nicht wirklich in einen Sprachkrieg geraten
Michael Mrozek