首页 > 代码库 > 第一次考试总结

第一次考试总结

第一大题

1.文件权限

2.mkdir命令

3.tar命令

4.chmod命令

5.Linux查看文件的命令

6.ps命令

7.useradd命令

 

1>文件权限:

user | group | other

4 2 1| 4 2 1 | 4 2 1

r w x| r w x | r w x

rwx-

r 4 --只读
w 2 --写
x 1 --执行
- 0 --无权限

------------------------

7 rwx
6 rw-
5 r-x
4 r--
3 -wx
2 -w-
1 --x
0 --- 

[root@exam 桌面]# ll -d qa
drwxr-xr-x. 2 root root 4096 8月 9 14:28 qa

d--文件夹(LINUX中的七种文件类型

d  目录文件。
l 符号链接
s 套接字文件。
b 块设备文件,二进制文件
c 字符设备文件。
p 命名管道文件。
- 普通文件,或更准确地说,不属于以上几种类型的文件)

rwx --拥有者的权限

r-x ---属组(主组)的权限

 r-x --除了拥有者/属组以外用户的权限(其它用户)

root ---拥有者
root --属组

---------------------------------------------

2>mkdir

 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录。

1. 命令格式

  mkdir [选项] 目录名

2. 命令选项

  -m=mode 为目录指定访问权限,与chmod类似。

  -p  如果目录已经存在,则不会有错误提示。若父目录不存在,将会创建父目录。该选项常用于创建级联目录。

  -v  为每个目录显示提示信息。

demo1:创建多个目录

[root@exam 桌面]# mkdir qaz wsx edc
[root@exam 桌面]# ls
edc qa qaz wsx

[root@exam 桌面]# mkdir {1,2,3}
[root@exam 桌面]# ls
1 2 3 edc qa qaz wsx

拓展:rmdir 该命令用用来删除空目录,如果目录非空,则会出现错误。可以使用rm删除目录中的文件后,使用rmdir删除目录。也可以使用rm -rf替代rmdir命令。

3>tar

tar 打包压缩多个文件,不会改变文件的属性与权限
用法:
tar option 打包压缩后的文件 需要打包压缩的文件
选项:
-c 创建tar包
-f 指定包名
-v 显示详细信息
-z 使用gzip工具压缩
-j 使用bzip2工具压缩
-J 使用xz工具压缩
-t 查看tar包内容
-x 解压tar包
-C 指定解压路径
-r 追加文件到tar包
说明:
参数前面的“-”可有可无

4>chmod

与之有关的两个命令:chown/chgrp

chown --修改文件的拥有者/属组/其它用户的权限
chown [-R] <username>.<group> /<path>/filename
chown <username>:<group> /<path>/filename
chown <username> /<path>/filename>
chown :<group> /<path>/filename

chown -R alex:alex alex/
chonw alex.alex alex/

chgrp 更改文件或者目录的工作组所有权
chgrp -R groupname filename

chgrp kk alex
drwxr-xr-x 2 root kk 4096 Apr 14 06:09 alex

[root@desktop7 tmp]# chown .kiki xx -- 改变所属组(chgrp kiki xx)

[root@desktop7 tmp]# chown kiki. xx ---改变所有属性 (chown kiki:kki xx)

5>linux查看文件的命令

 

1.列出文件清单命令:ls
ls命令能够列出当前目录下的所有内容。ls 命令的执行方式为:
# ls [-选项] [文件名或者目录名]
进入到Linux命令行中后,我们至少要知道当前所处的位置有哪些内容,这些信息就可以使用ls命令来获得。
在Linux中,ls命令是最常使用的命令之一,因为在命令行下要随时查看目录内容。如果不加任何选项的话,ls命令仅列出当前目录下的文件和目录名,例如,想要查看/etc目录下的内容,可以使用下列命令:
# ls /etc
如果想要列出当前目录下所有文件,则可以使用下列命令:
# ls -a

2、cat命令

功能:在标准输出上显示文件。
语法:cat [-vTEuAte] 文件
例子: cat example.txt
cat -A exam2.txt
cat file1 file2 > file2

3、more命令
功能:在终端屏幕按屏显示文本文件。
语法: more [-pcdls] 文件
例子: more example.c
more -dc example.c
more -c -10 example.c

4、less命令
less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既
可以向前又可以向后翻阅文件。

