С чего начать создание CLI-приложений?

С чего начать создание CLI-приложений?

Попользовавшись Linux месяц или два, я теперь знаю, что делаю.

При создании программ на любом языке я, очевидно, использовал такой код:

$ python test.py

Итак, если бы я хотел test.pyпрочитать определенный файл, мне пришлось бы использовать:

$ python test.py something.file

Сейчас я хотел бы попробовать создать приложение командной строки, чтобы я мог использовать

$ myapp something.file

Программа типа pythonin $ python test.pyили nanoin$ nano program.pl

Но с чего же начать создание подобных приложений?Небольшое прочесывание интернета ни к чему не привело.

Если бы вы сами мне об этом рассказали, было бы здорово, но я с готовностью приму и кучу ссылок.

Я полностью открыт, если есть больше одного способа, мне все равно, какой язык (повод выучить еще один!) или что-то в этом роде.

решение1

Вы можете запустить скрипты python, сделав их исполняемыми ( chmod +x test.py) и создав #!/usr/bin/env pythonпервую строку. После того, как вы это сделаете, запуск test.py argsвызовет python для запуска вашего скрипта. Читайте опритон's, если вы хотите узнать больше.

решение2

На языке Си это выглядит так:

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

Argc — это количество аргументов. Обратите внимание, что имя программы/инструмента имеет значение.

Сами аргументы попадают в вектор аргументов (или массив) argv.

Затем следует сложная часть написания кода, который будет обрабатывать их должным образом.

Затем скомпилируйте с помощью gcc. Вы указываете имя программы с помощью -oфлага (outfile). Запустите файл из его текущего каталога следующим образом: ./tool_name input_file_1 ... input_file_n(или поместите его в каталог, который появляется, когда вы пишете echo $PATH, тогда вы можете вызывать его откуда угодно, т. е. без точки).

решение3

Я использую Go. Это компилируемый язык, кроссплатформенный, с простотой программирования динамического языка и поддержкой параллелизма и коммуникации.

Я не буду возвращаться к Python, так как разрабатывать на Go очень забавно.

http://golang.org/
https://github.com/languages/Перейти

Вот простая программа, которая получает аргументы, используемые в этой команде:

package main

import (
  "fmt"
  "flag"
)

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

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

Связанный контент