第二周总结

Linux下的文件类型
- 普通文件 d 目录文件 b 块设备 c 字符设备 l 符号链接文件 p 管道文件pipe s 套接字文件socket

列出当前目录内容:ls

**ls -a** 包含隐藏文件
**ls -l** 显示额外的信息
**ls -R  **目录递归通过
**ls -ld**  目录和符号链接信息
**ls -1**  文件分行显示
**ls –S**  按从大到小排序 
**ls –t **  按mtime排序 
**ls –u **  配合-t选项,显示并按atime从新到旧排序 
**ls –U**  按目录存放顺序显示 
**ls –X ** 按文件后缀排序 

touch : 创建空文件和刷新时间

cp :复制⽂件和⽬录

【例】把/etc/httpd/conf/httpd.conf⽂件和/etc/my.cnf⽂件拷贝到当前⽬录
[..@。。。]# cp /etc/httpd/conf/httpd.conf /etc/my.cnf ./

【例】把/etc/nginx⽬录及其下⾯所有⽂件和⼦⽬录拷贝到当前⽬录
[..@。。。]# cp -R /etc/nginx/ ./

【例】复制httpd.conf⽂件并重命名为httpd.conf.bak
[..@。。。]# cp httpd.conf httpd.conf.bak

【例】复制/etc⽬录下所有⽂件及其⼦⽬录到当前⽬录,并重命名为etc_bak
[..@。。。]# cp -R /etc ./etc_bak

mv : 移动和重命名文件

【例】把当前⽬录下nginx命令重命名为nginx_bak
[..@。。。]# mv nginx/ nginx_bak

【例】把httpd.conf⽂件移动到/tmp⽬录下
[..@。。。]# mv httpd.conf /tmp

#rm : 删除文件或目录 :rm - rf /*

tree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目

mkdir :创建文件目录
-v : 显示详细信息

rmdir 删除空目录
-p: 递归删除父空目录

tree:显⽰⽬录树
【例】显⽰a⽬录的⽬录树
[..@。。。]# tree a
【例】查看/usr/local⽬录树,但仅查看2级的⽬录深度
[..@。。。]# tree -L 2 /usr/local

ln:创建链接⽂件
【例】把 /usr/sbin/apachectl⽂件在当前⽬录下创建软连接⽂件为apachectl
[..@。。。]# ln -s /usr/sbin/apachectl apachectl

I/O重定向和管道使⽤

: 表⽰标准输出覆盖重定向;
【例】 把/etc/fstab⽂件内容重定向到/tmp⽬录下⽂件名为fstab.out
[..@。。。]# cat /etc/fstab > /tmp/fstab.out

: 表⽰标准输出追加重定向;
【例】把hello world追加到/tmp/fstab.out⽂件尾部
[..@。。。]# echo "hello world" >>/tmp/fstab.out

2> : 表⽰错误输出覆盖重定向;
【例】把标准错误重定向:
[..@。。。]# whch cat 2> /tmp/which.out
[..@。。。]# cat /tmp/which.out
bash: whch: command not found...

2>> : 表⽰错误输出追加重定向;

&> : 表⽰合并标准输出和错误输出覆盖重定向;
【例】合并标准输出和标准错误覆盖重定向到out.txt⽂件⾥
[..@。。。]# which cat &> out.txt
[..@。。。]# cat out.txt
/usr/bin/cat
[..@。。。]# hich cat &>> out.txt
[..@。。。]# cat out.txt
/usr/bin/cat
bash: hich: command not found...

&>> : 表⽰合并标准输出和错误输出追加重定向;

2>&1 :表⽰意义同&>即合并标准输出和错误输出覆盖重定向;
【例】 &>等价于2&>1,功能同上例
[..@。。。]# which cat > out.txt 2>&1
[..@。。。]# cat out.txt
/usr/bin/cat
[..@。。。]# wich cat >> out.txt 2>&1
[..@。。。]# cat out.txt
/usr/bin/cat
bash: wich: command not found...

<: 输⼊重定向;
从⽂件导⼊标准输⼊
【例】把out.txt⽂件⾥的内容,写到file.txt⽂件⾥
[root@Magedu ~]# cat >file.txt <out.txt

[root@Magedu ~]# cat file.txt

/usr/bin/cat

bash: wich: command not found...

<<: 多⾏输⼊;
【例】屏幕随便输⼊⼏⾏内容,遇到END字样结尾后,屏幕内容⾃动保存在f1.txt⾥
[..@。。。]# cat > f1.txt <<END

first

scond

third

END

[..@。。。]# cat f1.txt

first 
scond 
third 

set -C命令:禁⽌覆盖重定向;

|: 强制覆盖重定向(与set -C相反);

【例】禁⽌覆盖重定向和强制重定向
[..@。。。]# set -C
[..@。。。]# echo "hello magedu" >/tmp/fstab.out
-bash: /tmp/fstab.out: cannot overwrite existing file

