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命令
用途:查询用户所属的组

posted @ 2013-07-16 20:46  指间沙···  阅读(1750)  评论(0编辑  收藏  举报