5、head命令
功能:显示指定文件的前若干行。缺省设置为显示10行
语法:head [-n] 文件
例子: head example.c
head -3 example.c

6、tail命令
功能:显示指定文件的末尾若干行。缺省设置为显示10行
语法:tail [+ / - num ] [参数] 文件
+num 从第num行以后开始显示。- num 从距文件尾num行处开始显示。
例子: tail example.c
tail -4 example.c

6>ps
进程的状态:
      R 	运行
      S 	可中断睡眠 Sleep
      D		不可中断睡眠
      T 	停止的进程 
      Z 	僵尸进程
      X    	死掉的进程   【看不见】
静态查看进程——ps:
ps:用来查看进程信息,功能强大,用法也比较复杂,最常用用的参数有:ps aux ,ps -ef ,ps -ely
选项说明如下:
a:显示现行终端机下的所有进程,包括其他用户的进程;
u:显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别)。
x:显示没有控制终端的进程。通常与 a 这个参数一起使用,可列出较完整信息。
-e:显示所有进程。
-f:完整输出显示进程之间的父子关系
-l:较长、较详细的将该 PID 的的信息列出;

注:ps -aux 不同于 ps aux

意思是: 
请注意"ps -aux"不同于"ps aux"。POSIX和UNIX的标准要求"ps -aux"打印用户名为"x"的用户的所有进程,以及打印所有将由-a选项选择的过程。
如果用户名为"x"不存在,ps的将会解释为"ps aux",而且会打印一个警告。这种行为是为了帮助转换旧脚本和习惯。
它是脆弱的,即将更改,因此不应依赖。 

[root@vm1 ~]# ps aux|head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  19356  1432 ?        Ss   19:41   0:03 /sbin/init

USER: 	运行进程的用户
PID: 	进程ID
%CPU:  	CPU占用率
%MEM: 	内存占用率
VSZ:	占用虚拟内存
RSS:  	占用实际内存 驻留内存
TTY: 	进程运行的终端
STAT:	进程状态	 man ps (/STATE)			
      R 	运行
      S 	可中断睡眠 Sleep
      D	不可中断睡眠
      T 	停止的进程 
      Z 	僵尸进程
      X    	死掉的进程
      
     Ss  	s进程的领导者,父进程
     S< 	<优先级较高的进程
     SN  	N优先级较低的进程
     R+	+表示是前台的进程组
     Sl	以线程的方式运行
	
START:	进程的启动时间
TIME:	进程占用CPU的总时间
COMMAND: 进程文件,进程名

拓展:top
动态查看进程——top

在top的执行过程中,还可以使用以下的按键命令:
h|?	帮助
M	按内存的使用排序
P	按CPU使用排序
N	以PID的大小排序
R	对排序进行反转
f	自定义显示字段
1	显示当前系统的cpu的逻辑数量
T:按该进程使用的CPU时间累积排序
k:给某个PID一个信号(signal),默认值是信号15
r:重新安排一个进程的优先级别
s:改变两次刷新之间的时间。默认是5秒
q:退出程序。

<	向前
>	向后
z	彩色
W 保存top环境设置

top命令常用的选项:
-d:后面可以接秒数,指定每两次屏幕信息刷新之间的时间间隔;
-p:指定某个进程来进行监控;
-b -n:以批处理方式执行top命令。通常使用数据流重定向,将处理结果输出为文件;

[root@vm1 ~]# top
[root@vm1 ~]# top -d 1
[root@vm1 ~]# top -d 1 -p 10126					    查看指定进程的动态信息
[root@vm1 ~]# top -d 1 -u apache				    查看指定用户的进程
[root@vm1 ~]# top -d 1 -b -n 2 > top.txt 	    将2次top信息写入到文件



7>useradd
useradd --新建用户

useradd username
useradd [-c|-d|-g|-G|-s|-u|-m|-M]
-c 新建用户时添加注解
-d 指定用户的家目录
-g 指定用户的主组
-G 辅助组
-s 指定用户的shell
-u 指定用户ID
-m 新建用户时要创建家目录
-M 新建用户时不创建家目
-r 指定定程序用户
useradd -u 10005 test05 -d /dev/null -M -c "这是一个程序用户5" -g kkk -G root,bin -s /sbin/nologin
# cat /etc/passwd

