在Unix/Linux下,高效工作方式不是操作圖形頁(yè)面,而是命令行操作,命令行意味著更容易自動(dòng)化。使用過Linux系統(tǒng)的朋友應(yīng)該都知道它的命令行強(qiáng)大之處。話說回來了,以下這些命令使用技巧你又知道多少呢?
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出淶水免費(fèi)做網(wǎng)站回饋大家。
1、Vim自動(dòng)添加注釋及智能換行
# vi ~/.vimrc set autoindentset tabstop=4set shiftwidth=4function AddTitle()call setline(1,"#!/bin/bash")call append(1,"#====================================================")call append(2,"# Author: lizhenliang")call append(3,"# Create Date: " . strftime("%Y-%m-%d"))call append(4,"# Description: ")call append(5,"#====================================================")endfmap F4 :call AddTitle()cr
打開文件后,按F4就會(huì)自動(dòng)添加注釋,省了不少時(shí)間:
2、查找并刪除/data這個(gè)目錄7天前創(chuàng)建的文件
# find /data -ctime +7 -exec rm -rf {} \;# find /data -ctime +7 | xargs rm -rf
3、tar命令壓縮排除某個(gè)目錄
# tar zcvf data.tar.gz /data --exclude=tmp #--exclude參數(shù)為不包含某個(gè)目錄或文件,后面也可以跟多個(gè)
4、查看tar包存檔文件,不解壓
# tar tf data.tar.gz #t是列出存檔文件目錄,f是指定存檔文件
5、使用stat命令查看一個(gè)文件的屬性
訪問時(shí)間(Access)、修改時(shí)間(modify)、狀態(tài)改變時(shí)間(Change)stat index.phpAccess: 2018-05-10 02:37:44.169014602 -0500Modify: 2018-05-09 10:53:14.395999032 -0400Change: 2018-05-09 10:53:38.855999002 -0400
6、批量解壓tar.gz
方法1:# find . -name "*.tar.gz" -exec tar zxf {} \;方法2:# for tar in *.tar.gz; do tar zxvf $tar; done方法3:# ls *.tar.gz | xargs -i tar zxvf {}
7、篩除出文件中的注釋和空格
方法1:# grep -v "^#" httpd.conf |grep -v "^$"方法2:# sed -e ‘/^$/d’ -e ‘/^#/d’ httpd.conf http.conf或者# sed -e '/^#/d;/^$/d' #-e 執(zhí)行多條sed命令方法3:# awk '/^[^#]/|/"^$"' httpd.conf 或者# awk '!/^#|^$/' httpd.conf
8、篩選/etc/passwd文件中所有的用戶
方法1:# cat /etc/passwd |cut -d: -f1方法2:# awk -F ":" '{print $1}' /etc/passwd
9、iptables網(wǎng)站跳轉(zhuǎn)
先開啟路由轉(zhuǎn)發(fā):echo "1" /proc/sys/net/ipv4/ip_forward #臨時(shí)生效內(nèi)網(wǎng)訪問外網(wǎng)(SNAT):iptables –t nat -A POSTROUTING -s [內(nèi)網(wǎng)IP或網(wǎng)段] -j SNAT --to [公網(wǎng)IP]#內(nèi)網(wǎng)服務(wù)器要指向防火墻內(nèi)網(wǎng)IP為網(wǎng)關(guān)公網(wǎng)訪問內(nèi)網(wǎng)(DNAT)(公網(wǎng)端口映射內(nèi)網(wǎng)端口):iptables –t nat -A PREROUTING -d [對(duì)外IP] -p tcp --dport [對(duì)外端口] -j DNAT --to [內(nèi)網(wǎng)IP:內(nèi)網(wǎng)端口]#內(nèi)網(wǎng)服務(wù)器要配置防火墻內(nèi)網(wǎng)IP為網(wǎng)關(guān),否則數(shù)據(jù)包回不來。另外,這里不用配置SNAT,因?yàn)橄到y(tǒng)服務(wù)會(huì)根據(jù)數(shù)據(jù)包來源再返回去。
10、iptables將本機(jī)80端口轉(zhuǎn)發(fā)到本地8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
11、find命令查找文件并復(fù)制到/opt目錄
方法1:# find /etc -name httpd.conf -exec cp -rf {} /opt/ \;: #-exec執(zhí)行后面命令,{}代表前面輸出的結(jié)果,\;結(jié)束命令方法2:# find /etc -name httpd.conf |xargs -i cp {} /opt #-i表示輸出的結(jié)果由{}代替
12、查看根目錄下大于1G的文件
# find / -size +1024M 默認(rèn)單位是b,可以使用其他單位如,C、K、M
13、查看服務(wù)器IP連接數(shù)
# netstat -tun | awk '{print $5}' | cut -d: -f1 |sort | uniq -c | sort -n -tun:-tu是顯示tcp和udp連接,n是以IP地址顯示cut -d:-f1:cut是一個(gè)選擇性顯示一行的內(nèi)容命令,-d指定:為分隔符,-f1顯示分隔符后的第一個(gè)字段。uniq -c:報(bào)告或刪除文中的重復(fù)行,-c在輸出行前面加上出現(xiàn)的次數(shù)sort -n:根據(jù)不同類型進(jìn)行排序,默認(rèn)排序是升序,-r參數(shù)改為降序,-n是根據(jù)數(shù)值的大小進(jìn)行排序
14、插入一行到391行,包括特殊符號(hào)"/"
# sed -i "391 s/^/AddType application\/x-httpd-php .php .html/" httpd.conf
15、列出nginx日志訪問最多的10個(gè)IP
方法1:# awk '{print $1}' access.log |sort |uniq -c|sort -nr |head -n 10sort :排序uniq -c:合并重復(fù)行,并記錄重復(fù)次數(shù)sort -nr :按照數(shù)字進(jìn)行降序排序方法2:# awk '{a[$1]++}END{for(v in a)print v,a[v] |"sort -k2 -nr |head -10"}' access.log
16、顯示nginx日志一天訪問量最多的前10位IP
# awk '$4="[16/May/2017:00:00:01" $4="[16/May/2017:23:59:59"' access_test.log |sort |uniq -c |sort-nr |head -n 10# awk '$4="[16/Oct/2017:00:00:01" $4="[16/Oct/2017:23:59:59"{a[$1]++}END{for(i in a){print a[i],i|"sort -k1 -nr |head -n 10"}}' access.log
17、獲取當(dāng)前時(shí)間前一分鐘日志訪問量
# date=`date +%d/%b/%Y:%H:%M --date="-1 minute"` ; awk -vd=$date '$0~d{c++}END{print c}' access.log# date=`date +%d/%b/%Y:%H:%M --date="-1 minute"`; awk -vd=$date '$4="["d":00" $4="["d":59"{c++}END{print c}' access.log # grep `date +%d/%b/%Y:%H:%M --date="-1 minute"` access.log |awk 'END{print NR}'# start_time=`date +%d/%b/%Y:%H:%M:%S --date="-5 minute"`;end_time=`date +%d/%b/%Y:%H:%M:%S`;awk -vstart_time="[$start_time" -vend_time="[$end_time" '$4=start_time $4=end_time{count++}END{print count}' access.log
18、找出1-255之間的整數(shù)
方法1:# ifconfig |grep -o '[0-9]\+' #+號(hào)匹配前一個(gè)字符一次或多次方法2:# ifconfig |egrep -o '\([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\'
19、找出IP地址
# ifconfig |grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' #-o只顯示匹配字符
20、給文檔增加開頭和結(jié)尾說明信息
# awk ‘BEGIN{print "開頭顯示信息"}{print $1,$NF} END{print "結(jié)尾顯示信息"}’/etc/passwd# awk 'BEGIN{printf " date ip\n------------------\n"} {print $3,$4} END{printf "------------------\nend...\n"}' /var/log/messages date ip------------------03:13:01 localhost10:51:45 localhost------------------end...
21、查看網(wǎng)絡(luò)狀態(tài)命令
# netstat -antp #查看所有網(wǎng)絡(luò)連接# netstat -lntp #只查看監(jiān)聽的端口信息# lsof -p pid #查看進(jìn)程打開的文件句柄# lsof -i:80 #查看端口被哪個(gè)進(jìn)程占用
22、生成8位隨機(jī)字符串
方法1:# echo $RANDOM |md5sum |cut -c 1-8方法2:# openssl rand -base64 4方法3:# cat /proc/sys/kernel/random/uuid | cut -c 1-8
23、while死循環(huán)
while true; do #條件精確等于真,也可以直接用條件[ "1" == "1" ],條件一直為真ping -c 2
24.awk格式化輸出
將文本列進(jìn)行左對(duì)齊或右對(duì)齊。
左對(duì)齊:# awk '{printf "%-15s %-10s %-20s\n",$1,$2,$3}' test.txt右對(duì)齊:# awk '{printf "%15s %10s %20s\n",$1,$2,$3}' test.txt
25.整數(shù)運(yùn)算保留小數(shù)點(diǎn)
方法1:# echo 'scale=2; 10/3;'|bc #scale參數(shù)代表取小數(shù)點(diǎn)位數(shù)方法2:# awk BEGIN'{printf "%.2f\n",10/3}'
26.數(shù)字求和
# cat a.txt10235356方法1:#!/bin/bashwhile read num;dosum=`expr $sum + $num`done a.txtecho $sum方法2:# cat a.txt |awk '{sum+=$1}END{print sum}'
27、判斷是否為數(shù)字(字符串判斷也如此)
# [[ $num =~ ^[0-9]+$ ]] echo yes || echo no #[[]]比[]更加通用,支持模式匹配=~和字符串比較使用通配符`^ $:從開始到結(jié)束是數(shù)字才滿足條件=~:一個(gè)操作符,表示左邊是否滿足右邊(作為一個(gè)模式)正則表達(dá)式
28、刪除換行符并將空格替換別的字符
# cat a.txt |xargs echo -n |sed 's/[ ]/|/g' #-n 不換行# cat a.txt |tr -d '\n' #刪除換行符
29、查看文本中20至30行內(nèi)容(總共100行)
方法1:# awk '{if(NR 20 NR 31) print $0}' test.txt方法2:# sed -n '20,30p' test.txt 方法3:# head -30 test.txt |tail
30、文本中兩列位置替換
# cat a.txt60.35.1.15 awk '{print $2"\t"$1}' a.txt
在Linux斷點(diǎn)調(diào)試命令窗口中讀取數(shù)據(jù),可以使用以下命令:
1. x/nfu addr: 使用指定的格式和大小從指定地址讀取數(shù)據(jù)。n表示要讀取的數(shù)據(jù)數(shù)量,f表示數(shù)據(jù)格式,u表示數(shù)據(jù)大小。
2. info registers: 查看當(dāng)前程序中各個(gè)寄存器的值。
3. disassemble: 查看當(dāng)前程序指令的匯編代碼。
4. print: 打印當(dāng)前程序的變量的值。
5. stepi/si: 執(zhí)行一條匯編指令。
6. nexti/ni: 執(zhí)行一條匯編指令,但不進(jìn)入函數(shù)體內(nèi)部。
acctcom 搜索并顯示進(jìn)程記帳文件
ar 維護(hù)可移植的檔案或庫(kù)
at 定時(shí)執(zhí)行某個(gè)命令
awk 模式掃描和處理語言
batch 對(duì)at命令的調(diào)用
banner 顯示大尺寸字符
basename,dirname 給出路徑名的若干部分
bc 任意精度的算術(shù)運(yùn)算語言
bdiff 大型diff
bfs 大文件掃描程序
cal 顯示日歷
calendar 提醒服務(wù)
cat 顯示文本文件的內(nèi)容
cd 改變工作目錄
chgrp 改變文件或目錄的組屬關(guān)系
chmod 改變文件的讀,寫,執(zhí)行等屬性
chown 改變文件或目錄的屬主
clear 清除屏幕
cmp 比較兩個(gè)文件
col 倒向換行過濾程序
comm 選擇或舍去兩個(gè)已排序文件的公共行
compress,uncompress,zcat 壓縮文件,解壓縮文件,顯示壓縮文件的內(nèi)容
cp 拷貝文件或目錄
cpio 檔案文件的拷入和拷出
csh 具有類似C語言語法的shell命令解釋程序
csplit 分割文件
ct 為遠(yuǎn)程終端衍生注冊(cè)
ctags 創(chuàng)建一個(gè)用于vi的標(biāo)記文件
cu 呼叫另一個(gè)UNIX系統(tǒng)
cut 剪下文件每一行中所選中的字段
date 顯示和設(shè)置日期
dc 臺(tái)式計(jì)算器
dd 轉(zhuǎn)換并拷貝文件
deroff 刪除nroff/troff,tbl和eqn結(jié)構(gòu)
df 報(bào)告空閑的磁盤塊數(shù)和文件系統(tǒng)占用磁盤情況
diff 比較并顯示兩個(gè)文件的不同之處
diff3 比較并顯示三個(gè)文件的不同之處
dircmp 目錄比較
dsconfig 顯示數(shù)據(jù)存儲(chǔ)設(shè)備的配置情況
du 總計(jì)磁盤的使用情況
echo 回顯參數(shù)
ed,red 正文編輯程序
edit 正文編輯程序(ex的變種)
egrep,fgrep,grep 在文件中搜索匹配的字符串并顯示
enable,disable 啟用/禁用終端或打印機(jī)
env 設(shè)置命令運(yùn)行的環(huán)境
ex 正文編輯程序
expr 把參數(shù)作為一個(gè)表達(dá)式來求值
factor 因式分解
file 判斷文件類型
find 查找文件
finger 顯示本地和遠(yuǎn)程用戶的信息
fold 長(zhǎng)行折疊
ftp 文件傳輸程序
gencat 生成一個(gè)格式化的消息分類
getopt 分析命令的任選項(xiàng)
groups 顯示用戶的組屬關(guān)系
head 顯示文件的前幾行
iconv 國(guó)際代碼集轉(zhuǎn)換程序
id 顯示用戶名與用戶ID以及組名與組ID
ipcrm 刪除消息隊(duì)列、信號(hào)量集或共享內(nèi)存ID
ipcs 報(bào)告進(jìn)程間通信設(shè)施的狀態(tài)
ismpx 返回窗口型終端的狀態(tài)
join 連接兩個(gè)關(guān)聯(lián)
kill 終止進(jìn)程
ksh,rksh Korn Shell命令程序設(shè)計(jì)語言
last 顯示最近用戶或終端注冊(cè)
line 讀一行
ln 連接文件
login 注冊(cè)
logname 獲取注冊(cè)名
lp,cancel 打印文件/刪除打印請(qǐng)求
lpstat 顯示打印狀態(tài)
l,lc,lf,lr,ls,lx 列文件
mail,rmail 讀郵件或發(fā)郵件
mailx 交互式郵件處理系統(tǒng)
linux常用命令(基礎(chǔ))
1. man 對(duì)你熟悉或不熟悉的命令提供幫助解釋
eg:man ls 就可以查看ls相關(guān)的用法
注:按q鍵或者ctrl+c退出,在linux下可以使用ctrl+c終止當(dāng)前程序運(yùn)行。
2. ls 查看目錄或者文件的屬*,列舉出任一目錄下面的文件
eg: ls /usr/man
ls -l
a.d表示目錄(directory),如果是一個(gè)”-”表示是文件,如果是l則表示是一個(gè)連接文件(link)
b.表示文件或者目錄許可權(quán)限.分別用可讀(r),可寫(w),可運(yùn)行(x)。
3. cp 拷貝文件
eg: cp filename1 filename2 //把filename1拷貝成filename2
cp 1.c netseek/2.c //將1.c拷到netseek目錄下命名為2.c
4. rm 刪除文件和目錄
eg: rm 1.c //將1.c這個(gè)文件刪除
5. mv 移走目錄或者改文件名
eg: mv filename1 filename2 //將filename1 改名為filename2
mv qib.tgz ../qib.tgz //移到上一級(jí)目錄
6. cd 改變當(dāng)前目錄 pwd 查看當(dāng)前所在目錄完整路徑
eg: pwd //查看當(dāng)前所在目錄路徑
cd netseek //進(jìn)入netseek這個(gè)目錄
cd //退出當(dāng)前目錄
7. cat,more命令
將某個(gè)文件的內(nèi)容顯示出來。兩個(gè)命令所不同的是:cat把文件內(nèi)容一直打印出來,而 more則分屏顯示
eg; cat1.c //就可以把代碼粘帖到1.c文件里,按ctrl+d 保存代碼。
cat 1.c 或more 1.c //都可以查看里面的內(nèi)容。
gcc -o 1 1.c //將1.c編譯成.exe文件,我們可以用此命編譯出代碼。
8.chmod 命令 權(quán)限修改 用法:chmod 一位8進(jìn)制數(shù) filename。
eg: chmod u+x filenmame //只想給自己運(yùn)行,別人只能讀
//u表示文件主人, g 表示文件文件所在組。 o 表示其他人 ;r 表可讀,w 表可寫,x 表可以運(yùn)行
chmod g+x filename //同組的人來執(zhí)行
9. clear,date命令
clear:清屏,相當(dāng)與DOS下的cls;date:顯示當(dāng)前時(shí)間。
10. mount 加載一個(gè)硬件設(shè)備
用法:mount [參數(shù)] 要加載的設(shè)備 載入點(diǎn)
eg: mount /dev/cdrom
cd /mnt/cdrom //進(jìn)入光盤目錄
11. su 在不退出登陸的情況下,切換到另外一個(gè)人的身份
用法: su -l 用戶名(如果用戶名缺省,則切換到root狀態(tài))
eg:su -l netseek (切換到netseek這個(gè)用戶,將提示輸入密碼)
12.whoami,whereis,which,id
//whoami:確認(rèn)自己身份
//whereis:查詢命令所在目錄以及幫助文檔所在目錄
//which:查詢?cè)撁钏谀夸?類似whereis)
//id:打印出自己的UID以及GID。(UID:用戶身份唯一標(biāo)識(shí)。GID:用戶組身份唯一標(biāo)識(shí)。每一個(gè)用戶只能有一個(gè)唯一的UID和 GID)
eg: whoami //顯示你自已登陸的用戶名
whereis bin 顯示bin所在的目錄,將顯示為:/usr/local/bin
which bin
13. grep,find
grep:文本內(nèi)容搜索;find:文件或者目錄名以及權(quán)限屬主等匹配搜索
eg: grep success * /*查找當(dāng)前目錄下面所有文件里面含有success字符的文件
14. kill 可以殺死某個(gè)正在進(jìn)行或者已經(jīng)是dest狀態(tài)的進(jìn)程
eg; ps ax
15. passwd 可以設(shè)置口令
16. history 用戶用過的命令
eg: history //可以顯示用戶過去使用的命令
17. !! 執(zhí)行最近一次的命令
18. mkdir命令
eg: mkdir netseek //創(chuàng)建netseek這個(gè)目錄
19. tar 解壓命令
eg: tar -zxvf nmap-3.45.tgz //將這個(gè)解壓到nmap-3.45這個(gè)目錄里
20. finger 可以讓使用者查詢一些其他使用者的資料
eg: finger //查看所用用戶的使用資料
finger root //查看root的資料