第一章:
對Shell的認識:
計算機硬件是由運算器、控制器、存儲器、輸入/輸出設備等設備組成的,而能夠讓機箱內各種設備各司其職的東西就叫做——系統內核。
內核負責驅動硬件、管理活動和分配/管理硬件資源,所以它不能直接讓用戶操作!
因為用戶不能直接控制硬件也不能直接操作內核,所以需要基於“系統調用接口”開發出的程序或服務來滿足用戶的日常工作。
“Shell”——也可稱為“殼”,充當的是人與內核(硬件)的翻譯官,用戶將一些命令“告訴”Shell,它就會調用相應的程序服務執行工作。
現在包括紅帽系統在內的很多熱門Linux系統主流默認字符Shell是Bash(Bourne-Again Shell)。
Bash的優勢:
1.默認保存歷史命令(可以上下鍵翻看);
2.命令僅需要輸入前幾位就可以用tab鍵補全(RHEL7可以進行參數補全);
3.強大的批處理腳本;
4.使用的環境變量。
Linux命令——常用系統工作命令:
man 可用於查看命令的具體可用參數與對象格式等。例如:#man man 可以查看man自身的幫助信息。
echo 用於在終端顯示字符串或變量
date 命令用於顯示或設置系統時間或日期,格式為:“date [選項] [+指定的格式]”。
參數 作用 參數 作用 參數 作用 參數 作用
%t 跳格[TAB鍵] %S 秒(00-60) %A 星期幾(Sunday-Saturday) %d 日(01-31)
%H 小時(00-23) %X 相當於%H:%M:%S %a 星期幾(Sun-Sat) %j 一年中的第幾天(001-366)
%I 小時(00-12) %Z 顯示時區 %B 完整月份(January-December) %m 月份(01-12)
%M 分鍾(00-59) %p 顯示本地AM或PM %b 縮寫月份(Jan-Dec) %Y 完整的年份
按照“年-月-日 小時:分鍾:秒”的格式:# date "+%Y-%m-%d %H:%M:%S" 輸出:2016-10-14 11:30:00,
設置系統時間為2016年10月14日 11點30分的格式為:# date -s "20161014 11:30:00",
查看當前系統時間:# date 輸出:Sun Oct 14 11:34:09 CST 2016
reboot 命令用於重啟系統(僅root用戶可以使用),格式為:“reboot”。 # reboot
wget 命令用於使用命令行下載網絡文件,格式為:“wget [參數] 下載地址”。
參數 作用 參數 作用
-b 后台下載模式 -c 斷點續傳
-O 下載到指定目錄 -p 下載頁面內所有資源,包括圖片、視頻等
-t 最大嘗試次數 -r 遞歸下載
elinks 用於實現一個純文本界面的瀏覽器,格式為:“elinks [參數] 網址”。安裝elinks 純文本瀏覽器:# yum install elinks ; 使用elinks訪問百度:# elinks www.baidu.com
Linux命令——系統狀態監測命令:
ifconfig 用於獲取網卡配置與網絡狀態等信息:格式為“ifconfig [網絡設備] [參數]”。 查看本地當前的網卡配置與網絡狀態等信息:# ifconfig
uname 命令用於查看系統內核版本等信息,格式為:“uname [-a]”。查看系統的內核名稱、內核發行版、內核版本、節點名、硬件名稱、硬件平台、處理器類型、操作系統等信息:# uname -a
輸出: Linux iZ28jc899pfZ 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
如果想看系統詳細版本信息就看redhat-release文件:# cat /etc/redhat-release 輸出:CentOS Linux release 7.0.1406 (Core)。
uptime 命令用於查看系統的負載情況,格式為:“uptime”。也可以用 “watch -n 1 uptime” 來每秒刷新一次當前的系統負載情況,輸出內容分別為系統當前時間、系統已運行時間、當前在線用戶
以及平均負載值。而平均負載分為最近1分鍾、5分鍾、15分鍾的系統負載情況,負載值越低越好(小於1是正常)。
例:# uptime 輸出:14:34:41 up 114 days, 2:01, 1 user, load average: 4.75, 5.42, 5.19
另外還有個參數-V查看版本:# uptime -V 輸出:uptime from procps-ng 3.3.9
free 命令用於顯示當前系統中內存的使用量情況,格式為:“free [-m/-g]”。以m為單位顯示當前系統中內存的使用量情況:# free -m
total used free shared buffers cached
Mem: 15631 14868 762 76 39 1632
-/+ buffers/cache: 13195 2435
Swap: 16383 1022 15361
who 命令用於查看當前登錄主機的用戶情況,格式為:“who [參數]”。例:# who 輸出:root pts/0 2016-10-16 14:07 (221.218.215.59)
history 命令用於顯示歷史執行過得命令,格式為:“history [-c]”。清空該用戶在本機中執行過得命令:# history -c。
history默認會保存1000條執行過得命令,諾要修改可直接編輯/etc/profile文件的HISTSIZE值。
sosreport 命令用於收集系統配置並診斷信息后輸出結論文檔,格式為:“sosreport”。例:# sosreport
Linux命令——工作目錄切換命令:
pwd 命令用於顯示當前的工作目錄,格式為:“pwd [選項]”。參數:-p 作用:顯示真實路徑(即非快捷鏈接的地址)
cd 命令用於切換工作路徑,格式為:“cd [目錄名稱]”。
參數 作用 參數 作用 參數 作用 參數 作用
- 切換到上一次的目錄,如“cd -” ~ 切換到“家目錄”,如“cd ~” ~username 切換到其他用戶的家目錄,如“cd ~teak” .. 切換到上一級目錄,如“cd ..”
ls 命令用於查看目錄中有那些文件,格式為:“ls [選項] [文件]”。
參數 作用 參數 作用 參數 作用 參數 作用
-a 查看全部文件(包括隱藏文件) -d 僅看目錄本身 -h 易讀的文件容量(如k,m,g) -l 顯示文件的詳細信息
Linux命令——文本文件編輯命令:
cat 命令用於查看純文本文件(較短的),格式為:“cat [選項] [文件]”。參數:-n 作用:顯示行號, 參數:-b 作用:顯示行號(不包括空行), 參數:-A 作用:顯示出“不可見”的符號,如空格,tab鍵等。
more 命令用於查看純文本文件(較長的),格式為:“more [選項] 文件”。參數:-數字 作用:預先顯示的行數(默認為一頁), 參數:-d 作用:顯示提示語句與報錯信息。
head 命令用於查看純文本文檔的前N行,格式為:“head [選項] [文件]”。參數:-n 10 作用:顯示10行, 參數:-n -10 作用:正常輸出(如cat命令),但不顯示最后的10行。
tail 命令用於查看純文本文檔的后N行,格式為:“tail [選項] [文件]”。參數:-n 10 作用:顯示后面的10行, 參數:-f 作用:持續刷新顯示的內容。
od 命令用於查看特殊格式的文件,格式為:“od [選項] [文件]”。
參數 作用 參數 作用 參數 作用
-t a 默認字符 -t o 八進制 -t x 十六進制
-t c ASCII字符 -t d 十進制 -t f 浮點數
tr 命令用於轉換文本文件中的字符,格式為:“tr [原始字符] [目標字符]”。
wc 命令用於統計指定文本的行數、字數、字節數,格式為:“wc [參數] 文本”。參數:-l 作用:只顯示行數, 參數:-w 作用:只顯示單詞數, 參數:-c 作用:只顯示字節數。
cut 命令用於通過列來提取文本字符,格式為:“cut [參數] 文本”。參數:-d 分隔符 作用:指定分隔符,默認為Tab, 參數:-f 作用:指定顯示的列數, 參數:-c 作用:單位改為字符。
例:# cut -d: -f1 /export/data/shell/shangdiandian_80_deploy.sh 參數作用:-d 以“:”來做分隔符,-f參數代表只看第一列的內容。
diff 命令用於比較多個文本文件的差異,格式為:“diff [參數] 文件”。例:# diff a.txt b.txt
參數 作用 參數 作用 參數 作用 參數 作用
-b 忽略空格引起的差異 -B 忽略空行引起的差異 --brief或-q 僅報告是否存在差異 -c 使用上下文輸出格式
Linux命令——文本目錄管理命令:
touch 命令用於創建空白文件和修改文件時間,格式為:“touch [選項] [文件]”。
對於在Linux中的文件有三種時間:
1.更改時間(mtime):內容修改時間(不包括權限的) 2.更改權限(ctime):更改權限與屬性的時間 3.讀取時間(atime):讀取文件內容的時間
參數 作用 參數 作用 參數 作用 參數 作用
-a 近修改“訪問時間”(atime) -m 近修改“更改時間”(mtime) -d 同時修改atime與mtime -t 要修改成的時間[YYMMDDhhmm]
mkdir 命令用於創建空白的文件夾,格式為:“mkdir [選項] 目錄”。參數:-m=MODE 作用:默認的文件目錄權限,如“-m 755”,參數:-p 作用:連續創建多層目錄(若文件夾已存在則忽略),參數:-v 作用:顯示創建的過程。
cp 命令用於復制文件或目錄,格式為:“cp [選項] 源文件 目標文件”。
復制命令的三種情況:
1.目標文件是一個目錄,會將源文件復制到該目錄中 2.目標文件是一個文件,會將源文件覆蓋該文件 2.目標文件不存在,將會復制原文件並修改為目標文件的名稱(重命名)。
參數 作用 參數 作用 參數 作用
-p 保留原始文件的屬性 -r 遞歸持續復制(用於目錄) -a 相當於-pdr(p,d,r為前面的參數)
-d 若對象為“鏈接文件”,則保留該“鏈接文件”的屬性 -i 若目標文件存在則詢問是否覆蓋
mv 命令用於移動文件或改名,格式為:“mv [選項] 文件名 [目標路徑|目標文件]”。例:# mv aaa bbb 將文件aaa重命名為bbb
rm 命令用於刪除文件或目錄,格式為:“rm [選項] 文件”。參數:-f 作用:忽略警告提示, 參數:-i 作用:刪除前先詢問, 參數:-r 作用:刪除文件夾。
Linux系統中還有一個rmdir命令,它不同於rm -rf命令會刪除一切,而是僅刪除空目錄,遇到目錄有文件時則報錯。
dd 命令用於指定大小的拷貝的文件或指定轉換文件,格式為:“dd [參數]”。
參數 作用 參數 作用 參數 作用
if 輸入的文件名稱 bs 設置每個“塊”的大小 conv=ucase 將字母從小寫轉換為大寫
of 輸出的文件名稱 count 設置要拷貝“塊”的個數 conv=lcase 將字母從大寫轉換為小寫
例:將光驅設備拷貝成鏡像文件:# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
生成一個560m的空白文件:# dd if=/dev/zero of=560_file count=1 bs=560M
將硬盤的MBR信息拷貝出來:# dd if=/dev/sda of=sda_image count=1 bs=512K
Linux命令——用戶與組管理命令:
useradd 命令用於創建新的用戶,格式為:“useradd [選項] 用戶名”。
參數 作用 參數 作用 參數 作用 參數 作用
-d 指定用戶的家目錄(默認為/home/username) -e 賬號有效截止日期,格式:YYYY-MM-DD -G 指定一個或多個擴展用戶組 -s 指定默認的Shell
-D 展示默認值 -g 指定一個初始用戶組(必須已存在) -N 不創建與用戶同名的用戶組 -u 指定用戶的UID
例:創建名為hxm的用戶,並定義家目錄路徑、UID以及登錄解釋器(不允許登錄):# useradd -d /home/linux -u 888 -s /sbin/nologin hxm
查看hxm用戶的基本信息:# id hxm
passwd 命令用於修改用戶的密碼,格式為:“passwd [選項] [用戶名]”。例:修改當前用戶的密碼:# passwd 修改其他用戶的密碼:# passwd 其他用戶名
參數 作用 參數 作用 參數 作用
-l 鎖定用戶禁止其登錄 --stdin 允許從標准輸入修改用戶密碼,如(echo “NewPassWord” | passwd -stdin Username) -e 強制用戶下次登錄時修改密碼
-u 解除鎖定,允許用戶登錄 -d 是賬號無密碼 -S 顯示用戶的密碼狀態
userdel 命令用於刪除用戶所有表格,格式為:“userdel [選項] 用戶名”。參數:-f 作用:強制刪除用戶,家目錄與其相關文件 參數:-r 作用:同時刪除用戶,家目錄與其相關文件 例:userdel -d 用戶名 刪除用戶與其家目錄
usermod 命令用於修改用戶的屬性,格式為:“usermod [選項] 用戶名”。
參數 作用
-c 填寫賬號的備注信息
-d -m -d與-m連用,可重新指定用戶的家目錄並自動將舊的數據轉移過去
-e 賬戶到期時間,格式為“YYYY-MM-DD”
groupadd 命令用於創建群組,格式為:“groupadd [選項] 群組名稱”。例:# groupadd linuxprobe 創建名稱為“linuxprobe”的用戶群組
Linux命令——打包壓縮文件命令:
tar 命令用於對文件打包壓縮或解壓,格式為:“tar [選項] [文件]”。例:# tar -czvf 壓縮包名.tar.gz 文件名 打包並壓縮文件, # tar -xzvf 壓縮包名.tar.gz 解壓並展開壓縮包。
參數 作用 參數 作用 參數 作用 參數 作用
-c 創建壓縮文件 -z 用Gzip壓縮或解壓 -f 目標文件名 -C 指定解壓到的目錄
-x 解開壓縮文件 -j 用bzip2壓縮或解壓 -p 保留原始的權限和屬性
-t 查看壓縮包內有哪些文件 -v 顯示壓縮或解壓的過程 -P 使用絕對路勁來壓縮
Linux命令——文件查詢搜索命令: ------------------------------------------------ 10-20 ------------------------------------------------------
grep 命令用於對文本進行搜索,格式為:“grep [選項] [文件]”。搜索某個關鍵詞:“grep 關鍵詞 文本文件”
參數 作用 參數 作用 參數 作用
-b 將可執行文件(binary)當做文本文件(text)來搜索 -i 忽略大小寫 -v 反向選擇——僅列出沒有“關鍵詞”的行
-c 僅顯示找到的次數 -n 顯示行數
例:搜索在/etc/passwd中“/sbin/nologin”出現的行,找出系統中不允許登錄的用戶:# grep /sbin/nologin /etc/passwd
找出文件“/export/data/shell/shangdiandian_80_deploy.sh”中所有包含entry的行並輸出到/root/lines:# grep entry /export/data/shell/shangdiandian_80_deploy.sh >> /root/lines
find 命令用於查找文件,格式為:“find [查找路徑] 尋找條件 操作”。
參數 作用 參數 作用 參數 作用
-name 匹配名稱 -atime -n +n 匹配訪問文件的時間 --type b/d/c/p/l/f 匹配文件類型(塊設備、目錄、字符設備、管道、鏈接文件、文本文件)
-perm 匹配權限(mode為完全匹配,-mode為包含即可) -ctime -n +n 匹配修改權限的時間 --size 匹配文件的大小(+50k查找超過50k的文件,-50k查找小於50k的文件)
-user 匹配所有者 -nouser 匹配無所有者的文件 -prune 忽略某個目錄
-group 匹配所有組 -nogroup 匹配無所有組的文件 --exec {} \; 后面可接對搜索到結果進一步處理的命令
-mtime -n +n 匹配修改內容的時間(-n指n天以內,+n指n天以前) -newer f1 !f2 匹配比文件f1新卻比f2舊的文件
搜索時“~”代表用戶的家目錄,“.”代表當前目錄,“/”代表根目錄。
例:搜索在“/etc/”中所有以host開頭的文件:# find /etc -name "host*" print
搜索整個系統中所有包含SUID的文件(因SUID的數字表示法是4,而減號表示只要包含即可):# find / -perm -4000 -print
找出用戶hxm的文件並復制到/root/findresults目錄(重點是“-exec {} \;”其中的{}代表find命令搜索出的文件,記住結尾必須是\;):# find / -user hxm -exec cp -arf {} /root/findresults/ \;
總結:以上就是linux系統中日常用到的命令。