Linux基礎篇--linux基礎和幫助用法
本章概要
- 用戶登錄
- 終端
- Shell介紹
- 執行命令
- 簡單命令
- Tab鍵補全
- 命令行歷史
- bash快捷鍵
- 使用gnome-terminal
- whatis
- command--help
- manandinfo
- 本地幫助文檔/usr/share/doc/
- 官網在線文檔
- 其它網站和搜索
用戶登錄
- root用戶
一個特殊的管理帳戶
也被稱為超級用戶
root已接近完整的系統控制
對系統損害幾乎有無限的能力 - 普通用戶
權限有限
造成損害的能力比較有限
終端類型terminal
- 設備終端
鍵盤鼠標顯示器 - 物理終端(/dev/console )
控制臺console - 虛擬終端(tty:teletypewriters,/dev/tty# #為[1-6])
tty可有n個,Ctrl+Alt+F[1-6] - 圖形終端(/dev/tty7 )startx, xwindows
CentOS 6: Ctrl + Alt + F7 - 串行終端(/dev/ttyS# )
ttyS - 偽終端(pty:pseudo-tty,/dev/pts/# )
pty, SSH遠程連接 - 查看當前的終端設備命令:#tty
交互式接口
- 交互式接口:啟動終端後,在終端設備附加一個交互式應用程序
- GUI:Graphic User Interface
X protocol, window manager, desktop
Desktop:
GNOME (C, 圖形庫gtk),
XFCE (輕量級桌面) - CLI:Command Line Interface
shell程序:sh(bourn 史蒂夫·伯恩)cshtcshksh(korn)bash (bourn again shell)GPL zsh
shell
- Shell 是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行
- 也被稱為LINUX的命令解釋器(command interpreter)
- shell是一種高級程序設計語言
bash shell
- GNU Bourne-Again Shell(bash)是GNU計劃中重要的工具軟件之一,目前也是Linux標準的shell,與sh兼容
- CentOS默認使用
- 顯示當前使用的shell
${SHELL} - 顯示當前系統使用的所有shell
cat /etc/shells[root@centos7 ~]#echo $SHELL /bin/bash [root@centos7 ~]#cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
命令提示符
- 命令提示符:prompt
[root@localhost~]#
# 管理員$ 普通用戶 - 顯示提示符格式
[root@localhost~]#echo $PS1 - 修改提示符格式
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
\e \033 \u 當前用戶
\h 主機名簡稱 \H 主機名
\w 當前工作目錄 \W 當前工作目錄基名
\t 24小時時間格式 \T 12小時時間格式
\! 命令歷史數 \# 開機後命令歷史數
執行命令
- 輸入命令後回車
提請shell程序找到鍵入命令所對應的可執行程序或代碼,並由其分析後提交給內核分配資源將其運行起來 - 在shell中可執行的命令有兩類
內部命令:由shell自帶的,而且通過某命令形式提供
help 內部命令列表
enable cmd啟用內部命令
enable –n cmd禁用內部命令
enable –n 查看所有禁用的內部命令
外部命令:在文件系統路徑下有對應的可執行程序文件
查看路徑:which -a |--skip-alias; whereis - 區別指定的命令是內部或外部命令
type COMMAND
執行外部命令
- Hash緩存表
系統初始hash表為空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到後會將這條命令的路徑記錄到hash表中,當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,如果不存在,將會去PATH路徑下尋找。利用hash緩存表可大大提高命令的調用速率 - hash常見用法
hash 顯示hash緩存
hash –l 顯示hash緩存,可作為輸入使用
hash –p path name 將命令全路徑path起別名為name
hash –t name 打印緩存中name的路徑
hash –d name 清除name緩存
hash –r 清除緩存
註意:如果在將外部命令執行過一次的情況下,把該命令的路徑進行更改,那麽該命令將無法執行。
原因:因為在執行命令,shell會首先查看hash緩存,會根據緩存中的路徑執行該命令,但此時該命令的路徑已經改變,因此會發生錯誤。
解決方法:清除緩存即可
命令別名
- 顯示當前shell進程所有可用的命令別名
alias - 定義別名NAME,其相當於執行命令VALUE
alias NAME=‘VALUE‘ - 在命令行中定義的別名,僅對當前shell進程有效
- 如果想永久有效,要定義在配置文件中
僅對當前用戶:~/.bashrc
對所有用戶有效:/etc/bashrc - 編輯配置給出的新配置不會立即生效
- bash進程重新讀取配置文件
source /path/to/config_file
. /path/to/config_file - 撤消別名:unalias
unalias[-a] name [name ...]
-a 取消所有別名 - 如果別名同原命令同名,如果要執行原命令,可使用
\ALIASNAME
“ALIASNAME”
’ALIASNAME’
command ALIASNAME
/path/commmand
註意:別名、內部命令、外部命令優先級:從大到小分別是別名、內部命令、外部命令
命令格式 - COMMAND [OPTIONS...] [ARGUMENTS...]
選項:用於啟用或關閉命令的某個或某些功能
短選項:-c 例如:-l, -h
長選項:--word 例如:--all, --human-readable
參數:命令的作用對象,比如文件名,用戶名等 - 註意:
多個選項以及多參數和命令之間使用空白字符分隔[root@centos7 ~]#ls /etc/fstab /etc/issue
取消和結束命令執行:Ctrl+c,Ctrl+d
多個命令可以用;符號分開[root@centos7 ~]#ls /etc/fstab;cat /etc/issue /etc/fstab \S Kernel \r on an \m
一個命令可以用\分成多行
[root@centos7 ~]#host> na> me centos7.localdomain
日期和時間date
- linux系統的兩種時鐘
系統時鐘:由Linux內核通過CPU的工作頻率進行的
硬件時鐘:主板 - 相關命令:
date 顯示和設置時間和日期
date -u 顯示格林尼治時間
date 月日時分年秒(時間格式) 設置時間
date +%Y%m%d或+%F 顯示年月日
date +%H%M%S或+%T 顯示時分秒
date +“%F %T” 選項帶有空格,需用引號
date -d ‘-2 day’ 顯示前天時間
date -d ‘2 day’ 顯示後天時間
date -d ‘-2 day’ +%F 只顯示前天的年月日
date -d ‘-2 day’ +%a(或%u) 只顯示前天是星期幾
date -f 文件 批量處理文件
date -d “具體日期” +%s 將1970年1月1日到該具體日期的時間轉換為秒 date -d @秒數 +“%F %T” 把秒數轉換為時間和日期
clock,hwclock 顯示硬件時間
-s 以硬件時間為準,更改系統時間
-w 以系統時間為準,更改硬件時間 - 時區:/etc/localtime
cat /etc/localtime 查看時區
設置時區:
timedatectl set-timezones (centos7系統)
tzselect (centos6系統) - cal 顯示日歷
-m 顯示當月日歷
-y 顯示當年日歷
知識擴展:
更改數量較多設備的時間
ntpdate 時鐘服務器ip地址 校準服務器時間
時鐘服務器需要做配置才能使用ntpdate命令,在後面會提到這方面內容
linux趣事:
cal 09 1752 1752年9月份少了12天
[root@centos7 ~]#cal 09 1752
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
簡單命令
- 關機:halt,poweroff
- 重啟:reboot
-f:強制重啟,不調用shutdown
-p:切斷電源 - 關機或重啟:shutdown
- 用法:
shutdown [OPTIONS...] [TIME] [WALL...]
即shutdown 選項 關機時間 關機提示
-r:reboot
-h:halt
-c:cancel 取消關機
TIME:無指定,默認相當於+1,單位為分鐘
now:立刻關機,相當於+0
+m:相對時間表示法,幾分鐘之後;例如+3
hh:mm:絕對時間表示,指明具體關機時間
如:shutdown -h 18:30 “the system will be halt”
系統在18:30關機並發出提示“the system will be halt”
備註:系統提示(“the system will be halt”)只有在關機前15分鐘內才會出現。 - 用戶登錄信息查看命令:
whoami:顯示當前登錄有效用戶
who:系統當前所有的登錄會話
w:系統當前所有的登錄會話及所做的操作 -
nano文本編輯
- screen命令:
創建新screen會話
screen –S [SESSION]
加入screen會話
screen –x [SESSION]
退出並關閉screen會話
exit
剝離當前screen會話
Ctrl+a,d
顯示所有已經打開的screen會話
screen -ls
恢復某screen會話
screen -r [SESSION]
知識擴展:
使用screen命令解決斷網中斷正在操作的程序或命令問題
screen 開啟會話
screen -r 恢復某會話 此命令只對單個會話有用,即當前會話沒有加入其它用戶
以下命令針對兩個用戶連接到同一臺機器上才能使用
screen -S [session](會話名) 創建新會話 [root@centos7 ~]#screen -S help
screen -ls 查看當前開啟的全部會話
[root@centos7 ~]#screen -ls
There is a screen on:
3485.help (Attached)
1 Socket in /var/run/screen/S-root.
screen -x [session](會話名) 加入會話
當連接在同一臺設備上的兩個用戶加入同一個會話以後,兩個終端顯示畫面一致。
ctrl+a,d 剝離當前會話
exit 退出並關閉screen會話
- echo 顯示字符
- 用法:echo [-neE][字符串]
- 說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號
- 選項:
-E:(默認)不支持\解釋功能
-e:啟用\字符的解釋功能
-n:不自動換行 - 顯示變量
echo “$環境變量”
‘ ’(單引號) 既不識別變量,又不識別命令 最傻
" "(雙引號) 只能識別變量,不識別命令 一般
` `(反向單引號)相當於$() 既識別變量,又識別命令 最聰明 - 啟用命令選項-e,即echo -e ,若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出
\a 發出警告聲
\b 退格鍵
\c 最後不加上換行符號
\n 換行且光標移至行首
\r 回車,即光標移至行首,但不換行
\t 插入tab
\\插入\字符
\0nnn 插入nnn(八進制)所代表的ASCII字符
echo -e ‘\033[43;31;5mmagedu\033[0m‘
\xHH插入HH(十六進制)所代表的ASCII字
命令行擴展、被括起來的集合
- 命令行擴展:$( ) 或
` <br/> 把一個命令的輸出打印給另一個命令的參數 <br/> echo "This system‘s name is $(hostname) " <br/> This system‘s name is server1.example.com <br/> echo "i am \
whoami` "
i am root - 括號擴展:{ }
打印重復字符串的簡化形式
echo file{1,3,5}
file1 file3 file5
rm -f file{1,3,5}
echo {1..10} 顯示1到10
echo {a..z} 顯示a到z
echo {000..20..2} 以三位數顯示0到20,並且以2遞增
tab鍵
- 命令補全
內部命令:
外部命令:bash根據PATH環境變量定義的路徑,自左而右在每個路徑搜尋以給定命令名命名的文件,第一次找到的命令即為要執行的命令
用戶給定的字符串只有一條惟一對應的命令,直接補全
否則,再次Tab會給出列表 - 路徑補全
把用戶給出的字符串當做路徑開頭,並在其指定上級目錄下搜索以指定的字符串開頭的文件名
如果惟一:則直接補全
否則:再次Tab給出列表
雙擊tab鍵
- command 2Tab 所有子命令或文件補全
- string2Tab 以string開頭命令
- /2Tab 顯示所有根目錄下一級目錄,包括隱藏目錄
- ./2Tab 當前目錄下子目錄,包括隱藏目錄
- *2Tab 當前目錄下子目錄,不包括隱藏目錄
- ~2Tab 所有用戶列表
- $2Tab 所有變量
- @2Tab /etc/hosts記錄(centos7不支持)
- =2Tab 相當於ls –A (centos7不支持)
命令行歷史
- 保存你輸入的命令歷史。可以用它來重復執行命令
- 登錄shell時,會讀取命令歷史文件中記錄下的命令~/.bash_history
- 登錄進shell後新執行的命令只會記錄在緩存中;這些命令會用戶退出時“追加”至命令歷史文件中
- 重復前一個命令,有4種方法
重復前一個命令使用上方向鍵,並回車執行
按!! 並回車執行
輸入!-1 並回車執行
按Ctrl+p並回車執行 - !:0 執行前一條命令(去除參數)
- Ctrl + n 顯示當前歷史中的下一條命令,但不執行
- Ctrl + j 執行當前命令
- !n 執行history命令輸出對應序號n的命令
- !-n 執行history歷史中倒數第n個命令
- !string 重復前一個以“string”開頭的命令
- !?string 重復前一個包含string的命令
- !string:p僅打印命令歷史,而不執行
- !$:p 打印輸出!$ (上一條命令的最後一個參數)的內容
- !*:p打印輸出!*(上一條命令的所有參數)的內容
- ^string刪除上一條命令中的第一個string
- ^string1^string2將上一條命令中的第一個string1替換為string2
- !:gs/string1/string2將上一條命令中所有的string1都替換為string2
- 使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令
- ctrl-r來在命令歷史中搜索命令
(reverse-i-search)`’: - Ctrl+g:從歷史搜索模式退出
- 要重新調用前一個命令中最後一個參數
!$ 表示
Esc, .(點擊Esc鍵後松開,然後點擊. 鍵)
Alt+ .(按住Alt鍵的同時點擊. 鍵)
調用歷史參數
- command !^ 利用上一個命令的第一個參數做cmd的參數
- command !$ 利用上一個命令的最後一個參數做cmd的參數
- command !* 利用上一個命令的全部參數做cmd的參數
- command !:n 利用上一個命令的第n個參數做cmd的參數
- command !n:^ 調用第n條命令的第一個參數
- command !n:$ 調用第n條命令的最後一個參數
- command !n:m調用第n條命令的第m個參數
- command !n:* 調用第n條命令的所有參數
- command !string:^ 從命令歷史中搜索以string 開頭的命令,並獲取它的第一個參數
- command !string:$ 從命令歷史中搜索以string 開頭的命令,並獲取它的最後一個參數
- command !string:n 從命令歷史中搜索以string 開頭的命令,並獲取它的第n個參數
- command !string:* 從命令歷史中搜索以string 開頭的命令,並獲取它的所有參數
命令history
- history 查看歷史命令
- 用法:history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...] - 常用選項:
-c: 清空命令歷史
-d offset: 刪除歷史中指定的第offset個命令
n: 顯示最近的n條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史文件
-r: 讀歷史文件附加到歷史列表
-w: 保存歷史列表到指定的歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-p: 展開歷史參數成多行,但不存在歷史列表中
-s: 展開歷史參數成一行,附加在歷史列表後
命令歷史相關環境變量
- HISTSIZE:命令歷史記錄的條數
- HISTFILE:指定歷史文件,默認為~/.bash_history
- HISTFILESIZE:命令歷史文件記錄歷史的條數
- HISTTIMEFORMAT=“%F %T “ 顯示時間
- HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2開頭的歷史
- 控制命令歷史的記錄方式:
環境變量:HISTCONTROL
ignoredups 默認,忽略重復的命令,連續且相同為“重復”
ignorespace 忽略所有以空白開頭的命令
ignoreboth 相當於ignoredups, ignorespace的組合
erasedups 刪除重復命令 - export 變量名="值“
- 存放在/etc/profile 或~/.bash_profile
bash的快捷鍵
- bash常用快捷鍵
Ctrl + l清屏,相當於clear命令
Ctrl + o執行當前命令,並重新顯示本命令
Ctrl + s阻止屏幕輸出,鎖定
Ctrl + q允許屏幕輸出
Ctrl + c終止命令
Ctrl + z掛起命令
Ctrl + a光標移到命令行首,相當於Home
Ctrl + e光標移到命令行尾,相當於End
Ctrl + u從光標處刪除至命令行首
Ctrl + k從光標處刪除至命令行尾
Alt + r 刪除當前整行
Ctrl + w從光標處向左刪除至單詞首
Alt + d從光標處向右刪除至單詞尾
Ctrl + d刪除光標處的一個字符
Ctrl + h刪除光標前的一個字符
Ctrl + y將刪除的字符粘貼至光標後
Alt + c從光標處開始向右更改為首字母大寫的單詞
Alt + u從光標處開始,將右邊一個單詞更改為大寫
Alt + l從光標處開始,將右邊一個單詞更改為小寫
Ctrl + t交換光標處和之前的字符位置
Alt + t交換光標處和之前的單詞位置
Alt + N提示輸入指定字符後,重復顯示該字符N次
備註:當使用xshell或secureCRT遠程連接時,alt功能鍵會有沖突,需要在軟件中進行設置以後才能使用alt快捷鍵功能
gnome-terminal
- 應用程序->附件->終端
- 支持多個“標簽”shell的圖形化終端模擬器
Ctrl-Shift-n 創建新窗口
Ctrl-Shift-q關閉當前窗口
Ctrl-Shift-t 創建一個標簽頁
Ctrl-Shift-w 關閉一個標簽頁
Ctrl-PaUp/PgUn切換到下一個/前一個標簽頁
Ctrl-Shift-c 復制選中的文本
Ctrl-Shift-v 把文本粘帖到當前光標處
獲得幫助
- 獲取幫助的能力決定了技術的能力!
- 通過幫助查詢一個命令如何使用
步驟:先查看是內部還是外部命令 type
如果是內部命令,使用help 內部命令
如果是外部命令,使用whatis查看該命令在man幫助第幾章節
然後man 章節號 command - 多層次的幫助
whatis
command--help
manandinfo
/usr/share/doc/
Red Hat documentation
其它網站和搜索
whatis
- 顯示命令的簡短描述
- 使用數據庫,系統剛安裝後不可立即使用
- 需執行以下命令makewhatis| mandb制作數據庫
- 使用示例:whatis cal或man -f cal
命令幫助
- 內部命令
幫助用法:
help command
man bash 查看所有內部命令幫助,可通過關鍵字查詢 - 外部命令
幫助用法:
(1) COMMAND --help
COMMAND -h
(2) 使用手冊(manual)
man COMMAND
(3) 信息頁
info COMMAND
(4) 程序自身的幫助文檔
README
INSTALL
ChangeLog
(5) 程序官方文檔
官方站點:Documentation
(6) 發行版的官方文檔
(7) Google
--help和-h選項
- 顯示用法總結和參數列表
- 大多數命令都可以使用此幫助格式,但並非所有的命令都支持
- 如: --help
- 用法:
date[OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
符號說明:
[]表示可選項
CAPS或<>表示變化的數據
...表示一個列表
x |y| z的意思是“x或y或z“
-abc的意思是-a -b –c
{ } 表示分組
練習:
1、顯示當前時間,格式:2016-06-18 10:20:30 date +“%F %T”或date +“%Y-%m-%d %H:%M:%S”
2、顯示前天是星期幾 date -d “-2 day” +%a(或%u)
3、設置當前日期為2019-08-0706:05:10 date 080706052019.10
man命令
- 提供命令幫助的文件
- 手冊頁存放在/usr/share/man
- 幾乎每個命令都有man的“頁面”
- man頁面分組為不同的“章節”
- 統稱為Linux手冊
- man命令的配置文件:/etc/man.config| man_db.conf
- MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
- man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手冊頁並顯示
- 中文man需安裝包man-pages-zh-CN
man章節
- 1: 用戶命令
- 2: 系統調用
- 3: C庫調用
- 4: 設備文件及特殊文件
- 5: 配置文件格式
- 6: 遊戲
- 7: 雜項
- 8: 管理類的命令
- 9:Linux 內核API
備註:作為運維工程師,只需關註1(用戶命令)、5(配置文件格式)、8(管理類的命令)章節
man幫助段落說明
NAME 名稱及簡要說明
SYNOPSIS 用法格式說明
[]可選內容
<> 必選內容
a|b二選一
{ }分組
...同一內容可出現多次
DESCRIPTION 詳細說明
OPTIONS 選項說明
EXAMPLES 示例
FILES 相關文件
AUTHOR 作者
COPYRIGHT版本信息
REPORTING BUGS bug信息
SEE ALSO 其它幫助參考
man幫助
- 查看man手冊頁
man [章節] keyword - 列出所有幫助
man –a keyword - 搜索man手冊
man -kkeyword列出所有匹配的頁面
使用whatis數據庫 - 相當於whatis
man –f keyword - 打印man幫助文件的路徑
man –w [章節] keyword
man搜索
- /KEYWORD:
以KEYWORD指定的字符串為關鍵字,從當前位置向文件尾部搜索;不區分字符大小寫;
n: 下一個
N:上一個 - ?KEYWORD:
以KEYWORD指定的字符串為關鍵字,從當前位置向文件首部搜索;不區分字符大小寫;
n: 跟搜索命令同方向,下一個
N:跟搜索命令反方向,上一個
練習
1、在本機字符終端登錄時,除顯示原有信息外,再顯示當前登錄終端號,主機名和當前時間
在/etc/issue文件中寫入以下內容
hostname is \n
time is \t
tty is \l
解題思路:
(1)先查看issue章節號 whatis issue
[root@centos7 ~]#whatis issue
issue (5) - prelogin message and identification file
(2)man 5 issue 發現沒有先關信息,在查看SEE ALSO內容
SEE ALSO
motd(5), agetty(8), mingetty(8)
(3)man 8 agetty,發現issue文件用法
l Insert the name of the current tty line.
m Insert the architecture identifier of the machine. Same as `uname -m‘.
n Insert the nodename of the machine, also known as the hostname. Same as
`uname -n‘.
o Insert the NIS domainname of the machine. Same as `hostname -d‘.
O Insert the DNS domainname of the machine.
r Insert the release number of the OS. Same as `uname -r‘.
t Insert the current time.
u Insert the number of current users logged in.
U Insert the string "1 user" or "<n> users" where <n> is the number of
current users logged in.
2、今天18:30自動關機,並提示用戶 shutdown -h 18:30 “the system will be halt”
info
- man常用於命令參考,GNU工具info適合通用文檔參考
- 沒有參數,列出所有的頁面
- info 頁面的結構就像一個網站
- 每一頁分為“節點”
- 鏈接節點之前*
- info [命令]
導航info頁
- 方向鍵,PgUp,PgDn導航
- Tab鍵移動到下一個鏈接
- d 顯示主題目錄
- Home 顯示主題首部
- Enter進入選定鏈接
- n/p/u/l進入下/前/上一層/最後一個鏈接
- s文字文本搜索
- q退出info
通過本地文檔獲取幫助
- System->help(centos6)
- Applications -> documentation->help(centos7)
提供的官方使用指南和發行註記 - /usr/share/doc目錄
多數安裝了的軟件包的子目錄,包括了這些軟件的相關原理說明
常見文檔:README INSTALL CHANGES
不適合其它地方的文檔的位置
配置文件範例
HTML/PDF/PS 格式的文檔
授權書詳情
通過在線官方文檔獲取幫助
- 第三方應用官方文檔
http://www.nginx.org
http://tomcat.apache.org
http://httpd.apache.org
http://www.python.org - 通過發行版官方的文檔光盤或網站可以獲得
安裝指南、部署指南、虛擬化指南等
紅帽知識庫和官方在線文檔
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com - 搜索引擎
google搜索引擎
搜索格式:Openstack filetype:pdf
rhcasite:redhat.com/docs
Linux基礎篇--linux基礎和幫助用法