如下內容參考《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