Linux 命令總結


Linux 命令總結

我們需要掌握Linux命令150個,常用的也就80個。

 

 

命令 --help 命令的簡單幫助
man ==命令的復雜幫助
help ==命令的幫助(bash的內置命令幫助)
ls ==list 查看目錄列表,-l(long),-d(directory),-F給不同文件類型結尾加標識,-p給目錄加斜線,-r reverse反轉排序,-t按修改時間排序
--color=auto 給輸出的不同類型文件加不同顏色
-a 顯示隱藏文件
--time-style=long-iso,顯示友好的長格式時間。

mkdir ==make directory 作用是創建目錄,例如:mkdir /data -p 遞歸創建目錄。
cd ==change directory 作用切換路徑,例如:cd /
touch ==摸一下的意思,作用是創建文件,例如:touch oldboy.txt
vi ==編輯器,相當於記事本,有編輯功能,但較弱。
vim ==復雜編輯器或者說高級編輯器,相當於EmEditor,editplus,notepad++
echo ==打印輸出內容,配合“>或>>”可以為文件覆蓋及追加內容
-n不換行輸出;-e解析轉義字符 \t tab \n 回車 \b 退格
echo "oldboy
oldgirl" >oldboy.txt
cat ==查看文件內容,-n查看行號
特殊用法:增加多行內容
cat >>/data/oldboy.txt<<EOF
I am studying linux.
EOF
EOF要成對出現,EOF可以被任意成對內容替換。
cp ==copy 復制命令,例如:cp oldboy.txt /tmp/
-r:遞歸,用於復制目錄;-p:保持屬性。
-a:相當於 -pdr
cp'cp -i' -i 需要確認

mv ==移動目錄或文件,例:mv /data /root/
pwd ==print work directory 查看當前用戶所在的路徑
rm ==remove 刪除文件或目錄;強制刪除 -f ,刪除目錄 -r
生產場景盡量不要使用rm,如果非要用,一定要先cp等備份。
替代方法:mv移動到一個臨時目錄。相當於回收站。
find刪除
find /root/data/ -type f -exec rm -f {} \;
find /root/data/ -type f|xargs rm -f
find***** ==查找-type 按文件類型查找;-name 按照名字查找,查找的內容最好用雙引號括起來;! 取反。-a(and)並且,-o(or)或。-maxdepth [數字] 查找深度,-mtime 修改時間
find /oldboy -maxdepth 1 -type d ! -name "oldboy"

head ==頭部,取文件的前N行,不接參數默認前10行;
取前三行-n 3,簡寫就是-3。
tail ==尾巴,取文件的最后N行,不接參數默認前10行;
取最后三行-n 3,簡寫就是-3。-f跟蹤一個文件尾部的實時變化。

 

awk***** ==一門語言,可以過濾內容(擅長取列),打印,刪除。Linux三劍客 老大
awk -F "分隔符號" '{print $1}' 文件
<==$1第一列,$2第二列...$NF最后一列,$(NF-1)倒數第二列
例:awk '{if(NR<31 && NR>19) printf $1"\n"}' test.txt
NR代表行號,&&(and)並且,\n回車換行,$0 表示整行
awk多分隔符用法:
[root@oldboy-test ~]# cat oldboy.txt
I am oldboy,myqq is 49000448
[root@oldboy oldboy]# awk -F "[, ]" '{print $3" "$6}' oldboy.txt
oldboy 49000448

 

grep***** ==擅長過濾器,把想要的或者不想要的分離開。-v 排除。Linux三劍客 老三。
-i 不區分大小寫,-E 過濾多個字符串,-o 輸出精確匹配的字符而不是默認的整行。
--color=auto 給匹配到的字符串加顏色(不是整行),-n 打印匹配內容行的行號
#Context control:
-B 除了顯示匹配的一行之外,並顯示該行之前的num行
-A 除了顯示匹配的一行之外,並顯示該行之后的num行
-C 除了顯示匹配的一行之外,並顯示該行之前后各num行
grep "string" -B 10 test.txt

