linux学习第五周命令与文件权限

  1. 上次内容回顾
    0.1 find 命令练习
    0.2 find 命令
    0.3 find命令及应用场景
  2. 今日内容
  3. 设置别名
    2.1 说明
    2.2 配置流程
  4. 权限配置
    3.1 权限计算:
    3.2 修改权限:
  5. 用户相关的配置文件
    4.1 用户相关文件
  6. Linux基础优化
    5.1 添加用户
    5.2 PS1
    5.3 关闭SeLinux
    5.4 关闭防火墙
    5.5 yum源
    5.6 Linux字符集
  7. 正则表达式
    6.1 常见必会特殊符号
    1 引号
  8. 重定向符号系列
    6.2 三???grep
    6.3 正则表达式
    1.基础正则
  9. 扩展正则

1.find命令

参数 含义
-maxdepth 最大深度
-name 名字
-type 类型
-size 大小 10k 1M
-mtime 修改时间
-iname 查找的实际不区分大小写
-group
-user
-perm 权限
-a
-o
!

1.1find命令及应用场景

  • find 找出文件
  • find与其他命令配合
    find + ls/rm/sed
    find + 打包压缩
    find + cp/mv

2.设置别名

2.1说明

  • 别名 Linux命令的昵称 小名
  • 预防误操作
  • 流程
    命令测试-临时
    修改配置文件-永久
    检查

2.2 配置流程

#linux系统别名 配置
rm == rm -i
[root@oldboy64-yl ~]# alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias eth0='vim /etc/sysconfig/network-scripts/ifcfg-eth0'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias net='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
alias rm='echo command bny'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@oldboy64-yl ~]# 
  • 设置别名-临时
alias 昵称=‘命令’
alias rm='rm -i'

[root@oldboy64-yl ~]# alias rm='echo command not found'
[root@oldboy64-yl ~]# rm
command not found
[root@oldboy64-yl ~]# rm oldboy01.txt 
command not found oldboy01.txt
[root@oldboy64-yl ~]# \rm oldboy01.txt 
[root@oldboy64-yl ~]# ll
total 180332
-rw-r--r--   1 root root 10223461 Jul 24 00:57 10.0.0.200_2019-07-24_etc.tar.gz
-rw-r--r--   1 root root       41 Jul 26 23:45 1.txt
-rw-r--r--   1 root root        9 Jul 26 19:27 2.txt

  • 永久设置别名
[root@oldboy64-yl ~]# tail -5 /etc/profile
unset -f pathmunge
alias rm='echo command bny'
export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$ "
alias net='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
alias eth0='vim /etc/sysconfig/network-scripts/ifcfg-eth0'
[root@oldboy64-yl ~]# source /etc/profile
[root@oldboy64-yl ~]# alias rm
alias rm='echo command bny'
[root@oldboy64-yl ~]# rm oldboy02.txt 
command bny oldboy02.txt
[root@oldboy64-yl ~]# 
  • 小坑1个
[root@oldboy64-yl ~]# vim /root/.bashrc 

  1 # .bashrc
  2 
  3 # User specific aliases and functions
  4 
  5 #alias rm='rm -i'      #加上注释就行
  6 alias cp='cp -i'
  7 alias mv='mv -i'
  8 
  9 # Source global definitions
 10 if [ -f /etc/bashrc ]; then
 11         . /etc/bashrc
 12 fi

3. 权限配置

权限 数字 含义
r 4 可读
w 2 可写(修改)
x 1 execute(执行)命令或脚本
- 0 没有权限

3.1权限计算

[root@oldboy64-yl ~]# ll
total 180332
-rw-r--r--   1 root root 10223461 Jul 24 00:57 10.0.0.200_2019-07-24_etc.tar.gz
-rw-r--r--   1 root root       41 Jul 26 23:45 1.txt
-rw-r--r--   1 root root        9 Jul 26 19:27 2.txt
-       rw-         r--                 r--   1 root root  3580282 Jul 27 23:11 50万行日志access.zip
类型 所有者  所属用户组   其他人
        420        400              400
        6            4                  4
        644

