由于我的本科毕设是机器视觉相关的内容,要用到 Python,所以花一点时间大致学一遍。

跟着 Python_黑马程序员_bilibili 学的。

课程安排

  • Linux 基础
  • Python 基础
  • Python 面向对象
  • 项目实战

操作系统

想在裸机上运行自己编写的程序,就必须用机器语言书写程序。
如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序。

一些主流的操作系统

  • Windows
  • macOS
  • Linux

鸿蒙系统的内核就包括 Linux。
鸿蒙系统架构图


Linux 命令

最常用的 7 个命令

  • ls
  • pwd
  • cd
  • touch
  • mkdir
  • rm
  • clear

Linux 终端命令格式

command [-options] [parameter]

说明:

  • command:命令名,相应功能单词的缩写
  • [-options]:选项,用来对命令进行控制
  • [parameter]:传给命令的参数,可以是零个、一个或多个

中括号表示有时可省略。

查阅命令帮助信息

command --help
man command

man 是 manual 的缩写。

使用 man 时的操作键:

操作键 功能
空格键 显示手册页的下一屏
Enter 键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索 word 字符串

自动补全

在敲出 文件目录命令 的前几个字母之后,按下 tab

  • 如果输入的没有歧义,系统会自动补全
  • 如果还存在其他 文件目录命令,再按一下 tab 键,系统会提示可能存在的命令

ls 命令说明

ls 类似于 DOS 下的 dir 命令。
常用选项

  • -a,all,可显示隐藏文件。
  • -l,以列表方式显示文件的详细信息
  • -h,配合 -l 以人性化的方式显示文件大小

ls 通配符的使用

  • *
    代表任意个数个字符(包括 0 个)

    注意文件后缀名也算是文件名:
  • ?
    代表任意一个字符

  • []
    表示可以匹配字符组中的任一一个

    • [abc]
      匹配 a、b、c 中的任意一个
    • [a-f]
      匹配从 a 到 f 范围内的的任意一个字符

cd 命令

命令 含义
cd 切换到当前用户的主目录(/home/用户目录)
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 保持在当前目录不变
cd .. 切换到上级目录
cd - 可以在最近两次工作目录之间来回切换

touch

  • 如果文件不存在,创建一个空白文件
  • 如果文件已经存在,修改文件的末次修改日期

mkdir

选项 -p 可以递归创建目录

目录和文件不能重名。

rm

删除文件或目录,删除后不能恢复,使用时要小心。

  • -f
    强制删除,忽略不存在的文件,无需提示
  • -r
    递归地删除目录下的内容,删除文件夹时必须加此参数

tree

以树状图列出文件目录结构。

常用选项 -d ,表示只显示目录

cp

复制文件或目录。
cp 源文件 目标文件

cp ~/Documents/readme.txt .

选项

  • -i:覆盖文件前提示

  • -r:若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

mv

移动文件或目录,也可以用来 重命名。位置不变,文件名变,就是重命名。
mv 源文件 目标文件
移动目录时不需要选项 -r

查看文件内容

  • cat
    concatenate,连续式查看文件内容
    选项:
    • -b:对非空输出行编号
    • -n:对所有行编号
  • more
    分屏式查看文件内容,操作方法和 man 命令中一样

文件内容少时适合用 cat,多时适合用 more

  • grep
    用法 grep 关键词 文件名 选项 - `-n`:显示匹配行及行号 - `-v`:显示不包含匹配文本的所有行(相当于求反) - `-i`:忽略大小写 常用的两种 模式查找(正则表达式)
    • ^a:行首,搜寻以 a 开头的行
    • ke$:行尾,搜寻以 ke 结束的行

echo

在终端中显示参数指定的文字,通常会和 重定向 联合使用。

echo 可以在创建文件时指定文件内容,用 touch 只能创建空文件。

重定向

Linux 允许将命令执行结果 重定向 到一个 文件,将本应显示在 终端 上的内容输出到指定 文件 中。

  • > 表示输出,会覆盖文件原有的内容
  • >> 表示追加,会将内容追加到已有文件的末尾