grep一般常用參數:
-a:在二進制文件中,以文本文件的方式搜索數據
-c:計算找到 ’搜索字符串’ 的次數
-o:僅顯示出匹配regexp的內容(用於統計出現在文中的次數)
-i*****:忽略大小寫的不同,所以大小寫視為相同*****
-n*****:在行首顯示匹配內容行的行號*****
-v*****:反向選擇,即不顯示 ‘搜索字符串’ 內容的那一行*****
-E*****:擴展的grep,即egrep*****
--color=auto***:以特定顏色高亮顯示匹配關鍵字(不是整行)***
#提示: -i -v 為常用參數。
-A:After的意思,顯示匹配字符串及其后n行的數據
-B:beforce的意思,顯示匹配字符串及其前n行的數據
-C:顯示匹配字符串及其前后各num行的數據

 

sed***** ==(stream editor)擅長取行、替換 Linux三劍客 老二。
過濾:sed -n '/過濾的內容/處理的命令' 文件
-n 取消sed的默認輸出
-i 改變文件內容。
處理的命令:p print打印;d delete刪除
例子:
sed '/oldboy/d' test.txt
sed -n '/oldboy/p' test.txt
sed替換:*****
sed -i 's#oldboy#oldgirl#g' test.txt
s 常說的查找並替換,用一個字符串替換成另一個
g (global)與s聯合使用時,表示對當前行全局替換(與下一個g意義不同)
-i 修改文件內容
"#"是分隔符,可以用 / @ 等替換
sed -r 's#(.*)#I am \1#g' test.txt
= 表示行號
sed '/$/a\\n' test.txt 可以在文件的每行末尾添加一個回車
sed '$a\eof' test.txt 可以在文件的末尾添加'eof'

 

yum ==Linux里的包管理器,yum幫助解決依賴問題。
yum update -y <==upgrade,windows打補丁。
例子:yum install tree(包名) -y
下載tree包,然后調用rpm命令安裝tree包
如果需要依賴包,幫你下載幫你提前安裝。
yum grouplist 里選包組,然后yum groupinstall "包組" -y
yum search 關鍵字或 yum search all
yum remove tree -y <==不要用
remove or erase
Are used to remove the specified packages from the system as
well as removing any packages which depend on the package being
removed.


rpm ==安裝參數 -i install -v verify -h hash ;
-ivh(安裝、顯示輸出、人類可讀展示)
例子:rpm -ivh 包名.rpm(提前下載好)
最大問題,依賴問題不好解決:安裝a提示需要b,安裝b提示需要c...
[root@oldboy66-23 ~]# rpm -qa tree <== -q query -a all
tree-1.5.3-3.el6.x86_64
tree ==顯示目錄樹結構 -L 層數,-d 目錄

 

alias ==查看以及定義別名(外號、小名)
例子:
oldboy='echo "I am oldboy linux."'
alias rm='echo "rm can not be used,pls use mv"'
別名生效的位置:針對root用戶:/root/.bashrc
所有用戶都生效:/etc/bashrc或/etc/profile定義
生效source /etc/profile
別名的作用:
1)通過給危險命令加一些保護參數,防止人為誤操作。
2)把很多復雜的字符串或命令變成一個簡單的字符串或命令。
unalias ==取消別名


seq == sequence=seq序列 -s 指定序列的分隔符;-w
Usage: seq [OPTION]... LAST
or: seq [OPTION]... FIRST LAST
or: seq [OPTION]... FIRST INCREMENT LAST
history ==打印用戶操作的歷史記錄。-c清除所有記錄,-d清除指定記錄
hostname ==查看主機名(uname -n)
uname ==打印系統信息 -r內核;-m32還是64位;-n主機名;-a所有

su ==用戶角色切換;su - 用戶名、-相當於是一個參數,切換用戶環境變量
從普通用戶到root,需要輸入root密碼。從root到普通用戶無需密碼
普通用戶 大臣,root 皇帝。
getenforce ==檢查selinux狀態
setenforce ==設置SELINUX狀態 1啟用 0警告、不啟用
runlevel ==查看當前系統運行級別
init ==切換運行級別,后面接對應級別的數字
init 5 === startx 切換桌面環境。需桌面軟件包
chkconfig ==設定開機自啟動服務
diff ==比較,接兩個文件。
vimdiff ==高級比較,高亮顯示兩個文件內容區別
which ==查找命令所在路徑,搜索范圍來自全局環境PATH變量對應的路徑。
history ==顯示歷史記錄,-c清除所有記錄,-d清除指定記錄
whereis ==查找相關信息 -b查二進制命令
locate ==從數據庫里查相關信息,新命令需提前updatedb更新數據庫
ulimit ==-SHn -a Modify shell resource limits
wget ==下載 wget http://url
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 下載到指定路徑改名
--spider 爬蟲,檢查網站是不是好的,不會下載只是檢查
-T seconds --timeout=seconds 超時時間。
--tries=2 指定重試的次數
-q --quiet 關閉輸出
visudo ==編輯sudo配置文件(相當於vi /etc/sudoers)-c 檢查語法
sudo ==調兵虎符,sudo配置文件授權之后,執行命令時候需要命令前帶sudo
ifup ==啟動網卡
ifdown ==停止網卡