3.2 修改权限:

  • chmod 修改权限
  • chown 修改所有者和所属用户组
  • 修改权限 chmod
    通过数字
[root@oldboy64-yl ~]# chmod 644 oldboy02.txt 
[root@oldboy64-yl ~]# ll oldboy02.txt 
-rw-r--r-- 1 root root 0 Jul 13 23:55 oldboy02.txt
[root@oldboy64-yl ~]# chmod 777 oldboy02.txt 
[root@oldboy64-yl ~]# ll oldboy02.txt 
-rwxrwxrwx 1 root root 0 Jul 13 23:55 oldboy02.txt
[root@oldboy64-yl ~]# 
  • 通过字母 u g o
u
g + | - |=
o
[root@oldboy64-yl ~]# chmod a+x oldboy02.txt
[root@oldboy64-yl ~]# chmod +x oldboy02.txt    #最常用
[root@oldboy64-yl ~]# chmod ugo+x oldboy02.txt 
[root@oldboy64-yl ~]# chmod u+x,g+x,o+x oldboy02.txt 
[root@oldboy64-yl ~]#
  • chown
[root@oldboy64-yl ~]# ll oldboy02.txt 
-rwxrwxrwx 1 root root 0 Jul 13 23:55 oldboy02.txt
[root@oldboy64-yl ~]# chown oldboy.oldboy oldboy02.txt 
[root@oldboy64-yl ~]# ll oldboy02.txt 
-rwxrwxrwx 1 oldboy oldboy 0 Jul 13 23:55 oldboy02.txt
[root@oldboy64-yl ~]# 

4. 用户相关的配置文件

  • useradd
[root@oldboy64-yl ~]# which useradd adduser 
/sbin/useradd
/sbin/adduser
[root@oldboy64-yl ~]# ll `which useradd adduser`
lrwxrwxrwx. 1 root root      7 Jun 30 17:48 /sbin/adduser -> useradd
-rwxr-x---. 1 root root 118232 Oct 31  2018 /sbin/useradd
[root@oldboy64-yl ~]# 
  • userdel 尽量不要使用怕用户有数据,不要的用户可在/etc/passwd文件中用‘#’符号注释掉即可

4.1 用户相关文件

  • /etc/passwd 记录用户的信息
[root@oldboy64-yl ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@oldboy64-yl ~]# 
第1列 第2列 第3列 第4列 第5列 第6列 第7列
用户名 密码位 用户UID 用户GID 用户说明信息 用户家目录 用户使用的命令解释器(运行的命令谁替你执行)
root x 0 0 root /root /bin/bash
nobody x 99 99 Nobody / /sbin/nologin
oldboy x 1000 1000 /home/oldboy /bin/bash
  • 家目录 ~
    root /root
    普通 /home/普通用户
  • 命令解释器(shell脚本 语法不同)
    bash
    dash ubuntu
    csh tcsh unix
    /sbin/nologin 这个用户无法登陆系统 让服务正常运行使用 虚拟用户(傀儡用户)
[root@oldboy64-yl ~]# grep 'nobody' /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@oldboy64-yl ~]# su - oldboy 
Last login: Sun Jul 28 21:35:17 CST 2019 on pts/0
[oldboy@oldboy64-yl ~]$ su - nobody 
Password: 
su: Authentication failure
  • /etc/shadow 记录用户密码信息
  • 用户分类
用户分类 UID 作用
root 0 皇帝
虚拟用户(傀儡用户) 1-999(C7)1-499(c6 c5) 让系统服务正常运行所需要的用户 无法登陆系统 判断:/sbin/nologin
普通用户 1000+(c7)500+(c6 c5) 普通用户

Linux基础优化

  • 添加普通用户
  • 修改PS1
  • 关闭selinux
  • 关闭防火墙
  • 配置yum源
  • Linux字符集
  • 环境变量
    PATH
    HISTSIZE
    HISTFILESIZE
    IGNORESPACE

5.1添加用户

[root@oldboy64-yl ~]# useradd lidao
[root@oldboy64-yl ~]# su - lidao 
Last login: Sun Jul 28 12:35:45 CST 2019 on pts/0
[lidao@oldboy64-yl ~]$ 