ls -lh >a

管道 |

可以将一个命令的输出通过 管道 做为另一个命令的输入。
| 的左右分为两端,左端写,右端读。

常用的管道命令有:

  • more:分屏显示内容
  • grep:在命令执行结果的基础上查询指定的文本

远程管理常用命令

关机、重启

  • shutdown:1 分钟后关机
  • shutdown -r now:立即重启
  • shutdown now:立即关机
  • shutdown 20:25:在今天的 20:25 关机
  • shutdown +10:10 分钟后关机
  • shutdown -c:取消之前的关机计划
  • reboot:重启

远程维护服务器时,最好不要关闭系统,而应该重新启动系统。

查看或配置网卡信息

网卡是一个专门负责网络通讯的硬件设备,IP 地址就是设置在网卡上的地址信息。
可以把电脑比作电话,网卡相当于SIM 卡,IP 地址相当于电话号码。

ifconfig

查看/配置计算机当前的网卡配置信息。
注意不是 ipconfig,而是 ifconfig

查看网卡对应的 IP 地址:ifconfig | grep inet

ping

ping IP地址:检测目标主机是否连接正常。
ping 127.0.0.1:检测本地网卡时是否工作正常。

SSH

简介

通过 SSH 客户端 可以连接到运行了 SSH 服务器 的远程机器上。客户端和服务器都是软件。SSH 下的数据传输是加密并且压缩的,安全、速度快。SSH 的默认端口号是 22

ssh [-p port] user@remote
  • user :在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote :远程机器的地址,可以是 IP 地址域名别名
  • port : SSH Server 监听的端口,如果不指定,就为默认值 22

scp命令

scp 即 secure copy,是在 Linux 下用来进行 远程拷贝文件 的命令,它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的。

# 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py

# 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
scp -P port user@remote:Desktop/01.py 01.py
# 加上 -r 选项可以传送文件夹
# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop

# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo

SSH 高级使用技巧

知道有这么回事就行,现用现拿。

  • 免密码登录
    ssh-keygen
    ssh-copy-id -p port user@remote
  • 配置别名
    ~/.ssh/config 里面追加以下内容:
    Host mac
        HostName ip地址
        User itheima
        Port 22

用户 / 组 相关命令

可以由管理员指定不同的文件或者目录下 每一个用户拥有的不同权限,包括 读(r)写(w)执行(x)
也可以预先针对 设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。

ls -l 详解

从左到右依次是:

  • 权限,第 1 个字符如果是 d 表示目录

  • 硬链接数
    就是有多少种方式可以访问到这个目录/文件,如

    • 绝对路径
    • cd .
    • cd ..

    也就是说,子目录越多,硬链接数越大

  • 拥有者,家目录下 文件/目录 的拥有者通常都是当前用户

  • ,很多时候会出现组名和用户名相同的情况

  • 大小

  • 时间

  • 名称

chmod

chmod +/-rwx 文件名/目录名

+ 表示增加权限,- 表示减少权限。

超级用户

root 账号通常用于系统的维护和管理,对操作系统所有的资源具有所有权限。
sudo,substitute user do,表示用其他身份(默认是 root)执行命令。

组管理

  • groupadd:添加组
  • groupdel:删除组
  • cat /etc/group:查看组信息
  • chgrp:修改 文件/目录 所属组

用户管理

