linux常用shell命令=命令+選項+參數
find 查找文件/目錄
cd (change directory)切換目錄
- cd #root根目錄
- cd / #系統根目錄
- cd ../../ #返回上上一層目錄
ls/dir (list)列出目錄下文件
- ls -a (--all) #列出所有文件
- ls -d (--directory) #列出目錄
- ls -i (--inode) #顯示每個文件的inode 號(索引節點號,可以理解為文件的存儲地址)
- ls -l (-long) #較長格式列出
- ls -lh (--human-readable)與-l #人性化閱讀輸出
clear清屏
dirs 顯示目錄記錄、
- dirs +n #顯示從左邊算起第n筆的目錄。
- dirs -n #退一級目錄的路徑
- dirs -l #顯示目錄完整的記錄。
mv (move)移動或更名現有的文件或目錄
- mv -b (--backup)+ 目標文件或路徑 #移動到目標目錄,若覆蓋文件,則先備份
- mv -f (--force )+ 目標文件或路徑 #強制覆蓋,沒有目標文件時相當於備份
- mv -i (--interactive)+ 目標文件或路徑 #覆蓋前先行詢問用戶
- mv -u (--update)+ 目標文件或路徑 #在移動或更改文件名時,若目標文件已存在,且其文件日期比源文件新,則不覆蓋目標文件。
例子:
mv test /root 將test文件轉移到root路徑下
mv test /root/test1將test文件轉移到root 路徑下並重命名為test1
pwd (print working directory)顯示工作目錄
- pwd #顯示當前工作目錄
rm (remove)刪除文件或目錄
- rm -d (-directory) #直接把欲刪除的目錄的硬連接數據刪成0,刪除該目錄
- rm -f (--force) #強制刪除文件或目錄
- rm -i (interactive) #刪除既有文件或目錄之前先詢問用戶
- rm -r或-R (--recursive) #遞歸刪除,防止目錄里面有文件不能刪除
例子:rm test1 刪除test1文件
rm test/a 刪除test里面的a文件
rm -f test1 強制刪除test1,不會有進一步的提示
rm -r test/ 刪除名為test的文件夾
rm -r test/a 刪除test下的a文件夾
rm -rf test/ 強制刪除名為test的文件夾
mkdir (make directories) 建立目錄
- mkdir +文件名 #創建目錄
- mkdir -m (--mode)+a=權限+目錄名 #設置目錄權限(rwx)例:mkdir -m a=rw bbb 創建目錄bbb,權限為rw(a是模式固定寫法)
- mkdir -p (--parents)+父目錄/子目錄 #若所要建立目錄的上層目錄目前尚未建立,則會一並建立上層目錄 例1:mkdir -p 111/abc 創建abc目錄,111為子目錄 例2:mkdir -p /ms/{sales,hr,web} 創建一個名為/ms的目錄,其中有sales、hr、web的子目錄
- mkdir -pv +目錄名 #批量創建目錄 例:mkdir -pv /tmp/test/{a1,b1}/{c1,d1}
- mkdir -v (--verbose) #創建目錄,並顯示詳細信息
例子:
mkdir a 在當前目錄創建名字為a的文件夾
rmdir 刪除空目錄
rmdir +目錄名 #刪除目錄,注意必須是空目錄
rmdir -p +目錄/目錄/目錄 #刪除指定目錄及其上級文件夾 例:rmdir -p a/b/c
echo 顯示一行文本 (可使用通配符,正則表達式)
- echo +文本內容 #顯示文本
- echo -n +文本內容 #顯示不帶尾部回車符的文本
- echo -e +"文本內容" #允許使用轉義字符輸出文本 例:echo -e "a\nb\nc"
- echo +新文本內容 > 文件名 #重定向,清除源文件所有內容,並插入單行 例:echo "hello word" >jackonill.txt
- echo +新文本內容 >> 文件名 #追加重定向,在原有文件基礎上末尾插入一行文本逐行
ifconfig/ip addr(CentOS) 顯示或設置網絡設備
- ifconfig #處於激活狀態的網絡接口
- ifconfig -a #所有配置的網絡接口,不論其是否激活
ping 檢測主機(127.0.0.1為主機,可以檢驗網卡,用於檢測內網
- ping +ip/域名 #檢測外網
tar (tape archive)解壓縮文件
- -c :新建打包文件
- -t :查看打包文件的內容含有哪些文件名
- -x :解打包或解壓縮的功能,可以搭配-C(大寫)指定解壓的目錄,注意-c,-t,-x不能同時出現在同一條命令中
- -j :通過bzip2的支持進行壓縮/解壓縮
- -z :通過gzip的支持進行壓縮/解壓縮
- -v :在壓縮/解壓縮過程中,將正在處理的文件名顯示出來
- -f filename :filename為要處理的文件
- -C dir :指定壓縮/解壓縮的目錄dir
壓縮:tar -jcv -f filename.tar.bz2 要被處理的文件或目錄名稱
查詢:tar -jtv -f filename.tar.bz2
解壓:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
tar -czvf +壓縮文件名 源文件名 #將ar_test文件打包並且壓縮 例:tar -czvf ar_test.tar.gz ar_test 將ar_test文件打包並且壓縮
tar zxvf +目標文件 #解壓 例: tar zxvf ar_test.tar.gz 解壓ar_test.tar.gz壓縮包
date 顯示系統時間
- date #打印時間
- date -s +時間 #設置時間 例:date -s '14:35:40'
- date +%m%d%H%M%S #按照格式輸出時間
su 切換用戶
- su +用戶名 #切換到用戶
- sudo +命令 #在root用戶下執行一條命令
- sudo su #下面的命令都用root用戶執行
- su root #CentOS下切換root用戶的一種方式
cp (copy)拷貝文件
- cp -p +文件名 路徑 #將文件拷貝到指定路徑,並且保留原文件的屬性 例:cp -p test.rb /home/test 將test.rb拷貝到test目錄
- cp -r +源目錄名 目標目錄名 #將某目錄copy到目標目錄下 例:cp -r Dir/ /home/test 將Dir目錄copy到test目錄下
- cp -fr +源目錄下文件名 目標目錄名 #將源目錄下文件名文件強制copy到目標目錄下 例:cp -fr Dir/* /home/test 將Dir下面的所有文件強制copy到test目錄下
- cp test.rb{,.bak} #備份test.rb,並在尾部加上.bak后綴
- cp -u -v file1 file2 #復制文件,只有源文件較目的文件的修改時間新時,才復制文件
- cp file1 file2 #將文件file1復制成文件file2
- cp -i file1 file2 #采用交互方式將文件file1復制成文件file2
- cp -p a.txt tmp/ #復制時保留文件屬性
例子:
cp test test1 復制一個test文件命名為test1
cp -r test test1 復制test文件夾命名為test1
chmod 改變文件/目錄的權限
chmod ugo+r 文件 #所有人皆可讀取
chmod a+r 文件 #所有人皆可讀取
chmod ug+w,o-w 文件 #設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入
chmod u+x 文件 #創建者擁有執行權限
chmod a-x 文件 #收回所有用戶的對文件的執行權限
chmod 777 文件 #所有人可讀,寫,執行
cat 查看文件內容
- cat +目標文本 #普通輸出
- cat -n 目標文本 #開頭顯示行號
- cat -E 目標文本 #以$結束
- cat -ns 目標文本 #去空行,加行號
tac +目標文本 #反方向查看文件內容
touch 創建文件
- touch +文件名 #將文件的創建時間改為當前時間,文件不存在則建之 例:touch test.php 將test.php的檔案時間改為,當前時間,文件不存在建之
- touch -c -t 時間 +文件名 #將檔案時間改為特定時間 例:touch -c -t 05061803 test.php 將檔案時間改為,5月6日18點3分
- touch -r #參考文件名 目標文件名 將目標文件檔案改成跟參考文件一樣 例: touch -r abc.php test.php 將test.php檔案改成跟abc.php一樣
- touch d 時間 文件名 #將文件日期改為特定天數時間 例:touch -d "2 days ago" test.php 將test.php日期修改為2天以前
例子:
touch test 在當前目錄創建名為test的文件
history 查看用戶歷史操作
- history #查看所有執行過的命令
- history n #顯示n條歷史記錄
- !n #執行編號歷史是n的命令,注意感嘆號 例:!4 執行編號是4的命令
- history -c #清除歷史記錄
id/who 查看用戶
- id/who #顯示當前用戶的信息
- id 某用戶 #顯示某用戶的信息
- who -a #顯示目前登入系統的用戶詳細信息
- who -b #上次系統啟動時間
man 查看幫助文檔
- man +命令 #查看某命令手冊
vi/vim(vi增強工具) 編輯文本
vim 文本名 #編輯某文本
set nu(number) #vi/vim模式下顯示行數
進入文檔后,點擊 i 進入insert模式,在文檔中輸入文字,在當前光標處編輯,文檔下面會有insert的標識
進入文檔后,點擊 a 可以編輯光標下一位
退出編輯狀態后,輸入Shift+g即可立刻跳轉到本文檔最后
點擊esc按鈕可以退出編輯狀態
:輸入冒號可以輸入文檔相關的指令
wq 表示保存並退出
q 表示退出
q! 強制退出,不保存修改的內容
退出編輯狀態,點擊 x 鍵可以刪除1個字符,一次有效
退出編輯狀態,點擊 dd 可以刪除一行字符
退出編輯狀態,點擊 r + 要替換的內容,即可將當前內容替換
sleep 休眠
- sleep n;命令 #n秒后,執行某命令,注意分號
shutdown/poweroff/halt 關機/重啟命令
- shutdown -h now或/poweroff或halt #立刻關機
- shutdown -h 時間 #在特定時間關機
- shutdown -H now #立刻停機
- shutdown –r now或reboot #重啟
diff 比較兩個文件的差異
- diff 文件1 文件2 #比較二個文件的不同
- diff 文件夾1/ 文件夾2/ #比較二個文件夾的不同
- diff -r 文件夾1/ 文件夾2/ #遞歸比較二個文件夾的不同
apt-get/yum/dnf 下載軟件包命令
- apt-get install 軟件/包 #安裝包
- apt-get update 軟件/包 #更新軟件
- apt-get remove 軟件/包 #卸載軟件
- apt-get upgrade #更新已安裝的包
- apt-get clean #清理無用的包
ssh
- ssh 用戶@ip地址 #遠程ssh連接某主機
useradd 添加用戶
- useradd 用戶名 #添加某用戶
- 用戶名 passwd #為某用戶添加密碼
- useradd -r 用戶名 #添加系統用戶
- useradd -d 路徑 用戶名 #添加用戶,並且指定,home目錄
df 報告文件系統磁盤空間的使用情況
- df #列出各文件系統的磁盤空間使用情況
- df -a #顯示所有文件系統的磁盤使用情況
- df -ia #列出各文件系統ionde使用情況
- df -h (--human)#目前磁盤空間和使用情況 以更易讀的方式顯示
lsof (list open files)是一個列出當前系統打開文件的工具
- lsof #列出所有正在使用文件
- lsof 文件名 #找出誰在使用某個文件
- lsof -c 程序 #查找某個程序打開的所有文件
- lsof -i #列出所有網絡連接
- lsof -i TCP #列出所有TCP網絡連接
- lsof -i:端口號 #找到使用某個端口的進程
特殊裝逼特效命令
sl #跑火車
cmatrix #代碼雨
cowsay +字符串 #小奶牛說你想說的話
命令 | lolcat #彩虹效果展示命令效果
tail -f 滾動查看日志
tail -f tet 滾動查看名字為tet的文檔內容,不進入編輯界面
tail -f 1000 tet 滾動查看最后1000行文檔內容
echo aaaaa >>tet 將字符串“aaaaa”,追加到名為tet文檔的最后
echo dddd > tet 用字符串“dddd”替換原來tet中所有的文檔
ls >> tet 將ls指令顯示的內容追加到文檔tet中
ps -ef 查看linux下的所有進程
ps -ef | grep www* 查看所有帶www的進程
kill -9 進程號 可以關掉對應的進程
kill -15 進程號 等該進程運行完就關閉該進程
apt-get install 軟件包名 下載並安裝對應的軟件包名
useradd daxia 新增一個名為daxia的用戶
passwd daxia 設置daxia用戶的密碼
su daxia 切換到daxia用戶
whoami 查看當前用戶
history 查看歷史指令
chmod 修改文件權限詳解