su 与 su -
su - 是su命令的参数 - == -l == --login
切换用户的时候更新用户的环境变量

  • 切换到用户并执行命令 执行完成后退出
#通过普通用户启动服务
# 监牢模式(通过普通用户 运行 服务)
[root@oldboy64-yl ~]# su - oldboy -c whoami
oldboy

5.2 PS1

  • PS1 控制命令行格式 环境变量
[root@oldboy64-yl ~]# export PS1='[\u@\h \W]\$'

5.3 关闭SeLinux

  • selinux 限制系统权限
  • 临时
  • 永久/etc/selinux/config 重启Linux生效
enforce selinux正在运行
permissive selinux关闭,会提示警告信息
disabled selinux彻底关闭
[root@oldboy64-yl oldboy]#ll /etc/sysconfig/selinux 
lrwxrwxrwx 1 root root 17 Jun 30 17:48 /etc/sysconfig/selinux -> ../selinux/config
[root@oldboy64-yl oldboy]#vim /etc/selinux/config

  1 
  2 # This file controls the state of SELinux on the system.
  3 # SELINUX= can take one of these three values:
  4 #     enforcing - SELinux security policy is enforced.
  5 #     permissive - SELinux prints warnings instead of enfo    rcing.
  6 #     disabled - No SELinux policy is loaded.
  7 SELINUX=disabled
  8 # SELINUXTYPE= can take one of three values:
  9 #     targeted - Targeted processes are protected,
 10 #     minimum - Modification of targeted policy. Only sele    cted processes are protected. 
 11 #     mls - Multi Level Security protection.
 12 SELINUXTYPE=targeted
 13 
 14 
~                                                             
~                                                             
"/etc/selinux/config" 14L, 542C             1,0-1         All
  • 临时 使用命令 重启Linux之后失效
[root@oldboy64-lnb ~]# getenforce
Enforcing
[root@oldboy64-lnb ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@oldboy64-lnb ~]# setenforce 0
[root@oldboy64-lnb ~]# getenforce
Permissive
  • 检查
[root@oldboy64-lnb ~]# grep 'disabled'
/etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
[root@oldboy64-lnb ~]# getenforce
Permissive

5.4 关闭防火墙

  • 防火墙
    硬件防火墙
    1.三层路由
    2.华为 深信服
    开源
    1.firewalld(c7)
    2.iptables(c5 c6)
    云服务器
    安全组
  • 临时-关闭正在运行的防火墙(重启Linux后)
[root@oldboy64-lnb ~]# #检查
[root@oldboy64-lnb ~]# systemctl is-active
firewalld.service
active
[root@oldboy64-lnb ~]# #只要是active 就表示在运行中
[root@oldboy64-lnb ~]#
[root@oldboy64-lnb ~]# systemctl stop
firewalld.service
[root@oldboy64-lnb ~]#
[root@oldboy64-lnb ~]# systemctl is-active
firewalld.service
inactive

永久 - 让防火墙在开机不自启动

[root@oldboy64-lnb ~]# #检查开机自启动
[root@oldboy64-lnb ~]# systemctl is-enabled
firewalld.service
enabled
[root@oldboy64-lnb ~]# #enanbled 开机自启动
[root@oldboy64-lnb ~]# #systemctl enable/disable
firewalld
[root@oldboy64-lnb ~]# systemctl disable
firewalld.service
Removed symlink /etc/systemd/system/multiuser.
target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbusorg.
fedoraproject.FirewallD1.service.
[root@oldboy64-lnb ~]# systemctl is-enabled
firewalld.service
disabled
  • 检查
