#花钱学习第二天#
·没有闲话,纯记录
Linux 命令和 Vim 操作
1. Linux 常用命令
2. Linux 系统路径问题
2.1 根目录和家目录
2.2 相对路径和绝对路径【了解】
3. Linux 常用命令
3.1 cd change directory
3.2 ls 查看操作
3.3 touch 和 mkdir
3.4 cp 复制操作
3.5 mv 移动操作
3.6 rm 删除操作
3.7 chmod 修改文件或者文件夹权限【小难点】
3.7.1 权限标记和数值使用
3.7.2 chmod 操作
3.8 sudo 临时超级管理员权限【小难点】
3.9 其他命令
4. Vim 操作
4.1 Vim 概述
4.2 Vim 三种模式
4.3 编辑模式
4.4 命令模式
Linux 命令和 Vim 操作
1. Linux 常用命令
Linux 常用包括软件安装,软件删除,服务启动,相关配置,基本的文件操作...
图形化界面可以完成的任务,都可以利用命令完成,甚至于命令可以完成图形化界面无法完成的相关功能。在嵌入式开发中,主要学习的 Linux 相关命令包括文件操作,路径切换,相关文件信息读取。
2. Linux 系统路径问题
2.1 根目录和家目录
Linux 环境中不存在分盘情况,不同 Windows 操作系统可以利用不同的磁盘来管理文件内容,在 Linux 中采用的方式是一个磁盘,文件夹形式内容管理。
在 Linux 中最大的文件是根目录,对应的标识符为
/
家目录,对应的当前用户个人目录,在家目录中执行任何的操作对于操作系统和其他用户无关。对应的简称标识符为
~
,真实路径为/home/用户名
, 例如当前计算机中的家目录真实路径为/home/qf
2.2 相对路径和绝对路径【了解】
相对路径
定义:以当前工作目录为参照物,去往其他文件夹或文件的【捷径】
生活化案例,我在隔壁办公室,我在实验室,我在前台
在 Linux 中操作相对路径可能使用到两个特定的标记符号
.
当前工作目录,目前所在文件夹
..
当前工作目录的上级目录例如 当前工作目录为
/home/qf/desktop/aaa
。
.
对应路径为/home/qf/desktop/aaa
..
对应路径为/home/qf/desktop
绝对路径
定义:以根目录为参照的路径,并且绝对路径具备【唯一性】
生活化案例,河南省郑州市高新区莲花街55号教育产业科技园 D 座千锋教育
在 Linux 中所有以
/
开头的路径都是【绝对路径】在 Linux 中相对路径和绝对路径的区分关系就是依据路径开头是否为
/
。
3. Linux 常用命令
3.1 cd change directory
在终端中切换当前工作目录,可以根据【相对路径】和【绝对路径】去往目标文件夹。
tips:在桌面鼠标右键打开终端,默认的工作目录为【家目录】
qf@qf:~$ cd 桌面 qf@qf:~/桌面$ # 可以看到在 $ 之前的路径提示发生改变 # 在 Ubuntu 中路径提示为完整路径,操作路径在家目录下,使用 ~ 代替 /home/username # 如果操作的路径是绝对路径,会提供完整的绝对路径内容 /etc/samba/ qf@qf:~/桌面$ cd 123 # 切换到当前工作目录桌面下的 123 文件夹 qf@qf:~/桌面/123$ cd ../ABC # 从 ~/桌面/123 切换到当前工作目录的上级目录中的 ABC 文件夹 qf@qf:~/桌面/ABC$ cd /etc/samba/tls/ # 利用绝对路径进行路径切换,需要提供有效绝对路径。 qf@qf:/etc/samba/tls$ cd # 单一 cd 命令,可以在任何工作目录回到家目录。 qf@qf:~$ cd - # 可以回到上一次操作的工作目录,从哪儿来回哪儿去。 qf@qf:/etc/samba/tls
3.2 ls 查看操作
查看指定目录下的文件和文件夹情况
qf@qf:~$ ls # examples.desktop 公共的 模板 视频 图片 文档 下载 音乐 桌面 # 可以查看当前工作目录下的文件和文件的名称,不同的文件类型有不同的颜色情况。 qf@qf:~$ ls -a # 查看当前工作目录下的所有文件和文件夹名称,包括隐藏文件和隐藏文件夹 # 在 Linux 中,隐藏文件和隐藏文件夹,名称都是以 . 开头 qf@qf:~$ ls -l # 详情列表模式查看当前工作目录下的文件和文件夹的信息 # 主要包括的信息内容有,文件类型,文件权限,文件归属关系,占用硬盘字节数,最后修改时间和文件名称 qf@qf:~$ ls -al qf@qf:~$ ll # 详情列表模式查看当前工作目录下的所有文件和文件夹的信息,包括隐藏文件和隐藏文件夹。
【重点】文件详情内容解释
3.3 touch 和 mkdir
touch 创建普通文件
mkdir 创建文件夹
touch 命令案例
qf@qf:~/桌面/123$ touch 1.txt # 在当前工作目录下创建指定名称的文件,1 是文件名 .txt 是文件拓展名/文件类型名/后缀名 # 在 Linux 中支持未指定文件类型的普通文件,大多数都是可视化文本文件 qf@qf:~/桌面/123$ touch 2.txt 3.txt 5.txt 1.c 2.c 3.c # 可以进行批量文件创建,不同的文件名称利用空格隔开
mkdir 命令案例
qf@qf:~/桌面/123$ mkdir a # 在当前工作目录下创建目标文件夹 a qf@qf:~/桌面/123$ mkdir a mkdir: 无法创建目录"a": 文件已存在 # 如果对应名称的文件或者文件已经存在,无法利用相同名称创建对应内容 qf@qf:~/桌面/123$ mkdir 1.txt mkdir: 无法创建目录"1.txt": 文件已存在 qf@qf:~/桌面/123$ mkdir b c d # 可以进行批量文件夹创建,不同的文件夹名称利用空格隔开 qf@qf:~/桌面/123$
3.4 cp 复制操作
cp copy 复制
cp 操作
cp 操作普通文件
qf@qf:~/桌面/123$ cp 1.txt 123.txt # 复制 1.txt 内容到 123.txt # 当前操作省略的路径内容,默认都是在当前工作目录下完成对应操作 # 如果提供的对应路径要求,可以在其他文件夹中完成操作 qf@qf:~/桌面/123$ cp 1.txt a # 1.txt 为普通文件,a 是在相同工作目录下的一个文件夹 # 当前操作是将 1.txt 文件复制一份到当前工作目录下的 a 文件夹中 qf@qf:~/桌面/123$ cp 123.txt a/23333.txt # 123.txt 为普通文件,a 是在相同工作目录下的一个文件夹 # 当前操作是将 123.txt 文件复制一份到当前工作目录下的 a 文件夹中,同时指定目标文件名称 # 为 23333.txt qf@qf:~/桌面/123$ cp 123.txt /home/qf/桌面/ABC # 123.txt 为普通文件,提供的目标文件夹路径方式为绝对路径方式 # 将 123.txt 拷贝到目标的绝对路径对应文件夹,要求路径真实有效,同时对应文件有【写入权限】
cp 操作文件夹
qf@qf:~/桌面/123$ cp a b cp: -r not specified; omitting directory 'a' # cp 命令要求,如果操作的内容是文件夹内容,必须提供 -r 命令参数 # 格式 cp -r 源文件夹 目标文件夹 # 格式 cp -r src_dir dest_dir qf@qf:~/桌面/123$ cp -r a b # a 和 b 都是文件,且存在 # 当前操作是将 a 文件夹复制一份存储到 b 文件夹中 # 当前操作省略路径关系,都是在当前工作目录下完成。 qf@qf:~/桌面/123$ cp -r a f # a 是一个文件夹存在,f 是一个未存在的内容 # 当前操作是将 a 文件夹复制一份,到当前工作目录下,目标文件夹名称为 f
3.5 mv 移动操作
mv move 移动
mv 操作普通文件
qf@qf:~/桌面/123$ mv 1.txt 2.txt # 1.txt 普通文件存在,2.txt 不存在 # 当前操作是将 1.txt 普通文件,重命名为 2.txt qf@qf:~/桌面/123$ mv 2.txt a # 2.txt 是一个普通文件,a 是一个文件夹 # 当前操作是将 2.txt 移动到 a 文件夹中 qf@qf:~/桌面/123$ mv a/2.txt . # 将当前工作目录下 a 文件夹中的 2.txt 普通文件,移动到当前工作目录 qf@qf:~/桌面/123$ mv 2.txt a/123.txt # 2.txt 是一个普通文件,a 是一个文件夹 # 当前操作是将 2.txt 移动到 a 文件夹中,同时对文件进行重命名操作,修改名称为 123.txt
mv 操作文件夹
qf@qf:~/桌面/123$ mv a b # a,b 都是文件夹 # 当前操作是将 a 文件夹移动到 b 文件夹中 qf@qf:~/桌面/123$ mv a q # a 是一个文件夹,q 不存在 # 当前操作是将 a 文件夹重命名为 q 文件夹
3.6 rm 删除操作
【慎用】rm 删除文件或者文件夹不是放入到回收站中,是直接在磁盘抹掉数据,且无法还原!
rm 删除操作普通文件
qf@qf:~/桌面/123$ rm 1.txt # 直接删除当前工作目录下的 1.txt 普通文件 qf@qf:~/桌面/123$ rm 2.txt 1.c # 可以删除多个文件,不同的文件名称利用空格隔开 qf@qf:~/桌面/123$ rm 1.* # tips: * 是一个通配符 # 当前操作是将工作目录下所有文件名称为 1,文件类型不限制的所有文件删除。 qf@qf:~/桌面/123$ rm *.c # tips: * 是一个通配符 # 当前操作是将工作目录下所有 .c 结尾的文件进行删除操作 qf@qf:~/桌面/123$ rm *.* # tips: * 是一个通配符 # 当前操作是将工作目录下所有名称带有 . 文件或者文件夹进行删除操作 # 因为当前操作中未提供命令行参数 -r , 仅删除普通文件
rm 删除操作文件夹
qf@qf:~/桌面/123$ rm a # rm: 无法删除'a': 是一个目录 # rm 操作删除文件,需要提供命令行参数 -r # 修改之后的格式为 rm -r a qf@qf:~/桌面/123$ rm -r a qf@qf:~/桌面/123$ rm -r a b c # 可以进行批量删除,多个文件夹名称,利用空格隔开 qf@qf:~/桌面/123$ rm -r * # 删除当前工作目录的所有非隐藏文件和隐藏文件夹 # 因为隐藏文件和隐藏文件夹开头都是 . 开头
3.7 chmod 修改文件或者文件夹权限【小难点】
3.7.1 权限标记和数值使用
权限对应数值
权限 | 作用 | 对应数值 |
---|---|---|
r | 可读 | 4 |
w | 可写 | 2 |
x | 可执行 | 1 |
- | 不具备对应位置权限 | 0 |
案例分析
drwxrwxr-x # d 开头,对应的是一个文件夹 # 第一组权限【拥有者】 rwx 可读可写可执行 4 + 2 + 1 => 7 # 第二组权限【同组用户】 rwx 可读可写可执行 4 + 2 + 1 => 7 # 第三组权限【访客】 r-x 可读不可写可执行 4 + 0 + 1 => 5
当前为一个文件夹,对应的权限为
775
权限
案例分析
# 已知普通文件,同时权限为 664 # 普通文件 - # 第一组权限【拥有者】 6 ==> 4 + 2 + 0 ==> rw- # 第二组权限【同组用户】 6 ==> 4 + 2 + 0 ==> rw- # 第三组权限【访客】4 ==> 4 + 0 + 0 ==> r--
终端中当前文件权限信息描述为
-rw-rw-r--
3.7.2 chmod 操作
qf@qf:~/桌面/123$ touch 1.txt qf@qf:~/桌面/123$ ls -l 总用量 0 -rw-rw-r-- 1 qf qf 0 2月 11 15:56 1.txt # Linux 中默认创建普通文件对应的权限为 664 权限 qf@qf:~/桌面/123$ chmod 666 1.txt # 将 1.txt 文件修改为 666 权限,对应描述为 -rw-rw-rw- qf@qf:~/桌面/123$ ls -l 总用量 0 -rw-rw-rw- 1 qf qf 0 2月 11 15:56 1.txt # 最终修改效果。 qf@qf:~/桌面/123$ mkdir a qf@qf:~/桌面/123$ ls -l 总用量 0 -rw-rw-r-- 1 qf qf 0 2月 11 15:56 1.txt drwxrwxr-x 2 qf qf 4096 2月 11 16:02 a # Linux 中默认创建文件夹对应的权限为 775 权限 qf@qf:~/桌面/123$ chmod 440 a # 将 a 文件夹修改为 440 权限,对应描述为 dr--r----- qf@qf:~/桌面/123$ ls -l 总用量 0 -rw-rw-rw- 1 qf qf 0 2月 11 15:56 1.txt dr--r----- 2 qf qf 4096 2月 11 16:02 a # 最终修改效果。
3.8 sudo 临时超级管理员权限【小难点】
sudo 是临时开启超级管理员权限,提供密码之后,临时对当前文件或者文件夹具备完全权限
如果 sudo 超过 5 分钟未使用,后续使用需要提供密码
如果当前终端关闭,后续使用需要提供密码
qf@qf:~/桌面/123$ ls -l 总用量 8 ---------- 1 qf qf 17 2月 11 16:10 1.txt # 当前文件是无权限文件,任何用户任何角色,对于当前文件都没有任何的操作权限 qf@qf:~/桌面/123$ sudo gedit 1.txt [sudo] qf 的密码: # sudo 是开启所有权限,提供密码之后,可以修改,查看,当前目标文件
3.9 其他命令
ifconfig
orip addr
查看当前计算机的网络情况,如果是 Ubuntu 18.04 以上版本,请使用ip addr
,如果是较低版本使用ifconfig
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:06:23:d2 brd ff:ff:ff:ff:ff:ff inet 192.168.13.11/24 brd 192.168.13.255 scope global dynamic noprefixroute ens33 valid_lft 60515sec preferred_lft 60515sec inet6 fe80::d395:3094:f02:e9d6/64 scope link noprefixroute valid_lft forever preferred_lft forever
Ctrl + L
orclear
清理屏幕内容,刷新终端页面
↑ ↓
方向键上下,可以回顾之前的命令
top
终端任务管理器,可以查看当前计算机的所有执行任务占用资源情况
Ctrl + C
在终端中作用是中断当前程序执行,可以直接杀死程序。
cat tac nl
查看文本文件内容,cat 是正向查看,tac 是倒序查看,nl 带有文件行数查看后续使用到补充。。。。
4. Vim 操作
4.1 Vim 概述
开源免费的终端开发软件,支持各种插件,学习路线较为陡峭,需要掌握基本的文本编辑,操作和代码实现。
Vim 之父 Bram Moolenaar
4.2 Vim 三种模式
编辑模式
插入模式
命令模式
4.3 编辑模式
编辑模式中可以完成针对于 Vim 快捷键操作,例如 复制,粘贴,删除,定位....
Vim 编辑模式指令 | 作用 |
---|---|
yy | 复制光标所在行 |
y[n]y or [n]yy | n 是一个数值,表示从光标所在行开始复制 n 行 |
p | 在光标所在位置下一行开始粘贴 |
dd | 剪切光标所在行,如果仅剪切,功能为删除 |
d[n]d or [n]dd | n 是一个数值,表示从光标所在行开始剪切 n 行 |
u | 撤销之前的操作,回退 |
Ctrl + R | 重做 |
gg | 回到整个文档的第一行 |
ngg | 跳转文档的第 n 行 |
home | 跳转到光标所在行第一个位置 |
end | 跳转到光标所在行最后一个位置 |
i,o,a | 进入到插入模式 |
shift + : | 进入到命令模式 |
4.4 命令模式
主要可以保存,退出目标文件,常用命令有
常用命令 | 作用 |
---|---|
w | write 保存 |
q | quit 退出,如果文件已修改,无法使用 |
q! | 强制退出,不保存文件退出 |
wq | 保存退出 |
wqa | 保存所有 vim 打开文件退出 |
wa | 保存所有 vim 打开文件 |
vsplit 文件名 | Vim 多个文件,不常用 |