作为信息安全专业的学生,大二时便已经接触linux操作系统并在硬盘上安装过ubuntu opensuSE,但是当时的使用仍停留在界面上,并没有体会到linux 的优点,去年12月份chacha报名了湖南双星的培训,对linux有了一定的了解,我将不断和大家分享我学习的进程,希望老鸟们指教,也希望��我同级的小鸟们有所帮助。
重定向
> 重定向数据的时候会(覆盖)原来的数据
cat sxkj>test#sxkj的内容写入到test中 覆盖源来的内容
[root@localhost ~]# cat test#在屏幕上显示test
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
[root@localhost ~]# cat -n sxkj >test#sxkj的内容加行号写入到test中 覆盖源来的内容
[root@localhost ~]# cat test#在屏幕上显示test
1
2 # Do not remove the following line, or various programs
3 # that require network functionality will fail.
4 127.0.0.1 localhost.localdomain localhost
5 ::1 localhost6.localdomain6 localhost6
>> # 输出追加命令,重定向数据的时候不会覆盖原来的数据,只是在文件的末尾(追加数据)
[root@localhost ~]# cat sxkj>>test
[root@localhost ~]# cat test
1
2 # Do not remove the following line, or various programs
3 # that require network functionality will fail.
4 127.0.0.1 localhost.localdomain localhost
5 ::1 localhost6.localdomain6 localhost6
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
标准输入 0
标准输出 1
错误输出 2
[root@localhost dev]# ll std*
lrwxrwxrwx 1 root root 15 01-08 09:22 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 01-08 09:22 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 01-08 09:22 stdout -> /proc/self/fd/1
2> 将错误命令输出重定向到其他文件
[root@localhost dev]# jdflkdj 2>err#错误提示输出到err并覆盖err
[root@localhost dev]# cat err
bash: jdflkdj: command not found
2>> 输出追加命令,重定向错误命令的输出不会覆盖原来的数据,只是在文件的末尾追加数据
[root@localhost dev]# fdlfjeiop 2>>err
[root@localhost dev]# cat err
bash: jdflkdj: command not found
bash: fdlfjeiop: command not found
[root@localhost ~]# cat sxkj yangming 1>right 2>err#将正确结果输入到right 错误提示输出到err
[root@localhost ~]#
cat right
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
[root@localhost ~]#
cat err
cat: yangming: 没有那个文件或目录
&> 正确的和错误的输出都往一个文件里写,但是会覆盖原来的内容
cat test.txt uuuu.txt 1>qq.txt 2>&1
cat test.txt uuuu.txt
&>qq.txt
[root@localhost ~]# cat sxkj zhxx
&>right_err//正确结果和错误提示都输入到right_err
[root@localhost ~]# cat right_err
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
cat: zhxx: 没有那个文件或目录
<
输入重定向
[root@localhost ~]# wc<right_err 统计err的行数 单词数 字节数
6 26 227
行 数 字节数
[root@localhost ~]# wc <right_err>wwc##统计right_err字数 输出到wwc 覆盖wwc内容
[root@localhost ~]# cat wwc
6 26 227
[root@localhost ~]# wc <<err >>##//将以err结束输入的文件发送给WC 统计 结果输入到wwc
> zjhduhfjksh
> err
[root@localhost ~]# cat wwc
6 26 227
6 26 227
0 0 0 err
2 2 20
0 0 0
1 1 12
cpio
是备份文件的命令
灾备
find . |cpio -co >/linux.cpio “|”管道 把当前文件的东西送给cpio 、放在LINUX
将当前目录的所有文件和目录,打包成一个文件linux.cpio
cpio -t <linux.cpio
查看linux.cpio 内容
/dev/null 系统里的一个黑洞,我们经常将不需要的屏幕输出
重定向到这里
/dev/zero 是系统的零发生器
[root@localhost ~]# dd if=/dev/zero of=linux.ourt bs=1024 count=200000#生成大小为200000*1024B的linux.ourt
200000+0 records in
200000+0 records out
204800000 bytes (205 MB) copied, 1.03522 seconds, 198 MB/s
[root@localhost ~]# ll linux.ourt
-rw-r--r-- 1 root root 204800000 01-08 11:08 linux.ourt
[root@localhost ~]# vim dehua
[root@localhost ~]# cat dehua
#!/bin/bash##表明变量所用shell
echo "please input the name of sun liu"
read dhson_name//把值读给变量dhson_name
echo $dhson_nameda
[root@localhost ~]# bash dehua#运行dehua
please input the name of sun liu
yangming
yangming
echo -n abc 不换行 相当于C++中的cout
$?上一条命令的结果 如果为0代表上一条命令成功 非0不成功
shuaige=chacha 定义一个变量,变量名为shuaige,赋值为chacha
$shuaige 引用变量帅哥的值即chacha
" " 双引号内的
变量值可以被引用,
特殊符号需要转义
' ' 单引号内的变量值不能被引用,特殊符号也只是代表本身的含义,不需要转义
元字符 * !特殊含义 转义\后恢复原始含义
\!
\n 代表回车键功能
\t 代表tab键功能
-e 支持转义
[root@localhost ~]# var=5+9//定义变量var=5+9
[root@localhost ~]# echo $var//输出变量的值 即
5+9
[root@localhost ~]# let var=5+9//计算出5+9
[root@localhost ~]# echo $var
14
[root@localhost ~]# echo 8+9
8+9
[root@localhost ~]# echo 8+9|bc//把输出的值交给bc计算
17
cat /etc/hosts|grep 127 在cat 命令输出的内容里查找包含127的行
seq 产生连续自然数
seq -w 99 1010|more 产生相同宽度的范围是99到1010的数字分页显示
[root@localhost ~]# seq -f %03g 98 100指 定form 格式 为3位
098
099
100
[root@localhost ~]# seq -s "-" 2 4 //指定分割符号space为——
2-3-4
[root@localhost ~]# seq -w 1 10 //统一宽度wide
01
02
03
04
05
06
07
08
09
10
[root@localhost ~]# seq 1 4 |xargs//产生的梳子横向显示
1 2 3 4
[root@localhost ~]# seq 40|xargs|tr " " "+"//产生数字横向显示后 变换空格为加号
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40
[root@localhost ~]# seq 40|xargs|tr " " "+"|bc//计算出1+…+40
820
[root@localhost ~]# cat /etc/passwd|head -2>sxkj7//把/etc/passwd前2行重定向到sxkj7
[root@localhost ~]# cat sxkj7
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
tr -d ":/" <sxkj6 >sxkj7
删除sxkj6里的:/再将删除了:/的内容重新定向到sxkj7输入文件不可作为输出文件 特殊含义的字符都需要转义最好用但
引号
tr "\40" "\t" <ks1.txt >ks2.txt
将ks1.txt里的空格全部替换成tab(制表符),并且重定向
到ks2.txt
cat ks2.txt |tr -s "\t">ks3.txt
查看ks2.txt文件的内容,去除重复的tab键(制表符),并且
重定向到ks3.txt
[root@localhost ~]# tr ":" "/"<sxkj7 /把sxkj7中的:转换为/
root/x/0/0/root//root//bin/bash
bin/x/1/1/bin//bin//sbin/nologin
[root@localhost ~]# tr -d ":""/" <sxkj7
rootx00rootrootbinbash
binx11binbinsbinnologin
[root@localhost ~]# tr -s ‘[a-z][A-Z]‘<sxkj2//合并重复字符显示最好使用单引号
abcdef
a
b
e
f
111111111114
Ae
b
[root@localhost ~]# tr -s [a-z]<sxkj2//之合并小写字符a-z
abcdef
a
b
e
f
111111111114
AAAAAAAAAAAAAe
b
[root@localhost ~]# tr -d [A-Z]<sxkj2
abcdef
aaaaaaaaaa
bbbbbbbbb
eeeeeeee
ffffffffff
111111111114
e
b
[root@localhost ~]# tr 'a-z' 'A-Z'<sxkj2小写转化为大写
ABCDEF
AAAAAAAAAA
BBBBBBBBB
EEEEEEEE
FFFFFFFFFF
111111111114
AAAAAAAAAAAAAE
B
[root@localhost ~]# tr -d -c [A-Z]<sxkj2
AAAAAAAAAAAAA[root@localhost ~]#
[root@localhost ~]# tr -s ' /'':' " "<sxkj7
root x 0 0 root root bin bash
bin x 1 1 bin bin sbin nologin
[root@localhost ~]# tr -s ':' " "<sxkj7
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin
cut -f2-4 ks3.tx
截取第2列到第4列的内容
cut -f1,3 ks3.txt
截取1和3列的内容
cut -d":" -f2-4 ks4.txt
指定冒号作为分隔符,截取第2至4列的内容
cut -d: -s -f1-3 ks4.txt
将没有分隔符的行不进行截取,并且不显示输出
[root@localhost ~]# cut -d " " -f 3 <sxkj4
cc
dd
aa
bb
[root@localhost ~]# sort sxkj9排序assic码
dfkejisjfr
dfoielsfi
djfeoiridcfngi
juren
juren
juren
juren
juren
juren
juren
juren
juren
lsdfjiesdxfkxf
sljfiouelxf
uagpooiuwec
wangwenxi
[root@localhost ~]# sort -r sxkj9//逆序
wangwenxi
uagpooiuwec
sljfiouelxf
lsdfjiesdxfkxf
juren
juren
juren
juren
juren
juren
juren
jureni
juren
djfeoiridcfngi
dfoielsfi
dfkejisjfr
[root@localhost ~]# sort -u sxkj9排序并去掉重复行
dfkejisjfr
dfoielsfi
djfeoiridcfngi
juren
lsdfjiesdxfkxf
sljfiouelxf
uagpooiuwec
wangwenxi
[root@localhost ~]# sort sxkj4默认分割服为空格 从第一列排序
aa bb cc dd
bb aa dd cc
cc dd aa bb
dd cc bb aa
[root@localhost ~]# sort -k2 sxkj4//从第二块排序
bb
aa dd cc
aa
bb cc dd
dd
cc bb a
cc
dd aa bb
[root@localhost ~]# tr " " ":" <sxkj4
aa:bb:cc:dd
bb:aa:dd:cc
cc:dd:aa:bb
dd:cc:bb:aa
[root@localhost ~]# sort
-t : -k4 n_sxkj4 //指定分割符
dd:cc:bb:aa
cc:dd:aa:bb
bb:aa:dd:cc
aa:bb:cc:dd
[root@localhost ~]# tr -s " "</var/log/messages | cut -d" " -f3|sort -u|wc -l
44
cut分割服是tab -d改革分歌赋
uniq 删除文件中的重复行
uniq sxkj8 删除sxkj8文件中的重复行
uniq -d sxkj8 只是显示重复行内容
uniq -u sxkj8 只是显示不重复行内容
uniq -c sxkj8 显示不重复的内容,但是统计出那些行重复
了多少次
grep 是用来进行文字过滤的一个工具,可以根据你的要求,
在文件里一行行去查找内容,如果查找到,
就将整行内容输出到屏幕
cat /etc/hosts|grep 127
将包含127的行
cat /etc/passwd|grep root|wc -l
grep -v ^# /etc/vsftpd/vsftpd.conf
过滤显示不是以#号开头的行
grep -v ^# /etc/vsftpd/vsftpd.conf|grep -v ^$
过滤显示不是以#号开头的行,并且是空行的也不显示
^$ 代表空行(什么都没有的行)
cat passwd |grep ^ftp
查找以ftp开头的行在passwd文件里
cat passwd |grep bash$
查找以bash结尾的行在passwd文件里
cat passwd |grep bash$|wc -l
查找以bash结尾的行在passwd文件里,并且统计有多少行
grep root /etc/passwd /etc/shadow
在/etc/passwd 和/etc/shadow文件里从查找包含root字符
串的行
grep root ./*
查找当前目录下所有包含root字符串的文件,并且显示
grep -i 显示文件名,不显示内容
grep -h 不显示文件名,显示内容
/etc/hosts文件,里面是#开头的行是注释行
grep 安指定字符串过滤文件,显示匹配行
写shell脚本用的较多
[root@localhost grep]# cat -n hosts
1 # Do not remove the following line, or various programs
2 # that require network functionality will fail.
3 127.0.0.1 localhost.localdomain localhost
4 ::1 localhost6.localdomain6 localhost6
[root@localhost grep]# cat -n hosts |grep 127//显示包含127的行
3 127.0.0.1 localhost.localdomain localhost
[root@localhost grep]# cat passwd |grep bash//显示包含bash 的行
root:x:0:0:root:/root:/bin/bash
zhangmin:x:500:500::/home/zhangmin:/bin/bash
zhx:x:501:501::/home/zhx:/bin/bash
wugang:x:502:502::/home/wugang:/bin/bash
[root@localhost grep]# cat passwd |grep home|wc –l//统计包含home的行
5
^行首 $行尾 a* .*任意字符 [a-z] [0-9] [a-z]
\<单词头是 \>单词尾是
grep -i 不区分大小写显示所有的行
grep -v显示不匹配的行
[root@localhost grep]# cat -n hosts |grep -v 127 //显示不包含127的行
1 # Do not remove the following line, or various programs
2 # that require network functionality will fail.
4 ::1 localhost6.localdomain6 localhost
[root@localhost grep]# grep root passwd显示包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]# cat passwd |grep root//推荐使用
shel编程常用通道
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]# cat passwd|grep ^m//以m开头
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
[root@localhost grep]# cat passwd |grep n$//以 n结尾
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
[root@localhost grep]# cat a.txt |grep shi,*
shi
[root@localhost grep]# cat a.txt |grep shi.*
shiyu
[root@localhost grep]# cat passwd |grep ^[mr]以m或r开头
root:x:0:0:root:/root:/bin/bash
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
[root@localhost grep]# cat passwd |grep [mr]oot包含moot 或root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]# cat passwd |grep "\<root\>"//找包含root单词的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost grep]# cat passwd |grep -n ftp不换行的显示包含ftp的行
15:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost grep]# wc -l passwd// 统计passwd行数
37 passwd
[root@localhost grep]# wc -c passwd //统计passwd字节数
1726 passwd
[root@localhost grep]# wc -w passwd //统计passwd单词
63 passwd
制作补丁
diff -u sxkj2 sxkj3>sxkj_2to3.patch
生成sxkj2(旧)到sxkj3(新)的补丁文件
打补丁
patch sxkj2 <sxkj_2to3.patch
给sxkj2(旧)打上补丁,起到升级的作用
再比较差异
diff sxkj2 sxkj3
sxkj2---》sxkj3--》sxkj4
文件打补丁和撤销补丁
patch qq2011.txt <qq2011to2012.patch
patch -p0<qq2011to2012.patch
需要当前目录下有qq2011.txt这个文件和qq2011to2012.patch
这个补丁文件,作用是将补丁打到qq2011.txt文件里
升级到qq2012.txt
patch -R qq2011.txt <qq2011to2012.patch
patch -R -p0<qq2011to2012.patch
撤销升级补丁,退回到原来的版本
patch -p0 <2011to2013.patch
-p0 不需要进入目录打补丁,补丁文件的位置在
那里都 从当前目录查找目地文件
-p1 需要进入目录打补丁,补丁文件的位置在
那里都可以忽略掉第一层目录 从当前目录查找
注意给目录打补丁的时候,建议将新目录移到别的路径下
ip add add 192.168.0.127/24 dev eth0
添加一个ip地址在eth0这块网卡上
route del default gw 192.168.1.1
删除默认路由192.168.1.1
route add default gw 192.168.0.1
添加一条默认路由192.168.0.1
mount -o loop /root/rhel5u5.iso /jingxiang
将光盘镜像文件挂载到 /jiangxiang目录。挂载点目录可以
自己创建,镜像文件的路径根据自己的实际情况而定
cd /jingxiang/Server
进入光盘挂载点目录里的Server目录,里面放着很多软件
rpm -ivh vsftpd+tab键补齐
安装vsftpd这个ftp服务器软件
ifconfig eth0 192.168.1.254
配置一个临时ip地址192.168.1.254,重新启动后失效
使用ssh这个工具,以root用户的身份远程连接到192.168.1.250
这台计算机上,第一次连接需要接收下密钥,输入yes
,接着输入192.168.1.250这台计算机上的root用户的密码
退出远程连接使用exit命令
拷贝当前目录下的ks4.txt这个文件到192.168.1.250这台计算机的
/root目录下,需要输入192.168.1.250这台计算机的root用户的
密码
vi /etc/ssh/ssh_config
修改44行,将yes改为no,然后退出保存
这样作的目的是加快ssh连接速度