筆記開始整理時間:2018年3月29日19:22:02
本章內容:
1.用戶登錄
2.終端
3.shell介紹
4.執行命令
5.簡單命令
6.Tap鍵補全
7.命令行歷史
8.bash快捷鍵
9.使用gnome-terminal
10.whatis
11.command –help
12.man and info
13.本地幫助文檔/usr/share/doc/
14.官網在線文檔
15.其他網站和搜索
用戶登錄
root用戶
uid=0
一個特殊的管理賬戶,也被稱為超級用戶
root已接近完整的系統控制
對系統誰還幾乎有無限的能力
除非必要,不要登錄為root
普通(非特權)用戶
權限有限
造成損害的能力比較有限
終端teirminal
設備終端 鍵盤鼠標顯示器
物理終端 /dev/console
控制臺console
虛擬終端(tty:teletypewriters,/dev/tty#,#為[1-6])
圖形終端(/dev/tty7)startx,xwindows)
CentOS 6:ctrl+alt+F7
CentOS 7:在哪個終端啟動,即位于哪個虛擬終端
串行終端(/dev/ttyS#)
ttyS
偽終端(pty:pseudo-tty,/dev/pts/#)
pty,SSH遠程連接
查看當前的終端設備:tty
交互式接口
啟動終端后,在終端設備附加一個交互式應用程序
GUI:Graphic User Interface
X protocol,windowmanager,desktop
Desktop:
GNOME(C,圖形庫gtk),
KDE(C++,圖形庫qt)
XFCE (輕量級桌面)
Cli:Commmand Line Interface
shell程序:sh,csh,tcsh,ksh,bash(bourn again shell) GPL zsh
什么是shell
shell是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口
它接收用戶輸入的命令并把它送到內核去執行。
shell也被稱為Linux的命令解釋器(command interpreter)
shell是一種高級程序設計語言
bash shell
GNU Bourne-Again Shell(bash)是GNU計劃中重要的工具軟件之一
目前也是Linux的標準shell,與sh兼容
CentOS默認使用
顯示當前使用的shell
echo $SHELL
顯示當前系統使用的所有shell
cat /etc/shells
命令提示符:prompt
echo $PS1 ???????? ???????? 顯示提示符格式
PS1=”\[\e[1;35m\][\u@\h \w]\\$\[\e[0m\]”
執行命令
輸入命令后回車
提請shell程序找到鍵入命令所對應的可執行程序或代碼,并由其分析后
提交給內核分配資源將其運行起來
在shell中可執行的命令有兩類
內部命令:由shell自帶的,而且通過某命令形式提供
help ???????? ???????? 顯示內部命令列表
enable ???????? ???? 查看全部可用內部命令
enable -n cmd 禁用內部命令
enable cmd ???? 啟用內部命令
enable -n ???????? 查看所有禁用的內部命令
外部命令:在文件系統路徑下有對應的可執行程序文件
which -a
which –skip-alias
whereis
區別指定的命令是內部或外部命令
type cmd
執行外部命令
hash緩存表
系統初始hash表為空,當外部命令執行時,默認會從PATH路徑下尋找命令。
找到后會將這條命令的路徑記錄到hash表中,當再次使用該命令時,shell解釋
器首先會查看hash表,存在將執行之,如果不存在,將會去PATH路徑下尋找。利
用hash緩存可大大提高命令的調用速率
hash常見用法
hash ???????? ???????? ???????? 顯示hash緩存
hash -l ???????? ????? ???????? 顯示hash緩存,包含路徑,可作為輸入使用
hash -p path name ? 將命令全路徑path起別名為name
hath -t name ???????? ?? 顯示hash中name的路徑
hash -r ???????? ???????? ???? 清除hash緩存
命令別名
alias 顯示當前shell進程所有可用的命令別名
alias NAME=”VALUE” 定義別名NAME,其相當于執行命令VALUE
例如:
alias cdnet=‘cd /etc/sysconfig/network-scripts/`
unalias cdnet ???????? 取消別名cdnet
unalias -a ???????? ????? 取消所有別名
PS: 在命令行中定義的別名,僅對當前shell進程有效,且注銷之后失效
如想永久有效,需寫入配置文件
.bashrc 僅對當前用戶有效
/etc/.bashrc 修改對所有用戶有效
編輯配置給出的新配置不會立即生效,需注銷或者使用
. .bashrc 或者
source .bashrc 執行之后配置生效
命令格式
COMMAND [OPTIONS] [ARGUMENTS..]
選項OPTIONS:用于啟用或者關閉命令的某個或某些功能
參數ARGUMENT,命令的作用對象,比如文件名,用戶名等
例如:
ls -a etc/
rm -rf /etc/ ???????? -rf=-r -f
PS:
參數和選項可以多個,使用空白字符分隔
命令運行過程可中斷,使用ctrl+C,ctrl+D
多個命令可以一行執行,使用;符號隔開,如:
pwd;ls;ifconfig
一個命令可以分開成多行顯示,用\分開,如
p\
w\
d +回車
日期和時間:
Linux的兩種時鐘
date 顯示系統時間
clock 硬件時間,即主板bios芯片時間
date mmDDHHMMYYYY.ss ???????? ???????? 設置時間,格式為月日時分年。秒
date -d “-2 day” ???????? ???????? ???????? ???????? ???? 顯示2天之前的時間
date +%F ???????? ???????? ???????? ???????? ???????? ?????? 顯示時間,按照2018-03-31格式顯示
date “+%F %T” ???????? ???????? ???????? ???????? ????? 顯示時間格式為2018-03-31 02:08:14
date +%s ???????? ???????? ???????? ???????? ???????? ??????? 顯示時間為1970年1月1日0點至今經過多少秒
date -d @nnnn ???????? ???????? ???????? ???????? ????? 將秒時間換成正常時間
clock -s ???????? ???????? ???????? ???????? ???????? ???????? ? 硬件時間覆蓋系統時間
clock -w ???????? ???????? ???????? ???????? ???????? ???????? 系統時間覆蓋硬件時間
ll /etc/localtime ???????? ???????? ???????? ???????? ??? 顯示當前時區
timedatectl list-timezones ???????? ???????? ??? 顯示全部時區
timedatectl set-timezones Asia/Shanghai ???????? 設置時區為上海
cal ???????? ???????? ???????? ???????? ???????? ???????? ????????? 顯示日歷
cal -y ???????? ???????? ???????? ???????? ???????? ???????? ???? 顯示整年日歷
cal 5 1978 ???????? ???????? ???????? ???????? ???????? ???? 顯示1978年5月日歷
PS:更多用法可以參見date –help
簡單命令
halt,poweroff ???????? ???????? ???????? ???????? 關機
init 0 ???????? ???????? ???????? ???????? ???????? ???????? 關機
reboot / init 6 ???????? ???????? ???????? ???????? ? 重啟
reboot -f ???????? ???????? ???????? ???????? ???????? ?? 強制重啟,不調用shutdown
reboot -p ???????? ???????? ???????? ???????? ???????? ? 切斷電源,相當于關機
shutdown ???????? ???????? ???????? ???????? ???????? 1分鐘之后關機
shutdown -r 10 wall ???????? ???????? ???????? 10 分鐘后重啟,且給所有用戶發送提醒信息
shutdown -c ???????? ???????? ???????? ???????? ???? 退出shutdown
shutdown -now ???????? ???????? ???????? ??????? 立即關機
shutdown -r 21:30 ???????? ???????? ??????????? 21:30重啟
PS:linux提供了很多種關機方式,有時會有細微的差別,實際工作中服務器的
關機重啟還需慎重。
tty ???????? ???????? ???????? ???????? ???????? ???????? ??? 查看當前在哪個終端(tty1-6,pts/)
who ???????? ???????? ???????? ???????? ???????? ????????? 查看當有所有的登錄會話
whoami ???????? ???????? ???????? ???????? ??????????? 查看本終端當前用戶
w ???????? ???????? ???????? ???????? ???????? ???????? ???? 系統當前所有的登錄會話以及所做的操作
ifconfig ???????? ???????? ???????? ???????? ???????? ?? 查看網絡鏈接
nano /etc/motd ???????? ???????? ???????? ???? 簡單的文本編輯命令
screen ???????? ???????? ???????? ???????? ???????? ???? 新建會話命令
screen -S help ???????? ???????? ???????? ???????? 新建help會話
screen -ls ???????? ???????? ???????? ???????? ??????? 顯示當前所有screen會話
screen -x help ???????? ???????? ???????? ???????? 加入help會話
ctrl+a,d ???????? ???????? ???????? ???????? ??????? 脫離當前screen會話
screen -r ???????? ???????? ???????? ???????? ???????? 恢復斷開的screen會話
exit ???????? ???????? ???????? ???????? ???????? ???????? 離開會話
PS: screen命令的功能可以使不同終端使用同一個會話窗口,要求連接的終端
接入同一臺主機,且使用相同的賬號登錄。
echo ???????? ???????? ???????? ???????? ???????? ??????? 顯示字符
echo abc ???????? ???????? ???????? ???????? ???????? 顯示abc,默認-E,會去掉\的解釋作用
echo -n aaa ???????? ???????? ???????? ???????? ??? 輸出aaa,結束之后不換行
echo -e “aaa\a” ???????? ???????? ???????? ????? 輸出aaa且發出警告音,-e選項會開啟\解釋功能
\b ???????? ???????? 退格鍵
\c ??????? ????????? 最后不加換行字符,效果等于-n
\n ???????? ???????? 換行且光標移到行首
\r ???????? ???????? 回車,即光標移到行首,但不換行
\t ???????? ??????? ? 插入tap
\\ ???????? ???????? 插入\字符
\0nnn ??????? ? 插入八進制數nnn所代表的ASCII字符
\xHH ?????????? 插入十六進制數HH所代表的ASCII字符
單引號,雙引號,反向單引號以及 $() 和 {} 的用法
可以嘗試查看執行以下命令觀察輸出
echo echo $PS1 輸出結果:echo \[\e[1;35m\][\u@\h \w]\$\[\e[0m\]
echo “echo $PS1″ 輸出結果:同上
echo ‘echo $PS1’ 輸出結果:echo $PS1
echo `echo $PS1` 輸出結果:\[\e[1;35m\][\u@\h \w]\$\[\e[0m\]
可以看出:
單引號以內皆為字符,不識別變量和命令
雙引號可以識別變量,但不識別命令操作
反向單引號,可識別變量和命令
但是如果需要嵌套輸出命令結果:如:
echo echo pwd
如果最終需要輸出命令pwd的顯示結果,
echo `echo `pwd“ 是無法識別pwd的,即反向單引號無法嵌套使用
echo `echo $(pwd)` 此為正確用法
其中$(pwd) 等同于`pwd` 為調用命令輸出的標準用法,且可嵌套
如以上命令還可以寫成:
echo $(echo $(pwd))
echo f{1,3,5} ???????? ?????????? 顯示f1 f3 f5
touch f{1..10} ???????? ???????? 創建文件f1 f2..f10
touch a{1..30..2} ??????????? 創建文件a(1-30) 間隔為2
rm file{00000..00100} 刪除file00000-file00100
Tab鍵的使用
命令補全:
用戶給定的字符串只有一條唯一對應的命令時候是,按tab鍵會直接補全命令
如不唯一,單機tab無反應,再次按下tab鍵,則會給出所有匹配列表
ifcon+tab鍵 ???????? ??????? ifconfig
ifc+2tap ???????? ???????? ???? 列出所有ifc開頭的命令
路徑補全:
在輸入路徑時如給出的字符串在上級目錄對應唯一的一個目錄或者文件,按下
tap鍵,直接補全
如不唯一,兩下tap鍵會列出滿足條件的所有目錄或者文件列表
cmd 2tap ???????? ???????? 所有子命令或文件補全
ifc+2tap ???????? ????????? 所有以ifc開頭的命令
/2tap ???????? ???????? ????? 顯示所有根目錄下一級目錄,包括隱藏目錄,但不顯示文件
./2tap ???????? ???????? ???? 當前目錄下子目錄,包括隱藏目錄,不顯示文件
*2tap ???????? ???????? ????? 當前目錄下子目錄,不包含隱藏目錄,不顯示文件
~2tap ???????? ???????? ???? 顯示所有用戶列表
$2tap ???????? ???????? ???? 顯示所有變量
@2tap ???????? ???????? ??? /etc/hosts記錄,sentos7不支持
=2tap ???????? ???????? ???? 相當于ls -A,sentos7不支持
命令行歷史
重復前一個命令,有4種方法
使用上方向鍵,并回車執行
按?。?,并回車執行
輸入!-1,并回車執行
按ctrl+P,并回車執行,相當于上方向鍵
?。? 執行前一條命令,去除參數
ctrl+n ???????? ???????? ???????? 顯示當前歷史中的的下一條命令,但不執行,相當于下方向鍵
ctrl+j ???????? ???????? ????????? 執行當前命令
ctrl+r ???????? ???????? ???????? 在命令歷史中搜索命令
ctrl+g ???????? ???????? ??????? 從歷史搜索模式中退出
!n ???????? ???????? ???????? ??? 執行history命令輸出對應序號n的命令
!-n ???????? ???????? ?????????? 執行history歷史中倒數第n個命令
!l ???????? ???????? ???????? ???? 重復前一個以l開頭的命令
?。縮 ???????? ???????? ???????? 重復前一個包含s的命令
!l:p ???????? ???????? ???????? 顯示前一個以l開頭的命令結果
!$:p ???????? ???????? ??????? 打印輸出!$(上一條命令的最后一個參數)的內容
!*:p ???????? ?????????????? 打印輸出!*(上一條命令的所有參數)的內容
^string ???????? ???????????? 刪除上一條命令中的第一個string字符串
^string1^string2 ????? 將上一條命令中的第一個string1替換成sting2
?。篻s/string1/string2 ???????? 將上一條命令中的所有string1換成string2
!$ ???????? ???????? ?????? ? ? ? ? 調用前一個命令中最后一個參數
esc,. ???????? ???????? ?????? ? ? ?? 調用前一個命令中最后一個參數
alt+. ???????? ???????? ??????? ? ? 調用前一個命令中最后一個參數
cmd !^ ???????? ???????? ??????? 利用上一個命令的第一個參數做cmd的參數
cmd !$ ???????? ???????? ??????? 利用上一個命令的最后一個參數作為cmd的參數
cmd !* ???????? ???????? ???????? 利用上一個命令的全部參數作為cmd的參數
cmd !:n ???????? ??????????????? 利用上一個命令的第n個參數最為cmd的參數
cmd !n:^ ???????? ????????????? 調用第n條命令的第一個參數
cmd !n:$ ???????? ???????? ???? 調用第n條命令的最后一個參數
cmd !n:m ???????? ???????????? 調用第n條命令的第m參數
cmd !n:* ???????? ???????? ???? 調用第n條命令的全部參數
history ???????? ???????? ???????? 命令
history ???????? ???????? ???????? 顯示命令歷史記錄
history -c ???????? ???????? ??? 清空歷史記錄
history -d nnn ???????? ??? 刪除歷史記錄中的第nnn個命令
history n ???????? ???????? ???? 顯示最近的n條記錄
history -a ???????? ???????????? 追加本次會話新執行的命令歷史列表至歷史文件
history -r ???????? ???????? ??? 讀歷史文本附加到歷史列表
history -w ???????? ???????? ?? 保存歷史列表到指定的歷史文件
history -n ???????? ???????????? 讀歷史文本中未讀過的行到歷史列表
history -p $(cmd) ?????? 執行命令cmd,不生成歷史,如不加引號,
會直接打印命令
history -s cmd ???????? ??? 生成記錄cmd,但是不執行,如用$(),命令會執行,
執行的結果會記錄到歷史
HISTSEZE ???????? ????????? 命令歷史就的條數
HISTFILE ???????? ?????????? 指定歷史文件,默認為~/.bashrc
HISTFILESIZE ?????????? 命令歷史文件記錄的條數
HISTTIMEFORMAT=”+%F %T“ ???????? 歷史記錄顯示時間
HISTIGNORE=”str1:str2*…” ???????? ?????? 忽略str1命令,str2開頭的文件
HISTCONTROL 環境變量
=ignoredups ???????? ???????? ???????? 默認,忽略重復的命令,連續且相同為重復
=ignorspace ???????? ???????? ???????? 忽略所有以空白開頭的命令
=ignoreboth ???????? ???????? ???????? 相當于dups+space
erasedups ???????? ???????? ???????? ? ? 刪除重復命令
以上變量存放 /etc/profile 或~/.bashrc
bash的快捷鍵
ctrl+l ???????? 清屏,相當于clear命令
ctrl+o ???????? 執行當前命令,并重新顯示本命令
ctrl+s ???????? 阻止屏幕輸出,鎖定
ctrl+q ???????? 允許屏幕輸出
ctrl+c ???????? 終止命令
ctrl+z ???????? 掛起命令
ctrl+a ???????? 光標移到命令行首,相當于Home
ctrl+e ???????? 光標移動命令行尾,相當于end
ctrl+f ????????? 光標向右移動一個字符
ctrl+b ???????? 光標向左移動一個字符
alt+f ?????????? 光標向右移動一個單詞尾
alt+b ????????? 光標向左移動一個單詞尾
ctrl+u ???????? 從光標處刪除至命令行首
ctrl+k ???????? 從光標處刪除至命令行尾
alt+r ???????? ? 刪除當前整行
PS:還有部分快捷鍵用法以及圖形界面快捷鍵用法并未列出,alt組合鍵經常
和其他軟件沖突
獲得幫助
##獲得幫助的能力決定了技術的能力。
##Linux提供了多種獲得幫助的方式
whatis 顯示命令的簡短描述,如:
whatis ls
makewhatis ???????? ??????? ?? ????? sentos6安裝whatis
mandb ???????? ???????? ???????? ???????? sentos7安裝whatis
help cmd ???????? ???????? ???????? ??? 內部命令用法介紹
cmd –help ???????? ?????????????????? 外部命令用法介紹,有些命令是-h
man bash ???????? ???????? ??????????? 全部內部命令用法接受
man -f ???????? ???????? ???????? ???????? 簡短描述,等于whatis
man cmd ???????? ???????? ???????? ??? 獲得命令cmd的man幫助
man 5 cmd ???????? ???????? ???????? 看命令man幫助的第5章節
man -k keyword ???????? ???????? 列出所有匹配的頁面,使用wahtis數據庫
man章節
#1:用戶命令
#2:系統調用
#3:C庫調用
#4設備文件及特殊文件。
#5:配置文件格式
#6:游戲
#7:雜項
#8:管理類的命令
#9:Linux內核API
man幫助段落說明
NAME 名稱及簡要說明
SYNOPSIS 用法格式說明
[] 可選內容
<> 必選內容
a丨b 二選一
{} 分組
… 同一內容可出現多次
DESCRIPTION ???????? 詳細說明
OPTIONS ???????? ????????? 選項說明
FILES ???????? ???????? ?????? 相關文件
AUTHOR ???????? ?????????? 作者
COPYRIGHT ???????????? 版本信息
REPORTING BUGS? bug信息
SEE ALSO ???????? ???????? 其他幫助參考
man文檔查看相關操作
space 向下翻屏
b 向上翻屏
G 跳轉至文件尾部
1G 翻至文件首部
q 退出
搜索方式:
/keyword 從當前位置向文件尾部搜索,不區分字符大小寫
n:下一個
N:上一個
?keyword 從當前位置向文件首部搜索,不區分字符大小寫
n:下一個,與搜索方向同向
N:上一個,與搜索方向反向
導航info頁
info cmd ???????? ???????? 打開info幫助文檔
Home ???????? ???????? ???? 顯示主題首部
enter ???????? ???????? ?????? 進入選定鏈接
tab鍵 ???????? ???????? ????? 移動到下一個鏈接
d ???????? ???????? ???????? ??? 顯示主題目錄
n/p/u/l ???????? ????????? 進入下/前/上一層/最后一個鏈接
s ???????? ???????? ???????? ???? 文字文本搜索
q ???????? ???????? ???????? ??? 退出info
其他獲得幫助的途徑
通過本地文檔獲取幫助
/usr/share/doc/ 大多數安裝了的軟件包的子目錄,包括了這些軟件的相關原理說明
在線文檔獲取幫助
比較大型的軟件,可以上官方網站獲取官方文檔說明
通過發行版官方的文檔光盤或者網站可以獲得
安裝指南、部署指南、虛擬化指南等
紅帽知識庫和官方在線文檔
紅帽全球技術支持服務
筆記整理完成時間:2018年3月31日14:44:00
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93990