用户管理要在管理员用户下进行,可以用 sudo

  • useradd:添加新用户
    • -m:自动建立用户家目录
    • -g:指定用户所在的组,否则建立一个和用户同名的组
  • passwd:设置用户密码
  • userdel:删除用户
    • -r:自动删除用户家目录
  • cat /etc/passwd | grep 用户名:确认用户信息
  • 查看用户信息
    • id [用户名]
    • who:查看当前所有登录的用户列表
    • whoami:查看当前登录用户的账户名
  • usermod:设置用户的 主组、附加组 和 登录Shell
    • -g:修改主组
    • -G:修改附加组
    • -s:修改 Shell
  • which:查看执行命令所在位置
    • /etc/passwd 是用于保存用户信息的文件
    • /usr/bin/passwd 是用于修改用户密码的程序
    • cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd 命令的位置
  • su - 用户名:切换用户
    • - 可以切换到用户家目录,否则保持当前目录不变
  • exit:退出当前登录账户
  • 修改文件权限
    • chown 用户名 文件名/目录民:修改拥有者
    • chgrp -R 组名 文件名/目录名:递归地修改组
    • chmod -R 755 文件名/目录名:递归地修改文件权限
    • chmod +/-rwx 文件名/目录名:直接修改 文件/目录 的 读/写/执行 权限,但是不能精确到 拥有者/组/其他

系统信息相关命令

  • 时间和日期
    • date:查看日期
    • cal:calendar,查看日历,-y 选项可以查看一年的日历
  • 磁盘和目录空间
    • df -h:disk free,显示磁盘剩余空间
    • du -h:disk usage,显示文件大小
    • -h:显示带单位
  • 进程信息
    • ps aux:process status,查看进程的详细状况,默认只会显示当前用户通过终端启动的应用程序
      • a:显示终端上的所有进程,包括其他用户的进程
      • u:显示进程的详细状态
      • x:显示包括不是终端启动的进程
    • top:动态显示运行中的进程并且排序。要退出 top 可以直接输入 q
    • kill [-9] 进程代号:终止指定代号的进程,-9 表示强行终止
      使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统崩溃

其他命令

查找文件 find

通常用来在特定的目录下搜索符合条件的文件。

find [路径] -name "*.py"

如果省略路径,表示在当前文件夹下查找。
find 还有很多其他的查找条件选项。

软链接

建立文件的软链接,类似于 Windows 下的快捷方式。

ln -s 被链接的源文件 链接文件

如果没有 -s 选项,建立的是一个 硬链接 文件,两个文件占用相同大小的硬盘空间。
源文件最好使用绝对路径,这样移动链接文件后,仍然能够正常使用。
文件的 硬链接数 == 0 就会被删除。使用 ls -l 可以查看一个文件的硬链接数量。

打包、压缩

在不同操作系统中,常用的打包压缩方式是不同的。打包与压缩是两回事。

  • Windows 常用 rar
  • Mac 常用 zip
  • Linux 常用 tar.gz

    打包 / 解包

    # 打包文件
    tar -cvf 打包文件.tar 被打包的文件/路径...
    # 解包文件
    tar -xvf 打包文件.tar
    选项说明
    选项 含义
    c 生成档案文件,创建打包文件
    x 解开档案文件
    v 列出归档解档的详细过程,显示进度
    f 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后

压缩 / 解压缩

tar 命令中有一个选项 -z 可以调用 gzip

# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...

# 解压缩文件
tar -zxvf 打包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
选项 含义
-C 解压缩到指定目录,注意:要解压缩的目录必须存在

tar 命令中有一个选项 -j 可以调用 bzip2

# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...

# 解压缩文件
tar -jxvf 打包文件.tar.bz2

软件安装

apt

apt,Advanced Packaging Tool,一款安装包管理工具,可以在终端中方便的 安装卸载更新 软件包。

# 安装软件
$ sudo apt install 软件包

# 卸载软件
$ sudo apt remove 软件名

# 更新已安装的包
$ sudo apt upgrade 
# 一个小火车提示
$ sudo apt install sl
# 一个比较漂亮的查看当前进程排名的软件
$ sudo apt install htop

配置软件源

可以通过设置 镜像源,选择一个访问网速更快的服务器,来提供软件下载/安装服务。


关于博客字数的思考

我一直都在思考,一篇博客写多少字比较好。所以用这篇博客尝试一下,写了个长文。
结论是:还是字数适中比较好,1.5k 字左右。
字数太多,不方便起文章标题,目录长看起来也费劲。
而且经常更新博客,增加文章数量也是挺有成就感的一个事儿。