https://robot.czxy.com/car/
ls常用参数
ls -a : 查看当前所有文件和目录,包含隐藏文件和目录。
ls -l : 以列表形式查看所有文件和目录。
ll 等同于ls -al 即等同于以上两个命令结合。
通配符
ls te* : 查看所有以te开头的文件和目录。
ls .txt: 查看所有以.txt结尾的文件及目录。
ls te[sx]t : 将匹配test或text
clear清屏命令
也可使用快捷键:Ctrl + l
cd切换目录
cd: 切换到当前用户的主目录(/home/用户目录),用户登陆时,默认的目录就是用户的主目录。
cd ~: 切换到当前用户的主目录(/home/用户目录)。
cd . :切换到当前目录。
cd … :切换到上级目录。
cd - : 可进入上次所在的目录。
cd / : 切换到系统根目录/
pwd显示当前路径
mkdir创建目录
通过mkdir命令可以创建一个新的目录。参数-p可递归创建目录。
mkdir TestDir
mkdir -p a/b/c/d
touch 创建文件
用户可以通过touch来创建一个空的文件:
touch hello.txt
rm 删除文件
rm -f :强制删除
rm -r test_dir: 删除目录。
rm xxx.txt aaa.txt :删除文件,一次可删除多个
rmdir test_dir: 删除目录,但必须保证被删除目录里为空。
cp 拷贝文件及目录
cp file.txt abc/: 将当前目录的file.txt拷贝到abc目录。
cp abc/.txt . :将abc目录下的所有txt文件拷贝到当前目录。
cp -r abc aaa :将abc目录拷贝为aaa目录(包含所有子目录及文件)
mv 移动、重命名
mv a.md abc.txt: 将a.md重命名为abc.txt。
mv abc.txt ./aaa:将abc.txt移动到当前的aaa目录中。
echo控制台输出
echo “HelloWorld” : 向控制台输出helloworld信息。
输出重定向
ls > test.txt :test.txt如果不存在,则创建,存在则覆盖其内容。
注意:>输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部。
cat查看&合并文件内容
cat xxx.py : 可以用来快速查看某个文件内容,输出到控制台。
cat test.txt >>haha.txt :将test.txt的内容追加到haha.txt中。
cat 1.txt 2.txt >1_2.txt : 将1.txt 2.txt内容合并到1_2.txt中。
tar归档管理
打包并压缩:
tar -czvf xxx.tar.gz * : 当前目录所有文件。
tar -czvf xxx.tar.gz *.txt : 以.txt结尾的文件。
tar -czvf xxx.tar.gz my-file my-dir : 打包制定目录或文件。
解压缩包:
tar -xzvf xxx.tar.gz : 解包到当前目录。
tar -xzvf xxx.tar.gz -C my-dir : 解包到指定目录,需要先创建my-dir目录。
zip、unzip文件压缩解压
压缩文件:zip[-r] 目标文件(没有扩展名) 源文件
zip bak * : 压缩当前目录所有文件,也可以指定文件。
zip -r bak * : 压缩当前目录所有文件&目录递归。
解压文件:unzip -d 解压后目录文件 压缩文件
unzip -d ./target_dir bak.zip : 解压到指定目录。
unzip bak.zip : 解压到当前目录。
scp 远程拷贝文件
从远程复制文件到本地
scp [email protected]:/home/poplar/xxx.tar.gz /home/test/
从本地复制文件到远程
scp /home/test/xxx.png [email protected]:/home/poplar/
从远程复制目录到本地 -r
scp -r [email protected]:/home/poplar/day01 /home/test/
从本地复制目录到远程 -r
scp -r /home/test/day01 [email protected]:/home/poplar/
wget 文件下载
下载普通文件
wget http://p1.qhimgs4.com/t01ce0387e64e3428ca.jpg
以指定文件名保存文件
wget -O girl.jpg http://p1.qhimgs4.com/t01ce0387e64e3428ca.jpg
断点续传
wget -c http://p1.qhimgs4.com/t01ce0387e64e3428ca.jpg
tree 目录树状结构
使用tree命令可以查看指定目录的树状结构
which 查看命令位置
有时我们想知道被执行的命令在哪个目录,以方便切换或更新不同版本,如Python。可以使用which 命令
poplar@PoplarTang:~/Lesson$ which python
/usr/bin/python
poplar@PoplarTang:~/Lesson$ which ls
/bin/ls
reboot、shutdown 关机重启
reboot 重新启动操作系统
shutdown –r now 重新启动操作系统,shutdown会给别的用户提示
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:25 系统在今天的20:25 会关机
shutdown -h +10 系统再过十分钟后自动关机
ifconfig 查看ip地址
ssh 连接远程电脑
ssh [email protected]
chmod 修改文件权限
chmod u/g/o/a +/-/= rwx 文件
u user 表示该文件的所有者
g group 表示与该文件的所有者属于同一组( group )者,即用户组
o other 表示其他以外的人
a all 表示这三者皆是
from PyQt5.QtGui import QIcon,QPixmap
# from PyQt5.QtWidgets import *
# import sys
# from PyQt5.QtCore import *
#
#
# app = QApplication(sys.argv)
# window = QWidget()
#
# window.setWindowTitle("无人小车")
# icon=QIcon('D://网页下载//icon32//1.png')
# window.setWindowIcon(icon)
# #用label控件显示图像
# # label = QLabel()
# # pixmap = QPixmap('D://网页下载//icon32//1.jpg')
# # label.setPixmap(pixmap)
# # label.setParent(window)
# # window.resize(pixmap.width(),pixmap.height())
#
# # #输入框
# # edit = QLineEdit()
# # #设置输入框显示模式
# # edit.setEchoMode(QLineEdit.Normal)
# # #设置输入框提示
# # edit.setPlaceholderText("请输入用户名")
# # edit.setText('张三')
# # text = edit.text()
# # edit.setMaxLength(10)
# # edit.setParent(window)
#
# #按钮
#
# def my_click():
# QMessageBox.about(window, 'title', '登陆成功')
#
# btn = QPushButton()
# btn.setText('登陆')
# btn.setToolTip('登陆按钮')
# btn.setParent(window)
#
# window.show()
# btn.clicked.connect(my_click)
# sys.exit(app.exec())
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import serial
import struct
class MyWindow(QWidget):
def __init__(self):
super(MyWindow, self).__init__()
self.__init_ui()
count = 0
while count < 10:
count += 1
try:
self.ser = serial.Serial(port='/dev/ttyUSB0', baudrate=115200)
# 如果出错了,后面的代码就不执行了
# 能到达这个位置说明,链接成功
break
except Exception as e:
print(e)
def __init_ui(self):
self.setWindowTitle('下位机控制')
layout = QHBoxLayout()
self.setLayout(layout)
first_layout = QVBoxLayout()
second_layout = QVBoxLayout()
layout.addLayout(first_layout)
layout.addLayout(second_layout)
self.__init_first(first_layout)
self.__init_second(second_layout)
def __init_first(self, layout):
led_group = QGroupBox('LED控制')
layout.addWidget(led_group)
led_layout = QVBoxLayout(led_group)
self.__init_led_layout(led_layout)
buzzer_group = QGroupBox('蜂鸣器控制')
layout.addWidget(buzzer_group)
buzzer_layout = QVBoxLayout(buzzer_group)
self.__init_buzzer_layout(buzzer_layout)
def __init_led_layout(self, layout):
btn_open = QPushButton('打开LED')
btn_close = QPushButton('关闭LED')
btn_toggle = QPushButton('开关LED')
layout.addWidget(btn_open)
layout.addWidget(btn_close)
layout.addWidget(btn_toggle)
btn_open.clicked.connect(self.led_open)
btn_close.clicked.connect(self.led_close)
btn_toggle.clicked.connect(self.led_toggle)
def __init_buzzer_layout(self, layout):
btn_open = QPushButton('打开蜂鸣器')
btn_close = QPushButton('关闭蜂鸣器')
btn_toggle = QPushButton('开关蜂鸣器')
layout.addWidget(btn_open)
layout.addWidget(btn_close)
layout.addWidget(btn_toggle)
btn_open.clicked.connect(self.buzzer_open)
btn_close.clicked.connect(self.buzzer_close)
btn_toggle.clicked.connect(self.buzzer_toggle)
def __init_second(self, layout):
motor_group = QGroupBox('电机控制')
layout.addWidget(motor_group)
motor_layout = QVBoxLayout(motor_group)
self.__init_motor_layout(motor_layout)
oled_group = QGroupBox('OLED控制')
layout.addWidget(oled_group)
oled_layout = QVBoxLayout(oled_group)
self.__init_oled_layout(oled_layout)
def __init_motor_layout(self, layout):
self.__le_motor = QLineEdit()
btn = QPushButton("发送")
layout.addWidget(self.__le_motor)
layout.addWidget(btn)
btn.clicked.connect(self.motor_spin)
def __init_oled_layout(self, layout):
self.__le_oled = QLineEdit()
btn = QPushButton("发送")
layout.addWidget(self.__le_oled)
layout.addWidget(btn)
btn.clicked.connect(self.oled_show)
def led_open(self):
# 字节数据
data = bytearray([0x01, 0x01])
self.ser.write(data)
def led_close(self):
# 字节数据
data = bytearray([0x01, 0x02])
self.ser.write(data)
def led_toggle(self):
# 字节数据
data = bytearray([0x01, 0x03])
self.ser.write(data)
def buzzer_open(self):
# 字节数据
data = bytearray([0x02, 0x01])
self.ser.write(data)
def buzzer_close(self):
# 字节数据
data = bytearray([0x02, 0x02])
self.ser.write(data)
def buzzer_toggle(self):
# 字节数据
data = bytearray([0x02, 0x03])
self.ser.write(data)
def motor_spin(self):
text = self.__le_motor.text()
pwm = int(text)
pack = struct.pack('h', pwm)
data = bytearray([0x03, pack[0], pack[1]])
self.ser.write(data)
def oled_show(self):
text = self.__le_oled.text()
data = bytearray([0x04])
data.extend(text.encode())
self.ser.write(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())