开发者社区> 科技小先锋> 正文

《RHCE培训之Linux视频教程》部分内容(学好这些就差不多了)

简介:
+关注继续查看

以下内容参考《RHCE培训之Linux视频教程》所写,这部视频很好,建议大家伙看一看,跟着敲一敲,这些都会了,差不多算熟悉linux命令了 。

   贴出来的内容很经典,可做帮助文档使用,亲们勿喷.....


1.卸载原有的输入法,fcitx或ibus。如卸载fcitx:

sudo apt-get remove fcitx*(如不需保留配置文件用purge)
sudo apt-get autoremove(自动卸载依赖软件)
sudo apt-get upgrade
sudo dpkg –-get-selections | grep fcitx(查询fcitx相关的软件包是否卸载) 
grep 多个条件查询
zhangjianlin@zhangjianlin:~$ lastlog | grep -E "tty|pts"
zhangjianlin     tty3                      三  7月 10 20:54:34 +0800 2013
wangjianjian     pts/2    192.168.1.3      三  7月 10 20:50:33 +0800 2013

zhangjianlin@zhangjianlin:~$ lastlog | grep -e tty -e pts
zhangjianlin     tty3                      三  7月 10 20:54:34 +0800 2013
wangjianjian     pts/2    192.168.1.3      三  7月 10 20:50:33 +0800 2013

一、文件
ls stat alias /bin/ls
pwd echo $HOME echo $USER
alias ii ="ls -l" vi /~./bashrc add "alias ii = ls -l "
ps pstree 

useradd xx
useradd -s /bin/bash -g zhangjianlin -m wangjianjian 创建用户
userdel -r wangjianjian

passwd xx
mima:

二、系统命令
hostname: hostname uplooking.com
ifconfig: echo 192.168.0.180   ubuntu:/etc/network/interfaces  
netconfig  ubuntu:有线:ifconfig 无线:iwconfig
service network restart 网卡服务重启
uname 查看系统 脚本安装判断unix 还是linux uname -a -r
id id -u -g if id -u != 0 不安装软件


date +%m%d touch `date +%m%d`.log 创建日志文件
cal
file /bin/ls

加盘
mount
mount /dev/sda1 /mnt/usb 加载usb

umount /mnt/usb 卸载设备
mount /dev/sdb1 /mnt sdb u盘 1分区
mount -t vfat /dev/sdb1 /mnt fat32的u盘 
mount /dev/cdrom  /mnt/cd
mount -t iso9660 /dev/cdrom/mnt 挂载光盘
mount //192.168.0.1/tools /mnt mount cifs //192.168.0.1/tools /mnt 
mount -t cifs -o username=adminstrator //192.168.0.1 /root/mnt远程共享
mount 192.168.0.254:/var/ftp/pub /mnt 

iso
cat /dev/cdrom > a.iso
mount -t iso9660 -0 loop a.iso /mnt //要用到弧还虚拟技术必须用-o loop
思考:共享 ,不用ftp

du 看文件大小
du aaa.tar.gz 看文件大小
看文件夹实际大小du - s Desktop
df 显示分区的占用 df -h 
ssh 192.168.1.23
apt-get install openssh-server 
/etc/init.d/ssh restart
service sshd stop
service sshd start

三条层次不同
shutdown -h now 关机,会执行下面两个命令
init 0 关掉服务
halt -p -f 或poweroff 断电

shutdown -r now 重启
init 6
reboot 

