一、Linux简介
Linux核心理念:万物皆文件;
理解:假设在linux接了一个打印机,这个打印机对于系统而言是一个文件。
使用串口外接一个设备,这个串口对于linux系统就是一个文件。
Linux:是一个内核,而不是一个操作系统;因此我们平常说的“操作系统用的是Windows、Mac还是Linux啊?”是错误的,Ubuntu、Fedora等才是操作系统的名字,他们都使用Linux内核,属于Linux的发行版本。
1991年最初由Linus Torvalds针对386(个人计算机)开发;Linus Torvalds那时是芬兰的一名研究生;
linux开源,开放源代码。因为开源,我们才能把linux改成完全符合我们需求的操作系统。
GNU
GNU 自由软件联盟
GNU宗旨 开发出免费、开源的软件供大家使用
GPL协议
GPL 协议,规定了GNU中的软件使用的权限
GPL1.0 (规定了任何人都可以使用GNU的开源软件,但是如果你用了,你也要开源)
GPL2.0 (规定了任何人都可以使用GNU的开源软件,并且你自己的东西可以不开源,但GNU内部的东西必须开源)
目录结构
/(根目录) -- 功能文件夹(目录文件) ------ 普通文件
根目录下的文件:
bin 存放可执行文件的位置(命令) binary 二进制
etc 存放配置文件的位置
mnt mount 挂载目录 接入新硬件的时候用 比如U盘
proc process 存放进程信息的位置
boot 存放引导文件等 电脑刚刚启动时不时直接运行操作系统 ,而是一个引导程序,引导程序会引导计算机执 行操作系统
dev device 存放设备文件的位置
home 家目录、用户工作目录 /home/linux ,用户可以随意操作的地方
lib 存放库文件的位置。 (/lib /usr/lib)
root 超级用户工作目录
sbin 存放指令的位置
二、linux基础命令
1. ls
查看目录或者文件信息的命令
一般来说,可以简单的通过颜色来区分不同的文件类型:
白色: 普通文件
绿色: 可执行文件
深蓝色: 目录文件
ls -a 显示所有文件,包括隐藏文件 (文件名第一个字符是'.'的文件,叫隐藏文件)
ls -l 显示文件的详情。
-a -l都属于命令参数
属性 文件的所有者 文件所属组 文件大小 日期 时间 文件名称
-rw-rw-r-- 1 linux linux 496 3月 19 16:50 08-id.c
属性: 两部分。 第一个字符是第一部分。 后九个字符,是第二部分。
第一部分 代表了文件的类型: - 普通文件 d 目录文件
第二部分: 权限: r read w write x execute
第一组:代表了文件owner 的使用权限
第二组:代表了文件所属组的使用权限
第三组:代表了 other 的使用权限
drwxr-xr-x
d代表这是一个目录文件
rwx第一组 用户的权限 读 写 可执行
r-x第二组 同组用户权限 读 不可写 可执行
r-x第三组 其他组用户权限 读 不可写 可执行
当前目录 .
上级目录 ..
工作目录 ~ 直观 又好写
根目录 /
2. chmod (change mode)
修改文件的使用权限
两种方式:
a) chmod +x id.c 在当前权限的基础上添加可执行权限
b) chmod 664 id.c 110110100 rw-rw-r--
chmod后面的数字是由3位八进制数组成,分别三种用的的权限。
将八进制数转成二进制数,1代表该位置的权限有,0代表该位置的权限没有。
3. 帮助手册:
a) man 手册: man 1 ls man 3 strcpy man 7 ascii
如果想对linux命令进行更深入的学习,帮助手册是最好的。
q退出
1是普通的命令
2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig
info和help只能查看命令
b) info : info ls
c) help : ls --help
4. cd 进入目录 (change directory)
cd 要去的路径
绝对路径: 以根目录为起始的,是绝对路径。
相对路径: 以当前为基准的,叫相对路径。
相对路径,从当前的位置,找到桌面的dst目录
绝对路径,从dst目录回到Downloads中
一些路径的表达:
/ 根目录 在写路径的时候 /的左边什么都没有,它就是根目录。
~ 用户工作目录。 它是一个绝对路径,在我们的ubuntu下,~ 等价于 /home/linux
. 当前路径 在相对路径中使用
.. 上一级路径 在相对路径中使用
- 上一次进入的路径。 从哪里来到当前的路径
5. pwd (print working directory)
查看当前位置的绝对路径。
6. touch
创建普通文件或者改变一个已存在文件的时间戳
将来我们使用makefile编译时,没有修改的过的文件不参与编译。
示例: touch a.c b.txt c.sh
不能在根目录下随意创建文件。在自己的工作目录中随便
7. mkdir (make directory)
创建目录文件
mkdir 文件夹名
8. rm (remove)
删除文件 remove
普通文件: rm a.c
目录文件: rm -r AAA
9. mv (move)
功能有二: 1移动 2重命名
看第二个参数的名字是否是已经存在的文件夹,如果是已经存在的文件夹,会参数1的内容移动到参数2里;如果参数2的文件夹不存在,则改名。
示例:
mv AAA BBB (如果 BBB 不存在,则是 重命名 功能)
mv a.c BBB (如果 BBB 存在,则是 移动 功能)
10. 通配符
通:通用
配:匹配
符:符号
* 可以匹配多个字符。 ls *.c 查看所有以.c结尾的文件 。a.c b.c test.c
? 可以匹配一个字符。 ls ?.c 查看任意名字是一个字符的.c文件。 a.c b.c test.c 能查看a.c b.c,不能查看test.c
[] 可以匹配一个数字,只能匹配一个数字(个位数)。 ls a[2-4] 查看a2 a3 a4 ls a[^2-4] 查看a2 a3 a4以外的文件
11. cp (copy)
普通文件: cp a.c b.c 将 a.c 复制一份出来,新文件的名字叫做 b.c
目录文件: cp -r AA BB 将 AA 复制一份出来,新的文件名称叫做 BB
12. 查看文件
cat file.c 文件所有内容直接显示在屏幕上。
more file.c 显示一屏信息。再向下看,需要按空格或者回车。直到看完所有内容,文件才全部写到终端。 q退出
less file.c 显示一屏信息。可以按上下箭头来回查看。按q 退出当前模式。 q退出
head file.c 默认打印出文件的前 10 行。 如果想指定行数。使用选项参数: head -15 file.c
tail file.c 默认打印出文件的后 10 行。 如果想指定行数。使用选项参数: tail -20 file.c
13. vim 编辑器的使用
共三种模式: 命令行模式 、 插入模式 、 底行模式
(1) 命令行模式下的快捷方式: 刚进入到vim编辑器,就是命令模式
yn 复制 n 行 yn 光标在想复制内容的第一行的任何位置, n = 想复制的最后一行的行号 - 光标所在的行号
dn 剪切 n 行 dn 光标在想删除内容的第一行的任何位置,n = 想剪切的最后一行的行号 - 光标所在的行号
p 粘贴 粘贴到光标所在的下一行
x 删除
u 撤销
+ 向下
- 向上
88G 光标跳到 88 行 88gg
$ 一行末尾
ZZ 保存并退出
v 选中的起始位置
v……y 块复制
v……d 块剪切。(1)将光标移动到待剪切的起始位置(2)按下v (3)将光标移动到待剪切的终止位置(4)按下d
代码整体移动: 先选中,然后 : shift > (向右移动) shift < (向左移动)
调节字体大小: ctrl - 调小字体。 ctrl shift + 调大字体 ctrl = 对齐格式(不建议使用)
(2) 底行模式
a) 分屏模式: vsp 左右分屏 sp 上下分屏 ctrl+ww 切换屏 vsp 文件名
b) 查找 : /关键字 ?关键字 n 下一个
c) 替换 : :范围 s/old/new/gc gc:这两个功能是可选项。如果选择,表达的是替换前询问、替换所有的意思。
:%s/SCREEN_WIDTH/screen_width/gc 整个文件修改
:5,30s/SCREEN_WIDTH/screen_width/gc 5到30行文件修改
(3) 进入插入模式:
不同的当时光标的起始位置不同。
新增 (append)
a :从光标所在位置 后面 开始新增资料 当前字符的后面
A : 从光标所在 行最后面的 地方开始新增资料。
插入 (insert)
i : 从光标所在位置 前面 开始插入资料
I :从光标所在 行 的第一个非空白字元 前面 开始插入资料。
开始 (open)
o :在光标所 在行下 新增一列并进入输入模式。
O: 在光标所 在行上方 新增一列并进入输入模式。