更多详情请查看Honker
Python | 向Linux添加自定义的命令
Linux是一个有高度自由度的系统,并且开源,因此,我们就可以根据自己的方便、喜好等去自定义一些功能、命令。
那么今天,我就将我们之前编写过的more.py变成可在终端使用的命令。
终端的命令都存储在哪里
由图可见,命令主要存储在"/bin", “/usr/bin”, “/sbin”, “/usr/sbin”, “/usr/local/sbin"等之下,我们主要用”/usr/bin"
复制more.py
alone@alone-Vostro-14-5401:/media/alone/Coding/Python/Python项目/PP4E-Examples-1
.4/Examples/PP4E/System$ cp more.py /usr/bin
cp: 无法创建普通文件'/usr/bin/more.py': 权限不够
alone@alone-Vostro-14-5401:/media/alone/Coding/Python/Python项目/PP4E-Examples-1
.4/Examples/PP4E/System$ sudo cp more.py /usr/bin
[sudo] alone 的密码:
alone@alone-Vostro-14-5401:/media/alone/Coding/Python/Python项目/PP4E-Examples-1
.4/Examples/PP4E/System$ cd /usr/bin
修改more.py
我们需要向原程序开头中添加#!/usr/bin/env python
一行,看不懂的详见#!的作用。
!!!注意 :我在之后还遇到一个问题,修改多次都无功而返:
alone@alone-Vostro-14-5401:/usr/bin$ sudo vim more.py
alone@alone-Vostro-14-5401:/usr/bin$ more.py
/usr/bin/env: “python\r”: 没有那个文件或目录
alone@alone-Vostro-14-5401:/usr/bin$ sudo vim more.py
alone@alone-Vostro-14-5401:/usr/bin$ more.py
/usr/bin/env: “python\r”: 没有那个文件或目录
alone@alone-Vostro-14-5401:/usr/bin$ sudo vim more.py
alone@alone-Vostro-14-5401:/usr/bin$ more.py
/usr/bin/env: “pytho\r”: 没有那个文件或目录
alone@alone-Vostro-14-5401:/usr/bin$ sudo vim more.py
alone@alone-Vostro-14-5401:/usr/bin$ more.py
/usr/bin/env: “python\r”: 没有那个文件或目录
alone@alone-Vostro-14-5401:/usr/bin$ sudo vim more.py
alone@alone-Vostro-14-5401:/usr/bin$ more.py
解决方法详见处理方法:/usr/bin/env: “python\r”或者”bash\r”没有那个文件或目录。
成果展示
alone@alone-Vostro-14-5401:/usr/bin$ more.py more.py
#!/usr/bin/env python
"""
split and interactively page a string or file of text
"""
def more(text, numlines=15):
lines = text.splitlines() # like split('\n') but no '' at end
while lines:
chunk = lines[:numlines]
lines = lines[numlines:]
More?y
for line in chunk: print(line)
if lines and input('More?') not in ['y', 'Y']: break
if __name__ == '__main__':
import sys # when run, not importer
if len(sys.argv) == 1: more(sys.stdin.read())
else: more(open(sys.argv[1]).read(), 10) # page contents of file on cmdline