Linux命令(搜索查看查找类)

find 从指定目录查找文件

-name <查询方式> 按照指定的文件名查找模式查找文件
-mtime n 查找n天以前被修改过的所有文件。
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-size <文件大小> 按照指定的文件大小查找文件

1
2
3
find /root -name "*.pdf" find /root -name "*.pdf" -a -size +1M find /root -mtime +7 #七天前被修改过的文件 
find /root -name "*.sql" -exec ls -l {} \; #查找文件并以ls -l形式显示
find /root -name "*.pdf" -exec rm -f {} \;

head 与 tail 查看行

头+ 尾-
head -n +行数 文件名 (不加-n默认开头十行)
tail -n -行数 文件名 (不加-n默认结尾十行)

1
2
3
4
head a.txt #默认显示开头十行
tail a.txt #默认显示结尾十行
head -n +3 a.txt   #只显示前三行
tail -n -3 a.txt   #只显示后三行

cat 查看内容

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
-n 显示行号包括空行
-b 跳过空白行编号
-s 将所有的连续的多个空行替换为一个空行(压缩成一个空行)

1
2
cat 1.log 2.log 
cat -sb test.log

more查看大内容

more 分屏查看文件(敲空格查看下一页)

grep 过滤查找

以行为单位进行查找,显示结果为满足的行
-c 统计满足的行数
-v 反转不包含

1
2
3
4
5
6
grep "p" 1.txt #单文件搜索包含p的行 
grep "P" 1.txt b.txt #多文件搜索
grep -v "p" 1.txt #单文件搜索不包含p的行
grep -c "p" 1.txt #统计出现多少行
grep "^n" 1.txt #显示以n开头的行
grep "n$" 1.txt #显示以n结尾的行

history 查看已经执行过的历史命令

1
history 5 #最近五个命令

wc 统计文件

1
2
wc -c name.txt #查看文件的字节数
wc -l name.txt #查看文件的行数

du 查看空间

1
2
3
du -h name.txt 人性化方式(带单位) 
du -s name.txt 只统计每个参数所占用空间总的大小
du -sh /root

管道符号 | (配合命令使用)

管道符 | 表示将前一个命令的处理结果输出传递给后面的命令处理

1
history | grep -c "ll" #统计历史输入了几次ll命令

> 和 >> 指令

> 输出重定向(覆盖写),
>> 追加(追加写)

1
2
3
4
5
6
ls -l | grep -c "^d" 
ls -l | grep "^d" | wc -l
history | grep -c "ls"
history | grep "ls" | grep "s$" > ttt.txt
cat a.txt b.txt >> ttt.txt
cat a.txt b.txt | grep "s" >> ttt.txt

解压安装类

zip压缩 unzip解压

常用选项:
-r 递归压缩,即压缩目录
-d<目录> 指定解压后文件的存放目录
压缩用相对路径,解压可以用绝对路径

1
2
3
4
5
6
# 压缩文件和目录 
zip 文件名.zip 将要压缩的内容
zip test.zip -r a/b #注:绝对路径压缩会带前面的路径文件夹
# 解压缩文件
unzip 文件名.zip
unzip linux.x64_11gR2_database_1of2.zip -d /opt/app/database/

tar 压缩解压

-z 调用 gzip 程序进行压缩或解压
-c 创建(Create).tar 格式的包文件
-x 解开.tar 格式的包文件
-c </解压时指定释放的目标文件夹 指定目录
-v 输出详细信息(Verbose)
-f 表示使用归档文件(一般都要带上表示使用tar,放在最后)

1
2
3
4
5
压缩:tar [选项] ... 归档文件名(压缩包名字) 源文件或目录 #压缩选项一般用-zcvf
解压:tar [选项] ... 归档文件名 [-C 目标目录] #解压选项一般用-zxvf
tar -zcvf abc123.tar.gz abc.txt 123.txt #将abc.txt和123.txt压缩成abc123.tar.gz
tar -zcvf abc123.tar.gz m
tar -zxvf abc123.tar.gz -C /home/test/ #解压到指定目录