fsck ==-A磁盤檢查(不要檢查好磁盤),卸載的狀態檢查。
dmesg ==內核打印的錯誤信息,例如硬件故障警告
tar ==打包(zcvf),解包(zxvf、xf),查看包內容(tf),-C指定路徑解包。
--exclude和-X 排除打包
--exclude=opt/test.txt <==排除opt/test.txt
-X, --exclude-from=FILE
exclude patterns listed in FILE
tar zcvfX oldboy.tar.gz paichu.txt ./oldboy <==使用X參數按文件內容排除打包,排除paichu.txt文件的內容。
-P 使用絕對路徑打包(危險),-j bzip包的解壓縮。
-C 指定路徑解壓 tar zxvf oldboy.tar.gz -C /tmp/ <==指定/tmp目錄解壓

gzip unzip zip ==壓縮解壓縮
cut ==切割,簡單的取列命令 -d指定分隔符,-f數字 取第幾列。-f3,6
-c按字符取。
[root@oldboy-test ~]# cat oldboy.txt
I am oldboy myqq is 49000448
[root@oldboy-test ~]# cut -c 6-12,21- oldboy.txt
oldboy 49000448

wc ==打印行號,字節數等 -l 行數(企業案例)
有關使用wc命令的工作實戰案例可參考:
http://oldboy.blog.51cto.com/2561410/577227


stat == - display file or file system status
chmod == change mode改變文件權限
useradd ==添加用戶 -u 指定uid ,-g 指定所屬組 ,-s 指定登錄shell ,-M 取消家目錄
-e 指定用戶過期時間
usermod ==修改用戶 -u 指定uid ,-g 指定所屬組 ,-s 指定登錄shell
-e 指定用戶過期時間
chage ==查看及修改用戶密碼相關信息 -l 查看,-E 修改帳號過期時間
passwd ==修改用戶密碼 --stdin 非交互式設置密碼
who ==show who is logged on
w ==show who is logged on and what they are doing
whoami ==查看當前用戶
uniq ==字符串去重 -c計數
相關文件:老男孩教育uniq命令.txt
sort ==字符串排序 -n,-r,-t,-k,-u(-u 一般用不到,很少用到)
相關文件:sort 排序命令-k參數小技巧總結.txt

 

#############磁盤管理##############
dumpe2fs == - dump ext2/ext3/ext4 filesystem information
fdisk -l ==查看磁盤及分區信息,fdisk /dev/sdb *****
parted ==一般用於大於2T的磁盤分區 ***
partprobe ==通知系統分區表的變化 ***
mkfs ==格式化磁盤分區 mkfs -t ext4 -I inodesize -b blocksize ***
tune2fs ==調整文件系統參數 tune2fs -c -1 /dev/sdb1
mount ==掛載 mount -t ext4 -o loop,noatime,noexec /opt/sdb1 /mnt *****
df -h ==以人類可讀的信息查看磁盤掛載信息,-i查看掛載的磁盤inode使用情況 *****
du -sh ==查看目錄和文件大小 ****
dd == ***
e2fsck ==check a Linux ext2/ext3/ext4 file system
resize2fs ==ext2/ext3/ext4 file system resizer

free -m ==查看內存大小(buffer,cache);看“-/+ buffers/cache:”的這一行 *****
fsck ==磁盤檢查 fsck -C -f -t ext3 /dev/sda6 ***
check and repair a Linux file system
卸載狀態檢查,沒問題的分區不要操作。
fsck -y /dev/sda1
-y 對文件系統做一些具體的檢查 For some filesystem-specific checkers
-A Walk through the /etc/fstab file and try to check all file sys-
tems in one run. This option is typically used from the /etc/rc
system initialization file, instead of multiple commands for
checking a single file system.
(-C 顯示進度條,-t 指定文件系統類型)
#############磁盤管理##############

 

 

lsattr ==查看特殊屬性。
chattr ==設置特殊屬性,例如:+i 不可變

 

