一、压缩和归档的命令
1.1 压缩和解压缩
操作对象是 单个文件
压缩方式:
gzip ---> .gz
bzip ---> .bz2
xz ---> .xz
上是三种压缩方式:压缩率依次递减,压缩速率依次递减。
gzip file //将文件 file 按 gzip 格式进行压缩
//压缩之后原文件就不存在了,只留下名为file.gz的压缩后的文件
解压缩:gunzip file.gz
bzip2 file //将文件 file 按 bzip2 格式进行压缩
//压缩之后原文件就不存在了,只留下文件名为file.bz2的压缩的文件
解压缩:bunzip2 file.bz2
xz file //将文件file按xz格式进行压缩
//压缩之后原文件就不存在了,只留下文件名为file.xz的压缩的文件
解压缩:unxz file.xz
1.2 归档和解归档
归档的作用是将多个文件归档成一个文件 归档操作的对象都是整个目录
归档的命令 tar
tar的命令选项:
-c 归档
-x 解归档
-v 显示详细信息
-f 必须加在选项的最后
附加选项
-z 归档的同时将文件按gzip格式压缩
-j 归档的同时将文件按bzip2格式压缩
-J 归档的同时将文件按xz格式压缩
归档:
tar -cvf 归档后的文件名 要归档的对象 //归档后的文件名一般是在原名后面加 .tar 即可
//归档操作原文件会保留
例如:
tar -cvf hqyj.tar hqyj //将hqyj目录及其子目录下的所有文件归档成一个名为hqyj.tar的文件
解归档:
tar -xvf 归档后的文件名(要解归档的文件名) //将归档后的文件进行解归档 原文件也会保留
例如:
tar -xvf hqyj.tar
注意:对归档后的单个文件就可以使用 gzip bzip2 xz 进行压缩了。
归档的同时也可以进行压缩:
tar -zcvf hqyj.tar.gz hqyj //将目录hqyj及其子目录下的内容归档并按gzip格式压缩
//生成 hqyj.tar.gz文件(注意:文件名最好符合规范)
tar -jcvf hqyj.tar.bz2 hqyj //将目录hqyj及其子目录下的内容归档并按bzip2格式压缩
//生成 hqyj.tar.bz2 文件 (注意:文件名符合规范)
tar -Jcvf hqyj.tar.xz hqyj //将目录 hqyj 及其子目录下的内容归档并按照xz格式压缩
//生成的 hqyj.tar.xz 文件(注意:文件名最好符合规范)
解压缩解归档:
tar -zxvf hqyj.tar.gz
tar -jxvf hqyj.tar.bz2
tar -Jxvf hqyj.tar.xz
通用的解压缩解归档的命令:tar -xvf hqyj.tar.(gz/bz2/xz) //()里面的内容三选一
二、查看文件内容的命令
2.1 cat命令
cat file //查看文件所有内容
cat -n file //查看文件所有内容 显示行号
2.2 head 命令
head file //查看文件开头的内容 默认显示前10行
head -n 5 file //查看文件前5行的内容
head -5 file //查看文件前5行的内容
2.3 tail 命令
tail file //查看文件结尾的内容 默认显示后10行
tail -n 5 file //查看文件后5行的内容
tail -5 file //查看文件后5行的内容
tail -f file //动态显示文件内容的新增情况-----常用于查看日志文件
| 管道符 //将前面的命令的结果 作为后面命令的参数
head -n 60 file | tail -n 10 查看文件第 51-60 行的内容
2.4 more 命令
more flie //按百分比显示文件内容
//回车键 向下滚动
// q 键 退出显示
2.5 less 命令
less file //滚动显示文件内容
// 方向键 上下 控制滚动
// q 键 退出显示
2.6 查看二进制文件的命令
od -c 二进制文件名
三、统计文件内容的命令--wc
wc file //统计文件内容
结果如下:
1000003 1000003 6000019 01test.txt
| | | |
行数 单词数 字符数 文件名
wc -l file //(小写的L)统计文件的行数-----line //比较常用
wc -w file //统计文件的单词书-----word
wc -c file //统计文件的字符数-----char
wc 命令支持使用通配符来一次统计多个文件
四、检索文件的内容的命令---grep
grep "string" file //在文件file中查找所有包含string的行
grep命令的常用选项:
-n 带行号显示
-i 忽略大小写
-w 精确查找string 必须独立出现的地方 有前缀后缀都不行
-v 反选-------查找不包含string的行
-R 递归查找,可以在子目录中查找
常用用法:
grep -nR "string" * 在当前目录及子目录下的所有文件中检索包含string的行且带行号显示
grep 命令查找字符串的写法说明:
grep "^string" file //在文件中查找所有以string开头的行
grep "string$" file //在文件中查找所有以string结尾的行
grep "^string$" file //在文件中查找所有string独立成行的行
grep命令即可以应用于检索文件内容,也多和管道符配合使用被用于检索某个命令执行的结果:
如:
ls -l 查看当前目录下所有文件的详细信息
ls -l | grep "a.c" 表示在ls -l的结果中 筛选出 包含 a.c 的行
五、查找文件的命令--find
find 路径 -name 文件名 在指定目录及其子目录下查找是否有想要的文件
eg:
find ./ -name "hello.c" 查找当前目录下所有的hello.c
find /usr/include -name "string.h" 查找/usr/include及其子目录下所有的string.h
注意:find支持使用通配符 但要注意以下用法 (错误示例,尽量别用):
find ./ -name *.c //要特别注意此种写法,它并不表示查找当前目录及其子目录下的所有.c文件
//而是在当前路径下 匹配所有.c文件,并把结果作为find的参数
//如果当前路径下只有一个a.c执行不报错,但找到的是所有的a.c
//如果当前路径下有多个.c文件,执行就会报错:参数过多
正确的查找指定路径及其子目录下所有.c结尾的文件的方式是:
find 路径 -type f | grep "\.c&" //f 表示普通文件
find 路径 -type f | grep "\.c$" | wc -l //统计指定路径下.c 文件的个数
| xargs 表示将前面的命令的结果 逐个 的赋值给后面的命令当作参数
find 路径 -type f | grep "\.c$" | xargs wc -l //统计指定路径下.c 文件的行数
六、文件内容截取的命令---cut
-d 分隔符
-f 指定要选择的域
注意:
1.cut 操作时是以行为单位操作 如果是某一行没有指定的分隔符 就不处理
2.如果指定的分隔符 是特殊字符 如 双引号 需要使用 \"
eg:
练习:
Linux系统中 /etc/password 文件中记录的是用户相关的信息
linux: x : 1000 : 1000 : linux,,, : /home/linux : /bin/bash
用户名 是否有密码 用户名id 组id 描述字段 用户的家目录 默认的命令行解析器
搭配命令,将Linux用户信息在、etc/passwd 文件中的行号显示出来
cat /etc/passwd | cut -d : -f 1 | grep -n "^linux$" | cut -d : -f 1
七、通配符
7.1 *
通配任意长度的任意字符
原有文件:
01test.txt 03test.txt 2.c a.c b.c c.c hello.c
02test.txt 1.c 3.c A.c B.c C.c
ls *.c的结果:
1.c 2.c 3.c a.c A.c b.c B.c c.c C.c hello.c
ls B*的结果:
B.c
7.2 ?
通配一个长度的任意字符
原有文件:
01test.txt 03test.txt 2.c a.c b.c c.c hello.c
02test.txt 1.c 3.c A.c B.c C.c
ls ?.c 的结果:
1.c 2.c 3.c a.c A.c b.c B.c c.c C.c
ls ?????.c 的结果:
hello.c
7.3 [字符1字符2...字符n]
通配[]内的任意一个字符
原有文件:
01test.txt 03test.txt 2.c a.c b.c c.c hello.c
02test.txt 1.c 3.c A.c B.c C.c
ls [1abcxyz].c 的结果:
1.c a.c b.c c.c
7.4[起始字符-结束字符]
通配[起始字符,结束字符]内任意一个字符
原有文件:
01test.txt 03test.txt 2.c a.c b.c c.c hello.c
02test.txt 1.c 3.c A.c B.c C.c
ls [b-d].c 的结果:
b.c c.c
7.5 [^字符1字符2...字符n]
反选:通配除了[]里的任意一个字符
原有文件:
01test.txt 03test.txt 2.c a.c b.c c.c hello.c
02test.txt 1.c 3.c A.c B.c C.c
ls [^aBc].c的结果:
1.c 2.c 3.c A.c b.c C.c
八、用户管理相关命令-----了解
Linux系统是多用户的操作系统。
8.1 添加用户
sudo adduser 用户名
创建成功后会在 /etc/passwd 文件中新增的新用户的信息
在 /etc/group 文件中新增新组的信息
注意:新添加的用户是不能以sudo 权限执行命令的
会报错:xxx 不在 sudoers 文件中。此事将被报告。
解决:
切换到root用户下 : su root
给 sudoers 文件添加写权限:chmod u+w /etc/passwd
打开这个文件 vi /etc/passwd
找到 root ALL.........这一行 复制yy 粘贴p
将新行的root改成自己新的用户名
:wq 保存退出
给sudoers 文件减掉写权限 : chmod u-w /etc/sudoers
exit 退出
8.2 切换用户
su 用户名
8.3 查看当前使用的用户
whoami
8.4 退出用户
exit
8.5 修改用户密码
注意:只有用户自己和root用户可以修改用户的密码
passwd 用户名
8.6 修改用户信息--usermod
sudo usermod -c "string" user1 //将用户user1的描述字段改成string
sudo usermod -d /home/xxx user1 //将用户user1的家目录改成 /home/xxx
//如果草率的修改了用户的家目录可能会导致用户用不了
//因为用户的家目录下有一些和用户相关的配置文件(隐藏文件)
//如果要改家目录 需要将这些配置文件迁移到新目录
sudo usermod -l beijing user1 //将用户user1的用户名改成beijing
sudo usermod -g beijing user1 //将用户user1的所属用户组改成beijing
8.7查看用户简略信息
id 用户名
8.8 删除用户
sudo deluser 用户名
8.9 删除组
sudo delgroup 组名
九、关机和重启的命令
9.1 关机的命令
sudo shutdown -h 10:30 //10:30关机
sudo shutdown -h +20 //20分钟后关机
sudo shutdown -h now //立即关机
9.2 重启的命令
sudo shutdown -r 10:30 //10:30重启
sudo shutdown -r +20 //20分钟后重启
sudo shutdown -r now //立即重启
sudo reboot //立即重启
十、文件权限管理*****
10.1 文件的权限
- rw-rw-r-- 1 linux linux 5.8M 9月 12 18:47 01test.txt
类型 权限 硬链接个数 所属用户 所属组 大小 时间戳 文件名
rw-rw-r--
rw- 所属用户的权限
rw- 所属组的权限
r-- 其他人的权限
r 读权限
w 写权限
x 执行权限
- 没有对应的权限(哪个权限没有哪个权限就显示 - )
10.2 修改文件权限--chmod
u 所属用户 user
g 所属组 group
o 其他人 other
a 所有人 all
例如:
chmod g-w 文件名 //将文件 所属组的写权限剪掉
chmod u/g/o/a某用户 +/- r/w/x 任意权限 加上或剪掉某用户的某权限
10.2.2 通过八进制数修改权限
Linux中使用3位八进制数 来表示文件的权限
eg:rw-rw-r-- 0664
rw-r----- 0640
r-x--x-w- 0512
chmod 0654 文件名 //将文件的权限改为 rw-r-xr--
10.3 修改文件的所属用户
注意:只有root用户才可以修改文件的所属用户
sudo chown user1 file //将文件file的所属用户改为user1 chown -> change own
十一、磁盘相关的命令
11.1查看系统磁盘的信息
sudo fdisk -l
其中 sda 表示系统盘 5 表示的分区编号
如果有外接硬盘,设备名依次是 sdb sdc sdd...
11.2 查看磁盘使用情况
df -h
11.3 挂载磁盘
Ubuntu20.04是提供默认挂载功能的 有些系统不提供 需要手动挂载
挂载
sudo mount /dev/sdb1(设备名) 要挂载的目录
挂载之后就可以通过挂载的目录访问硬盘
解除挂载
sudo umount /dev/sdb1(设备名)
11.4 对硬盘的操作
sudo fdisk 设备名
命令(输入 m 获取帮助): m
d 删除分区
F 列出未分区的空闲区
l 列出已知分区类型
n 添加新分区
p 打印分区表
t 更改分区类型
v 检查分区表
i 打印某个分区的相关信息
w 将分区表写入磁盘并退出
q 退出而不保存更改
11.5 指定磁盘的类型
FAT32类型 不能存储单个的超过4GB的文件
NTFS类型 可以存储单个的超过4GB的文件
sudo mkfs.ntfs 设备名 将磁盘格式化为 NTFS类型
sudo mkfs.ntfs 设备名 将磁盘格式化为FAT32类型