2017-08-21 189 views
0

我被要求製作一個解析令牌的python程序。僅使用程序名從命令行運行Python程序

的用法如下:

$ cat input.txt | program "some text %{0} and %{1S3}" > output.txt

,但我可以管理最好的是:

$ cat input.txt | py program.py "some text %{0} and %{1S3}" > output.txt

,或者如果我使腳本可執行文件,刪除文件擴展名,我在當前目錄中

$ cat input.txt | ./program "some text %{0} and %{1S3}" > output.txt

有沒有辦法讓我用python腳本來使用第一個示例的執行風格?理想情況下,我也可以在任何地方使用它,而不必在指向包含該程序的目錄時使用它。

編輯:我已經試過這樣:

這裏就是我想 -

$ cd projects/token_parser/ 
$ ln -s grap /usr/local/bin/grap 
ln: failed to create symbolic link '/usr/local/bin/grap': Permission denied 
$ sudo ln -s grap /usr/local/bin/grap 
[sudo] password for fosssaintdross: 
$ grap 
bash: grap: command not found 
+0

爲什麼不只是從您的python腳本讀取和寫入文件? – Dadep

+0

這是一個面試的代碼試鏡,所以我試圖儘可能匹配他們的規範。 –

+1

提示:'PATH' ... – twalberg

回答

1

你需要確保包含program.py的位置是在PATH環境變量。或者,您可以從已經在列表中的路徑鏈接到它,例如:

ln -s /path/to/program.py /usr/local/bin/program 
+1

如果你實際上有'/ usr/local'的寫入權限,那麼做一個正確的安裝通常是一個好得多的主意,而不是把任意的符號鏈接引入'/ usr/local/bin'。 – chepner

+0

我已經添加了一些更多信息。 –

+0

嘗試鏈接到完整路徑 – Yigal