Linux 常用命令一览
文章目錄
- 生猛干貨
- 概述
- 強大好用的SHELL
- 執行命令與查看幫助 man
- 常用系統工作命令
- echo
- date
- reboot
- wget
- 系統狀態檢測命令
- ifconfig
- uname
- uptime 查看系統的負載情況
- free
- who
- last
- ls
- 文本文件編輯命令
- cat
- more
- head
- tail
- od
- tr
- wc
- cut
- diff
- 文件目錄管理命令
- touch
- mkdir
- cp
- mv
- rm
- dd
- 用戶與組管理命令
- useradd
- passwd
- userdel
- usermod
- 打包壓縮文件命令
- tar
- 文件查詢搜索命令
- grep
- find
- 搞定Linux核心技術
生猛干貨
從系統安裝到程序員必備的Linux技能,還原真實工作場景,手把手帶你實戰演練
概述
本篇博文講述系統內核、Bash解釋器的關系與作用,如何正確的執行Linux命令以及常見排錯方法。
經驗豐富的運維人員可以恰當的組合命令與參數,使Linux字符命令更加的靈活且相對減少消耗系統資源。
強大好用的SHELL
計算機硬件是由運算器、控制器、存儲器、輸入/輸出設備等設備組成的,而能夠讓機箱內各種設備各司其職東西就叫做——系統內核。內核負責驅動硬件、管理活動和分配/管理硬件資源,如此說來系統內核對計算機來講可真的是太重要了,所以它不能直接讓用戶操作。
因為用戶不能直接控制硬件也不能直接操作內核,于是便需要基于“系統調用接口”開發出的程序/服務來滿足用戶日常工作了。
首先承認在紅帽RHEL7中有些諸如邏輯卷管理器(LVM)的圖形化工具非常好用,也減少了運維人員操作出錯的幾率,值得稱贊,但一直以來Linux運維人員更多的傾向于用命令寫腳本程序,因為圖形化的工具不靈活而且相比來說更加消耗系統資源。
其實很多圖形工具也是調用腳本來工作的,但功能卻被“閹割”了,更缺乏了靈活性,所以有些運維人員甚至都不會給Linux系統安裝圖形界面,需要工作了直接遠程連接過去,不得不說這樣做真的挺高效的。
“Shell“——也可稱為“殼”,充當的是人與內核(硬件)的翻譯官,用戶將一些命令“告訴”Shell,它就會調用相應的程序服務執行工作啦~~現在包括紅帽系統在內的許多熱門Linux系統主流默認字符Shell是Bash(Bourne-Again SHell)。
bash作為大多數linux系統的默認字符解釋器,必須得學好!Bash的優勢:
- 1.默認保存歷史命令(可用上下鍵翻看)
- 2.命令僅需輸入前幾位就可以用tab鍵補全(RHEL7更牛的是參數補全)
- 3.強大的批處理腳本
- 4.實用的環境變量
執行命令與查看幫助 man
既然有了如此好用的“翻譯官”,那么接下來就有必要好好學習下如何更高效的和它溝通了~
要想準確的、高效的完成工作,不能夠光靠命令本身,還應該根據實際情況來組合各種命令選擇和命令參數:
命令名稱 [命令參數] [命令對象]注意:命令名稱、命令參數、命令對象之間請用空格鍵分隔。
比較好理解的是命令對象,命令對象一般是指要處理的目標(普通文件/目錄文件/用戶等等),而命令參數對于新手來講比較麻煩,因為這個值會隨命令的不同和環境情況的不同而異,所以在參數選擇搭配上需要長時間的經驗積累才可以。
命令的參數可以選用長格式(完整的選項名稱)也可選用短格式(單個字母的縮寫),分別用”—“與”–“做前綴。
長格式如:man —help 短格式如:man -h當遇到了一個陌生命令后如何知道它有那些可用的參數?這時就可以用man命令了。
man命令的可用幫助文檔分類有:
一般來講幫助文件都很長很多,如果你想翻看的話,就要理解幫助文檔的目錄結構與操作方法:
常用系統工作命令
echo
echo命令用于在終端顯示字符串或變量,
格式為:echo [字符串 | 變量]
將echo命令的字符串輸出到終端:
[root@xgj~]# echo xgj xgj用echo命令查看SHELL變量的值(前面有$符號):
[root@xgj~]# echo $SHELL /bin/bash查看本機主機名:
[root@xgj~]# echo $HOSTNAME xgjdate
date命令用于顯示/設置系統的時間或日期,
格式為:date [選項] [+指定的格式]
強大的date命令能夠按照指定格式顯示系統的時間或日期,只需鍵入”+”號開頭的字符串指定其格式.
詳細格式如下:
查看當前的系統時間:
[root@xgj ~]# date Mon Aug 24 16:11:23 CST 2016按照”年-月-日 小時:分鐘:秒”的格式:
[root@xgj ~]# date "+%Y-%m-%d %H:%M:%S" 2017-05-04 16:29:12設置系統時間為2017年5月1日8點半:
[root@xgj ~]# date -s "20170501 8:30:00" Mon May 1 08:30:00 CST 2015查看本地系統時區:
[root@xgj ~]# date "+%Z" CST查看星期幾:
[root@xgj ~]# date "+%A" Tuesday輸入當前是上午還是下午:
[root@xgj Desktop]# date "+%p" AM判斷今天是一年中的第幾天:
[root@xgj ~]# date "+%j" 244reboot
reboot命令用于重啟系統(僅root用戶可以使用),格式為:”reboot”。
重啟計算機:
wget
wget命令用于使用命令行下載網絡文件,
格式為:wget [參數] 下載地址
系統狀態檢測命令
合格的運維人員必需具備快速查看系統狀態的能力.
ifconfig
ifconfig用于獲取網卡配置與網絡狀態等信息:格式為ifconfig [網絡設備] [參數]
查看本機當前的網卡配置與網絡狀態等信息:
uname
uname命令用于查看系統內核版本等信息,格式為:“uname [-a]”。
查看系統的內核名稱、內核發行版、內核版本、節點名、硬件名稱、硬件平臺、處理器類型、操作系統等信息:
順便說下,如果您想查看系統詳細版本信息就看redhat-release文件:
[root@xgj ~]# cat /etc/redhat-releaseuptime 查看系統的負載情況
uptime命令用于查看系統的負載情況,格式為:“uptime”。
我也經常用”watch -n 1 uptime“來每秒刷新一次獲得當前的系統負載情況,輸出內容分別為系統當前時間、系統已運行時間、當前在線用戶以及平均負載值。
而平均負載分為最近1分鐘、5分鐘、15分鐘的系統負載情況,負載值越低越好(小于1是正常)。
獲取當前系統狀態信息:
[root@xgj ~]# uptime 22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18free
free命令用于顯示當前系統中內存的使用量情況,格式為:free [-m/-g]
以m為單位顯示當前系統中內存的使用量情況:
[root@xgj ~]# free -mwho
[root@xgj ~]# wholast
last命令用于查看所有系統的登入記錄,格式為:”last [參數]”。
[root@xgj ~]# last root pts/0 :0 Mon Aug 24 17:52 still logged in root :0 :0 Mon Aug 24 17:52 still logged in (unknown :0 :0 Mon Aug 24 17:50 - 17:52 (00:02) reboot system boot 3.10.0-123.el7.x Tue Aug 25 01:49 - 18:17 (-7:-32) root pts/0 :0 Mon Aug 24 15:40 - 08:54 (7+17:14) root pts/0 :0 Fri Jul 10 10:49 - 15:37 (45+04:47)##history
history命令用于顯示歷史執行過的命令,格式為:“history [-c]”。
歷史命令會被保存到用戶家目錄中的”.bash_history“文件中。Linux系統中以點(.)開頭的文件均代表隱藏文件,一般會是系統文件。
清空該用戶在本機中執行過命令的歷史記錄:
[root@xgj ~]# history -chistory默認會保存1000條執行過的命令,若要修改可直接編輯/etc/profile文件的HISTSIZE值。
##sosreport
sosreport命令用于收集系統系統配置并診斷信息后輸出結論文檔,格式為:“sosreport”。
當我們的紅帽系統出現故障需要聯系紅帽廠商或其他技術支持時,大多數情況都需要提供使用到這個命令。
收集系統本地配置信息并診斷:
[root@xgj ~]# sosreport#工作目錄切換命令
##pwd
pwd命令用于顯示當前的工作目錄,格式為:“pwd [選項]”。
##cd
cd命令用于切換工作路徑,格式為:“cd [目錄名稱]”
切換進/etc目錄中:
[root@xgj ~]# cd /etc切換進/bin目錄中:
[root@xgj etc]# cd /bin返回上級目錄(即/etc目錄):
[root@xgj bin]# cd - /etc返回用戶自己的家目錄:
[root@xgj etc]# cd ~ [root@xgj ~]#ls
ls命令用于查看目錄中有那些文件,格式為:ls [選項] [文件]
查看當前目錄下有那些文件(長格式):
查看/etc目錄中有那些文件:
[root@xgj ~]# ls /etc ………省略部分文件………查看/etc目錄的權限與屬性:
[root@xgj ~]# ls -ld /etc drwxr-xr-x. 132 root root 8192 Jul 10 10:48 /etc追加-h參數,以K/M/G為單位顯示容量:
[root@xgj ~]# ls -ldh /etc drwxr-xr-x. 132 root root 8.0K Jul 10 10:48 /etc文本文件編輯命令
cat
cat命令用于查看純文本文件(較短的),格式為:“cat [選項] [文件]”。
查看文本文件:
[root@xgj ~]# cat 文件名more
more命令用于查看純文本文件(較長的),格式為:“more [選項] 文件”。
查看文本文件:
[root@xgj ~]# more 文件名head
head命令用于查看純文本文檔的前N行,格式為:“head [選項] [文件]”。
查看文本文件前20行:
tail
tail命令用于查看純文本文檔的后N行,格式為:“tail [選項] [文件]”
查看文本文件后20行:
[root@xgj ~]# tail -n 20 文件名od
od命令用于對查看特殊格式的文件,格式為:“od [選項] [文件]”
tr
tr命令用于轉換文本文件中的字符,格式為:“tr [原始字符] [目標字符]”。
將tr.txt文件的內容轉換成大寫
| —管道命令符
[root@xgj ~]# cat tr.txt | tr [a-z] [A-Z] RED HAT CERTIFIED FREE LINUX LESSONS PROFESSIONAL GUIDANCE LINUX COURSEwc
wc命令用于統計指定文本的行數、字數、字節數,格式為“wc [參數] 文本”。
統計當前系統中的用戶個數:
[root@xgj ~]# wc -l /etc/passwd 38 /etc/passwdcut
cut命令用于通過列來提取文本字符,格式為:“cut [參數] 文本”。
獲取當前系統中所有用戶的名稱:
參數作用:-d以”:”來做分隔符,-f參數代表只看第一列的內容。
獲取root用戶的默認SHELL解釋器:
[root@xgj ~]# grep ^root /etc/passwd | cut -d: -f 7 /bin/bashdiff
diff命令用于比較多個文本文件的差異,格式為:”diff [參數] 文件”。
比較兩個文件的差異:
[root@xgj ~]# diff diff_A.txt diff_B.txt 1c1,2 > Welcome to xgj.com --- > Welcome tooo xgj.com > 3c4,5 > Free Linux Lessons --- > Free Linux LeSSonS > .....僅顯示比較后的結果,即相同或不相同:
[root@xgj ~]# diff --brief diff_A.txt diff_B.txt Files diff_A.txt and diff_B.txt differ使用上下文輸出的格式:
[root@xgj ~]# diff -c diff_A.txt diff_B.txt *** diff_A.txt 2015-08-30 18:07:45.230864626 +0800 --- diff_B.txt 2015-08-30 18:08:52.203860389 +0800 *************** *** 1,5 **** ! Welcome to xgj.com Red Hat certified ! Free Linux Lessons Professional guidance Linux Course --- 1,7 ---- ! Welcome tooo xgj.com ! Red Hat certified ! Free Linux LeSSonS ! ..... Professional guidance Linux Course文件目錄管理命令
touch
touch命令用于創建空白文件與修改文件時間,格式為:“touch [選項] [文件]”。
我們可以用“touch test”輕松的創建出一個名字為test的空白文檔,所以這個功能無須介紹。
對于在Linux中的文件有三種時間:
- 更改時間(mtime):內容修改時間(不包括權限的)
- 更改權限(ctime):更改權限與屬性的時間
- 讀取時間(atime):讀取文件內容的時間
如果黑客執行了touch -d “2 days ago” test,便將訪問與修改時間修改為了2天前(偽造了自己沒有動過該文件的假象)。
mkdir
mkdir用于創建空白的文件夾,格式為:“mkdir [選項] 目錄”。
創建文件夾:
創建一個名字叫xgj的目錄:
[root@xgj ~]# mkdir xgj使用ls命令查看該目錄的權限屬性等信息:
[root@xgj ~]# ls -ld xgj/ drwxr-xr-x. 2 root root 6 Aug 24 19:25 xgj/還記得剛剛用cd命令進入xgj目錄嗎?這里是個小技巧,變量!$或(鍵盤按鍵)代表上一條命令的參數。
[root@xgj ~]# cd !$ cd xgjpwd命令用于顯示當前的工作路徑。
[root@xgj xgj]# pwd /root/Desktop/xgj一次創建5個目錄a/b/c/d/e:
[root@xgj xgj]# mkdir -p a/b/c/d/e查看目錄的屬性,驗證是否成功:
[root@xgj xgj]# ls -ld a/b/c/d/e/ drwxr-xr-x. 2 root root 6 Aug 29 10:16 a/b/c/d/e/cp
cp命令用于復制文件或目錄,格式為:“cp [選項] 源文件 目標文件”。
復制命令的三種情況:
- 目標文件是一個目錄,會將源文件復制到該目錄中。
- 目標文件是一個文件,會將源文件覆蓋該文件。
- 目標文件不存在,將會復制源文件并修改為目標文件的名稱(重命名)
創建一個名為install.log的文件:
[root@xgj ~]# touch install.log將install.log復制為x.log:
[root@xgj ~]# cp install.log x.log查看到確實出現了文件x.log
[root@xgj ~]# ls install.log x.logmv
mv命令用于移動文件或改名,格式為:“mv [選項] 文件名 [目標路徑|目標文件名]”。
將文件aaa重命名為bbb:
rm
rm命令用于刪除文件或目錄,格式為:“rm [選項] 文件”。
刪除普通文件并提示確認信息:“rm 文件名”
刪除普通文件或目錄文件,不提示:“rm -rf 文件或目錄名”
查看當前目錄下的文件:
[root@xgj ~]# ls install.log x.log刪除install.log文件,輸入”y”即確認:
[root@xgj ~]# rm install.log rm: remove regular empty file ‘install.log’? y刪除x.log文件而無需確認:
[root@xgj ~]# rm -rf x.logLinux系統中還有一個rmdir命令,它不同于rm -rf命令會刪除一切,而是僅刪除空目錄,遇到目錄內有文件時則報錯。
dd
dd命令用于指定大小的拷貝的文件或指定轉換文件,格式為:“dd [參數]”。
將光驅設備拷貝成鏡像文件:
[root@xgj ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-xgj.Com.iso 7311360+0 records in 7311360+0 records out 3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s生成一個560m的空白文件:
[root@xgj ~]# dd if=/dev/zero of=560_file count=1 bs=560M 1+0 records in 1+0 records out 587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s將硬盤的MBR信息拷貝出來:
[root@xgj ~]# dd if=/dev/sda of=sda_image count=1 bs=512K 1+0 records in 1+0 records out 524288 bytes (524 kB) copied, 0.0449481 s, 11.7 MB/s用戶與組管理命令
useradd
useradd命令用于創建新的用戶,格式為:“useradd [選項] 用戶名”。
創建名為xgj的用戶,并定義家目錄路徑、UID以及登陸解釋器(不允許登陸):
[root@xgj ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin xgj查看xgj用戶的基本信息:
[root@xgj ~]# id xgj uid=8888(xgj) gid=8888(xgj) groups=8888(xgj)passwd
passwd命令用于修改用戶的密碼,格式為:“passwd [選項] [用戶名]”。
- 修改當前用戶的密碼:“passwd”
- 修改其他用戶的密碼:“passwd 其他用戶名”
userdel
userdel命令用于刪除用戶所有表格,格式為:“userdel [選項] 用戶名”。
刪除用戶與其家目錄:
usermod
usermod命令用于修改用戶的屬性,格式為“usermod [選項] 用戶名”。
##groupadd
groupadd命令用于創建群組,格式為:”groupadd [選項] 群組名”。
創建名稱為xgj的用戶群組:
打包壓縮文件命令
tar
tar命令用于對文件打包壓縮或解壓,格式為:“tar [選項] [文件]”。
- 打包并壓縮文件:“tar -czvf 壓縮包名.tar.gz 文件名”
- 解壓并展開壓縮包:“tar -xzvf 壓縮包名.tar.gz”
將/etc目錄內文件打包并通過gzip格式壓縮:
[root@xgj ~]# tar czvf etc.tar.gz /etc tar: Removing leading `/' from member names /etc/ /etc/fstab /etc/crypttab /etc/mtab /etc/fonts/ /etc/fonts/conf.d/ /etc/fonts/conf.d/65-0-madan.conf /etc/fonts/conf.d/59-liberation-sans.conf /etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf /etc/fonts/conf.d/59-liberation-mono.conf /etc/fonts/conf.d/66-sil-nuosu.conf ……………………………………將etc.tar.gz解壓到/root/etc目錄中:
[root@xgj ost ~]# mkdir /root/etc 開始解壓etc.tar.gz文件: [root@xgj ~]# tar xzvf etc.tar.gz -C /root/etc文件查詢搜索命令
grep
grep命令用于對文本進行搜索,格式為:“grep [選項] [文件]”。
搜索某個關鍵詞:“grep 關鍵詞 文本文件”
搜索在/etc/passwd中”/sbin/nologin”出現的行,找出系統中不允許登陸的用戶。
[root@xgj ~]# grep /sbin/nologin /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin ………………………………找出文件“/usr/share/gedit/plugins/snippets/docbook.xml”中所有包含entry的行并輸出到/root/lines:
grep entry /usr/share/gedit/plugins/snippets/docbook.xml >> /root/linesfind
find命令用于查找文件,格式為:“find [查找路徑] 尋找條件 操作”。
這里需要注意下find命令非常靈活導致參數非常復雜,這里不要求大家記住,用時來查即可。
對于常用搜索路徑有幾個小竅門:“~”代表用戶的家目錄,“.”代表當前目錄,“/”代表根目錄。
搜索整個系統中所有包含SUID的文件(因SUID的數字表示法是4,而減號表示只要包含即可)。
[root@xgj ~]# find / -perm -4000 -print /usr/bin/fusermount /usr/bin/su /usr/bin/umount /usr/bin/passwd /usr/sbin/userhelper /usr/sbin/usernetctl ………………………………找出用戶xgj的文件并復制到/root/findresults目錄。
重點是”-exec {} ;”其中的{}代表find命令搜索出的文件,記住結尾必須是;
搞定Linux核心技術
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Linux 常用命令一览的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle查询优化-07日期运算
- 下一篇: 应用域名改造-https证书部分