设置禁⽌覆盖重定向后,可强制覆盖重定向
[..@。。。]# echo "hello " >| /tmp/fstab.out
[..@。。。]# cat /tmp/fstab.out
hello

set +C命令:解除禁⽌覆盖重定向的设置;
【例】解除禁⽌覆盖重定向设置
[..@。。。]# set +C

[..@。。。]# echo "hello" > /tmp/fstab.out
[..@。。。]# cat /tmp/fstab.out
hello
管道符(|)作⽤是把前⼀个命令的执⾏结果当做后⼀个命令的输⼊

重难点

【例】**把标准错误和标准输出分别重覆盖定向到不同的⽂件⾥,即标准错误重定向到falt.txt⽂件,标准输出 重定向到correct.txt

[..@。。。]# which cat 2> falt.txt > correct.txt 
[..@。。。]# cat correct.txt  
 /usr/bin/cat 
[..@。。。]# cat falt.txt  

[..@。。。]# wih cat 2> falt.txt > correct.txt 
[..@。。。]# cat falt.txt  
bash: wih: command not found... 
[..@。。。]# cat correct.txt 

tr :把字符集1转换为字符集2

-c –C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
[:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符

【例】⽤输⼊重定向的⽅式,把所有⼩写字⺟转换为⼤写
[..@。。。]# cat /etc/issue
\S
Kernel \r on an \m

[..@。。。]# tr a-z A-Z </etc/issue
\S
KERNEL \R ON AN \M

tr –d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符

tr ‘a-z’ ‘A-Z’< /etc/issue 该命令会把/etc/issue中的小写字符都转换成大写字符

管道符:|

【例】把echo输出的内容,传递给tr命令,实现⼩写字⺟转换为⼤写字⺟
[..@。。。]# echo "this is test line" | tr a-z A-Z

THIS IS TEST LINE

用户组

useradd:在系统中添加⽤户

-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户

【例】在系统上添加⼀个⽤户名称为apache的⽤户,默认shell为/sbin/nolgoin且不创建家⽬录
[..@。。。]# useradd -s /sbin/nologin -M apache

groupadd:创建组

chown:修改⽂件所属关系

userdel : 删除用户

passwd : 设置密码,修改用户原密码

-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
示例:echo "PASSWORD" | passwd --stdin USERNAME

组属性修改:groupmod

groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID

组删除:groupdel ,groupdel GROUP

gpasswd : 更改组密码

gpasswd [OPTION] GROUP
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列

newgrp命令:临时切换主组

  如果用户本不属于此组,则需要组密码 

修改文件的属主:chown

修改文件的属组:chgrp

文件权限

a , all 所有用户
owner 属主, u
group 属组, g
other 其他, o 
三种权限 :
r Readable 读 4 :可使用文件查看类工具获取其内容
w Writable 写 2 :可修改其内容
x eXcutable 执行 1 : 可以把此文件提请内核启动为一个进程

chmod : 改变文件权限

第二周总结

【例】修改权限为属主添加写和执⾏权限、属组没有读权限其它⼈有读和执⾏权限

  [。。@。。。~]# ll 1.sh 

   -rw-r--r-- 1 root root 0 Jun  3 22:16 1.sh  
   [。。@。。。~]# chmod u+wx,g-r,o=rx 1.sh 
   [。。@。。。~]# ll 1.sh 
   -rwx---r-x 1 root root 0 Jun  3 22:16 1.sh 

【例】递归设置testdir⽬录权限为:属组添加可读、可写、可执⾏权限,但其⼦⽂件不添加执⾏权限
[。。@。。。 ~]# chmod -R g=rwX testdir/

chattr : 改变文件属性

【例7】设置⽂件1.sh权限为只有属主有读写权限

     [root@Magedu ~]# ll 1.sh
    -rw-r--r-- 1 root root 0 Jun  4 00:28 1.sh 
     [root@Magedu ~]# chmod 600 1.sh 
     [root@Magedu ~]# ll 1.sh
     -rw------- 1 root root 0 Jun  4 00:28 1.sh 

SGID : 权限设置

【例】设置⼆进制可执⾏程序⽂件chmod拥有suid权限
第二周总结

【例】取消⼆进制可执⾏程序⽂件chmod拥有的suid权限
第二周总结

【例】设置⼆进制可执⾏程序⽂件chmod拥有sgid权限
第二周总结

【例】取消⼆进制可执⾏程序⽂件chmod拥有的sgid权限
第二周总结

【例】对testdir⽬录设置sgid权限,作为协作⽬录
第二周总结

【例】取消testdir⽬录sgid权限
第二周总结

Sticky权限设置

【例】对testdir⽬录设置sticky权限,实现只有⽂件的所有者或root才能删除该⽬录下的⽂件
第二周总结

【例】取消testdir⽬录的sticky权限
第二周总结

acl特殊权限

【例】在/testdir/dir⾥创建的新⽂件⾃动属于g1组,组g2的成员如:alice能对这些新⽂件有读写权限,组 g3的成员如:tom只能对新⽂件有读权限,其它⽤户(不属于g1,g2,g3)不能访问这个⽂件夹。
第二周总结

【例】备份/testdir/dir⾥所有⽂件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后 还原ACL权限
getfacl对⽬录操作时,不能使⽤绝对路径;

第二周总结

文本处理

cat命令:查看⽂件全部内容

less命令:分页显⽰⽂件内容

【例】分页查看/var/log/messages⽂件,⽂件最后不退出

    [。。@。。。~]# less /var/log/messages  

head命令:查看⽂件⾸部的内

 -c # 指定获取前#字节 
 -n # 指定获取前#行  
 -# 指定行数 

【例】查看1.sh⽂件的前3⾏内容
第二周总结

tail命令:查看⽂件尾部的内容

-c # 指定获取后#字节 
-n # 指定获取后#行 
-# 同上 
-f 跟踪显示文件fd新追加的内容,常用日志监控  , 相当于 --follow=descriptor 
-F 跟踪文件名,相当于--follow=name --retry 

第二周总结

监视查看1.sh⽂件尾部是否有内容增加

     [。。@。。。~]# tail -f 1.sh   

diff命令:⽐较两⽂件

【例】⽐较1.sh和2.sh两⽂件的不同
第二周总结

cut命令:按列抽取⽂本内容

-d DELIMITER: 指明分隔符,默认tab  -f FILEDS:    
#: 第#个字段     
#,#[,#]:离散的多个字段,例如1,3,6     
#-#:连续的多个字段, 例如1-6               
混合使用:1-3,7
-c 按字符切割  --output-delimiter=STRING指定输出分隔符 

【例】截取/etc/passwd⽂件第⼀⾏,以冒号为分隔符,抽取第7个字段
第二周总结

sort命令:⽂本排序

        -r 执行反方向(由上至下)整理
        -R 随机排序 
        -n 执行按数字大小整理
        -f 选项忽略(fold)字符串中的字符大小写 
        -u 选项(独特,unique)删除输出中的重复行
        -t  c 选项使用c做为字段界定符 
        -k  X 选项按照使用c字符分隔的X列来整理能够使用多次

【例】以1.sh⽂件⼀⾏内容的空格分隔,按第3段从⼤到⼩排序
第二周总结

wc命令:⽂本数据统计

【例】统计/etc/pass⽂件有多少⾏

[。。@。。。~]# cat /etc/passwd | wc -l 

 50 

uniq命令:⽂本去重

【例】统计2.sh⽂件中相同内容的⾏出现的次数
第二周总结

grep命令和正则表达式应⽤

Linux文本处理三剑客

grep :文本过滤工具

sed :文本编辑工具

awk : 文本报告生成器

 --color=auto: 对匹配到的文本着色显示 
 -m  #  匹配#次后停止  
 -v 显示不被pattern匹配到的行  
 -I 忽略字符大小写 
 -n 显示匹配的行号 
 -c 统计匹配的行数 
 -o 仅显示匹配到的字符串 
 -q 静默模式,不输出任何信息 
 -A # after, 后#行  -B # before, 前#行 
 -C # context, 前后各#行 
 -e 实现多个选项间的逻辑or关系  grep –e ‘cat ’  -e ‘dog’  file 
 -w 匹配整个单词  
 -E 使用ERE 
 -F 相当于fgrep,不支持正则表达式 
 -f file 根据模式文件处理 

基本正则表达式元字符

字符匹配:

.    匹配任意单个字符   
[]   匹配指定范围内的任意单个字符,示例:[wang]   [0-9]    [a-z]   [a-zA-Z] 
[^]  匹配指定范围外的任意单个字符  

第二周总结

匹配次数

第二周总结

*匹配前面的字符任意次,包括0次 
贪婪模式:尽可能长的匹配  
*.* 任意长度的任意字符 
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次 
\{n\} 匹配前面的字符n次 
\{m,n\} 匹配前面的字符至少m次,至多n次  
\{,n\} 匹配前面的字符至多n次 
\{n,\} 匹配前面的字符至少n次 

位置锚定:定位出现的位置

【例】查找/etc/passwd⽂件⾥包含root字符串的⾏
第二周总结

【例】查找2.sh⽂件⾥显⽰不包含111字符串的⾏
第二周总结

【例】显⽰/etc/passwd⽂件中以bash结尾的⾏
第二周总结

【例】找出“ldd /usr/bin/cat”命令的结果中的⽂件路径
第二周总结

【例】找出ifconfig命令结果中所有IPv4地址
第二周总结

【例】将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前⾯
第二周总结

egrep命令:同grep命令,但⽀持扩展的正则表达式

【例】使⽤egrep取出/etc/rc.d/init.d/functions路径的⽬录名
第二周总结

转载于:https://blog.51cto.com/14234291/2364833

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值