1.安装rpm软件:rpm -Uvh 包.rpm
2.卸载rpm软件:rpm -e 包
3.配置、编译、安装、卸载源码发布的软件包:
./configure
make
make install
make clean
卸载源码发布的软件包
make uninstall
4.pwd
5.ls
6.cd
7.mkdir
8.rm
9.cp
10.mv
11.rm
12.ln:用来在文件之间创建链接
-d:允许系统管理者硬链结自己的目录
-s:进行软链结(Symbolic Link)
-f:链结时先将源文件删除
-b:将在链结时会被覆盖或删除的文件进行备份
13.chmod
u 文件属主权限
g 属组用户权限
o 其他用户权限
a 所有用户
+ 增加权限。
- 取消权限。
= 设定权限
r 读权限
w 写权限
x 执行权限
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
r=4,w=2,x=1
例:
(1)将档案 file.txt 设为所有人皆可读取
chmod ugo+r file.txt
(2)将档案 file.txt 设为所有人皆可读取
chmod a+r file.txt
(3)将档案 file1.txt与file2.txt设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
chmod ug+w,o-w file1.txt file2.txt
(4)将file设定为只有该档案拥有者可以执行 :
chmod u+x file
(5)将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
14.chown:更改与文件关联的所有者或组
例:
(1)file.txt的用户访问权限现在应用到dce,作为所有者dce可以使用
chown dce file.txt
(2)要将目录/DCE中所有文件的所有者和组更改为用户dce和组dba
chown -R dce:dba /DCE
15.wc -l:查看文件有多少行
wc -c:查看文件的有多少字节
16.cat:用于显示整个文件的内容,没有翻页功能;可将数个文件合并成一个文件
more:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按Q键停止显示
less:可以用来浏览超过一页的文件。可以按空格键,上下键来卷动文件。当要结束浏览时,在提示符“:”下按Q键
17.dd:磁盘信息的低级复制
dd if=/dev/hda2 of=bootsect.lnx bs=512 count=1
dd if=bootimg.img of=/dev/fd0
18.管道:将一个指令的标准输出作为另一个命令的标准输入
例:返回/usr/bin 中的文件列表的行数
ls /usr/bin | wc -l
19.输出重定向>或>>
>若文件存在,原有内容被覆盖
>>若文件存在,在原内容后追加
20.LANG=zh_CN 中文编码显示
21.head
例:
(1)head /etc/passwd 显示文件前10行
(2)head -10 /etc/passwd 显示文件前10行
= head -n 10 /etc/passwd
= head -n +10 /etc/passwd
(3)head -q -n 10 file1 file2 file3 显示多个文件开头10行,不显示文件头
(4)head -v -n 10 file1 file2 file3 显示多个文件开头10行,显示文件头
(5)head -n -10 file 显示除文件最后10行外的所有内容
22.tail
例:
(1)tail /etc/passwd 显示文件后10行
(2)tail -10 /etc/passwd 显示文件后10行
= tail -n 10 /etc/passwd
= tail -n -10 /etc/passwd
(3)tail -q -n 10 file1 file2 file3 显示多个文件最后10行,不显示文件头
(4)tail -v -n 10 file1 file2 file3 显示多个文件最后10行,显示文件头
(5)tail -n +10 file 从文件第10行显示
(6)tail -f /var/log 不停地去读最新的内容,用于实时监视,用Ctrl+c来终止
23.tar
(1) 解压
例:
tar xvf *.tar
tar zxvf *.tar.gz
tar jxvf *.tar.bz2
(2) 压缩
例:
tar cvf * filename.tar
tar zcvf * filename.tar.gz
tar jcvf * filename.tar.bz2
24.awk
例:
(1) 打印所有以模式no或so开头的行
awk '/^(no|so)/' myfile
(2) 如果记录以n或s开头,就打印这个记录,默认以空格或tab分割,即-F ' '
awk '/^[ns]/{print $1}' myfile
(3) 如果第一个域以两个数字结束就打印这个记录
awk '$1 ~/[0-9][0-9]$/(print $1}' myfile
(4) 如果第一个或等于100或者第二个域小于50,则打印该行
awk '$1 == 100 || $2 < 50' myfile
(5) 如果第一个域不等于10就打印该行
awk '$1 != 10' myfile
(6) 如果记录包含正则表达式regex,则第一个域加10并打印出来
awk '/regex/{print $1 + 10}' myfile
(7) 如果第一个域大于5则打印问号后面的表达式值,否则打印冒号后面的表达式值
awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' myfile
(8) 打印以正则表达式regex1开头的记录到以正则表达式regex2开头的记录范围内的所有记录;如果找到一个新的正则表达式root开头的记录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文件末尾
awk '/^regex1/,/^regex2/' myfile
(9) 变量
先扫描第1个域,一旦test匹配,就把第2个域的值加上第3个域的值,并把结果赋值给变量count,最后打印出来
awk '$1 ~/test/{count = $2 + $3; print count}' myfile
awk '{$2 = 100 + $1; print }' test
awk '$1 == "root"{$1 ="test";print}' test
(10) BEGIN块
在处理输入文件以前,域分隔符(FS)被设为冒号,输出文件分隔符(OFS)被设置为制表符,输出记录分隔符(ORS)被设置为两个换行符
awk 'BEGIN{FS=":"; OFS="/t"; ORS="/n/n"}{print $1,$2,$3} myfile
(11) 重定向和管道
将后缀为.o的文件修改为后缀为.c的文件
ls *.o | awk -F'.' '{print "mv "$0" "$1".c"}' | exec sh {}
如果第一个域的值等于100,则把它输出到output_file中;用>>不清空文件只追加
awk '$1 = 100 {print $1 > "outfile.txt" }' infile.txt
执行date命令,并输出
awk 'BEGIN{ "date" | getline d; print d}'
(12) 判断语句
awk '{if ($1 <$2) print $2 "too high"}' myfile.txt
awk '{if ($1 > 100) print $1 "bad" ; else print "ok"}' myfile.txt
(13) 循环语句
awk '{ i = 1; while ( i <= NF ) { print NF,$i; i++}}' myfile.txt
NF为一行分隔符能分隔出多少个字段
awk '{for (i = 1; i< NF; i++) print NF,$i}' myfile.txt
(14) 数组
awk '/^tom/{name[NR]=$1}; END{for(i in name){print name[i]}}' myfile.txt
统计文件myfile.txt中,每个字段出现的次数(用字符串作为下标)
awk '{i = 1;while(i <= NF) {count[$1]++;i++}} END{for(name in count) print name,count[name]}' myfile.txt
delete函数用于删除数组元素
awk '{line[x++]=$1} END{for(x in line) delete(line[x])}' test
(15) sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候
将myfile.txt文件中a字符替换成b字符
awk '{i = 1; while(i <= NF){sub(/a/, "b"); i++;} print;}' myfile.txt
(16) gsub函数作用如sub,但它在整个文档中进行匹配
将myfile.txt文件中a字符替换成b字符25.echo:在显示器上显示一段文字,一般起到一个提示的作用
awk '{ gsub(/a/, "b"); print }' myfile.txt
(17) index函数返回子字符串第一次被匹配的位置,偏移量从位置1开始
awk '{ print index($0, "a") }' myfile.txt
(18) substr函数返回从位置1开始的子字符串,如果指定长度超过实际长度,就返回整个字符串
awk '{ print substr( "hello world", 7,11 ) }'
(19) match函数返回在字符串中正则表达式位置的索引,如果找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位置,RLENGTH为到子字符串末尾的字符个数。substr可利于这些变量来截取字符串
打印以连续小写字符结尾的开始位置
awk 'BEGIN{start=match(" hello world",/[a-z]+$/); print start}' 结果为7
(20) toupper和tolower函数可用于字符串大小间的转换,该功能只在gawk中有效
(21) split函数可按给定的分隔符把字符串分割为一个数组。若分隔符没提供则按当前FS值进行分割
awk 'BEGIN{ split( "20:18:00", time, ":" ); print time[2] }' 结果为18
(22) strftime函数使用C库中的strftime函数格式化时间
显示当前日期
awk 'BEGIN{ now=strftime("%m/%d/%y"); print now }'
awk 'BEGIN{ now=strftime("%D", systime()); print now }'
显示时分秒
awk 'BEGIN{ now=strftime("%H:%M:%S"); print now }'
(23) 自定义函数
awk 'BEGIN{myfunc("Hello World")} function myfunc(str){print str;}'
(24)
命令选项 | 描述 |
-F fs or --field-separator fs | 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 |
-v var=value or --asign var=value | 赋值一个用户定义变量。 |
-f scripfile or --file scriptfile | 从脚本文件中读取awk命令。 |
-mf nnn and -mr nnn | 对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 |
-W compact or --compat -W traditional or --traditional | 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 |
-W copyleft or --copyleft -W copyright or --copyright | 打印简短的版权信息。 |
-W help or –help -W usage or --usage | 打印全部awk选项和每个选项的简短说明。 |
-W lint or --lint | 打印不能向传统unix平台移植的结构的警告。 |
-W lint-old or --lint-old | 打印关于不能向传统unix平台移植的结构的警告。 |
-W posix | 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。 |
-W re-interval or --re-inerval | 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 |
-W source program-text or --source program-text | 使用program-text作为源代码,可与-f命令混用。 |
-W version or --version | 打印bug报告信息的版本。 |
(25)
变量 | 描述 |
$n | 当前记录的第n个字段,字段间由FS分隔。 |
$0 | 完整的输入记录。 |
ARGC | 命令行参数的数目。 |
ARGIND | 命令行中当前文件的位置(从0开始算)。 |
ARGV | 包含命令行参数的数组。 |
CONVFMT | 数字转换格式(默认值为%.6g) |
ENVIRON | 环境变量关联数组。 |
ERRNO | 最后一个系统错误的描述。 |
FIELDWIDTHS | 字段宽度列表(用空格键分隔)。 |
FILENAME | 当前文件名。 |
FNR | 同NR,但相对于当前文件。 |
FS | 字段分隔符(默认是任何空格)。 |
IGNORECASE | 如果为真,则进行忽略大小写的匹配。 |
NF | 当前记录中的字段数。 |
NR | 当前记录数。 |
OFMT | 数字的输出格式(默认值是%.6g)。 |
OFS | 输出字段分隔符(默认值是一个空格)。 |
ORS | 输出记录分隔符(默认值是一个换行符)。 |
RLENGTH | 由match函数所匹配的字符串的长度。 |
RS | 记录分隔符(默认是一个换行符)。 |
RSTART | 由match函数所匹配的字符串的第一个位置。 |
SUBSEP | 数组下标分隔符(默认值是/034)。 |
25.echo:
-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
/a 发出警告声
/b 删除前一个字符
/c 最后不加上换行符号
/f 换行但光标仍旧停留在原来的位置
/n 换行且光标移至行首
/r 光标移至行首,但不换行
/t 插入tab
/v 与/f相同
// 插入/字符
/nnn 插入nnn(八进制)所代表的ASCII字符
–help 显示帮助
–version 显示版本信息
26.expr:一般用于整数值,但也可用于字符串,也是一个手工命令行计数器
(1)
例:
expr 10 + 10
expr 30 / 3
expr 30 /* 3
(注意运算符左右都有空格)
(2)在循环中用于增量计算
例:
LOOP=0
LOOP=`expr $LOOP + 1`
首先,循环初始化为0,然后加1,反引号的用法意即替代命令;从expr接受输出并将之放入循环变量
(3)可以返回其本身的退出状态,成功返回1,任何其他值为无效或错误
例:
value=hello
expr $value = "hello"
1
(4)模式匹配,通过指定冒号选项计算字符串中字符数,.*意即任何字符重复0次或多次
例:
value=abc.doc
expr $value : '.*'
7
可使用字符串匹配操作
例:
expr $value : '(.*).doc'
27.grep:文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来
正则表达式:
^ | 行首定位符 | ‘^love’ | 匹配所有love开头的行 |
$ | 行尾定位符 | ‘$love’ | 匹配所有love.结尾的行 |
. | 匹配一个字符 | ‘l..e’ | 匹配开头为l后跟两个字符结尾为e的行 |
* | 匹配一个或多个字符 | ‘*love’ | 匹配包含跟在0或多个字符后为love的行 |
[] | 匹配一组字符中的任意一个 | ‘[Ll]ove’ | 匹配Love或love的行 |
[^] | 匹配不在字符组内的字符 | ‘[^A-K]ove’ | 匹配包含一个不在A至K之间的字符,且该字符紧跟着ove的行 |
/< | 词首定位符 | ‘/<love’ | 以love开头的词的行 |
/> | 词尾定位符 | ‘love/>’ | 以love结尾的词的行 |
/( /) | 标记匹配到的字符 | ‘/(love/)ing’ | love被标记为1,之后若引用该段字符可用/1,最多可设置9个标签,从左边开始编号 |
x/{m/} x/{m,/} x/{m,n/} | 字符x的重复出现次数m次 至少m次 至少m次不超过n次 | ‘o/{5/}’ ‘o/{5,/}’ ‘o/{5,10/}’ | 匹配连续出现5个o 匹配连续出现至少5个o 匹配连续出现5到10个o |
选项:
-b 在每一行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到
-c 显示匹配到的行的数目,不显示行的内容
-h 不显示文件名
-i 比较字符时忽略大小写区别
-l 只列出匹配行所在文件的文件名
-n 在每一行前加上它在文件中的相对行号
-s 只显示报错信息,以检查退出状态
-v 反向查找,只显示不匹配的行
-w 表达式作为词来查找,类似/<和/>,并不是所有版本都支持,如SCO Unix不支持
例:
grep 查找表达式 文件名
28.egrep:扩展grep
+ | 匹配一个或多个前驱字符 | ‘[a-z]+ove’ | 匹配一个或多个小写字母,后跟ove |
? | 匹配0个或1个前驱字符 | ‘lo?ve’ | 将找到love或loove |
a|b | 匹配a或b | ‘love|hate’ | 与love或hate匹配 |
() | 组字符 | ‘lov(ely|able)’ | 与lovely或lovable匹配 |
29.fgrep:把所有的元字符都当作字符本身,只代表自己。相当于/转义符
RS 记录分隔符变量
NR 当前工作的记录数
30.vi
(1)i 插入
(2)dd 删除整行 10dd 删除10行
(3)yy 复制 10yy 复制10行
(4)先dd再p 剪切
(5)p 粘贴
(6)u 回退
(7)o 下一行进入编辑状态
(8)a 下一个字符
(9)$ 行尾
(10)^ 行头
(11)G 文本最后 1G 文件开头
(12)x 删除光标所在字符
(13)D 删除从光标到行尾的所有字符
(14)f * 跳到行第一个出现*字符的位置
(15)J 两行变一行
(16):%s/aa/bb/ 把第一个aa替换成bb;:%s/aa/bb/g 把全部aa替换成bb
(17):set ic 查找时区分大小写
/a 查找a字符
n 向下查找
N 向上查找
?a 查找a字符 n N的功能与/a相反
(18)H 左
L 右
J 上
K 下
31.crontab:在固定时间或固定间隔执行程序
crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
其中:filecrontab的格式f1 f2 f3 f4 f5
f1 分钟 (0-60)
f2 小时 (0-23)
f3 日 (1-31)
f4 月 (1-12)
f5 星期 (1-7)
例:
(1)每月每天每小时的第0分钟执行一次/bin/ls
crontab 0 7 * * * /bin/ls
(2)在12月内,每天的早上6点到12点中,每隔7分钟执行一次/usr/bin/backup
*/7 6-12 * 12 * /usr/bin/backup
(3)在12月内,每天的早上6点到12点中,每隔20分钟执行一次/usr/bin/backup
0 6-12/3 * 12 * /usr/bin/backup
(4)周一到周五每天下午5:00给mailaddr寄一封信
0 17 * * 1-5 mail -s /"hi/" mailaddr < /tmp/maildata