Linux运维第5天:Linux下bash配置及I/O重定向和grep文本查找
来源:互联网 发布:大华ddns域名注册 编辑:程序博客网 时间:2024/05/20 21:45
计算器:bc
scale=n;设置精度
手动添加用户(hive):基本组hive,附加组will
1.修改/etc/passwd文件
2.修改/etc/shadow文件
3.修改/etc/group文件
4.修改/etc/gshadow文件
5.cp -r /etc/skel/ /home/hive/
6.chown -R hive.hive /home/hive/
7.chmod -R go= /home/hive/
8.openssl passwd -1 -salt 'abcdelfg'
9.将生成的密码复制到/etc/shadow中第二个字段
umask:权限掩码
文件:666-umask
目录:777-umask
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1
站在用户角度来说,SHELL的类型:
1.登录式shell
正常通过某终端登录
su - username
su -l username
2.非登录式shell
su username
图形终端下打开命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置
~/.bashrc,~/.bash_profile
profile类的文件:
设定环境变量
运行命令或脚本(登录之前)
bashrc类的文件:
设定本地变量
定义别名
登录式shell如何读取配置文件
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile -->~/.bashrc -->/etc/bashrc
非登录式shell如何读取配置文件
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
运算器、控制器、:CPU
存储器:RAM
输入设备/输出设备
程序:指令和数据
控制器:指令
运算器:
存储器:
地址总线:内存寻址
数据总线:传输数据
控制总线:控制指令
寄存器:CPU暂时存储器
I/O:硬盘
系统设定
默认输出设备:标准输出,STDOUT,1
默认输入设备:标准输入,STDIN,0
标准错误输出:STDERR,2
标准输入:键盘
标准输出和标准错误输出:显示器
I/O重定向:
Linux:
>:覆盖
>>:追加
<:输入重定向
2>:错误重定向
2>>:追加
&>:重定向标准输出和错误输出
<<:here document
cat >> /tmp/test.txt <<EOF
set -C:禁止对已经存在的文件使用重定向覆盖
强制覆盖则使用 >|
set +C:关闭上述功能
管道:前一个命令的输出,作为后一个命令的输入
命令1 | 命令2 | 命令3 | ...
echo "RatHat" | passwd --stdin
tee:输出到标准输出并保存到文件
练习:
1.统计/usr/bin/目录下的文件个数;
# ls /usr/bin | wc -l
2.取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示;
# cut -d: -f7 /etc/passwd | sort -u
3.思考:如何显示/var/log目录下每个文件的内容类型?
#file /var/* #file `ls -d /var/*`
4.取出/etc/inittab文件的第6行;
# head -6 /etc/inittab | tail -1
5.取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中;
# tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee /tmp/users
6.显示/etc目录下所有以pa开头的文件,并统计其个数;
# ls -d /etc/pa* | wc -l
7.不使用文本编辑器,将alias cls=clear一行内容添加至当前用户的.bashrc文件中;
# echo "alias cls=clear" >> ~/.bashrc
文本查找:
grep,egrep,fgrep
grep:根据模式搜索文本,并将符合模式的文本行显示出来
Pattern:文本字符和正则表达式的元字符组合而成匹配条件
grep [OPTIONS] PATTERN [FILE...]
-i:忽略大小写
--color:
-v:反向查找
-o:只显示匹配的字符串
正则表达式:(贪婪模式)
Regular Expression,REGEXP
元字符
.:任意单个字符
*:匹配其前面字符任意次
.*:匹配任意长度任意字符
?:匹配其前面字符1次或0次
\{m,n\}:匹配前面字符m-n次
\{m,\}:
\{,n\}:
^:行首,后面的字符必须出现在行首
$:行尾,后面的字符必须出现在行尾
^$:空白行
[]:
[^]:
[:digit:],[:lower:],[:upper:] 使用时 [[:digit:]]
\<:其后面的任意字符必须作为单词首部出现(\b放在单词首)
\>:其后面的任意字符必须作为单词尾部出现(\b放在单词尾)
\(\):分组 \(ab\)* ab可以出现任意次
后向引用
\1:引用第一个左括号及其右括号内的所有内容
\2:
\3:
grep '\(l..e).*\1' test.txt
练习:
1.显示/proc/meminfo文件中以不区分大小的s开头的行;
grep -i '^s' /proc/meminfo
grep '^[sS]' /proc/meminfo
2.显示/etc/passwd中以nologin结尾的行;
grep 'nologin$' /etc/passwd
取出默认shell为/sbin/nologin的用户列表
grep "nologin$' /etc/passwd | cut -d: -f1
取出默认shell为bash,且其用户ID号最小的用户的用户名
grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
3.显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
4.显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep ':[0-9]:' /etc/inittab
5.显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
6.显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep '^\([0-9]\).*\1$' /etc/inittab
练习:
1.找出某文件中的,1位数,或2位数;
grep '[0-9]\{1,2\}' /proc/cpuinfo
grep --color '\<[0-9]\{1,2\}\>' /proc/cpuinfo
2.找出ifconfig命令结果中的1-255之间的整数;
3.查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd
grep '^student\>' /etc/passwd | cut -d: -f3
id -u student
student1
student2
练习:分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:
l1:1:wait:/etc/rc.d/rc 1
l3:3:wait:/etc/rc.d/rc 3
grep '^l\([0-9]\):\1.*\1$' /etc/inittab
正则表达式:
Basic REGEXP:基本
Extended REGEXP:扩展
grep:
-v
-i
-o
--color
-E:
-A #
-B #
-C #
egrep = grep -E
扩展正则表达式:
+:1到n次
{m,n}不需要使用\
分组:
(),\1,\2,\3
|:或
4.显示所有以数字结尾且文件名中不包含空白的文件;
ls *[^[:space:]]*[0-9] ?????????
ifconfig | egrep '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
ifconfig | egrep --color '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
IPv4:
5类:A B C D E
A:1-127
B:128-191
C:192-223
\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>
http://mageedu.blog.51cto.com/
fgrep:快速,但是不支持正则表达式
scale=n;设置精度
手动添加用户(hive):基本组hive,附加组will
1.修改/etc/passwd文件
2.修改/etc/shadow文件
3.修改/etc/group文件
4.修改/etc/gshadow文件
5.cp -r /etc/skel/ /home/hive/
6.chown -R hive.hive /home/hive/
7.chmod -R go= /home/hive/
8.openssl passwd -1 -salt 'abcdelfg'
9.将生成的密码复制到/etc/shadow中第二个字段
umask:权限掩码
文件:666-umask
目录:777-umask
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1
站在用户角度来说,SHELL的类型:
1.登录式shell
正常通过某终端登录
su - username
su -l username
2.非登录式shell
su username
图形终端下打开命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置
~/.bashrc,~/.bash_profile
profile类的文件:
设定环境变量
运行命令或脚本(登录之前)
bashrc类的文件:
设定本地变量
定义别名
登录式shell如何读取配置文件
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile -->~/.bashrc -->/etc/bashrc
非登录式shell如何读取配置文件
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
运算器、控制器、:CPU
存储器:RAM
输入设备/输出设备
程序:指令和数据
控制器:指令
运算器:
存储器:
地址总线:内存寻址
数据总线:传输数据
控制总线:控制指令
寄存器:CPU暂时存储器
I/O:硬盘
系统设定
默认输出设备:标准输出,STDOUT,1
默认输入设备:标准输入,STDIN,0
标准错误输出:STDERR,2
标准输入:键盘
标准输出和标准错误输出:显示器
I/O重定向:
Linux:
>:覆盖
>>:追加
<:输入重定向
2>:错误重定向
2>>:追加
&>:重定向标准输出和错误输出
<<:here document
cat >> /tmp/test.txt <<EOF
set -C:禁止对已经存在的文件使用重定向覆盖
强制覆盖则使用 >|
set +C:关闭上述功能
管道:前一个命令的输出,作为后一个命令的输入
命令1 | 命令2 | 命令3 | ...
echo "RatHat" | passwd --stdin
tee:输出到标准输出并保存到文件
练习:
1.统计/usr/bin/目录下的文件个数;
# ls /usr/bin | wc -l
2.取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示;
# cut -d: -f7 /etc/passwd | sort -u
3.思考:如何显示/var/log目录下每个文件的内容类型?
#file /var/* #file `ls -d /var/*`
4.取出/etc/inittab文件的第6行;
# head -6 /etc/inittab | tail -1
5.取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中;
# tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee /tmp/users
6.显示/etc目录下所有以pa开头的文件,并统计其个数;
# ls -d /etc/pa* | wc -l
7.不使用文本编辑器,将alias cls=clear一行内容添加至当前用户的.bashrc文件中;
# echo "alias cls=clear" >> ~/.bashrc
文本查找:
grep,egrep,fgrep
grep:根据模式搜索文本,并将符合模式的文本行显示出来
Pattern:文本字符和正则表达式的元字符组合而成匹配条件
grep [OPTIONS] PATTERN [FILE...]
-i:忽略大小写
--color:
-v:反向查找
-o:只显示匹配的字符串
正则表达式:(贪婪模式)
Regular Expression,REGEXP
元字符
.:任意单个字符
*:匹配其前面字符任意次
.*:匹配任意长度任意字符
?:匹配其前面字符1次或0次
\{m,n\}:匹配前面字符m-n次
\{m,\}:
\{,n\}:
^:行首,后面的字符必须出现在行首
$:行尾,后面的字符必须出现在行尾
^$:空白行
[]:
[^]:
[:digit:],[:lower:],[:upper:] 使用时 [[:digit:]]
\<:其后面的任意字符必须作为单词首部出现(\b放在单词首)
\>:其后面的任意字符必须作为单词尾部出现(\b放在单词尾)
\(\):分组 \(ab\)* ab可以出现任意次
后向引用
\1:引用第一个左括号及其右括号内的所有内容
\2:
\3:
grep '\(l..e).*\1' test.txt
练习:
1.显示/proc/meminfo文件中以不区分大小的s开头的行;
grep -i '^s' /proc/meminfo
grep '^[sS]' /proc/meminfo
2.显示/etc/passwd中以nologin结尾的行;
grep 'nologin$' /etc/passwd
取出默认shell为/sbin/nologin的用户列表
grep "nologin$' /etc/passwd | cut -d: -f1
取出默认shell为bash,且其用户ID号最小的用户的用户名
grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
3.显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab
4.显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep ':[0-9]:' /etc/inittab
5.显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
6.显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep '^\([0-9]\).*\1$' /etc/inittab
练习:
1.找出某文件中的,1位数,或2位数;
grep '[0-9]\{1,2\}' /proc/cpuinfo
grep --color '\<[0-9]\{1,2\}\>' /proc/cpuinfo
2.找出ifconfig命令结果中的1-255之间的整数;
3.查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd
grep '^student\>' /etc/passwd | cut -d: -f3
id -u student
student1
student2
练习:分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:
l1:1:wait:/etc/rc.d/rc 1
l3:3:wait:/etc/rc.d/rc 3
grep '^l\([0-9]\):\1.*\1$' /etc/inittab
正则表达式:
Basic REGEXP:基本
Extended REGEXP:扩展
grep:
-v
-i
-o
--color
-E:
-A #
-B #
-C #
egrep = grep -E
扩展正则表达式:
+:1到n次
{m,n}不需要使用\
分组:
(),\1,\2,\3
|:或
4.显示所有以数字结尾且文件名中不包含空白的文件;
ls *[^[:space:]]*[0-9] ?????????
ifconfig | egrep '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
ifconfig | egrep --color '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
IPv4:
5类:A B C D E
A:1-127
B:128-191
C:192-223
\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>
http://mageedu.blog.51cto.com/
fgrep:快速,但是不支持正则表达式
0 0
- Linux运维第5天:Linux下bash配置及I/O重定向和grep文本查找
- linux下的I/O重定向
- Linux下的I/O重定向
- Linux下的I/O重定向
- Linux Bash Shell学习(十七):I/O重定向
- linux I/O重定向
- Linux I/O重定向
- Linux I/O重定向
- Linux I/O重定向
- Bash I/O重定向
- Linux学习之---管理及I/O重定向
- linux 命令行 I/O 重定向和管道
- linux基础---管道和I/O重定向
- Linux shell I/O重定向详解
- Linux shell I/O重定向详解
- Linux shell I/O重定向详解
- Linux shell I/O重定向详解
- Linux shell I/O重定向详解
- 第一阶段项目日报4
- 最后一搏
- 《互联网创业闲扯》2-技术大拿那些事
- 键盘技巧系列——Eclipse
- (第三阶段)第31讲
- Linux运维第5天:Linux下bash配置及I/O重定向和grep文本查找
- 第32讲
- 《互联网创业闲扯》3-项目管理那些事
- asp.net简单的联系人信息管理
- 第33讲
- 最小向量积
- HibernateTools实现pojo类 数据库schma mapping映射的相互转换
- 《互联网创业闲扯》4-创业团队的管理层
- 第34讲