三、
useradd passwd usedel groudadd grounddel gpasswd
passwd(用户) shadow(密码) group gshadow /home/ cp -r /ect/user/* /home/user/
chown -R user.root /home/user 批量更改文件夹的拥有者


安全
who $user

skill -9 pts/3
mesg Y
write pts/2 root  发送消息
wall lat finger zhangjianlin  公告
每个用户lastlog 最后一次登陆
last 最近登陆的


cat /dev/sda  cat /etc/passwd > /dev/sda毁盘勿用
dd if=/dev/sda1(分区) of=/mnt/a.log
echo 1 >/dev/tty1

ls -al /tmp/.font-unix/
文件类型 -d l b c s p

权限
chmod guo+x file 相当于 chown a+x
chmod a-x FILE
chmod -R g+w /tmp/work/文件下的文件全部修改
链接
ln a b 硬链接 怕文件删除
ln tem/a b
stat a ls -l a b
ln -s /etc eee 软链接,可以链接文件夹,一般情况都用软链接

chown zhangjianlin LInux
chown -R shrek.ttt /tmp/ 修改文件夹的拥有者

ls-ld Desktop


用户对各种文件类型所可以的操作
x cd
rx cd ls 
wx cd touch rm vi (self other)
wxt cd touch rm(self) vi(self)
chmod o+t testdir/  不能修改其他用户
touch testdir/{a,b,c} 

linux 目录结构

umask 创建文件的默认权限 /etc/bashbc
/bin 必不可少所有人能执行 office 
which ifconfig


四、vim
i o a s
R 替换
G last line gg first line
10 x 连续向后删除10个字符
ctrl + r redo
ndd 
nyy  p P 向下粘帖 向上粘帖
set nu 显示行号
set nonu 
:100光标到第100行
:r /etc/group  读入
:1,5 w >>aa.back 将第1行到第五行到aa.back
:e! 替代多次安u的命令
:1,$/nologin/bash/g从头到末尾替换
:1,$/nologin/bash/gc替换前询问
vim -o or -O /etc/passwd /etc/group
换页ctrl + w
五、文件查找压缩
linux 系统文件查找与压缩
文件搜索
which查找 可执行文件 搜索path的 which x
where 跟which 差不多,只是比which 多了帮助文件所在目录//不常用
slocate ls `which locate` -l 查自己的数据库 跟updatedb相配的
locate -r '.newfile.*'
find 从当前目录开始查找 如 find / -name **file*
find /etc -name "network" -exec file {} \;   //{}查找到的路径
find /etc -name "network" -ok file {} \;   //{}查找到的路径询问
find /etc -name "network" -ok rm {} \;   //{}查找到的路径询问
find /etc -user sherk -a(and) -group shark -ls    //{}查找到的路径询问
find /etc -user sherk -a(and) -group shark -a -type d    //{}查找文件夹
find / -user -type -name -group -perm -size -mtime -ok -ls - exec
find / -perm -777 -type d -ls
history
grep  grep -R linux ./* 递归查找 文本文件含有 linux的文件的行内容
   grep -R -l zhangjianlin /etc 只列出文件名

压缩
gzip,gunzip 最广泛的压缩工具
linux系统中标准的压缩工具
对于文件夹能够达到很高压缩率
bzip,bunzip2
新版linux压缩工具
比gzip拥有更高的压缩率

gzip A 压缩时原文件删除了(非文夹夹)
gzip -d *.gz
bzip A
ls A* -l
bunzip2 a.bz2
bzip2 -d A.bz2
tar 只是打包作用
tar cvf /tmp/root/.tar . 创建打包
tar cvf /tmp/root.tar /etc/passwd /etc/shadoe /etc/sysconfig/ 创建压缩包
tar rvf /tmp/root.tar /etc/passwd /etc/shadoe /etc/sysconfig/加入文件
tar xvf /tmp/root.tar -C /tmp/ddd/ 解压到某一个文夹夹
tar xvf /tmp/root.tar 解压到当前包 tar cvf rvf xvf tvf
tar cvfz /tmp/root/tar.gz /root /etc/passwd /etc/showdow
tar xvfz /tmp/root/tar.gz
tar xvfz /tmp/root/tar.gz -C /tmp/ddd/
tar cvfj /tmp/root/tar.tar.bz2 /etc/passwd etc/shadow 解压.tar.bz2文件
ls *.tar -l
第六、文件的操作命令正则表达式
grep '\<zhangjianlin\>' /etc/passwd
head more less wc 
head -n 3
tail -f
tail -n 20
grep -v(文件属性,POSIX) -l(反向,不包含) -R -c -A2 -B2
tail tail -f /var/log/message 实时监控
wc file 统计字数
grep zhangjianlin /etc/passwd | cut -d: -f1,3,5  -d 分割符 -f field
cut -d':' -f2 /etc/passwd | grep zhangjianlin
grep zhangjianlin /etc/passwd | cut -d: f7
cut -c1-3 /etc/passwd  查看前三个字符
sort -t':' -k 3 -n  /etc/passwd  n num -t分割符 默认[TAB] 这里设置:为分割符
sort -t':' -k 3 -n  /etc/passwd > /tmp/a
sort -t':' -k 3 -n -r /etc/passwd > /tmp/a -r反向
du | sort -n -r | head -n 3|cut -f2
wc -l -w -c 几行 几个单词  多少个字符
unit  -i 忽略大小写字符的不同
-c 进行计数
sort -d: -f 2 /etc/passwd | uniq | wc -l 记几个不同
diff a.txt b.txt
echo 's.*k',.任意一个字符,×任意一个前面的字符
grep 's.*k' /etc/passwd
grep 'shrek$' /etc/passwd $以shrek结尾
grep '^shrek' /etc/passwd 以shrek开始的
\<s..k\> 单单以<s..k>
a\{18\} 出现18次a的
vim /user/share/dict/words linux linux单词字典
grep 'c.\{18\}s$' /usr/share/dict/words 查看以s结尾的,以c开始的中间任意18个字符
grep -v '^#' /etc/bash.bashrc | grep -v '^$' | wc -l 查看以“除#开头,空行”后的内容 -v 反选
grep '^[^a-x]' /etc/passwd 不是a到x开头的


?零或1个字符
.表示任意一个单一字符
.*表示零个或任意一个字符
^a 以a为首的行
a$< 表示以a为尾行
\<good 表示以good开头的单词
sh\>表示以sh结尾的单词
[abc]表示当前位置a、b或c
[^abc]表示除了a、b或、c以外的字符
a^ 表示空、a、aa、aaa、乃至更多个a
a?表示一个或另个单独的a
a+表示a、aa、aaa、乃至更多个a 如go+d 
a\{n\}表示重复n次
^$ 空行
^# 不以#为开始的
a\{n,\m} 重复 n或m次
扩展正则表达式
| 或 如'^$|^#' egrep -v '^$^#' file
a+表示a、aa、aaa、乃至更多个a 如go+d 
a? 0个或1个a以上
(abc)+ 多个abc 组合


系统性能指标
vmstat 
字段说明:

r  (run queue)可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用;

b,被blocked的进程数,正在等待IO请求;
in,interrupts,被处理过的中断数
cs,context switch,系统上正在做上下文切换的数目
us,用户占用CPU的百分比
sys,内核和中断占用CPU的百分比
id,CPU完全空闲的百分比

uptime
00:44:22 up 1:17, 3 users, load average: 8.13, 5.90, 4,94    
显示的是过去的1,5,15分钟内进程队列中的平均进程数量 

free -m
磁盘IO
1.良好状态指标
cat /proc/meminfo
这台机器总共有 256MB 物理内存(MemTotal),90MB 左右可用内存(MemFree),8MB左右用来做磁盘缓存(Buffers),40MB左右用来做文件缓存区(Cached)。

sar -d 2 3
await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。
svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。
%util表示一秒中有百分之几的时间用于I/O操作。
如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。

iostat
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
  wrqm/s:    每秒进行 merge 的写操作数目。即 delta(wmerge)/s
  r/s:            每秒完成的读 I/O 设备次数。即 delta(rio)/s
  w/s:        每秒完成的写 I/O 设备次数。即 delta(wio)/s
  rsec/s: 每秒读扇区数。即 delta(rsect)/s
  wsec/s: 每秒写扇区数。即 delta(wsect)/s
  rkB/s:    每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
  wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
  avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
  avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
  await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
  svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
  %util:     一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)


如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
  idle小于70% IO压力就较大了,一般读取速度有较多的wait.

  同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

四、Network IO
对于UDP
1、良好状态指标

接收、发送缓冲区不长时间有等待处理的网络包


2、监控工具
netstat
对于UDP服务,查看所有监听的UDP端口的网络情况
netstat -lump
packet receive errors 这一项数值增长了,则表明在丢包



对于TCP

1、良好状态指标

对于TCP而言,不会出现因为缓存不足而存在丢包的事,因为网络等其他原因,导致丢了包,协议层也会通过重传机制来保证丢的包到达对方。


所以,tcp而言更多的专注重传率。


2、监控工具
cat /proc/net/snmp | grep Tcp

内核信息
dmesg
dmesg | grep -n --color=auto 'eth'

第七章 输入输出重定向

cat过滤器
cat 
:等待输入
>abc 创建文件,或清空
cat >a.txt
cat <<EEE aaa 输入完才输出
cat > b.txt <<DDD
> 2> &>  < << >>
tr '"a-m""n-z""A-M""N-Z"' '"N-Z""A-M""n-z""a-m"' 有趣的密码转换
tr '"a-m""n-z""A-M""N-Z"' '"N-Z""A-M""n-z""a-m"' < /etc/passwd > 1.txt 有趣的密码转换
tr '"a-m""n-z""A-M""N-Z"' '"N-Z""A-M""n-z""a-m"' < /etc/passwd > mail -s "for you" shrek@looking.com 发密邮给shrek
ctrl +D结束
等待输入
ls /etc/ -l | grep '^d' |wc -l统计文件夹的数目
^- 多少个文件
^l 多少个连接
tee Copy standard input to each FILE, and also to standard output
ls /etc/ -l | grep '^d' |tee /dev/ptd/2 |wc -l 输出在屏幕上
tr "a-z""A-Z"转换成大写
tr "a-z""A-Z" < /etc/passwd

find /-name sherk &> /tmp/findfile  
第8章LInux系统及进程控制
/proc 内核的小窗户 通过/proc查看内核

hostname 主机名
/etc/hosts
/etc/network
last
内存使用清空free
du -sh /etc
cat /proc/* 
mount -t proc none /mnt  只有知道死proc就会自动加载/proc文件
/proc/meminfo 只读
/proc/sys/net/ipv4
/proc/sys/net/ipv4

系统日志
/var/log/* 
/var/log/dmesg 核心启动日志
/var/log/message 系统报错日志
/var/log/maillog 邮件系统日志
/var/log/boot.log系统引导过程日志
/var/log/cron 记录守护进程派生子进程
/var/log/syslog记录警告信息
/var/log/wtmp永久记录用户登陆事件
/var/log/xferlog记录FTP会话
/var/log/secure安全信息

ps -ef
ps aux两种一样的
ps auxf 所有进程树(附进程)



kill -9 id
kill -l kill 的功能参数
killall -9 httpd 进程名称
skill -9 wangjianjian 把用户为wangjianjian的所有进程结束 进程用户为wangjianjian或进程名称为wangzjianjian
skill -9 pts/2 结束远程的
pkill -u wangjianjian 精确kill用户名为wangjianjian的 
pstree

第九章bash 变量快捷键 

ctrl + l 清屏
ctrl + d 完成操作
第10章
set | grep HIS
vim /home/zhangjianlin/.bash_history
.bash_logout shell退出时的初始化
ctrl + r 调用历史 在history 中查询指令
向上向下按钮
!123 使用! 调用指令
!!  !!上一条命令
!$ 上一条命令作为参数 $aaa变量值 *任意多个字符
设置变量
set普通变量
env环境变量
export变成环境变量
unset 删掉普通变量
设置命令
alias unalias 
bash中的运算符
已经接触过的通配符
* ? {abc} {a,b,c}
!$
echo *输出前部文件名
echo [abc]* 以a或b或c开头的
echo [^abc]* 出了以a或b或c 开头的
rm -rf * 强行删除
touch {a,b,c}-{1,2,3} 随机选择 3×3
#ls #注释
aaa()函数 
zhangjianlin@zhangjianlin:~$ aaa()
> {
> echo this is a function test
> ls
> cd /tmp
> touch /tmp/aaaa 
> }

touch "a b" 
touch a b
无符号 单引号 双引号 反引号
echo which is 原样输出
echo "a b $USER"  ""号只屏空格符号
echo 'a b $USER' 屏蔽所有字符
echo `which ls` 反引号 内容预先执行
touch a b touch a\ b 创建两个文件a和b,创建一个文件a b
touch log`date +%m%d` 创建log0709文件
[ -f /etc/passwd ]
echo $? 或[ -f /etc/passwd ] [] 跟[ 两个空格 ] 不同,两个字符是判断,如这里判断文件是否存在。这里死记
zhangjianlin@zhangjianlin:~$ [ -f /etc/passwd ]
zhangjianlin@zhangjianlin:~$ echo $?
0
zhangjianlin@zhangjianlin:~$ [ -f /etc/passwdddd ] && echo ok
zhangjianlin@zhangjianlin:~$ [ -f /etc/passwd ] && echo ok
ok
zhangjianlin@zhangjianlin:~$ 
zhangjianlin@zhangjianlin:~$ [ -d /proc/bus/usb ] && echo ok

zhangjianlin@zhangjianlin:~$ [ -d /oracle ] && echo begin the insrall很常用
zhangjianlin@zhangjianlin:~$ [ -d /proc ] && echo begin the insrall
begin the insrall
zhangjianlin@zhangjianlin:~$ vim /etc/rc
-l -b -c -x -r -w
[ $USER = zhangjianlin ] && echo fuck you[ $USER = zhangjianlin ] && echo hello   //判断字符是否相等
fuck you[ zhangjianlin = zhangjianlin ]
hello
zhangjianlin@zhangjianlin:~$ 
man bash 查询上述字符
info 比man更好
$[1+3]  $[]算数表达式
定制bash
开机执行的四个脚本
/etc/profile系统全程的初始化文件,为登录的shell所执行(替换shell也算) su - wangjianjian
/etc/bashrc定义系统级的别名和函数,为每个新开的shell所执行 su wangjianjian
~/.bash_profile个人的初始化文件,为登录的shell所执行
~/.bashrc个人的交互式shell的起始文件 
~/.bash_logout个人登录shell的清理文件,当登录shell退出时执行
su - wangjianjian 它将依次读取并执行以下文件:/etc/profile,~/.bash_profile,~/.bash_login,(/etc/bashrc 也执行)

su wangjianjian 它将读取并执行/etc/bashrc, ~/.bashrc
login 时4个文件都执行
使用su命令切换用户时,如果带-l 选项就是登录为login shell,执行/etc/profile,否则为非login shell,不执行/etc/profile
/etc/profile会执行/etc/profile.d下的所有文件
./bash_history 命令历史
修改./bashrc  export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8"
xstart LC_ALL 桌面中文还是英文

第11
reset 重置bash


可以使用参数来传递内容
$1$2$3
可以使用命令来进行交互
read 读入数据给变量
echo 输出数据
printf输出数据

#!/bin/bash

echo $1 $2 ing ......
read -p "please input you name:" A
printf "$A is fool\n"
grep -A2 -B2  查看上下两行 pstree | grep -A2 B2 pstree
./b bash-bash-pstree  直接执行,新打开一个bash  如bash ./b
. ./b bash-pstree .说明是当前sh
应用 如在b中
export aaa=shrek
如果用第一种不会将aaa设置成环境变量,应为它在子sh中设置不会成效

第12  bash脚本中的流程控制
条件判断控制
[  ] && || 
if then
elif then
case
循环控制
while
utile
for
break
continue

[ abc ] abc ASCII码大于0返回大于0
echo $?
echo [ $USER = "shrekk" ]
[ -x /etc/ ] && echo hello
[ -f /usr/sbi/httpd ] && echo please install httpd with --force option && exit
man bash /-w 查找各文件类型的

调试脚本
bash -v ./b  -v 执行可见 显示脚本调试
-v     Display  readline variable names and values in such a way that they can be re-read.

zhangjianlin@zhangjianlin:~/mytest/linuxtest/linuxshell$ bash -v ./iftest 
#!/bin/bash

read -p "input you user:" aaa
input you user:zhangjianlin
if [ $aaa = zhangjianlin ]
   then 
       echo hello zhangjianlin
   elif [ $aaa = root ] 
   then    echo hello root!
   else echo 'get out here!'
fi
hello zhangjianlin


bash -vx ./iftest  替换调试
zhangjianlin@zhangjianlin:~/mytest/linuxtest/linuxshell$ bash -vx iftest #!/bin/bash

read -p "input you user:" aaa
+ read -p 'input you user:' aaa
input you user:zhangjianlin
if [ $aaa = zhangjianlin ]
   then 
       echo hello zhangjianlin
   elif [ $aaa = root ] 
   then    echo hello root!
   else echo 'get out here!'
fi
+ '[' zhangjianlin = zhangjianlin ']'
+ echo hello zhangjianlin
hello zhangjianlin

case
zhangjianlin@zhangjianlin:~/mytest/linuxtest/linuxshell$ bash -v casetest 
#!/bin/bash

read -p "input you name:" aaa
input you name:zhangjianlin
case $aaa in
   zhangjianlin ) #)加上
       echo hello zhangjianlin
       echo nice to meet you 
       ;; #; 结束
   root )
       echo hello root
       echo i miss you too
       ;;
   *)
   echo get out here
   ;;
esac
hello zhangjianlin
nice to meet you

数值进行比较的运算符
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt
为空 -z
不为空 -n
比如:
比较变量 a 和 b 的值 是否相等就写作:[ $a = $b ]
判断变量a是否为空就写作: [ -z$a ]
判断整数变量a是大于b就写作 [ $a-gt$b ]

#!/bin/bash

bbb="`pgrep ps`" #变量跟-号不要加空格
[ -z "$bbb" ] && echo 'ps is running' && exit  #加双引号,使空格无效
for i in $bbb
   do kill -9 $i
   done
echo ps is kill


seq 1 100 产生100个数 应用,for 中循环100次
for aaa in `seq 1 100`
do 
   echo $aaa;sleep 1
done

while

while [ iii -lt 100 ]
   do 
       iii=$[$iii+1]
       echo -n "$iii"
done

   until ![ $iii -lt 100 ]  #这里 可以写成$iii -gt 100
       do 
       iii=$[$iii+1]
       echo -n "$iii"
   done


while true #死循环
do 
   read AAA
   if [ "$AAA" = "ddd"]
   then 
   break;
   fi
done
unset AAA

myFunction() #取消变量 unset myFunction iii aaa AAA 避免跟上一次的变量冲突
{

}

第十三 shell 脚本 sed-awk 流编辑器
sed -e 's/root/shark/g' /etc/passwd > /tmp/a 替换 -e excute
sed -n -e '/zhangjianlin/s/bash/nolog/'  /etc/passwd

sed -n -e '/zhangjianlin/s/bash/nolog/p'  /etc/passwd
sed -n -e '/shrek/p' /etc/passwd   #打印
sed -e -e '/bash/d' #删除
cp /tmp/a /etc/passwd
sed -e '/^#/d' /etc/etc/passwd #删除以#开头的行
sed -e '/^#/d' -e '/^$/d' /etc/etc/passwd #删除以#开头的行 ,删除空行
sed -e '/bash/s/root/shrek/g' /etc/passwd  仅仅替换有bash的那一行
使用sed进行替换
set 's/oldvalue/newvalue/'
多次替换
set -e 's/milk/todd/' -e 's/good/better/' 
sed '/s/tiger/wolf/;s/before/after/'
cat /etc/passwd | sed'
sed -f commenfile /etc/passwd

另类shell脚本编写
#!/bin/sed -f

s/root/shrek/
s/bash/nologin/

执行./sss /etc/passwd
5. 元字符集^  
锚定行的开始 如:/^sed/匹配所有以sed开头的行。   
$  
锚定行的结束 如:/sed$/匹配所有以sed结尾的行。   
.  
匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。   
*  
匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。  
[] 
匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。  
[^] 
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。  
\(..\) 
保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。  

保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。   
\<  
锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。   
\>  
锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。   
x\{m\}  
重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。   
x\{m,\}  
重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。   
x\{m,n\}  
重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。  
6. 实例  
删除:d命令  
*  
$ sed '2d' example-----删除example文件的第二行。  
*  
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。  
*  
$ sed '$d' example-----删除example文件的最后一行。  
*  
$ sed '/test/'d example-----删除example文件所有包含test的行。  
替换:s命令  
*  
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。  
*  
$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。  
*  
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。  
*  
$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。  
*  
$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。  
选定行的范围:逗号  
*  
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。  
*  
$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。  
*  
$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。  
多点编辑:e命令  
*  
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。  
*  
$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。  
从文件读入:r命令  
*  
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。  
写入文件:w命令  
*  
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。  
追加命令:a命令  
*  
$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。  
插入:i命令  
$ sed '/test/i\\  
new line  
-------------------------' example  
如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。  
下一个:n命令  
*  
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。  
变形:y命令  
*  
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。  
退出:q命令  
*  
$ sed '10q' example-----打印完第10行后,退出sed。  
保持和获取:h命令和G命令  
*  
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中 的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。  
保持和互换:h命令和x命令  
*  
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。  
awk的使用 处理文本更强。sed对一行一行进行处理。awk 能对列进行处理
zhangjianlin@zhangjianlin:~$ cat /etc/passwd | awk '{print $1 "on level" $5}' | head
root:x:0:0:root:/root:/bin/bashon level
daemon:x:1:1:daemon:/usr/sbin:/bin/shon level
bin:x:2:2:bin:/bin:/bin/shon level
sys:x:3:3:sys:/dev:/bin/shon level
sync:x:4:65534:sync:/bin:/bin/syncon level
games:x:5:60:games:/usr/games:/bin/shon level
man:x:6:12:man:/var/cache/man:/bin/shon level
lp:x:7:7:lp:/var/spool/lpd:/bin/shon level
mail:x:8:8:mail:/var/mail:/bin/shon level
news:x:9:9:news:/var/spool/news:/bin/shon level

十二 软件的安装
uname -a 查看内核版本

源码方式 unix linux  如apache安装
tar xvfj httpd....bz2
cd httpd
./configure  --prefix=/usr/local/httpd --with-mpm-worker
make
make install



一些常用命令的补充


查看BIOS
使用dmidecode命令时,如果不加任何参数,则打印出所有类型的信息;而加上“-t type_num”或者“-t keywords”可以查看某个类型信息
dmidecode
dmidecode -t 1
dmidecode -t system


unrar x aa.rar
unrar e aa.rar
x参数 是解压到一个文件夹里 
e参数是把所有文件解压到当前目录下 
注意这个命令比较特殊参数之前不能加-

jar xvf test.zip

unzip test.zip

convmv -f utf-8 -t gbk --notest -r *`        
如果是fat格式的U盘,挂载命令:mount  -t  vfat  /dev/sdb1  /mnt/udisk
如果是ntfs格式的U盘,挂载命令:mount  -t  ntfs-3g  /dev/sdb1  /mnt/udisk

+-----------------------------------------------------------------------+
qq安装说明:
+-----------------------------------------------------------------------+
Ubuntu32位系统安装说明:
1.如果之前安装过旧版本需要先卸载(通过dpkg -l | grep qq查看)。
2.安装: sudo dpkg -i 软件名.deb
卸载: 先dpkg -l | grep qq 找到名字,然后执行:sudo dpkg -r qq-for-wine 或 sudo dpkg -P qq-for-wine
3.安装后qq在桌面上方的Applications/Internet/qq2012,点击运行即可。也可以自己拖到桌面双击运行
或者 到/opt/qq2012/wineapp/qq目录下运行qq.sh
4.$HOME/.longene/qq2012是qq程序安装目录, /opt/longene/qq2012/wine是wine的安装目录。
5.安装后第一次运行qq登录的时候可能有点慢这是正常的,qq要生成自己的一些用户信息

非Ubuntu系统:
1.解压deb包
2.按照deb的目录结构,复制的对应的目录,比喻把opt目录下的所有文件复制到系统的/opt目录下,
3.在终端运行qq2012即可

64位系统安装说明:
我们本想制作64位的deb安装包的,但是发现QQ并没有发行64位的版本,所以没法制作。
但经测试发现,在64位系统上安装ia32-libs后(Ubuntu执行:sudo apt-get install ia32-libs),
安装上面的32位包可以正常运行起来。



本文转自lilin9105 51CTO博客,原文链接:http://blog.51cto.com/7071976/1249081,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19391 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24438 0
非常不错的LINUX视频教程
http://www.ubuntuhome.com/linux-study.html 非常不错的LINUX视频教程,一共为九章分别是: 第1章 Linux概况及安装第2章 Linux的常用命令第3章 Linux系统管理第4章 Linux网络基础第5章 Intranet服务器第6章 Interne...
1150 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
17858 0
linux 架设网络电台教程
http://www.diybl.com/course/6_system/apple/2007625/66974.
698 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载