Yum包管理

Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载 RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

1
2
3
4
5
6
yum list | grep xxx  #查询yum服务器是否有需要安装的软件
yum info xxx #查询指定的yum包信息
yum install xxx #安装指定的yum包
yum remove xxx #卸载指定的yum包
yum list installed #查看已安装的软件包
yum install ntpdate # # 安装网络对时

用户权限类

登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可 以利用普通用户登录,登录后再用 su - 用户名 命令来切换

1
2
su - test  #切换到test用户
su - root #切换到root用户(需要输入密码)

用户及用户组

类似于角色,系统可以对有共性的多个用户进行统一的管理

1
2
3
4
5
6
7
8
9
10
新增用户组 groupadd xiaoshou 
添加用户 useradd xiaomei
添加用户时加上组 useradd -g xiaoshou xiaomei
指定/修改密码 passwd xiaomei
查询用户信息 id xiaomei
切换用户 su - xiaomei
查看当前用户 whoami
修改用户的组 usermod -g 用户组 用户名
删除用户 userdel xiaomei (exit退出后再删除)
删除组 groupdel xiaoshou

用户和组的相关文件

/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表

权限详解

[ r ]代表可读(read)
[ w ]代表可写(write)
[ x ]代表可执行(execute)

1
2
drwxr-xr-x.  2 root    root      6 5月  16 14:26 a
-rw-rw-rw-. 1 wukong shenxian 0 5月 19 16:32 1.txt

10个字符.
第一个字符代表文件类型:文件(-) 目录(d) 链接(l)
接下来每三个字符为一组,共三组,分别代表 文件拥有者、同组的其他用户、不同组的其他用户

可用数字表示为:r=4, w=2, x=1
因此 rwx=4+2+1=7

chmod 修改权限

u 所有者 g 所有组 o 其他人 a 所有人(u、g、o的总和)

1
2
3
4
5
6
7
8
9
chmod u=rwx,g=rx,o=x name.txt
chmod o+w name.txt
chmod a-x name.txt
chmod +x name.txt #不写用户默认为所有人,效果同a+x

chmod u=rwx,g=rx,o=x file
chmod 751 file #功能同上    
        
chmod -R u+r directory #递归地给directory目录下所有文件和子目录的属主分配读的权限

chown 修改文件所有者

1
2
3
4
chown [-R] 所有者 文件或目录  #-R表示递归里面的所有文件及目录 
chown test02 /root/test.txt
chown -R 用户:组 /usr/local/mysql
chown meimei:students 1.txt

练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#1.将/etc/passwd文件拷贝到/root/目录下,并改名为ptest
cp /etc/passwd /root/ptest
#2.查看ptest的前八行数据
head -n +8 ptest
#3.过滤查看ptest文件中包含root的行
grep "root" ptest

#4.查看/home目录占用空间
du -sh /home

#5./root中新建文件test.log,插入内容如下: @directory-client @gnome-apps @gnome-desktop
touch /root/test.log
vim test.log
i "@directory-client @gnome-apps @gnome-desktop "

#6.将test.log和ptest合并到/root目录下的test1.log
cat test.log ptest > /root/test1.log

#7.将/root目录下的ptest加上行号输出到test2.log
cat -n /root/ptest > test2.log

#8.查找并显示根目录下大于1M的png文件
find / -name "*.png" -a -size +1M

#9.统计系统上使用ls命令的次数
history | grep -c "ls"

#10.将/root/ptest中出现了root的行存储到test.txt文件
grep "root" /root/ptest > test.txt

#11.根据名称查找 /root 下的txt文件
find /root -name "*.txt"

#12.查找整个linux系统下大于20M的文件 (+n 大于 -n小于 n等于)
find / -size +20M

