tar命令,重定向,正则表达式,添加删除用户,tr命令,sort排序
rpm包仅用于 redhat suse redflag
若是源代码包的话,那就都适用
linux下面的备份,差不多就是用tar打包
tar命令
用途:制作归档文件,释放归档文件
格式:tar 【选项】... 归档文件名 源文件或目录
tar 【选项】... -C 建包或解包时进入指定的相对路径
tar cjvf ds.tar.bz2 file1 file2 dir1 使用bzip2标准压缩file1 file2 dir1包名为ds.tar.bz2
tar czvf ds.tar.gz file1 file2 dir1 使用gzip标准压缩file1 file2 dir1包名为ds.tar.gz
tar tvf ds.tar.gz 查看压缩文件ds.tar.gz的内容
tar xvf ds.tar.gz -C /tmp 将ds.tar.gz释放到tmp文件夹下面去
-c:建立压缩包
-C:建包或解包时进入指定的相对路径
-x:解压文件
-t:查看压缩文件
-z:使用gzip标准进行压缩、解压
-j:使用bzip2标准进行压缩、解压
-v:显示压缩解压过程
-f:后面紧跟压缩文件名称
-p:使用原文件的原来属性
-P:使用绝对路径(最好不用)
--exclude file:压缩过程中排除file(也可以是目录)
扩展:
tar cjvf ds-`date+%F`.tar.bz2 file1 file2 dir1
[root@localhost ~]# vim file1 file1中有abc
[root@localhost ~]# echo "abc"
abc
[root@localhost ~]# echo "abc"
abc
[root@localhost ~]# echo "abc" | tr "a-z" "A-Z"
ABC
[root@localhost ~]# tr "a-z" "A-Z" < file1
ABC
[root@localhost ~]# tr "a-z" "A-Z"
abc 输入字符
ABC 转换后字符
wsx
WSX
edc
EDC
^C
[root@localhost ~]# lslsls 1>a 2>b 1标准输出 2标准错误输出
[root@localhost ~]# cat a
[root@localhost ~]# cat b
bash: lslsls: command not found
[root@localhost ~]# date 1>a 2>b
[root@localhost ~]# cat a
Tue Jul 16 10:23:31 CST 2013
[root@localhost ~]# cat b
[root@localhost ~]# dateabc &>a 标准输出和标准错误输出都放到同一个文件中去&为1或者2
[root@localhost ~]# cat a
bash: dateabc: command not found
root@localhost ~]# date 1>a 2>a
[root@localhost ~]# date 1>a 2>&1
[root@localhost ~]# cat a
Tue Jul 16 10:27:38 CST 2013
rpm -e gdb 卸载gdb软件
rpm -ivh gdb or yum install gdb -y 安装gdb软件
若要屏幕不显示安装信息,可将其安装信息重定向到别的文件中去 eg: yum install gdb -y >a
这样,a文件中又有安装信息,占了内存,所以定向到/dev/null中去,因为其中的内容会自动被内存清理掉 eg:yum install gdb -y > /dev/null
[root@localhost ~]# grep "tom" /etc/passwd 找出tom用户的信息
tom:x:500:500::/home/tom:/bin/bash
[root@localhost ~]# route -n | grep "UG"
0.0.0.0 10.0.0.253 0.0.0.0 UG 0 0 0 eth0
[root@localhost ~]# route -n | grep "UG"| cut -f2
0.0.0.0 10.0.0.253 0.0.0.0 UG 0 0 0 eth0
[root@localhost ~]# route -n | grep "UG"| awk '{print $2}'
10.0.0.253
[root@localhost ~]# route -n | grep "UG"| tr -s " "
0.0.0.0 10.0.0.253 0.0.0.0 UG 0 0 0 eth0
[root@localhost ~]# route -n | grep "UG"| tr -s " " | cut -d" " -f2
10.0.0.253
cut制定默认的分割符是tab键
grep 通用正则表达式分析程序。正则表达式一定要用""引起来
用途:在文件中查找并显示包含指定字符串的行
格式:grep [选项]... 模式 目标文件
-i:查找时忽略大小写
-v:反转查找,输出与模式不相符的行
-l:仅显示符合模式要求的文件名
-n:显示符合模式要求的行号
-r:递归搜索所有文件
-q:禁止任何输出
[root@localhost ~]# grep "lee" file1 -i -i是指不区分大小写
Lee 3 k
grep "^#" 正则表达式中的一个元字符。以#开头 “^a”则是以a开头的行
[root@localhost ~]# grep "^tom" file1 以tom开头的
tom to kg
[root@localhost ~]# grep "^tom" file1 -v 不以tom开头的
dfsk 23 k
jk 23 n
Lee 3 k
[root@localhost ~]# grep "def$" file1 以def结尾的
av dkj def
[root@localhost ~]# grep "def" file1 包含了def的
dskf def sdk
av dkj def
fgrep:快速搜索简单模式
egrep:可以使用扩展正则表达式搜索
正则表达式是一个指定文本模式的标准Unix语法
使用特殊元字符实现复杂的搜索问题
基本正则表达式和Unix兼容
扩展正则表达式增加了一些新的元字符
fgrep: 不支持正则表达式
grep: 可以使用基本正则表达式搜索
egrep:可以使用扩展正则表达式搜索
正则表达式由下列元素构成
文字字符
通配符--与文件名通配符不是一回事
修饰符:”*”、”?”等
锚点:以什么开头、以什么结尾
在正则表达式中任意字符串用.*表示
[root@localhost ~]# echo "root abc def" | grep "r..t"
root abc def
[root@localhost ~]# echo "root abc def" | grep "r.t"
[root@localhost ~]# echo "root abc def "|grep "ro*t"
root abc def
[root@localhost ~]# echo "rt abc def "|grep "ro*t"
rt abc def
[root@localhost ~]# echo "rot abc def "|grep "ro*t"
rot abc def
[root@localhost ~]# ls *.sh
vnc.sh
[root@localhost ~]# ls ?.sh
ls: cannot access ?.sh: No such file or directory
[root@localhost ~]# ls vn?.sh
vn通配符
“.”:表示一定有一个任意字符
a…b表示a b间有3个字符,有几个.就有几个字符
方括号表达式:一个文字字符域
[abc]表示什么意思?
[root@localhost ~]# echo "axb"|grep "a[xyz]b" 必须有xyz中的一个
axb
[root@localhost ~]# ls v[mnl]c.sh []中的任意一个
vnc.sh
[^abc]表示什么意思?
[root@localhost ~]# echo "aub"|grep "a[^xyz]b" 取反,不能有xyz中的任意一个
aub 不能是[]中的任意一个
* ?是bash的功能,而不是正则.*表示任意字符串,?表示有且只有一个字符
在正则表达式中任意字符串用.*表示
通用修饰符
“?”:表示0个或者1个前面的字符
ab?c表示什么意思?
“*”:表示0个或者多个前面的字符
ab*c表示什么意思?
“+”:表示1个或者多个前面的字符
ab+c表示什么意思?
{n}:表示n个前面的字符
ab{2}c表示什么意思?
{n,m}:表示n个到m个前面的字符
ab{2,4}c表示什么意思?
锚点搜索
“^”:表示以什么开头
^#表示什么意思?
grep -v ‘^#’ /etc/inittab | grep –v ^$
egrep ‘^[^[:digit:]]’ /ec/inittab
“$”:表示以什么结尾
bash$表示什么意思?
egrep ':$' /etc/inittab
egrep ‘^hello$' /etc/passwd
\< abc \>:表示abc这个单词
egrep ‘\<pig\>' /usr/share/dict/words
正则表达式与文件名匹配的区别
正则表达式只在少数搜索和替换文本命令中使用
文件名匹配在bash中匹配文件名
都使用”*”、”?”但意义不一样
正则表达式元字符要放在单引号内,避免bash Shell解释
tr命令:是对单个字符进行处理,而不是字符串
字符转换工具
只能对stdin操作,不能对文件进行操作
[root@localhost ~]# echo "abc def"|tr "a-z" "A-Z"
ABC DEF
[root@localhost ~]# echo "ABC DEF"|tr "A-Z" "a-z"
abc def
[root@localhost ~]# echo "abc def ade axy"|tr "a-c" "1-3"
123 def 1de 1xy
[root@localhost ~]# tr "abc" "ABC"
avc
AvC
avb
AvB
[root@localhost ~]# echo "abc 123a dcevbf"| tr -d "abc" 删除出现的a字符b字符c字符
123 devf
[root@localhost ~]# echo "111222333444"|tr -s "123" 把多个1压缩成一个1……
123444
sort排序
ls -l | sort -k5nr 以第5个字段作为数值降序排列
sort -t: -k3nr /etc/passwd 以第三个字段作为数值降序排列
uniq命令
删除经过排序后的数据的重复记录
uniq file1 只能删除连续的相同的行
通常和sort连用
sort -n tt | uniq
[root@localhost ~]# vim file1
[root@localhost ~]# uniq file1
111111
222222
111111
222222
[root@localhost ~]# sort file1 | uniq 删除重复行
111111
222222
[root@localhost ~]# sort file1 |uniq -c -c显示原来的111111有多少行,原来的222222有多少行
3 111111
3 222222
和账户相关的文件
用户信息放在/etc/passwd下,用户密码放在/etc/shadow下
和组相关的文件
/etc/group 、 /etc/gshadow
账户宿主目录中文件来源
新建用户帐号时,从 /etc/skel 目录中复制而来
默认账户的属性文件
/etc/login.defs
useradd命令
格式:useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
passwd命令
格式:passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
--stdin:接收标准输入作为密码
root用户可以修改所有用户密码,不要求复杂性
普通用户只能改自己的密码,要求复杂性
userdel命令
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
usermod命令
格式:usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
groupmod命令
用途:设置组名和组id
格式:groupmod [选项]... 组帐号名
常用命令选项
-n:修改组名
-g:修改组id
newgrp改变主要组
用户必须是要改变组的成员
id命令
用途:查询用户身份标识
格式:id [用户名]
finger命令
用途:查询用户帐号的详细信息
格式:finger [用户名]
chfn命令
用途:修改用户的备注信息,/etc/passwd第5字段
who、w、users命令
用途:查询已登录到主机的用户信息
groups命令
用途:查询用户所属的组