Di mana mulai membuat aplikasi CLI? [Tutup]

8

Setelah menggunakan linux selama satu atau dua bulan, saya tahu apa yang saya lakukan sekarang.

Saat membuat program, menggunakan bahasa apa pun, saya jelas telah menggunakan kode seperti ini:

$ python test.py

Jadi jika saya ingin test.pymembaca file yang diberikan, saya harus menggunakan:

$ python test.py something.file

Apa yang ingin saya lakukan sekarang, itu mencoba dan membuat aplikasi command line, jadi saya bisa menggunakannya

$ myapp something.file

Program seperti pythonin $ python test.py, atau nanoin$ nano program.pl

Tapi di mana saya mulai membangun aplikasi seperti ini? Sedikit trawl web membuat saya tidak punya tempat.

Jika Anda bisa memberi tahu saya sendiri itu akan bagus, tetapi saya akan siap menerima banyak tautan.

Saya benar-benar terbuka jika ada lebih dari satu cara, saya tidak terlalu keberatan dengan bahasa apa (alasan untuk belajar yang lain!) Atau apa pun.

ACarter
sumber
3
Apakah Anda ingin mempelajari pemrograman Unix C atau Anda hanya ingin dapat menjalankan skrip python Anda tanpa harus menentukan pythonbagian?
jw013
@ jw013 Saya ingin belajar pemrograman Unix C. (Meskipun saya akan tertarik untuk mengetahui bagaimana Anda dapat menjalankan skrip python tanpa python.)
ACarter
4
Anda mungkin harus memperbaiki pertanyaan Anda kemudian :) Aplikasi CLI dapat ditulis dalam bahasa apa pun yang memiliki kompiler atau penerjemah Unix, jadi jika Anda hanya tertarik pada C, katakan demikian. Pemrograman Unix C sebenarnya adalah dua bagian - bagian Unix dan bagian C. Seperti, "Bagaimana saya belajar pemrograman Unix C?" mungkin akan ditutup karena terlalu umum, dan mungkin ada duplikat di seluruh situs ini. "Bagaimana saya belajar pemrograman C" juga terlalu umum dan mungkin di luar topik juga. Itu pasti akan ditutup pada SO.
jw013
@ jw013 Yang benar-benar saya cari adalah saran seperti "Aplikasi CLI dapat ditulis dalam bahasa apa pun yang memiliki kompiler atau penerjemah Unix", jadi terima kasih.
ACarter
1
Ah, baiklah. Selalu ada sedikit punuk awal yang curam dalam kurva belajar ketika mencoba masuk ke lingkungan Unix, tetapi begitu Anda berhasil melewatinya, saya yakin Anda akan menemukan bahwa usaha itu sepadan. Sayangnya, saya tidak tahu ada satu sumber pun yang bisa saya tunjuk untuk memulai - Anda pada dasarnya harus mengambil potongan-potongan saat Anda pergi: \ Semoga beruntung untuk Anda dalam perjalanan Anda :)
jw013

Jawaban:

15

Anda bisa menjalankan skrip python dengan menjadikannya executable ( chmod +x test.py) dan membuat #!/usr/bin/env pythonbaris pertama. Setelah Anda melakukannya, menjalankan test.py argsakan memanggil python untuk menjalankan skrip Anda. Baca tentang shebang jika Anda ingin mempelajari lebih lanjut.

jw013
sumber
Itu tidak berhasil untuk saya. $ test.py 30memberikan kesalahan bash: -bash: test.py: command not found. Terima kasih atas bantuan Anda sejauh ini!
ACarter
8
@ ACarter Itu karena tidak ada di Anda $PATH. Gunakan jalur, suka /path/to/test.pyatau ./test.pyjika Anda /path/tosudah masuk, atau tambahkan /path/toke $PATH. Ada banyak pertanyaan rangkap di situs ini tentang yang terakhir.
jw013
Segera setelah Anda memasukkan sesuatu ke dalam $PATH, tinggalkan ujung file seperti .py.
Reactormonk
Anda memerlukan #!/usr/bin/env pythondi bagian atas skrip Anda sebelum Anda dapat menghapus ekstensi .py. Tetapi skrip apa pun yang berisi permintaan ini atau yang serupa (mis. #!/bin/shUntuk skrip shell) dapat dinamai tanpa ekstensi. Itu tidak ada hubungannya dengan apakah itu di PATH Anda atau tidak.
Michael Hampton
2
Untuk lebih jelasnya, ekstensi tidak penting di dunia Unix, tidak seperti di Windows. di mana ekstensi suka .EXEdan .COMpenting. Namun, alasan di balik penghapusan ekstensi adalah bahwa executable generik seharusnya hanya executable generik. Arti dari tautologi ini adalah pengguna hanya ingin fungsi dan tidak perlu tahu atau peduli apakah itu Perl atau Python atau sh atau bash atau awk dll - itu adalah detail implementasi yang sebagian besar tidak relevan. Dan, membuat skrip dapat dieksekusi dan menambahkan shebang membuatnya menjadi executable generik.
jw013
2

Di C, tampilannya seperti ini:

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

Argc adalah jumlah argumen. Perhatikan bahwa nama program / alat diperhitungkan.

Argumen itu sendiri berakhir pada vektor argumen (atau array), argv.

Lalu ada bagian rumit dari penulisan kode untuk berurusan dengan mereka dengan cara yang dimaksud.

Kemudian kompilasi dengan gcc. Anda menentukan nama program dengan -obendera (outfile). Jalankan file dari direktori saat ini seperti ini: ./tool_name input_file_1 ... input_file_n(atau letakkan di direktori yang muncul ketika Anda menulis echo $PATH, maka Anda dapat memintanya dari mana saja, yaitu, tanpa titik).

Emanuel Berg
sumber
1

Saya menggunakan Go. Ini adalah bahasa yang dikompilasi, lintas platform, dengan kemudahan pemrograman bahasa yang dinamis, dan dukungan untuk konkurensi dan komunikasi.

Saya tidak akan kembali ke Python karena sangat lucu untuk dikembangkan dengan Go.

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

Di sini Anda memiliki program sederhana yang menggunakan argumen yang digunakan dalam perintah itu:

package main

import (
  "fmt"
  "flag"
)

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

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

Marc
sumber
Go sangat bagus untuk beberapa kasus penggunaan yang ditargetkan; Namun, membandingkan Go dan Python untuk utilitas umum seperti membandingkan pisau berburu (Go) dengan pisau tentara swiss (Python)
Mike Pennington
1
Go adalah bahasa tujuan umum, yang digunakan yaitu di Youtube, dalam aplikasi web, atau untuk membangun game (ada permainan yang selesai dan yang lainnya sedang dikembangkan). Selain untuk digunakan dalam aplikasi CLI.
Marc
5
Dia hanya ingin tahu bagaimana membuat program yang dapat dieksekusi; kita tidak benar-benar perlu terlibat dalam perang bahasa
Michael Mrozek