#13.查找/root/xxx/yyy/zzz下所有.txt文件并把他们删掉
find /root/xxx/yyy/zzz -name "*.txt" -exec rm -f {} \;

#14.统计ptest文件的字节数
wc -c ptest
cat ptest | wc -c #只显示数字
#15.统计ptest文件以s开头的行的数量
grep -c "^s" ptest

#1.将 /root/xxx 压缩成 a.tar.gz
tar -zcvf a.tar.gz /root/xxx

#2.将 a.tar.gz 解压到/root/ceshi/
mkdir ceshi
tar -zxvf a.tar.gz -C /root/ceshi/

#3.增加用户组 students
groupadd students

#4.添加新用户kunkun及meimei并直接加到students组
useradd -g students kunkun
useradd -g students meimei

#5.指定kunkun密码, 然后切换到这个用户
passwd kunkun
kunkun123
su - kunkun
#6.到该用户的家目录新建一个student.txt
cd
touch student.txt

#7.查询并写入该用户的用户信息到student.txt, 退出exit
id kunkun > student.txt
exit

#8.使用root账号新建文件1.txt及2.txt 对文件/root/1.txt 为所有用户分配读写执行权限
touch 1.txt 2.txt
chmod 777 /root/1.txt

#9.对文件/root/2.txt 设置权限为rwxr-xr--
chmod 754 /root/2.txt

#10.对文件/root/2.txt 设置属组权限增加写的权限
chmod g+w /root/2.txt

#11.给/root/1.txt文件修改kunkun用户及students用户组权限
chown kunkun:students /root/1.txt

#12./root/下创建文件夹open,里面批量创建文件open1.log...open100.log
mkdir open
touch /root/open/open{1..100}.log

#13.对文件夹open设置为meimei用户及students用户组权限
chown -R meimei:students open

#14.对文件夹open设置权限为rwxr-xr-x
chmod -R 755 open

#15.查看/etc/group及/etc/passwd文件内容重定向到/root/open.txt中
cat /etc/group /etc/passwd > /root/open.txt

#16.删除用户kunkun和meimei,查看/etc/passwd的后3行数据追加到/root/open.txt中
userdel kunkun
userdel meimei
tail -n -3 /etc/passwd >> /root/open.txt

#17.删除用户组,查看/etc/group的后3行数据追加到/root/open.txt中
groupdel students
tail -n -3 /etc/group >> /root/open.txt

#18.删除home下两个用户的文件夹及里面的内容
rm -rf /home/kunkun /home/meimei

#19.神仙妖怪大战,使用拼音来化名,例如:shaseng为沙僧
#建立两个组 (神仙, 妖怪),建立用户 (悟空, 八戒, 沙僧),把悟空和八戒放入妖怪,沙僧放入神仙
groupadd shenxian
groupadd yaoguai
useradd -g yaoguai wukong
useradd -g yaoguai bajie
useradd -g shenxian shaseng
#设置三个用户的密码
passwd wukong
wukong123
passwd bajie
bajie123
passwd shaseng
shaseng123
#用悟空在自己的家目录下建立一个文件 monkey.txt,该文件要输出 i am a monkey
su - wukong
touch monkey.txt
vim monkey.txt
i #i am a monkey
esc :wq
#用root账号给八戒一个对悟空文件夹及内容可以rwx的权限
su - root
chmod -R g=rwx /home/wukong
#八戒修改 monkey.txt 加入一句话( i am a pig )
su - bajie
vim /home/wukong/monkey.txt
i #i am a pig
esc :wq
#测试一下沙僧对该文件有没有权限访问
su - shaseng
vim /home/wukong/monkey.txt #显示权限不足
:q
#把沙僧放入妖怪组
su - root
usermod -g yaoguai shaseng
#让沙僧修改该文件 monkey.txt,加入一句话 ("我是沙僧,我是妖怪!")
su - shaseng
vim /home/wukong/monkey.txt
i #我是沙僧,我是妖怪!
esc :wq