linux学习第五周命令与文件权限
2019-07-30 本文已影响0人
亮仔_c1b5
- 上次内容回顾
0.1 find 命令练习
0.2 find 命令
0.3 find命令及应用场景 - 今日内容
- 设置别名
2.1 说明
2.2 配置流程 - 权限配置
3.1 权限计算:
3.2 修改权限: - 用户相关的配置文件
4.1 用户相关文件 - Linux基础优化
5.1 添加用户
5.2 PS1
5.3 关闭SeLinux
5.4 关闭防火墙
5.5 yum源
5.6 Linux字符集 - 正则表达式
6.1 常见必会特殊符号
1 引号 - 重定向符号系列
6.2 三剑客-grep
6.3 正则表达式
1.基础正则 - 扩展正则
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
- 三剑客(支持正则表达式)
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三剑客
开发语言: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
连续出现
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