Bash 别名来启动Python.py脚本

Bash 别名来启动Python.py脚本,bash,python-2.7,alias,shortcut,raspberry-pi2,Bash,Python 2.7,Alias,Shortcut,Raspberry Pi2,我试图创建一个别名来启动mystepper6.py、moveit.py和sudo ps ax,方法是将以下别名“放在sudo nano~/.bashrc中”(注意:我在这个脚本中使用Python 2) 别名重新启动可以正常工作,但其他方法都无法正常工作。我得到的只是“bash:runstepper:command-notfound” 我这样做是因为我试图用iPhone和iFreeRDP应用程序控制Raspberry Pi 2上的网络摄像头。我使用Windows 10笔记本电脑的远程桌面连接。此应

我试图创建一个别名来启动mystepper6.py、moveit.py和sudo ps ax,方法是将以下别名“放在sudo nano~/.bashrc中”(注意:我在这个脚本中使用Python 2)

别名重新启动可以正常工作,但其他方法都无法正常工作。我得到的只是“bash:runstepper:command-notfound”

我这样做是因为我试图用iPhone和iFreeRDP应用程序控制Raspberry Pi 2上的网络摄像头。我使用Windows 10笔记本电脑的远程桌面连接。此应用程序和其他一些类似应用程序的问题是句点和空格键不起作用(这是一个已知报告的问题)。这使得键入完整命令变得不可能

顺便说一句,我试图使用VNC Viewer iPhone应用程序,但当我将所需软件加载到RPi2上时,我的Raspberry Pi 2被劫持,要求我获得一张新的SD卡。幸运的是,几小时前我刚刚克隆了我的SD卡。说来话长,但我现在对使用VNC查看器感到非常厌倦


请帮我输入别名,这样我就可以键入一个没有空格或句点的单词,或者创建一个桌面快捷方式,我可以双击它,这样我就可以用它来解决这些好应用程序的不足。我不确定Ctrl+C是否能在应用程序键盘上工作,因此,一条捷径也不错。

要在shell中创建别名,您应该使用shell指令:

alias reboot='sudo reboot'
alias ax='sudo ps ax'
要运行
ps ax
您不需要先运行
sudo
。如果您运行的是标准内核,任何用户都可以看到没有特殊权限的所有进程的列表

对于两个python别名:

alias runstepper='python home/pi/mystepper6.py'
alias moveit='sudo python home/pi/moveit.py'
                          ^-- missing / here
不要忘记路径中的第一个
/
,或者无论何时启动aliased命令,python都会根据当前目录查找脚本。i、 e.如果您在
/home/pi
中,它将在
/home/pi/home/pi/movestepar6.py
中查找该脚本,并告诉您该脚本不存在。因此,正确的命令应该是:

alias runstepper='python /home/pi/mystepper6.py'
alias moveit='sudo python /home/pi/moveit.py'

不过,作为一个建议,我不需要为运行python脚本制作别名,而是将它们制作成一个合适的python包。考虑到在两个代码中,您的入口点都是一个名为
main()
的函数,即两个脚本都以以下内容结尾:

if __name__ == "__main__":
    main()
您应该为项目创建一个目录:

cd /home/pi
# create a directory for your python project:
mkdir motion_control
# create a directory to place your scripts within:
mkdir motion_control/motion_control
# adding an empty __init__.py file makes that directory a python package
touch motion_control/motion_control/__init__.py
nano motion_control/setup.py
现在您只需在setup.py文件中添加以下内容:

from setuptools import setup

setup(name='motion_control',
      version='0.1',
      description="Python library to operate stuff that move on my rasppi",
      long_description='explain how to use the tools installed by this package',
      classifiers=[],
      keywords='raspberrypi motion control',
      author='YOU',
      author_email='YOUR@EMAIL',
      url='ANY URL YOU THINK IS RELEVANT',
      license='MIT', # or any license you think is relevant
      packages=['motion_control'],
      zip_safe=False,
      install_requires=[
          # add here any tool that you need to install via pip 
          # to have this package working
          'setuptools',
      ],
      entry_points="""
      # -*- Entry points: -*-
      [console_scripts]
      runstepper = motion_control.mystepper6:main
      moveit = motion_control.moveit:main
      """,
)
entry\u points
部分非常重要,因为它告诉python在哪里查找要执行的第一个函数以运行脚本。例如:

      moveit = motion_control.moveit:main
表示“在运动控制包中的moveit模块中查找main()函数”。因此,相应地进行调整!注意:不要让
main()
函数接受任何参数,而是在其中进行参数解析(如果您解析参数)

最后,要安装它,您只需执行以下操作:

cd motion_control
sudo python setup.py install
您将在python可执行文件所在的目录中安装
runstepper
moveit


HTH

您的
reboot='sudo reboot'
可以正常工作,这是完全出乎意料的。这些“别名”是不可能正常工作的。其他一些东西正在使
重新启动
工作。感谢您所做的所有工作。我会试试看,然后再给你回复。谢谢这些别名在不同的计算机上以及在电源打开和关闭后是否可以工作?我问这个问题的原因是,别名“ax”在从我的笔记本电脑访问RPi时工作得很好,但在我使用iPhone 6中的iFreeRDP时,它给了我相同的错误消息;刚刚出现“bash:ax:command not found”错误。此外,当我从笔记本电脑注销并重新登录然后进入RPi时,“ax”别名不再被识别(出现相同的bash错误)。有没有办法将它放入RPi中,以便在我需要它的时候或任何地方都可以使用它?您需要将这些行添加到您的
/home/pi/.bashrc
(在其他计算机上,无论您使用的是什么用户名),它几乎可以工作。。。runmystepper有一个“IOError:[Errno13]权限被拒绝:'/home/pi/vert.txt”。mystepper6.py运行两个步进器,并将最后一个位置保存在一个.txt文件中,因此当电源重新打开时,它们从.txt文件中读取数据以找到主页。这两个文件是vert.txt和horz.txt,位于mystepper6.py所在的同一位置。另外,我如何为kill-s kill 465(下次可能不是465)创建别名。我必须从ps ax查找kill进程,但问题是kill和465之间的空间需要正确处理。
cd motion_control
sudo python setup.py install