下载: https://ubuntu.com/
常用命令
Ctrl + Shift + T 打开命令窗
Ctrl + Shift + + 放大窗口
Ctrl + - 缩小窗口
关机sudo shutdown -h now
重启sudo reboot
普通用户切换到超级用户 sudo -i 输入密码后切换
超级用户切换普通用户 su - 用户名
cd ~/文件夹/ 改变当前工作目录到文件夹
pwd 查看当前路径
~ 用户主目录
. 当前路径
.. 上级路径
pwd 查看路径
/home/文件夹 /1.c 绝对路径
文件夹 /1.c 相对路径
ls 查看文件夹
蓝色——文件夹
白色——普通文档
绿色——可执行程序
淡蓝色——链接文件
ls -a 显示隐藏文件
ls -l 显示详细信息(使用时间,属性等)
d;rwx;rwx;r-x分为四组
clear 清屏
cat 适合查看短的文件
More bashrc 适合查看长的文件
按space(空格)翻页
按Enter(回车)下一行
按Q退出
gcc的编译流程
- 预处理:将C源文件编译成C文件,只做头文件的展开,宏替换掉,注释去掉,不做语法检查(意味着当前代码有问题的时候,不会直接在这一步检测到的)
gcc -E 1.c -o 1.i
- 编译:将上一步生成的C文件编译成汇编文件
gcc -S 1.i -o 1.s
- 汇编:将上一步生成的汇编文件编译成机器文件(OBJ格式)
gcc -c 1.s -o 1.o
(4)链接:将所有的机器文件共同参与链接,生成一个总的可执行文件
gcc test.o test2.o test3.o -o MyApp(可执行文件)
mkdir lin 创建一个文件lin
touch 1.txt 创建一个文档1.txt
rm 删除文件 rmdir 删除空文件夹 rmdir -r删除文件夹
mv 1.txt 2.txt 将文件1.txt重命名为2.txt
mv 文件1 文件夹2/ 将文件1移动到文件夹2
cp 文件1 文件夹2/ 将文件1复制到文件夹2 cp -r 操作文件夹
末行模式<-----------命令模式------->插入模式
命令模式输入 ’ : ’ 末行模式
wq 保存退出 3yy复制3行
w只保存不退出 p 粘贴
q只退出不保存 3dd删除3行
Set nu 设置行号 u撤回
:s/abc/de/g 将全部的abc替换为de(不加g只替换第一个)
Linux的软件包管理
离线安装
注意:离线安装不会检查软件之间的依赖关系。
前提:必须在本地文件系统中存在一个软件包
安装:dpkg -i 软件包名(全称,带后缀的)
删除:dpkg -r 软件名
卸载:dpkg -P 软件名(删除软件的同时移除配置文件)
查看软件的安装清单:dpkg -L 软件名
查看软件的安装状态:dpkg -s 软件名
在线安装
前提:有网
特点:会自动检查软件包之间的依赖,不用用户自己做
平台:apt-get(前提:具备超级权限:sudo)
安装:sudo apt-get install 软件包名
删除:sudo apt-get remove 软件包名
卸载:sudo apt-get remove --purge 软件包名
更新软件包的信息sudo apt-get update 软件名
升级软件包的版本sudo apt-get upgrade 软件包名(不写默认所有软件)
计算机的基本结构
输入输出设备:键盘,鼠标,显示屏,打印机,扫描仪。。。。
CPU处理器: 通过算术逻辑运算器和控制器来控制系统性能
算术逻辑运算器:负责的是算术运算以及逻辑运算,任何复杂的运算最终都离不来算术运算或者逻辑运算。
控制器:相当于计算机的指挥系统,从内存中读取(按条读取)指令到寄存器中去,然后再从寄存器中进行逐条执行命令。
存储器:
外部存储器(外存):数据永久保存,不会丢失,计算机掉电也不会丢失数据。特点:容量比较大的,适合存储不着急使用的程序或者文件。
内部存储器(内存或者主存):数据暂时性保存着,意味着掉电数据会丢失,容量相对较小,适合存储一些即将被运行或者正在运行的程序以及文件
寄存器:存储在CPU当中的存储器,容量是最小的,存储在寄存器中的数据能够快速被处理,不需要从内存加载指令以及从外存拷贝数据到内存中去。
IP:
全称:Internet Protocol 网络协议
作用:路由的功能(找路,真正找目标主机是通过ARP协议解析数据包得到MAC地址,进而找到目标主机)
形式:IP地址 = 网络地址 + 主机地址
IP地址多大?---》4个字节,以点分十进制形式表示的
注意:网络地址和主机地址占据字节数的不同,IP地址的类型也会有区分
A类:1个字节网络地址+3个字节的主机地址,规定网络地址的最高位是0
A类IP的范围:0.0.0.0 ~ 127.255.255.255
因为种种限制:A类IP我们可以正常使用的范围是:1.0.0.2 ~ 126.255.255.254
B类:2个字节网络地址+2个字节的主机地址,规定网络地址的最高位是10
B类IP的范围:128.0.0.0 ~ 191.255.255.255
能够使用的范围:128.0.0.2 ~ 191.255.255.254
C类:3个字节网络地址+1个字节的主机地址,规定网络地址的最高位是110
C类IP的范围:192.0.0.0 ~ 223.255.255.255
能够使用的范围:192.0.0.2 ~ 223.255.255.254
注意:以上三类是按照字节数所占不同来进行区分
D类:一般作为组播地址(网络地址最高位为:1110)
E类:等待将来使用(网络地址最高位为:11110)
注意:D类和E类是IP的另一种类型
子网掩码:
功能:判断两台主机之间的通信是外网通信还是内网通信
子网掩码的设置:规定:网络地址全为1,主机地址全为0
默认的子网掩码设置如下:
A类IP:255.0.0.0
B类IP:255.255.0.0
C类IP:255.255.255.0
网关:
网间连接器,是一台主机通往另一台主机的IP地址,网关可以有多个,但一般会有一个默认的网关。
默认网关的设置方法:如果是C类IP地址:192.168.X.1 (X是网段)
DNS服务器:
域名解析服务器
作用:DNS服务器上存储了一张域名和IP对应的一张表,当用户访问域名的时候,就会请求这张表,进而访问到IP地址。
注意:一个IP地址可以有多个域名,但是一个域名只会唯一的对应一个IP地址。
用户管理相关
1、修改密码:
方式1:passwd(特例)
注意:默认修改当前用户的密码,但是密码应该越来越复杂才可以,否则修改不成功。
方式2:sudo passwd 用户名(最为标准的)
注意:万能的,对于密码的长短无任何限制。修改的用户名也没有限制。
2、添加新用户:
格式:sudo adduser 用户名
3、删除用户:
格式:sudo deluser 用户名 --remove-home
注意:
1、带-remove-home删除用户时也会删除家目录。
2、如何确保是否存在一个用户,打开vim /etc/passwd这个文件,。查看是否存在该用户来确定。
文件目录操作
1.echo
标准输出,不是函数,是一个命令,可以在命令行或者脚本中使用它完成标准输出
注意:echo 是用来标准输出的,输出的内容可以是取一个变量的值,也可以是一个字符串常量(没有类型的区分)
2.head / tail 查看文件内容
head -N 文件名 :查看文本的前N行
tail -N 文件名:查看文本的后N行
不带-N的时候,默认查看前后各10行
3.more / less 查看文件内容
more / less 文件名
more:带百分比显示,按下空格键一页一页显示,按下回车一行一行显示
less:按下空格键一页一页显示,按下回车一行一行显示
4.env
查看系统中的环境变量,该环境变量全部大写的,如果有多个值的时候,以冒号隔开。
5.grep 匹配搜索命令(在文本中进行检索-->文本的内容)
命令名称 选项 格式 文件名(可以包含路径)
注意:要是不写文件名,则会默认检索当前路径下的所有文件中指定格式。
-n:输出含有指定格式的所有行
-v:与-n的意思相反,只会输出不含有指定的格式的那些行之外的所有行
-c:输出含有指定格式在内的所有行的行数。
6、find 查找指定的目录下的信息(信息---》文件名)
命令名称 路径 选项 描述
选项:
-name :支持通配符:* ?
注意:使用*和?时,需要加双引号,否则有问题。
7、ln
作用:创建链接文件
链接文件的分类:
(1)软链接:类似于快捷方式,意味着创建的软链接文件中存储的是指向源文件的一条路径,不是存储源文件内容。
方式: ln -s 原文件名(绝对路径) 软链接文件名
(2)硬链接:以Inode编号创建的链接文件,意味着:硬链接文件就是源文件空间的另一个别名而已,和复制之后的文件有很大区别(硬链接文件不占空间,复制之后的文件是重新找了一片空间存储复制过来的源文件内容)
方式: ln 原文件名(绝对/相对路径) 硬链接文件名
注意:
1、源文件和软链接以及硬链接文件的影响都是双向的。
2、删除源文件,软链接立马失效,恢复(创建同名的源文件名)源文件,软链接又生效,但是此时的指向发生改变,指向最新创建的文件。
3、删除源文件,硬链接不受影响,因为只是空间的名字少了一个。恢复源文件,硬链接还是之前被删除的源文件空间,不会成为新的文件空间的别名。
4、如何确保是不是同一个文件:ls -i 打印出物理编号进行对比。一样证明是同一个文件。
8、chmod 修改文件的权限
默认的文件权限:0664
(1)八进制法:
假设文件是1.c 0664
给文件1.c进行添加可执行权限(只给用户自己加)(111 110 100)
chmod 0764 1.c / chmod 764 1.c
给三组(用户,用户组,其他用户都添加可执行权限)(111 111 101)
chmod 775 1.c
(2)符号标记法
用户:u
用户组:g
其他用户:o
三者都加:a
给1.c用户自己添加可执行权限
chmod u+x 1.c
chmod -x 1.c (给三者都去掉可执行权限)
chmod a+x 1.c / chmod +x 1.c ( a+x == +x )
压缩相关
tar 命令:
选项:
-c : 打包
-x : 解包
-v :可视化(可以看到打包或者解包了哪些内容)
-f : 指明需要打包哪些文件
-z : 自动调用压缩工具(gzip)
-j : 自动调用压缩工具(bzip2)
目的:我们需要会解压+解包别人发给我们的压缩包,其次自己也可以进行打包+压缩相关文件
eg:
(1)打包
(2)解包
(3)打包+压缩 tar -cvzf / -cvjf 文件名.tar.gz/文件名.tar.bz2 需要打包的文件
(4)解压+解包 tar -xvzf / -xvjf 文件名.tar.gz/文件名.tar.bz2 -C 路径
注意:解压+解包时,如果不加-C,则默认解压到当前路径,-C加上就可以自己指明解压之后的路径。
shell特殊字符
(1)通配符
*:匹配任意长度
?:匹配一个长度
[1-9] / [a-k]:匹配指定范围之内的一个长度
[123]/ [abc]:匹配只含有指定一个长度的
[^123] / [^abc]:匹配除了指定含有一个长度的
(2)管道
定义格式:
command1 | command2 | ....... | commandN
理解:前一个命令的输出作为后一个命令的输入
eg:
fortune-zh --->输出的(打印一首古诗向标准终端输出)
cowsay -----》需要输入(没有输入,就会进入阻塞)
想要将fortune-zh命令的输出作为输入源给cowsay:
----> fortune-zh | cowsay (牛可以说古诗)
(3)命令置换
格式:
command1 `command2`
理解:command2输出作为command1的参数
(4)输入输出重定向
输入:默认方向为键盘
输出:默认方向为终端
输出重定向:改变输出方向不再向终端输出。
>:只能接收正确命令的结果,文件不存在,则新建,存在则会先清空,再写入。
>>:只能接收正确命令的结果,文件不存在,则新建,存在则追加方式写入。
2>:只能接收错误命令的结果,文件不存在,则新建,存在则会先清空,再写入。
2>>:只能接收错误命令的结果,文件不存在,则新建,存在则追加方式写入。
&>:正确和错误的都可接收,文件不存在,新建,存在则先清空,再写入。
&>>:正确和错误的都可接收,文件不存在,新建,存在则追加方式写入。
输入重定向:改变输入方向不再从键盘键入。
<:
eg:
平常写的: cat 1.c ----》 就是暗含使用了输入重定向:cat < 1.c