[root@oldboy64-yl ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled;    #开机不会自启动 vendor preset: enabled)
   Active: inactive (dead)   #当前已经关闭
     Docs: man:firewalld(1)
[root@oldboy64-yl ~]# systemctl start firewalld.service 
[root@oldboy64-yl ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-07-29 00:08:10 CST; 14s ago
     Docs: man:firewalld(1)
 Main PID: 53037 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─53037 /usr/bin/python -Es /usr/sbin/firewalld ...

Jul 29 00:08:09 oldboy64-yl systemd[1]: Starting firewalld ...
Jul 29 00:08:10 oldboy64-yl systemd[1]: Started firewalld -...
Hint: Some lines were ellipsized, use -l to show in full.
[root@oldboy64-yl ~]# 

5.5 yum源

  • yum 命令
    yum repolist
    yum makecache fast #生成本地yum缓存
    yum provides ifconfig
    yum install -y tree
  • yum源的存放路径
    虚拟机或物理机手动配置
    云服务器已经给你配置好
[root@oldboy64-lnb ~]# ll /etc/yum.repos.d/
total 36
-rw-r--r--. 1 root root 2523 Jul 14 12:41 CentOSBase.
repo #√
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOSCR.
repo
-rw-r--r--. 1 root root 649 Nov 23 2018 CentOSDebuginfo.
repo
-rw-r--r--. 1 root root 314 Nov 23 2018 CentOSfasttrack.
repo
-rw-r--r--. 1 root root 630 Nov 23 2018 CentOSMedia.
repo
-rw-r--r--. 1 root root 1331 Nov 23 2018 CentOSSources.
repo
-rw-r--r--. 1 root root 5701 Nov 23 2018 CentOSVault.
repo
-rw-r--r--. 1 root root 664 Jul 14 12:50 epel.repo    #√
  • yum命令的配置文件
[root@oldboy64-yl ~]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1      #保留yum下载的rpm包
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
  • 自己搭建yum仓库

    5.6 Linux字符集

  • 字符集/编码 所有的文字符号 在Linux需要1种表示或存储方法
  • 在计算机表示文字符号的方法
  • GBK(国标)
  • UTF-8(通用字符)centos默认的字符集
  • 查看字符集
    LANG 语言/字符集
[root@oldboy64-yl ~]# echo $LANG 
en_US.UTF-8   #语言,字符集
[root@oldboy64-yl ~]# export LANG=zh_CN.UTF-8  #临时
[root@oldboy64-yl ~]# vim /etc/locale.conf   #永久

  1 LANG=en_US.UTF-8

  • 1条命令配置字符集
[root@oldboy64-yl ~]# localectl set-locale LANG=zh_CN.UTF-8
Connection closed.

Disconnected from remote host(root) at 16:15:10.

Type `help' to learn how to use Xshell prompt.
[c:\~]$ 

Connecting to 10.0.0.200:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Tue Jul 30 15:57:08 2019 from 10.0.0.1
[root@oldboy64-yl ~]# echo $LANG 
en_US.UTF-8

[root@oldboy64-yl ~]# echo $LANG 
zh_CN.UTF-8
[root@oldboy64-yl ~]#
  • linux下面显示中文乱码 排查流程
    原因
    Linux系统的字符集 与 远程连接工具的字符集不同


    image.png

排查
检查Linux字符集
检查远程连接工具字符集
解决
修改字符集 统一

6. 正则表达式

6.1 常见必会特殊符号

1 引号

引号系列
单引号 所见即所得原封不动显示/输出
双引号 与单引号类似 会对特殊符号进行解析(运行)
不加引号 与双引号类似 支持{}*通配符
反引号 优先执行里面的命令
  • 引号系列
#加单引号
[root@oldboy64-yl ~]# echo 'oldboy $LANG $(hostname) `whoami`'
oldboy $LANG $(hostname) `whoami`
#加双引号
[root@oldboy64-yl ~]# echo "oldboy $LANG $(hostname) `whoami`" 
oldboy en_US.UTF-8 oldboy64-yl root
#不加引号
[root@oldboy64-yl ~]# echo oldboy $LANG $(hostname) `whoami` {1..5}
oldboy en_US.UTF-8 oldboy64-yl root 1 2 3 4 5
[root@oldboy64-yl ~]# 
[root@oldboy64-yl ~]# echo "oldboy $LANG $(hostname) `whoami` {1..5}"
oldboy en_US.UTF-8 oldboy64-yl root {1..5}
[root@oldboy64-yl ~]# echo 'oldboy $LANG $(hostname) `whoami` {1..5}'
oldboy $LANG $(hostname) `whoami` {1..5}
[root@oldboy64-yl ~]# 

2. 重定向符号系列

重定向符号系列
> 或 1> 重定向 先清空文件内容 然后再写入
>> 或 1>> 追加 内容追加到文件结尾
2> 错误输出重定向 记录错误提示
2>> 错误输出追加重定向 记录错误提示
2>&1 记录正确和错误输出
< 或 0< 输入重定向
<< 或 0<< 追加输入重定向
  • 2>&1
[root@oldboy64-yl ~]# echo oldboy >> oldboy.txt 2>&1
[root@oldboy64-yl ~]# cat oldboy.txt
oldboy
[root@oldboy64-yl ~]# eho oldboy >> oldboy.txt 2>&1
[root@oldboy64-yl ~]# cat oldboy.txt
oldboy
-bash: eho: command not found
  • < 一般与 tr 一起使用
[root@oldboy64-yl ~]# echo {1-9} |tr '123' 'abc'
{a-9}
[root@oldboy64-yl ~]# echo {1..9} |tr '123' 'abc'
a b c 4 5 6 7 8 9
[root@oldboy64-yl ~]# echo {1..9} |tr '1-3' 'a-c'
a b c 4 5 6 7 8 9
[root@oldboy64-yl ~]#为何使用管道?
[root@oldboy64-yl ~]# 一个命令解决不了问题
[root@oldboy64-yl ~]# echo {1..9} > num.txt
[root@oldboy64-yl ~]# cat num.txt
1 2 3 4 5 6 7 8 9
[root@oldboy64-yl ~]# tr '123' 'abc' < num.txt 
a b c 4 5 6 7 8 9
[root@oldboy64-yl ~]# 
  • cat >>与<< 向文件中追加多行内容
[root@oldboy64-yl ~]# cat >>oldboy.txt<<EOF 
> sdf
> kjlkjlk
> llk
> EOF
[root@oldboy64-yl ~]# cat oldboy.txt
oldboy
-bash: eho: command not found
sdf
kjlkjlk
llk
[root@oldboy64-yl ~]# 
[root@oldboy64-yl ~]# cat >>oldboy.txt<<EOF
> $LANG
> $(hostname)
> EOF
[root@oldboy64-yl ~]# cat oldboy.txt
oldboy
-bash: eho: command not found
sdf
kjlkjlk
llk
en_US.UTF-8
oldboy64-yl
#追加多行 包含特殊符号
[root@oldboy64-yl ~]# cat >>oldboy.txt<<'EOF'   
$LANG
$(hostname)
EOF

[root@oldboy64-yl ~]# cat oldboy.txt
oldboy
-bash: eho: command not found
sdf
kjlkjlk
llk
en_US.UTF-8
oldboy64-yl
$LANG
$(hostname)
[root@oldboy64-yl ~]# 

6.2 三???grep

  • 三??停ㄖС终虮泶锸剑?br> shell编程
    精简命令
  • grep 过滤在文件中/文字符号中找过你要的内容
grep
-v 排除
-w 精确过滤 按照单词进行匹配
-R 递归过滤 默认是当前目录及子目录下面进行查找
-l 只显示文件名 不显示内容
  • -v
[root@oldboy64-yl /tmp]# grep 'oldboy' oldboy.txt 
oldboy64-yl
oldboy
oldboyoldboy
aoldboy
oldboyalex
oldboy.txt 
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
[root@oldboy64-yl /tmp]# grep 'oldboy' oldboy.txt -v
zh_CN.UTF-8
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my qq is 49000448

not 4900000448.
my god ,i am not oldbey,but OLDBOY!
地方
[root@oldboy64-yl /tmp]# 
  • -w
[root@oldboy64-yl /tmp]# grep 'oldboy' oldboy.txt 
oldboy64-yl
oldboy
oldboyoldboy
aoldboy
oldboyalex
oldboy.txt 
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
  • Rl
[root@oldboy64-yl /tmp]# grep -Rl 'oldboy'
grep: test.txt.soft: No such file or directory
etc.soft/group-
etc.soft/group
etc.soft/gshadow-
etc.soft/gshadow
etc.soft/hosts

6.3 正则表达式

  • 通过符号 帮助我们进行匹配(精确)
  • 谁可以使用正则
    Linux三???br> 开发语言:Python,Java,PHP,go
  • 坑:中文符号
    。()……
    .()^
  • 基础正则
  • 扩展正则

1.基础正则

基础正则表达式
^ 以……开头的行 ^oldboy
$ 以……结尾的行 m$
^$ 空行 ^$
. 任意一个字符
\ 转义字符 脱掉马甲 打回原形(去掉特殊含义)
* 前一个字符连续出现0次或0次以上 000 999999999
.* 所有.*
[] [abc] 匹配a或b或c 1次匹配1个字符
[] [^abc] 排除 不要a或不要b或不要c
  • ^
[root@oldboy64-yl /tmp]# grep '^m' oldboy.txt 
my blog is http://oldboy.blog.51cto.com 
my qq is 49000448
my god ,i am not oldbey,but OLDBOY!
[root@oldboy64-yl /tmp]# 
  • $
[root@oldboy64-yl /tmp]# grep 'm $' oldboy.txt
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
[root@oldboy64-yl /tmp]# cat -A oldboy.txt 
zh_CN.UTF-8$
oldboy64-yl$
oldboy$
oldboyoldboy$
aoldboy$
oldboyalex$
oldboy.txt $
I am oldboy teacher!$
I teach linux.$
$
I like badminton ball ,billiard ball and chinese chess!$
my blog is http://oldboy.blog.51cto.com $
our size is http://blog.oldboyedu.com $
my qq is 49000448$
$
not 4900000448.$
my god ,i am not oldbey,but OLDBOY!$
M-eM-^\M-0M-fM-^VM-9$
  • ^$
[root@oldboy64-yl /tmp]# grep -n '^$' oldboy.txt 
10:
15:
[root@oldboy64-yl /tmp]# cat -n oldboy.txt 
     1  zh_CN.UTF-8
     2  oldboy64-yl
     3  oldboy
     4  oldboyoldboy
     5  aoldboy
     6  oldboyalex
     7  oldboy.txt 
     8  I am oldboy teacher!
     9  I teach linux.
    10  
    11  I like badminton ball ,billiard ball and chinese chess!
    12  my blog is http://oldboy.blog.51cto.com 
    13  our size is http://blog.oldboyedu.com 
    14  my qq is 49000448
    15  
    16  not 4900000448.
    17  my god ,i am not oldbey,but OLDBOY!
    18  地方
[root@oldboy64-yl /tmp]# 
  • .
[root@oldboy64-yl /tmp]# grep '.' oldboy.txt
zh_CN.UTF-8
oldboy64-yl
oldboy
oldboyoldboy
aoldboy
oldboyalex
oldboy.txt 
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
地方
[root@oldboy64-yl /tmp]# grep '.' oldboy.txt -o
z
h
_
C
N
.
U
  • \转义字符系列
    去掉特殊含义
    \n 回车换行
    \t tab键(8个空格位置)
[root@oldboy64-yl /tmp]# tr '\n' '\t' < oldboy.txt
zh_CN.UTF-8 oldboy64-yl oldboy  oldboyoldboy    aoldboy oldboyalex  oldboy.txt  I am oldboy teacher! I teach linux.     I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com     our size is http://blog.oldboyedu.com   my qq is 49000448       not 4900000448. my god ,i am not oldbey,but OLDBOY! 地方  [root@oldboy64-yl /tmp]# 
  • .*


    image.png

贪婪性:正则表示所有的时候(.*) 或表示连续出现 能吃多少就吃多少(贪婪性)

  • []


    image.png

    image.png

    image.png

    image.png

    image.png

'[a-z]'
[A-Z]
[a-Z]==[a-zA-Z]
[0-9]
[0-Z]

  • [^]


    image.png

    排除文件中的空行oldboy.txt

[root@oldboy64-yl /tmp]# grep -v '^$' oldboy.txt 
zh_CN.UTF-8
oldboy64-yl
oldboy
oldboyoldboy
aoldboy
oldboyalex
oldboy.txt 
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
地方
[root@oldboy64-yl /tmp]# 
  • 基础正则
    ^
    $
    ^$
    .
    \
    *
    .*
    []
    [^]

2.扩展正则

符号
+ 前一个字符连续出现1次及一次以上 一般+与[]一起使用
| 或者
{} a{n,m}前一个字符a连续出现至少n次,最多m次
a{n}前一个字符a连续出现n次
a{n,}
a{,m}
() 整体 或 后向引用(sed)
? 前一个字符连续出现0次或一次
  • +


    image.png
image.png

连续出现
5555555555
7777777777
现在连续出现
oldboy
57934579
kslfjsl

  • |
[root@oldboy64-yl /tmp]# egrep 'oldboy|blog' oldboy.txt 
oldboy64-yl
oldboy
oldboyoldboy
aoldboy
oldboyalex
oldboy.txt 
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com 
our size is http://blog.oldboyedu.com 
  • {}


    image.png

    image.png
  • ()


    image.png

    image.png
  • 扩展正则
    +
    |
    ()
    {}
    ?

7.作业

1.写出查询file.txt以abc结尾的行

[root@oldboy64-yl /tmp]# grep 'abc$' file.txt 

2.删除file.txt文件中的空行

[root@oldboy64-yl /tmp]# grep '^$' file.txt -n
9:
10:
11:
[root@oldboy64-yl /tmp]# 

3.查找最后创建时间是3天前,后缀是*.log的文件并删除(三种方法)

[root@oldboy64-yl /tmp]# find /oldboy/ -type f -name "*.log" -mtime +3|xargs rm -f
[root@oldboy64-yl /tmp]# find /oldboy/ -type f -name "*.log" -mtime +3 -exec rm -f {} \;
[root@oldboy64-yl /tmp]# \rm -f `find /oldboy/ -type f -name "*.log" -mtime +3`

4.删除/etc/fstab文件中所有以#开头的行的行首的# 号及#后面的所有空白字符;

[root@oldboy64-yl /tmp]# sed -r 's@^#[ \t]+@@g' /etc/fstab 

#
/etc/fstab
Created by anaconda on Sun Jun 30 17:47:28 2019
#
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=47ec2d05-84dd-4131-86ec-426c706e9c01 /                       xfs     defaults        0 0
UUID=daff218d-4ecc-484c-a479-efabd96c0467 /boot                   xfs     defaults        0 0
UUID=f8a73e41-694e-4e02-bbb0-3dbc06d90f25 swap                    swap    defaults        0 0
/dev/sda3 /data xfs defaults 0 0
[root@oldboy64-yl /tmp]# 

5.在/var/sync/log/cef_watchd-20080424.1og文件中查找大小写不敏感“mysql"字符串中的命令是

[root@oldboy64-yl /tmp]# find /var/sync/log/cef_watchd-20080424.log -type f -iname 'mysql'

6.为了在/var/sync/log 目录中查找更改时间在5日以前的文件井删除它们,linux命令是

[root@oldboy64-yl /tmp]# find /var/sync/log -type f -mtime +5 |xargs rm -f

7.把data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy.

[root@oldboy64-yl /tmp]# find /data/ -type f -name '*.txt' |xargs sed 's#oldgirl#oldboy#g'

8.有文件file1

  • 请用shell查询file1里面空行的所在行号
[root@oldboy64-yl /tmp]# grep -n '^$' file1.txt 
9:
10:
11:
  • 查询file1以abc结尾的行
[root@oldboy64-yl /tmp]# grep  'abc$' file1.txt 
  • 打印file文件第一行到第三行
[root@oldboy64-yl /tmp]# head -3 file1.txt 
oldboy
oldboy
alex

9.当前系统中没有任何文本编辑器(vi,emacs,vim,edit等),如何过来掉注释行和空行查看/etc/ssh/sshd_config文件

[root@oldboy64-yl /tmp]# egrep -vn '^#|^$' /etc/ssh/sshd_config 

剩余题目 http://08643.cn/p/61d8883719ac

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352