解析命令:
方法:反引號``或$()
tar zcvf etc-`date +%F`.tar.gz /etc
tar zcvf oldboy-$(date +%F).tar.gz /etc

 

 

 

 

 

 

暫時不用理的命令
ps
locate
whereis
export
netstat(ss)
ifconfig
source
ntpdate
less* ==按屏(空格,page up/page down)或按行(回車)查看文件
more ==按屏(空格)或按行(回車)查看文件(不能向上翻)

 

 

 

 


快捷鍵:
TAB 命令、路徑補全


特殊字符命令:
>或1> 重定向,會清除文件里所有以前數據,增加新數據。
>>或1>> 追加重定向,文件結尾加入內容,不會刪除已有的文件內容。
<0 輸入重定向
<<0 追加輸入重定向
2> 錯誤重定向
2>> 錯誤追加重定向
===============================
1.標准輸入(stdin): 代碼為0,使用<或<< 數據流向從右向左
2.正常輸出(stdout):代碼為1,使用>或>> 數據流向從左向右
3.錯誤輸出(stderr):代碼為2,使用2>或2>>
箭頭的指向就是數據的流向。
下面的3種方法是等價的
/dev/null 空設備 黑洞
1) 1>/dev/null 2>/dev/null
2) 1>/dev/null 2>&1 *****用得最多的
3) &>/dev/null

 

\ 轉義符;讓一個有意義的字符,脫掉馬甲。\.代表點號。
.. 相對路徑,表示當前目錄的上一級目錄,例如:/mnt/oldboy,mnt就是oldboy的上級目錄。
. 相對路徑,表示當前目錄,即當前命令行的目錄。以點開頭的文件代表隱藏文件。
| 管道(把前一個命令結果的輸出交給后一個程序繼續處理)
~ 用戶的家目錄,針對root環境 ~就代表/root。
{} 輸出字符序列或者數字序列
! ......

 

基礎正則表達式:一些特殊的符號 表示一些特殊的作用和功能
定義好的,不能改變。
. 單個任意字符
* 重復前面任意0個或多個字符
.* 匹配任意字符
sed -i 's#(可以用正則匹配)#\1#g' oldboy.txt
把前面正則匹配的括號內的結果,在后面用\1取出來操作。
^ 表示以...開頭,^oldboy 以oldboy開頭
$ 表示以...結尾,oldboy$ 以oldboy結尾


正則表達式實戰舉例:
1)^word 搜索以word開頭的。vi ^一行的開頭
2)word$ 搜索以word結尾的。vi $一行的末尾
3)^$ 表示空行,能理解么?
4). 代表且只能代表任意一個字符。
5)\ 例 \. 就只代表點本身,轉義符號,讓有着特殊身份意義的字符,脫掉馬甲,還原原形。\$。
6)* 例 s* 重復0個或多個前面的一個字符
7).* 匹配所有字符。延伸 ^.* 以任意多個字符開頭。 .*$ 以任意多個字符結尾
8)[abc] 匹配字符集合內的任意一個字符[a-zA-Z],[0-9]。
9)[^abc] 匹配不包含^后的任意字符的內容。中括號里的^為取反,注意和以..開頭區別。
10)a\{n,m\} 重復n到m次,前一個重復的字符。如果用egrep/sed -r可以去掉轉義符。
11)\{n,\} 重復至少n次,前一個重復的字符。如果用egrep/sed -r可以去掉轉義符。
12)\{n\} 重復n次,前一個重復的字符。如果用egrep/sed -r可以去掉轉義符。
13)\{,m\} ??????
注意:egrep,grep -E或sed -r過濾一般特殊字符可以不轉義。

 

 

 


環境變量:
PATH 系統路徑變量,執行ls,cp等非內置命令時,系統會查找PATH里對應的路徑是否有,如果沒有就報告找不到該命令。
當執行which cp來查看命令所在路徑的時候,也是從PATH變量去搜索。
臨時修改:export PATH="/tmp:$PATH" ,永久修改前面臨時修改的命令放到/etc/profile下,使用source /etc/profile使得修改立刻生效。

 

 

 


相對路徑:
不從/開始,而是從當前目錄開始。例如:data/,mnt/oldboy

絕對路徑:
從/開始的目錄,就叫絕對路徑。例如:/data/,/mnt/oldboy


bash內置命令:用help命令查幫助

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM