Ctrl+c 強制中斷程序的執(zhí)行
Ctrl+z 將程序掛起,fg/bg繼續(xù)任務
Ctrl+d 鍵盤輸入結束或退出終端
Ctrl+s 中斷控制臺輸出
ctrl+q 恢復控制臺輸出
ctrl+l 清屏
Ctrl+a 將光標移至輸入行頭,相當于Home鍵
Ctrl+e 將光標移至輸入行末,相當于End鍵
Ctrl+k 刪除從光標所在位置到行末
Alt+Backspace 向前刪除一個單詞
命令 --help 查看一些它的某個命令具體參數的作用
man 命令 顯示系統(tǒng)手冊頁中的內容
一行中運行多個命令。
Command 1 ; Command 2 首先運行Command1,然后運行Command2
Command 1 && Command 2 當Command1運行成功并結束,然后運行Command2
Command 1 || Command 2 當Command1運行失敗時才運行Command2
文件

bin (binaries)存放二進制可執(zhí)行文件
sbin (super user binaries)存放二進制可執(zhí)行文件,只有root才能訪問
etc (etcetera)存放系統(tǒng)配置文件
usr (unix shared resources)用于存放共享的系統(tǒng)資源
home 存放用戶文件的根目錄
root 超級用戶目錄
dev (devices)用于存放設備文件
lib (library)存放跟文件系統(tǒng)中的程序運行所需要的共享庫及內核模塊
mnt (mount)系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點
boot 存放用于系統(tǒng)引導時使用的各種文件
tmp (temporary)用于存放各種臨時文件
var (variable)用于存放運行時需要改變數據的文件
文件增刪改查
mkdir
創(chuàng)建目錄和父目錄a,b,c,d
mkdir -p a/b/c/d
-p 建立多級目錄
-m 在建立目錄的時候給目錄賦于權限值
ls
-a 這個選項能顯示.開頭的隱藏文件
-l 除文件名稱外,亦將文件型態(tài)、權限、擁有者、文件大小等資訊詳細列出
-t 將文件依建立時間之先后次序列出
-i 顯示每個文件的inode號
-m 所有項目以逗號分隔,并填滿整行行寬
-R 同時列出所有子目錄層
-h 將列出文件的大小以人性化格式輸出
--color=tty(2個-號)顯示文件的時候以色彩提示
-full-time顯示文件的詳細訪問時間
-lc查看文件狀態(tài)修改時間
rmdir
刪除空目錄
-p 刪除多級空目錄
cp
拷貝文件夾a到/tmp目錄
cp -rvf a/ /tmp/
-r 復制整個目錄里的內容
-p 復制文件屬性
-u 有差異才復制
-i 文件已存在詢問
-v 在復制文件的時候顯示進度
-f 在復制的時候如果碰到目的文件名有重復就將原先的刪除
mv
重命名
mv a.txt b.txt
移動文件a到/tmp目錄,并重命名為b
mv -vf a /tmp/b
-i 如果目的地有相同文件名時會出現提示
-v 在搬移文件時顯示進度,在移動多文件時非常有用
-u 當移動時只有源文件比目的文件新的時候才會移動
-f 強制覆蓋已有的文件
touch
創(chuàng)建文件
touch asd.txt
創(chuàng)建多個文件
touch love_{1..10}_shiyanlou.txt
rm
刪除機器上的所有文件
rm -rvf /
-i 在刪除文件之前需要手工確認
-v 在刪除文件的時候顯示信息
-r 刪除目錄
-f 忽略提示
tr
刪除、轉換一段文本信息中的某些文字
-d 刪除匹配的字符,注意不是全詞匹配也不是按字符順序匹配
-s 去除指定的在輸入文本中連續(xù)并重復的字符
刪除 "hello shiyanlou" 中所有的'o','l','h'
echo 'hello shiyanlou' | tr -d 'olh'
將"hello" 中的ll,去重為一個l
echo 'hello' | tr -s 'l'
將輸入文本,全部轉換為大寫或小寫輸出
echo 'input some text here' | tr '[:lower:]' '[:upper:]'
上面的'[:lower:]' '[:upper:]'你也可以簡單的寫作'[a-z]' '[A-Z]',當然反過來將大寫變小寫也是可以的
jion
將兩個文件中包含相同內容的那一行合并在一起。
-t 指定分隔符,默認為空格
-i 忽略大小寫的差異
-1 指明第一個文件要用哪個字段來對比,默認對比第一個字段
-2 指明第二個文件要用哪個字段來對比,默認對比第一個字段
將/etc/passwd與/etc/group兩個文件合并,指定以':'作為分隔符, 分別比對第4和第3個字段
sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group
paste
在不對比數據的情況下,簡單地將多個文件合并一起,以Tab隔開。
-d 指定合并的分隔符,默認為 Tab
-s 不合并到一行,每個文件為一行
paste -d '+' file1 file2 合并兩個文件或兩欄的內容,中間用"+"區(qū)分
cat
第一個字節(jié)開始正向查看文件的內容
如果文件很大的話,cat命令的輸出結果會瘋狂在終端上輸出,可以多次按ctrl+c終止。
-b 顯示文件內容的時候顯示行數
-n 顯示文件內容包括空行
-s 將多個空行合并成一個空行輸出
tac
從最后一行開始反向查看一個文件的內容
統(tǒng)計當前目錄下文件的個數(不包括目錄)
ls -l | grep "^-" | wc -l
統(tǒng)計當前目錄下文件的個數(包括子目錄)
ls -lR| grep "^-" | wc -l
查看某目錄下文件夾(目錄)的個數(包括子目錄)
ls -lR | grep "^d" | wc -l
less
針對比較大的文件,我們就可以使用less命令打開某個文件。
按n(N)向下(上)查找。
more
查看文本文件命令
用空格向下翻頁,用b向上翻頁
+行數直接從給定的行數開始顯示
-s 將多個空行壓縮成一個空行
-p 清除屏幕后再顯示
nano
文本編輯器
命令格式:nano [選項] [行號] 文件名
head
查看文件頭部
-n <行數> 顯示文件的最前指定的行
-c <字節(jié)數> 顯示文件前N個字節(jié)數里的內容
-q 不輸出文件頭的內容
-v 輸出文件頭的內容
tail
查看文件尾部
-f 循環(huán)讀取
-c <字節(jié)數> 顯示文件前N個字節(jié)數里的內容
-q 不輸出文件頭的內容
-n <行數> 指定所顯示的行數
-v 輸出文件頭的內容
tail -f access.log
ln
生成鏈接文件
命令格式:ln [選項] 源文件 鏈接文件
-f 刪除已存在的目的文件
-i 如果碰到有重復名字的提示如何操作
-v 顯示操作信息
-s 軟鏈接選項
file
查看文件的類型
stat
顯示文件或文件系統(tǒng)狀態(tài)
命令格式:stat [選項] <文件/目錄>
-f:查看指定的文件系統(tǒng)
stat可查看:
文件名 2. 文件尺寸 3. I節(jié)點號 4. 創(chuàng)建時間/訪問時間/狀態(tài)(屬 主、組、權限)修改時間 5.權限 6.鏈接文件個數 7. 屬主及屬組等
whereis
顯示一個二進制文件、源碼或man的位置
which
顯示一個二進制文件或可執(zhí)行文件的完整路徑
find
最常用的命令,命令的路徑是作為第一個參數的, 基本命令格式為 find [path][option] [action] 。
sudo find /etc -name sources.list
find / -name file1從 '/' 開始進入根文件系統(tǒng)搜索文件和目錄
find / -user user1搜索屬于用戶 'user1' 的文件和目錄
find /usr/bin -type f -atime +100搜索在過去100天內未被使用過的執(zhí)行文件
find /usr/bin -type f -mtime -10搜索在10天內被創(chuàng)建或者修改過的文件
find ~ -size +1500c查找大于1500字節(jié)的文件
find ~ -size 1500c查找等于1500字節(jié)的文件
find ~ -size -1500c查找小于1500字節(jié)的文件
find ~ -size +512k查找大于512k字節(jié)的文件
find ~ -size -1G查找小于1G字節(jié)的文件
find ~ -size +10查找大于10塊的文件
find / -empty查找文件/目錄字節(jié)為0的文件(即空文件)
grep
功能: 通過正則表達式查找文件中的關鍵字
-i:忽略大小寫
-c:打印匹配的行數
-C:打印出匹配的上下文(上N行,下N行)的多少行-l:列出匹配的文件名
-L:列出不匹配的文件名
-n:打印包含匹配項的行和行標
-w:僅匹配指定的單詞而非關鍵字
-e:索引匹配字串
-r:遞歸查詢
-v:不輸出匹配的行
-A <行號>:顯示所找的匹配字段,并顯示下面指定的行數的信息
-B <行號>:顯示所找的匹配字段,并顯示上面指定的行數的信息
grep -rn --color POST access.log查看nginx日志中的POST請求。
grep -rn --color Exception -A10 -B2 error.log看某個異常前后相關的內容
grep ^Aug /var/log/messages在文件 '/var/log/messages'中查找以"Aug"開始的詞匯
正則表達式表示方法:
\忽略正則表達式中特殊字符的原有含義
^ 匹配正則表達式的開始行
$ 匹配正則表達式的結束行
< 從匹配正則表達式的行開始
到匹配正則表達式的行結束
[ ] 單個字符;如[A] 即A符合要求
[ n - m ] 范圍 ;如[A-H]即包含A至H都符合要求
. 所有的單個字符
* 所有字符,長度可以為0
cut
打印每一行的某一字段
-d “n”:定義分界符,即點位
-f 取第幾位的字符
-c:僅顯示行中指定范圍的字符
打印/etc/passwd文件中以:為分隔符的第 1 個字段和第 6 個字段分別表示用戶名和其家目錄:
cut /etc/passwd -d ':' -f 1,6
前五個(包含第五個)
cut /etc/passwd -c -5
前五個之后的(包含第五個)
cut /etc/passwd -c 5-
sort
排序
-r反轉
-t參數用于指定字段的分隔符
-k 字段號用于指定對哪一個字段進行排序
-n 按照數字排序,默認情況下是以字典序排序的
cat /etc/passwd | sort -t':' -k 3 -n
wc
計數工具
行數
wc -l /etc/passwd
單詞數
wc -w /etc/passwd
字節(jié)數
wc -c /etc/passwd
字符數
wc -m /etc/passwd
最長行字節(jié)數,西文字符來說,一個字符就是一個字節(jié),但對于中文字符一個漢字是大于 2 個字節(jié)的,具體數目是由字符編碼決定的
wc -L /etc/passwd
uniq
-c:在數據行前出現的次數
-d:只打印重復的行,重復的行只顯示一次
-f:忽略行首的幾個字段
-i:忽略大小寫
-s:忽略行首的幾個字母
-u:只打印唯一的行
用于過濾或者輸出重復行。
因為uniq命令只能去連續(xù)重復的行,不是全文去重,所以要達到預期效果,我們先排序:
history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq
使用頻率前三的命令
history |cut -c 8-|sort|uniq -dc|sort -rn -k1 |head -3
下載
wget url
sudo apt-get install axel
axel -n 10 -o /tmp/ [http://testdownload.net/test.tar.gz](http://testdownload.net/test.tar.gz)
-n 指定線程數
-o 指定另存為目錄
-s 指定每秒的最大比特數
-q 靜默模式
系統(tǒng)
who am i
查看用戶

輸出的第一列表示打開當前偽終端的用戶的用戶名,第二列的 pts/0 中 pts 表示偽終端,所謂偽是相對于 /dev/tty 設備而言的,還記得上一節(jié)講終端時的那七個使用 [Ctrl]+[Alt]+[F1]~[F7] 進行切換的 /dev/tty 設備么,這是“真終端”,偽終端就是當你在圖形用戶界面使用 /dev/tty7 時每打開一個終端就會產生一個偽終端,pts/0 后面那個數字就表示打開的偽終端序號,第三列則表示當前偽終端的啟動時間。
用戶
sudo passwd lilei 設置用戶lilei的密碼
sudo adduser lilei 創(chuàng)建新用戶lilei,默認為新用戶在 /home 目錄下創(chuàng)建一個工作目錄
su -l lilei 切換到lilei用戶
sudo deluser lilei --remove-home 刪除用戶
groups
groups shiyanlou

其中冒號之前表示用戶,后面表示該用戶所屬的用戶組。這里可以看到 shiyanlou 用戶屬于 shiyanlou 用戶組,每次新建用戶如果不指定用戶組的話,默認會自動創(chuàng)建一個與用戶名相同的用戶組
cat /etc/group | grep -E "shiyanlou"查看自己屬于哪些用戶組

group_name:password:GID:user_list
sudo usermod -G sudo lilei
將其它用戶加入 sudo 用戶組
以直接使用 root 用戶為其它用戶添加用戶組,或者用其它已經在 sudo 用戶組的用戶使用 sudo 命令獲取權限來執(zhí)行該命令。
文件權限操作
ls -l a.txt
drwxr-xr-x 2 root root 4.0K 3月 23 2017 a.txt
第1位:文件類型(d 目錄,- 普通文件,l 鏈接文件)
r 可讀權限,w可寫權限,x可執(zhí)行權限(也可以用二進制表示 111 110 100 --> 764)
第2-4位:所屬用戶權限,用u(user)表示
第5-7位:所屬組權限,用g(group)表示
第8-10位:其他用戶權限,用o(other)表示
第2-10位:表示所有的權限,用a(all)表示
2是純數字 ,表示 文件鏈接個數
第一個“root” 表示文件的所有者
第二個“root” 表示為文件的所在群組
“4.0K”,表示為文件長度(大?。?br>
“3月 23 2017”,表示文件最后更新(修改)時間
“etc” 表示文件的名稱
chown
改變文件的所屬用戶和所屬組。
-R 修改指定目錄及其子目錄
chown -R xjj:xjj a修改a目錄的用戶和組為 xjj
chown user1 file1改變一個文件的所有人屬性
chown -R user1 directory1改變一個目錄的所有人屬性并同時改變改目錄下所有文件的屬性
chown user1:group1 file1改變一個文件的所有人和群組屬性
chmod
改變文件的訪問權限。
u表示當前用戶 user(用戶)
g表示同組用戶group(用戶組)
o表示其他用戶others(其他用戶)
a表示所有用戶
+ 和 - 分別表示增加和去掉相應的權限。
r表示可讀
w表示可寫
x表示可執(zhí)行
用數字來表示權限(r=4,w=2,x=1,-=0),
7:表示可讀可寫可執(zhí)行,4+2+1,
6:表示可讀可寫,4+2
-R 修改指定目錄及其子目錄
chmod a+x a.sh給a.sh文件增加執(zhí)行權限(這個太常用了)
chmod u+x file給file的屬主增加執(zhí)行權限
chmod 751 file給file的屬主分配讀、寫、執(zhí)行(7)的權限,給file的所在組分配讀、執(zhí)行(5)的權限,給其他用戶分配執(zhí)行(1)的權限
chmod u=rwx,g=rx,o=x file上例的另一種形式
chmod =r file為所有用戶分配讀權限
chmod 444 file同上例
chmod a-wx,a+r file同上例
chmod -R u+r directory遞歸地給directory目錄下所有文件和子目錄的屬主分配讀的權限
chmod 4755設置用ID,給屬主分配讀、寫和執(zhí)行權限,給組和其他用戶分配讀、執(zhí)行的權限。
df(report file system disk space usage)
顯示文件系統(tǒng)磁盤空間的使用情況
-h 以人類可讀的方式顯示,KD,Mb,GB等
du (estimate file space usage)
顯示指定的目錄及其子目錄已使用的磁盤空間的總和
-s顯示指定目錄的總和
-a 顯示目錄中所有文件的大小。
-h以人類可讀的方式顯示,Kb,Mb,G8等
-d參數指定查看目錄的深度 # 只查看1級目錄的信息
-d 0 ~
查看文件大小
du -h file
dd
轉換和復制文件,也可以用在備份硬件的引導扇區(qū)、獲取一定數量的隨機數據或者空數據等任務中。
dd默認從標準輸入中讀取,并寫入到標準輸出中,但可以用選項if(input file,輸入文件)和of(output file,輸出文件)改變。
bs(block size)用于指定塊大小(缺省單位為 Byte,也可為其指定如'K','M','G'等單位),
count用于指定塊數量。
conv=ucase 將輸出的英文字符轉換為大寫再寫入文件
輸出到test文件
dd of=test bs=10 count=1
輸出到標準輸出
dd if=/dev/stdin of=/dev/stdout bs=10 count=1
mount
-o 操作選項
-t 文件系統(tǒng)類型
-w|--rw|--ro權限
從/dev/zero設備創(chuàng)建一個容量為 256M 的空文件:
dd if=/dev/zero of=virtual.img bs=1M count=256
格式化磁盤:
sudo mkfs.ext4 virtual.img
掛載我們創(chuàng)建的虛擬磁盤鏡像到/mnt目錄:
mount -o loop -t ext4 virtual.img /mnt
卸載已掛載磁盤
sudo umount /mnt
free
顯示當前內存和交換空間的使用情況
date
顯示系統(tǒng)當前時間
top
顯示當前系統(tǒng)中耗費資源最多的進程
查看某個進程中的線程狀態(tài)
top -H -p pid
ps
較少單獨使用,配參數根據需求,ps ef或者ps-aux
-e 顯示所有選程,環(huán)境變量
-f 全格式顯示
-a 顯示所有用戶的所有進程(包括其它用戶)
-u 按用戶名和啟動時間的順序來顯示進程
-x 顯示無控制終端的進程
-l :較長,較詳細地將PID的信息列出
ps aux查看系統(tǒng)所有的進程數據
ps ax 查看不與terminal有關的所有進程
ps -lA 查看系統(tǒng)所有的進程數據
ps axjf 查看連同一部分進程樹狀態(tài)
kill
kill -9 pid強制殺死一個進程
ifconfig
網卡網絡配置,常用于查看當前IP地址
ifconfig etho 192.168.12.22 修改系統(tǒng)IP(重品后失效)
ping
ping baidu.com 測試網絡的連通
hostname
查看主機名
關機
sudo shutdown now
sudo reboot now
sudo shutdown -c取消關機
sudo shutdown -r重啟
sudo shutdown -f強行關閉應用程序
sudo shutdown -l注銷當前用戶
sudo shutdown -t 設置關機倒計時
sudo shutdown -h hours:minutes按預定時間關閉系統(tǒng)
export
設定一些環(huán)境變量,env命令能看到當前系統(tǒng)中所有的環(huán)境變量。比如,下面設置的就是jdk的。
export PATH=$PATH:/home/xjj/jdk/bin
source命令來讓其立即生效
set 顯示當前 Shell 所有變量,包括其內建環(huán)境變量,用戶自定義變量及導出的環(huán)境變量。
env 顯示與當前用戶相關的環(huán)境變量,還可以讓命令在指定環(huán)境中運行。
export 顯示從 Shell 中導出成環(huán)境變量的變量,也能通過它將自定義變量導出為環(huán)境變量。
/etc/bashrc(有的 Linux 沒有這個文件) 和 /etc/profile ,它們分別存放的是 shell 變量和環(huán)境變量。
unset
命令刪除一個環(huán)境變量
壓、解縮
gzip
壓縮文件成者文件夾
-d解壓縮文件
gzip file1壓縮一個叫做 'file1'的文件
gzip -9 file1最大程度壓縮
zip
-r 參數表示遞歸打包包含子目錄的全部內容,9 壓縮級別最大1 最小,
-q 參數表示為安靜模式,即不向屏幕輸出信息,
-o,表示輸出文件,
-l 參數將 LF 轉換為 CR+LF 來達到win/linux兼容。
zip -r -9 -q -o -l shiyanlou.zip /home/shiyanlou/Desktop將目錄 /home/shiyanlou/Desktop 打包成一個文件
zip file1.zip file1創(chuàng)建一個zip格式的壓縮包
zip -r file1.zip file1 file2 dir1將幾個文件和目錄同時壓縮成一個zip格式的壓縮包
unzip
-q 使用安靜模式
-d指定路徑
-l 不解壓只想查看壓縮包的內容
-O(英文字母,大寫 o)參數指定編碼類型:(win默認會采用 GBK , Linux 默認 UTF-8 )
unzip -O GBK 中文壓縮文件.zip
unzip -q shiyanlou.zip -d ziptest將文件解壓到指定目錄:
tar
-P 保留絕對路徑符
-j 通過bzip2的支持進行壓縮/解壓縮
-v壓縮的過程中顯示文件
-c 表示創(chuàng)建一個 tar 包文件
-f 用于指定創(chuàng)建的文件名,件名必須緊跟在 -f 參數之后
-p在其他主機還原時希望保留文件的屬性
-h 備份鏈接指向的源文件而不是鏈接本身
-x解包一個文件
-C 指定保存路徑
-t只查看不解包文件
tar -jcv -f filename.tar.bz2 壓縮
tar -jtv -f filename.tar.bz2 查詢
tar -jxv -f filename.tar.bz2 -C dirname解壓
rar
rar a file1.rar test_file 創(chuàng)建一個叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 同時壓縮 'file1', 'file2' 以及目錄 'dir1'
rar x file1.rar 解壓rar包
VIM

修改文本
定位命令
替換和取消命令
刪除命令
常用快捷鍵
alias
alias a='find . -size +10M -type f -print0 | xargs -0 ls -Ssh | sort -z'
關閉防火墻
systemctl stop firewalld.service
禁止防火墻開機啟動
systemctl disable firewalld.service
關閉SELinux
nano -w /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled保存并退出:^x->y->回車
計劃任務
查看添加了哪些任務crontab -l
添加一個計劃任務crontab -e
刪除任務crontab -r
分 小時 天 月 星期 user-name command to be executed
啟動 rsyslog,以便我們可以通過日志中的信息來了解我們的任務是否真正的被執(zhí)行了
sudo apt-get install -y rsyslog
sudo service rsyslog start( Ubuntu 會默認自行啟動不需要手動啟動)
sudo cron -f &(實驗環(huán)境中 crontab 也是不被默認啟動的,同時不能在后臺由 upstart 來管理,所以需要我們來啟動它)
每分鐘我們會在/home/shiyanlou 目錄下創(chuàng)建一個以當前的年月日時分秒為名字的空白文件
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
“ % ” 在 crontab 文件中,有結束命令行、換行、重定向的作用,前面加 ” \ ” 符號轉義,否則,“ % ” 符號將執(zhí)行其結束命令行或者換行的作用,并且其后的內容會被做為標準輸入發(fā)送給前面的命令。
查看到執(zhí)行任務命令之后在日志中的信息反饋
sudo tail -f /var/log/syslog
有選擇的執(zhí)行命令
which cowsay>/dev/null && echo "exist" || echo "not exist"
&&就是用來實現選擇性執(zhí)行的,它表示如果前面的命令執(zhí)行結果(不是表示終端輸出的內容,而是表示命令執(zhí)行狀態(tài)的結果)返回 0 則執(zhí)行后面的,否則不執(zhí)行,你可以從$?環(huán)境變量獲取上一次命令的返回結果
||在這里就是與&&相反的控制效果,當上一條命令執(zhí)行結果為 ≠0($?≠0)時則執(zhí)行它后面的命令
echo $?
修改root密碼
ubuntu中修改root賬號的密碼命令:sudo passwd root