用户配置文件:
/etc/passwd --存放用户信息
man 5 passwd
/etc/shadow --存放密码,账号的时间设置
man 5 shadow
/etc/group --组信息
/etc/gshadow --组密码
/etc/login.defs --创建用户时使用的模板
/etc/skel/* --用户配置文件模板

user1001:X:110:120:这是一个手工创建的用户:/home/user1001:/bin/bash
用户名 :密码:uid:gid:注释:家目录:shell

#vim /etc/shadow
user1001$1$SefNk95S$OY4g7fMVcRNvcxLJWwW.91:14940:0:99999:7:0:14950:
每一行9个字段,以冒号分隔,
1)user1001 --> 用户名
2)$1$SefNk95S$OY4g7fMVcRNvcxLJWwW.91 --> md5 加密密码
3)14940 --> 从 1970-01-01 计算经过天数 (2010-11-27)
4)用户最后修改密码限期 0 --> 密码最小修改限期, 假如 3 --> 14943 <- 从现在开始到 2010-11-30 才允许修改密码
5)99999 --> 密码修改最大限期 假如15 --> 每 15 天必须改密码一次
\--修改 15 后 --> 14940 + 15 = 14955 = 2010-12-12 前必须修改密码
6)7 --> 密码过期前 7 天开始警告
7)0 --> 当密码过期后,拒绝用户登录 (3) 过期后三天内还允许修改密码,过了三天拒绝登录
8)14500 ---> ( 1970-01-01 ) 过了 14950 天 (2011-03-01) <- 从开始用户帐号锁定
9)保留标志,目前没有意义

拓展:usermod/userdel


usermod
-d 修改用户家目录
-e 设置用户密码的过期时间
-g gid
-G GROUP
-l 新的用户登录名 # usermod -l keke test01
-L 用户锁定
-s /bin/bash ....
-u uid
-U 解锁


userdel --删除一个用户
userdel <username>
userdel -r <username> --删除用户时把家目录一起删除
usermod -g <group1> -G <group2,group3> <username>

userdel -r ----删除用户的家目录,邮件池

# usermod -g root -G kiki02 kiki01
#id kiki01
uid=2022(kiki01) gid=0(root) groups=0(root),10006(kiki02) context=root:system_r:unconfined_t:SystemLow-SystemHigh

usermod --修改一个已经存在的用户,跟useradd的参数是一样的。
usermod -c "你不是程序用户" test04
usermod -s /sbin/nologin test04
usermod -L <username> 锁定用户
usermod -U <username> 解锁用户
useradd -l 修改用户名字

第二大题
1>通配符
2>vim

1>通配符
通配符:
* --匹配一个或者任意多个字符,也就是*代表所有
? --匹配一个字符
$ --引用变量
ls /etc/*.conf
[root@instructor ~]# ls /etc/?conf
echo $PATH

2>vim
三种模式
           命令模式
iIaAoO|ESC / \:|ESC
输入模式 末行模式

1.命令模式():
yy 3yy shift+6 shift+4 p/P
  复制一行 3行 光标行首 光标行尾 行后粘貼/行前粘貼
dd 3dd HOME END
u(undo) --撤消
yw 选定光标所在行复制
行内快跳:home/end 或 shift+^ shift+$
行间快跳:gg:跳到第一行  G:跳到最后一行
 10gg:跳到10行


删除,复制,粘贴
x 向后删除一个字符 = delete
X 往前删除一个字符 =
--dd 直接删除光标所在行 ndd (n代表数字,删除n行)
--yy 复制光标所在行 nyy (n代表数字,复制n行)
--p 粘贴
--u 回退上一次操作 按一次u只能回退一次




移动相关:
--ctrl+b 向上翻页 = page up
--ctrl+f 向下翻页 = page down
ctrl+d 向下移动半页
ctrl+u 向上移动半页
--G 移动到页末 =shift +g
--gg 移动到页头
--0 移动到行头 = home
--$ 移动到行末 = end
n(代表数字)+回车 向下移动N行
h 左<--
l 右-->
k 上
j 下

2.模式行模式:
命令模式-(:)->末行模式
查找:/关键字,向下匹配按n,向上匹配按N
   ?关键字,反向查找
:set number [set nu] --设置编码 (set nonumber)
# vim /etc/vimrc
set number --在一个空白的地方加上(不要加到代码段里去了),以后使用vim打开任意文件,都会自动显示行号

:w --保存
:wq --保存退出
:wq! -- 强制保存退出
:q! --不保存退出
:e! -可以撤消所有的修改至打开文件的
:w /tmp/a.txt --另存为 强制保存 w! /tmp/a.txt
:1,10w /tmp/b.txt --1到10行另存为
:r /etc/passwd --从另一个文件中read入
:%s/root/ROOT --在整个文件中搜索每一行的第一个this替换that
:%s/root/ROOT/g --在整个文件中搜索每一行this替换that
:%s/this/that/gc
:%s#/sbin/nologin#/xbin/login#g
10,20s#/bin/bash#/sbin/nologin#


--在整个文件中搜索每一行this替换that,每一个都需要确认

3.输入模式:
命令模式-(iIaAoO)->输入模式
i --在当前光标处进入输入模式
I --在行首进入输入模式
a --在当前光标的后一个位进入输入模式
A --在当前行末进入输入模式
o --在当前光标的下一行插入空行并进入输入模式
O --在当前光标的上一行插入空行并进入输入模式
r --替换光标所在的字符
R --从光标处向后一直替换
总结:打开文件-->命令模式-(iIaAoO)-->输入模式(输入用户自定义内容)-(ESC)->命令模式-(:)->末行模式-(:wq)-》保存退出


vim -o /tmp/a.txt /tmp/b.txt ...
vim -O /tmp/a.txt /tmp/b.txt ... 切换ctrl+ww


--当两个终端同时打开的话,会产生一个.swap文件
如:你打开/tmp/passwd文件,会产生/tmp/.passwd.swap
解决方法是:直接删除掉它就可以了
rm /tmp/.passwd.swp 

第三大题
1.文件链接
2.kill

1>文件链接

链接命令:ln 生成链接文件
   ln [源文件] [目标目录] :

  • 创建硬链接 
  • -s:创建软链接   


    硬链接特征:(ln )
    1.拥有相同的i节点和存储block快,可以看做是同一个文件
    2.可通过i节点识别
    3.不能跨分区
    4.不能针对目录使用,仅对文件有效

    软链接特征:(ln -s)
    1.类似windows的快捷方式
    2.软链接拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
    3.修改任意一个文件,另一个都会改变
    4.删除源文件,则软链接无法使用
    5.软链接的文件权限都为rwxrwxrwx(文件权限以原文件为准)

    注意事项:
       若要创建软链接,则创建的源文件必须使用绝对路径,否则在使用软链接时会报错

    软链接和硬链接区别:
           若将源文件删除,硬链接依旧有效,而软链接会无效,即找不到源文件

ln    源文件   目标文件

ln   -sf  /etc/passwd  /passwd             ###-s 软连接  -f  强制建立连接

-s 是代号(symbolic)的意思。 

 

ln -sf   /data/u01    /u01

 

2>kill

1.命令格式:

kill[参数][进程号]

 

2.命令功能:

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

 

3.命令参数:

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称

-a  当处理当前进程时,不限制命令名和进程号的对应关系

-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号

-s  指定发送信号

-u  指定用户 

注意:

1、kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:

kill -2 123

它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。

2、kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。

3、可以向多个进程发信号或终止它们。

4、当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。

5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。

 

第四大题

1.小工具的使用

2.文件查找命令

1>小工具的使用:
管道(|):连接多个命令的工具,进程之间通讯的一种方式 命令1 | 命令2 | 命令3.... grep工具:行过滤 用法:grep 选项 关键字 文件 OPTIONS: -i: 不区分大小写 -v: 查找不包含指定内容的行,反向选择 -w: 按单词搜索 -c: 统计匹配到的次数[行数] -n: 显示行号 -r: 逐层遍历目录查找 -A: 显示匹配行及前面多少行 -B: 显示匹配行及后面多少行 -C: 显示匹配行前后多少行 --color=auto :可以将找到的关键词部分加上颜色的显示 -l:只列出匹配的文件名 -L:列出不匹配的文件名 -e: 使用正则搜索 grep -e xxx =egrep xxx -o: ^key:以什么开头 key$:以什么结尾 每次过滤都显示颜色: vim ~/.bashrc alias grep=‘grep --color=auto‘ source ~/.bashrc cut工具:截取某一个字符,列过滤 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f  :与-d一起使用,指定显示哪个区域。 # cut -d: -f1,3,6 passwd|head # cut -d: -f1 passwd|head # cut -c10,15 passwd |head # cut -c10-15 passwd |head # cut -c10- passwd |head 注意: cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以。 -b和-c选项,-n表示从第一个字节到第n个字节,而n-表示从第n个字节到行尾 sort工具: 排序,将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 -u :去除重复行 -r :降序排列,默认是升序 -o :将排序结果输出到文件中 -n :以数字排序,默认是按字符排序 -t :分隔符 -k :第N列 -b :忽略前导空格。 -R :随机排序,每次运行的结果均不同。 uniq 去除连续重复行,不连续不去除 -i: 忽略大小写 -c: 统计重复行次数 -d:只显示重复行 tee:从标准输入读取并写入标准输出和文件 tee 双向覆盖重定向<屏幕输出|文本输入> tee -a 双向追加重定向<屏幕输出|文本输入> paste 合并文件行 -d:自定义间隔符,默认是tab -s:串行处理,非并行 tr 替换 接收输入流文件 tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。 使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。 -d 删除字符串1中所有输入字符。 -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。 a-z 任意小写 A-Z 任意大写 0-9 任意数字 [:alnum:] all letters and digits//所有字母和数字 [:alpha:] all letters//所有字母 [:blank:] all horizontal whitespace//所有水平空白 [:cntrl:] all control characters//所有控制字符 \b Ctrl-H  退格符 \f Ctrl-L  走行换页 \n Ctrl-J  新行 \r Ctrl-M  回车 \t Ctrl-I  tab键 [:digit:] all digits//所有数字 [:graph:] all printable characters, not including space//所有可打印的字符,不包含空格 [:lower:] all lower case letters//所有小写字母 [:print:] all printable characters, including space//所有可打印的字符,包含空格 [:punct:] all punctuation characters//所有的标点符号 [:space:] all horizontal or vertical whitespace//所有水平或垂直的空格 [:upper:] all upper case letters//所有大写字母 [:xdigit:] all hexadecimal digits//所有十六进制数字 [=CHAR=] all characters which are equivalent to CHAR//所有字符 diff 比较文件的差异 1、正常格式(normal diff) 2、上下文格式(context diff) -c参数 3、合并格式(unified diff) -u参数 -i:忽略大小写 -B:忽略空行 -b:忽略空格 [root@node1 Desktop]# cat file1 a b c 3 e [root@node1 Desktop]# cat file2 a b c d e 8 [root@node1 Desktop]# diff file1 file2 4c4 < 3 --- > d 6c6 < --- > 8 [root@node1 Desktop]# diff file2 file1 4c4 < d --- > 3 6c6 < 8 --- > [root@node1 Desktop]# diff -c file2 file1 *** file2 2017-04-21 17:25:58.448733455 +0800 --- file1 2017-04-21 17:24:46.026733277 +0800 *************** *** 1,6 **** a b c ! d e ! 8 --- 1,6 ---- a b c ! 3 e ! [root@node1 Desktop]# diff -u file2 file1 --- file2 2017-04-21 17:25:58.448733455 +0800 +++ file1 2017-04-21 17:24:46.026733277 +0800 @@ -1,6 +1,6 @@ a b c -d +3 e -8 + [root@node1 Desktop]# diff -u file1 file2 --- file1 2017-04-21 17:24:46.026733277 +0800 +++ file2 2017-04-21 17:25:58.448733455 +0800 @@ -1,6 +1,6 @@ a b c -3 +d e - +8 [root@node1 Desktop]# wc工具: 统计行 字符 单词数 -l:打印行数 -c:打印字节数 -m:打印字符数 -w:打印单词数 -L:打印最长行的长度 扩展: (一)“字节”的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。 (二)“字符”的定义 字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。 (三)“字节”与“字符” 不同编码里,字符和字节的对应关系不同: ①ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。 ②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。 ③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。 符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。 ④UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。 ⑤UTF-32编码中,世界上任何字符的存储都需要4个字节。 du和df工具: du:统计目录或文件大小 -h:以人性化的方式查看 KB、MB、GB -s:显示总和 df:查看文件系统的使用情况 -h:以人性化的方式查看 KB、MB、GB -H:使用1000位进制单位,而不是1024 -T:显示文件系统类型 -i:列出inode信息
2>文件查找命令
文件查找命令:
命令文件 
# which ls                      //从PATH环境变量 (echo $PATH)
# whereis vim

任意文件
A.  locate   (查询的数据库: /var/lib/mlocate/mlocate.db)
/etc/cron.daily/mlocate.cron
	 速度快,缺点:忽略临时目录/tmp /var/tmp
需要手动更新数据库:updatedb

B、find  精确查找,磁盘搜索, io读写,cpu开销大

命令格式:
find path option key    默认会将查找的结果输出到屏幕
find path option key [ -exec 或者 -ok  shell command {} \;] 将找出来的文件执行某个shell命令

命令功能:
用于在文件树种查找文件,并作出相应的处理 
path:查找范围 / /etc ...
命令选项:
-name   按照文件名查找文件
-iname  按照文件名忽略大小写查找
-perm   按照文件权限来查找文件
-size   按照文件大小来查找  +size -size size
-type   按照文件类型来查找  f d b c l s p
-user |-nouser   属主|没有uid
-group |-nogroup 属组|没有gid
-mtime    +n              按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n              按文件访问时间来查
-ctime     n              按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-regex   正则表达式
.*      任意多个字符
[0-9]  任意一个数字

# find /etc -regex ‘.*ifcfg-eth[0-9]‘

动作:
-ls
-print
-delete
-exec command  执行参数后面的shell命令,不提示直接执行
-ok  command   执行参数后面的shell命令,询问式


引申:
|:管道  将上一条命令所执行的结果(标准输出)作为下一个命令的输入
命令1 |命令2 |命令3...

xargs命令:将上一条命令所执行的结果作为下一个命令的参数

# echo --help|cat
# echo --help|xargs cat
# find /var/log -name *.log |ls -l
# find /var/log -name *.log |xargs ls -l


参数:
-t 表示先打印命令,然后再执行。
-i 将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
统一重命名
# find test/ -name file*|xargs -ti mv {} {}.bak

第五、六大题
1.yumg工具安装rpm包
2.磁盘划分
3.acl策略
4.重定向
5,特殊权限

1>配置yum思路:
1》需要有一个仓库(有很多软件包,并且存放了软件包的依赖关系)
2》 告诉yum工具去哪个仓库里找相应的软件包

2>磁盘划分
1》需要有一块硬盘
2》使用划分工具对硬盘进行分区(fdisk)
3》格式化分区
4》挂载使用

3>acl策略
ACL访问控制策略:
setfacl 命令设置acl策略
-m:修改acl策略
-R:递归修改,针对目录,目录下的老文件会有acl策略,新建的文件没有
-d:递归修改,默认acl策略,针对目录 目录下的老文件不会有acl策略,新建的文件有acl策略
-x:删除某个用户或某个组的acl策略
-b:删除所有acl策略
mask:定义除了拥有者和其他人以外的最大权限

getfacl 命令查看文件的acl策略

demo:
setfacl -m u:harry:rw file1
setfacl -m g:admin:rwx file2
setfacl -x u:harry file1
setfacl -x g:admin file1
setfacl -b file2
setfacl -x m:: file1

-R -d
说明:
-R和-d一起使用,该目录本身和该目录下的普通文件不会继承acl策略;该目录下新创建的文件和目录以及老的目录会继承acl策略。

4>重定向
标准输入(stdin): 文件描述符 0
标准输出(stdout): 文件描述符 1
标准错误(stderr): 文件描述符 2

重定向:将结果重定向到某个文件里

> 和 1>:标准输出重定向
2>:标准错误重定向
>>:追加
<:标准输入
&>:标准输出和标准错误重定向

5>特殊权限
setuid/setgid/sticky u g o
setuid(4/s) --冒险位,临时拥有拥有者的权限
#chmod 4755 /usr/bin/vim
#chmod u+s /usr/bin/vim
[root@instructor tmp]# ll -d /usr/bin/vim
-rwxr-xr-x 1 root root 2729356 2009-06-12 /usr/bin/vim
[root@instructor tmp]# ll -d /usr/bin/vim
-rwsr-xr-x 1 root root 2729356 2009-06-12 /usr/bin/vim

setgid(2/s) --强制位,针对目录来操作,可以让新生成目录继承父目录的属组权限
(小s是一开就有执行权限。而大S是一开始没有执行权限)
# chmod 2755 /test
# chmod g+s /test


sticky --粘滞位,在公共目录中,用户只能管理(删除)自己的文件(拥有者)
# chmod 1755 /test1
# chmod o+t /tse




 

 




 

 

第一次考试总结