目录
文件压缩和打包
打包 是将许多的文件或目录变成一个总的文件(打包文件大小变化不大,不用算法)
压缩 是将一个文件通过压缩算法变成一个小文件
一般压缩只能针对单独一个文件,所以文件夹或者多个文件的话,需要先打包再压缩
常用压缩格式
格式 | 压缩命令 | 解压命令 | 备注 |
---|---|---|---|
.tar.gz | tar -czf xx.tar.gz [需要压缩的文件列表] | tar -xzf xx.tar.gz -C [解压路径] | 文件、文件夹,打包+压缩 |
.tar.bz2 | tar -cjf xx.tar.bz2 [需要压缩的文件列表] | tar -xjf xx.tar.bz2 -C [解压路径] | 文件、文件夹,打包+压缩 |
.gz | gzip file | gzip -d xx.gz | 单个文件 压缩不打包 |
.bz2 | bzip2 file | bzip2 -d xx.bz2 | 单个文件 压缩不打包 |
.tar | tar -cf xx.tar file [需要打包的文件列表] | tar -xf xx.tar -C [解包路径] | 文件、文件夹,只打包不压缩 |
.rar | unrar xx.rar | ||
.zip | unzip xx.zip | ||
.7z | 7z |
在Linux下,我们一般使用前两个,rar,zip,7z很少使用,会解压即可,这三个的解压程序不默认安装,需要手动去安装
注意
压缩文件命名一定要规范,使用相应的后缀,否则别人不知道你使用了什么压缩算法
后缀在Linux下,没有意义。但是这些后缀是大家心照不宣的习惯,也方便我们的使用
tar命令的参数
-c:建立打包 / 压缩文件
-x :解打包或解压缩的功能,可以搭配-C(大写)在特定目录解开
-j :使用bzip2的支持进行压缩/解压缩
-z :使用gzip的支持进行压缩/解压缩
-t :查看打包文件的内容含有哪些文件
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
-p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
–exclude=FILE:在压缩的过程中,不要将那些文件打包
注意-c, -t, -x 不可同时出现在一串指令列中。
管道
通过管道符 | ,可以把一系列的命令连接起来,并且前一个命令的输出,会作为后一个命令的输入,最后打印在屏幕上的是最后一个命令的输出。
实例
如果想使用ifconfig命令查看IP地址,并且只显示出ip
ifconfig eth0 | grep "inet " | cut -d":" -f2 | cut -d" " -f1
实现过程如下
xargs
这个命令用于将多个命令组合,将一个命令的输出流,分割成小块再传给下一个命令
find -name "*.c" | xargs grep -n main
重定向
标准输出、输入、出错
标准输入:系统命令或程序获取输入的地方
标准输出:系统命令或程序正确执行信息的输出的地方
标准出错:系统命令或程序错误执行信息的输出的地方
Linux的标准输入默认为键盘,标准输出和标准出错默认为屏幕
查看上一个命令是否出错
echo $?
若返回0说明成功,非0什么错误了
标准输入输出重定向
输入重定向:<
输出重定向:>
输出追加重定向: >>
出错重定向:2>
重定向就是不使用默认的标准输入输出,而是指定输入输出的地方
实例
查看txt文件的字符数
wc < txt
#将txt文件作为输入,给wc命令执行
将ls的结果放到文件txt.log,而不显示在屏幕
ls -al > txt.log
#这样子只是重定向了标准输出,如果命令执行错误,不会重定向到txt.log
#如果txt.log文件不存在,会自动创建一个
#如果再执行一次,会覆盖上一次的内容
#如果不希望覆盖上一次的内容
ls -al >> txt.log
#这样子会在文件末尾添加信息
如果ls 执行失败,将错误信息放到txt
ls -al 2> txt
#同样的,只是重定向了错误输出
允许同时重定向输入和输出
cat < int.txt > out.txt 2> exe.txt
自己写的c程序里面的printf 也可以重定向
vim hello.c
gcc hello.c -o hello
./hello > hello.log
#这样子printf 打印的内容将打印在hello.log文件中
知识补充
命令置换符号
是键盘中的 反单引号 ·,注意不是单引号
输入方式:在键盘左上角 和输入~同一个按键,不需要按shift就可以输入了
作用:可以将一个命令的输出,作为另一个命令的输入
使用
ls ·pwd·
就是将pwd的输出结果,给 ls 当参数,这样子作用和直接写 ls 一致
连续执行命令
将多个命令放在同一行执行,并使用符号 ;或 && 或 || 来连接
三个符号的作用不一样
; 号,从左到右执行命令,无论前面的命令是否成功
&& 号 ,从左到右执行命令,当前面的命令失败后,后面的命令不再执行
|| 号 ,从左到右执行命令,当前面的命令成功后,后面的命令不再执行
实例
ls ; pwd
ls && pwd
ls || pwd
命令后台执行
在一个命令后加符号 & 即可将这个命令放到后台运行
ping 4.2.2.2 &
此时ping命令是在后台运行的,但是还是可以看到一直有数据包发送的信息,此时再输入一个命令也是可以运行的
输入的命令,可能会被返回的信息截断,但是不影响,正常输入即可
输入jobs,可查看后台正在运行哪些程序,如
输入fg 【序号】,可以将某个后台程序放回窗口运行
序号就是jobs返回的序号
fg 1
如果想把后台程序结束,先使用jobs查看序号,在使用fg 序号 将其调回窗口,再 ctrl + c 结束即可
basename命令和dirname命令
basename :用于获取全路径的文件名,路径的最后一个
dirname :用于获取全路径的路径名,除了最后一个的前面那些
实例
basename /home/gfx/gg
#结果为gg
dirname /home/gfx/gg
#结果为/home/gfx
dos2unix 和unix2dos
在不同系统中表示的换行是有差别的
Windows中换行表示为\r\n
Linux中换行表示为\n
macos中换行表示为\r
所有我们把Linux的文件放去Windows中,显示格式是不一样的,反过来也是
dos2unix :将Windows文件格式变为Linux
unix2dos :将Linux文件格式变为Windows
格式: dos2unix 文件名
这两个程序一般没有默认安装,需要安装dos2unix 和unix2dos两个程序
od命令查看二进制文件
用来查看二进制文件
格式 od -t [type] 文件
选项:
a : 利用默认字符输出
c : ascii码输出
d : 十进制输出
f : 浮点数输出
o : 八进制
x : 十六进制
如 用ascii码输出:
od -t c test.exe
使用vim也可以查看二进制文件
vim -b 文件名
#然后在底行模式输入:%!xxd
file命令查看文件类型
格式:file 文件名
cut命令
文件中负责剪切数据用的
参数说明
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
实例
按字节分割
cut -b 3 #取第三个字节
cut -b 1-3 #取1,2,3字节
cut -b 1,2,3 #取1,2,3字节
cut -b 3- #取第三个字节到最后一个字节
但遇到多字节字符时,-b可能会将同一个字符的字节分割开,从而显示乱码,增加-n,可以使其不要分割字符的字节
cut -nb 1,2,3 #取1,2,3字节
按字符分割使用方法和字节差不多
按域分割
格式 : cut -d”分隔符“ -f”域“
用-d来设置间隔符,然后用-f来设置我要取的域
如
以:冒号 分割开后的第二块
cut -d”:“ -f2