《RHCE培訓之Linux視頻教程》部份內容


如下內容參考《RHCE培訓之Linux視頻教程》所寫,這部視頻很好,建議你們夥看一看,跟着敲一敲,這些都會了,差很少算熟悉linux命令了 。html

  貼出來的內容很經典,可作幫助文檔使用,親們勿噴.....
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

1、文件
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:

2、系統命令
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 = /" umount /mnt/usb
touch {1,2}
mount /dev/sdb1 /mnt sdb u盤 1分區
mount -t vfat /dev/sdb1 /mnt fat32的u盤
mount /dev/cdrom /mnt
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

3、
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
w
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


4、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
5、文件查找壓縮
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
第6、文件的操做命令正則表達式
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 查看以「除#開頭,空行」後的內容
grep '^[^a-x]' /etc/passwd 不是a到x開頭的

.表示任意一個單一字符
.*表示零個或任意一個字符
^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壓力高)

4、Network IO
對於UDP
一、良好狀態指標

接收、發送緩衝區不長時間有等待處理的網絡包


二、監控工具
netstat
對於UDP服務,查看全部監聽的UDP端口的網絡狀況
netstat -lump
packet receive errors 這一項數值增加了,則代表在丟包



對於TCP

一、良好狀態指標

對於TCP而言,不會出現由於緩存不足而存在丟包的事,由於網絡等其餘緣由,致使丟了包,協議層也會經過重傳機制來保證丟的包到達對方。


因此,tcp而言更多的專一重傳率。


二、監控工具
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
ios



一些經常使用命令的補充正則表達式


查看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位包能夠正常運行起來。

+-----------------------------------------------------------------------+
shell

相關文章
相關標籤/搜索