day5
- 压缩打包相关命令
压缩工具:gzip(后缀为.gz)、bzip2(后缀为.bz2)
注意:只能压缩文件
压缩:
gzip 文件名;//后缀为.gz
bzip2 文件名; //后缀为.bz2
解压:
方式1:
-d:将压缩文件解压
gzip -d 文件名;
bzip2 -d 文件名;
方式2:
gunzip 文件名;
bunzip2 文件名;
tar 打包(后缀为.tar)
相关参数:
-c:打包
-x:解包
-v:显示相关信息
-f: 指定包文件名(必须放在最后一个)
-z:调用gzip/gunzip
-j:调用bzip2/bunzip2
先打包,再压缩
先打包:
再压缩:
先解压,再解包
解压:
解包:
将打包+压缩一体化:
解压+解包一体化:
- Linux环境变量
env:查看所有的环境变量
2.1 临时添加
注意:只对当前终端有效,如果当前终端关闭,添加的环境变量就不存在了
2.2 永久添加
将环境变量添加到/etc/profile中,这样在任何时候都有效
- 使用管理员权限打开/etc/profile
- 在文件末尾添加:export PATH=$PATH:/home/linux/22111/linuxC/day5
- 重启or source /etc/profile
重启:sudo reboot
关机:sudo shutdown -h now
3、Linux下共享文件设置
方法1:
虚拟机-->设置-->选项-->共享文件夹
共享文件夹:/mnt/hgfs
方法2:
查看Linux的ip地址:
4、Linux网络配置
4.1 测试是否有网
如上图所示,表示网络状况良好
4.2 网络配置
(1)虚拟机-->设置-->网络适配器
(2)编辑-->虚拟网络编辑器
4.3 配置静态IP
(1)Linux
(2)windows
4.4 网络基础知识介绍
1、IP地址
ip地址:是主机的唯一表示
ip地址:网络地址+主机地址
ip地址根据网络地址的不同,主要分为A、B、C、D、E类
A类IP地址:
1个字节网络地址+3个字节主机地址(网络地址最高位必须是0)
地址范围:1.0.0.0 ~126.255.255.255
B类IP地址:
2个字节网络地址+2个字节主机地址(网络地址最高为必须是10)
地址范围:128.0.0.0 ~ 191.255.255.255
C类IP地址:
3个字节网络地址+1个字节主机地址(网络地址最高位必须是110)
地址范围:192.0.0.0 ~ 223.255.255.255
2、子网掩码
作用:判别主机发送的数据包是向外网发送还是向内网发送
网络地址全是1,主机地址全是0
3个字节网络地址+1个字节主机地址
1111 1111 1111 1111 1111 1111 0000 0000
255 255 255 0
192.168.0.1 192.168.0.118 192.168.3.100
& 255.255.255.0
192.168.0.0 192.168.0.0 192.168.3.0
- 网关
- DNS服务器
解析器和域名服务器组成的
注意:域名必须对应一个IP地址,IP地址不一定有域名
- Linux软件管理
换源:sudo /etc/apt/sources.list
下载软件:
sudo apt-get update
sudo apt-get install 包名;
卸载软件:
sudo apt remove 包名;
- shell脚本
shell脚本:一堆命令的集合
C语言:强类型语言(对数据类型分的比较清楚)、编译性语言
shell脚本:弱类型语言,不需要编译,直接运行就可以了
6.1 如何创建设立了脚本
1、新建一个文件(后缀为.sh)
2、编辑该文件
vim 1.sh
3、运行的时候没有可执行权限,需要人为去添加
chmod 777 1.sh
4、运行
./1.sh
6.2 用户自定义变量
shell允许用户建立 变量存储类型
注意:任何赋给变量的值都被shell解释为一串字符
命名规范:
- 由数字、字母、下划线组成
- 首字母不能为数字
- shell中的变量一般用大写表示
注意:
- 要取用一个变量的值时,在变量名前加$
- 在赋值时,等号的左右两侧不能有空格
6.3 位置参数
注意:变量名很容易与文字混淆,因此使用时加上括号
6.4 预定义变量
$#:包含命令行参数的个数
$@:包含所有命令行参数
$*:包含所有命令行参数
$?:包含前一个命令的退出状态,正常退出返回0,反之为非0(shell中0为真,非0为假)
$$:包含正在执行的进程的ID号
案例1:在家目录下新建一个目录(mydir),在该目录下新建一个文件(1.txt),然后向该文件中写入”hello shell”
案例2:交叉编译工具链
6.5 shell程序和语句
6.5.1 说明性语句
注释:#
6.5.2 功能性语句
1、输出
echo “hello shell”
echo -n “hello shell” //不换行
- 输入
方式1:
方式2:
想要换行
输入字符串
若想实现hello shell和22111
6.5.3 算术运算
expr主要用于进行简单的整数的算术运算、+、-、\*、/、%
注意:expr与变量以及变量与运算符之间必须有空格
作业:(附加题)
if [表达式]
then
语句
fi
while [表达式]
do
语句
done
使用shell实现9*9乘法表
day6
- test
整数、字符串、文件属性
-
- 字符串测试
s1 = s2 测试两个字符串的内容是否完全一样
s1 != s2 测试两个字符串的内容是否有差异
-z s1 测试s1字符串的长度是否为0
-n s1 测试s1字符串的长度是否不为0
注意:“[”的右边,以及”]“的左边以及等号的左右两侧必须有空格
-
- 整数测试
a -eq b 测试a与b是否相等
a -ne b 测试a与b是否不相等
a -gt b 测试a是否大于b
a -ge b 测试a是都大于等于b
a -lt b 测试a是否小于b
a -le b 测试a是否小于等于b
1.3 文件测试
-d name 测试name是否为一个目录
-f name 测试name是否为普通文件
-L name 测试name是否为链接文件
-c name 测试name是都为字符设备文件
-r name 测试name文件是否存在且为可读
-w name 测试name文件是否存在且可写
-x name 测试name文件是否存在且可执行
-s name 测试name文件是都存在且长度不为0
f1 -nt f2 测试f1是否比f2更新
f1 -ot f2 测试f1是否比f2更旧
- 选择语句
2.1 单分支选择
if [表达式]
then
语句
fi
2.2 双分支选择
if [表达式]
then
语句1
else
语句2
fi
2.3 多分支选择
if [ 表达式1 ]
then
语句1
elif [ 表达式2 ]
then
语句2
.............
elif[ 表达式n ]
then
语句n
else
语句n+1
fi
2.4 case语句
case 字符串变量 in
模式1)
语句1
;;
模式2)
语句2
;;
.................
模式n)
语句n
;;
*)
语句n+1
;;
esac
案例1:
输入一个文件,判断它是否为普通文件,如果是普通文件,判断它是否有写的权限
如果有写的权限,向文件中写入hello shell
如果没有写的权限,给它添加写的权限,写入hello shell
案例2:
请输入你想下载文件的名字,让用户确认,
用户输入是否下载这个软件,[Y/N/Q],Y:正在下载 N:用户取消下载 Q:退出
- 循环语句
for 变量名 in 单词表
do
语句
done
方式1:
方式2:
方式3:
方式4:
注意:花括号内不能写变量
方式5:
案例:打印9*9乘法表
while [表达式]
do
语句
done
break:跳出循环
注意:break n:跳出n层循环
continue:结束本次循环开始下一次循环
- 函数
4.1 定义
方式1:
函数名()
{
}
方式2:
function 函数名()
{
}
注意:一般使用的是方式2
4.2调用
方式1:
变量名=`函数名 参数列表`
注意:
- 子函数中的所有标准输出传递给了主程序中的变量
- 子函数中的$n并非shell中的$n
方式2:
函数名 参数列表
注意:一般使用的是方式2
案例:
案例:
- 判断用户主目录是否有file-dir和dir-dir目录
如果这两个目录存在,询问是否删除这两个目录
如果用户的是Y,将这两个目录删除,重新创建这两个目录
如果是N,取消删除
如果上述的目录不存在,则创建这两个目录
- 请用户输入一个路径,将这个路径下的文件拷贝到file-dir这个目录,将
这个路径下的目录拷贝的dir-dir目录
- 统计拷贝的文件和目录的个数