linux終端介紹與Bash Shell應用
Linux終端介紹
Linux終端有兩種,分別是桌面終端和遠程終端,桌面終端根據不同的桌面分為GNOME桌面的GNOME Terminal、KDE桌面的Konsole Terminal。而遠程終端有基于SSH2協議的SecureCRT、XShell。
GNOME Ternimal

SecureCRT

如果想要知道當前使用是哪個終端,可以使用tty命令查看終端

其中/dev/pts/1表示第一個終端,/dev/pts/2表示第二個終端。
如果你在SecureCRT上也登錄了centos7.8,那么當輸入tty命令時將會輸出/dev/pts/3,即表示第三個終端

在操作終端的過程中有一些常用的快捷鍵
Ctrl+Shift+N:快速打開一個終端
Ctrl+Shift+ +:終端字體放大
Ctrl+Shift+ -:終端字體減小
在一臺服務器的多個終端之間是可以進行通訊。例如可以使用echo message > 終端 發送指定的消息。
首先同時打開兩個終端/dev/pts/1和/dev/pts/2然后在/dev/pts/1上使用命令echo ittimeline.net >/dev/pts/2時,第二個終端/dev/pts/2收到了消息ittimeline.net

shutdown命令用于關機,該命令必須使用root用戶執行,普通用戶(例如guanglei)無法執行該命令。
使用命令shutdown +10 實現十分鐘后關機,該命令會向所有的終端廣播消息

shutdown +10
其他終端也收到10分鐘之后關機的消息

如果想要終止可以使用shutdown -c取消關機,在輸入該命令之前需要使用Ctrl+c中斷命令shutdown +10的執行。

當取消關機時,該命令也會發送廣播消息給所有的終端

如果想要通過終端廣播消息,可以使用命令wall ”message“實現
當在終端設備/dev/pst/1上使用命令wall "boss is comming"時,此時/dev/pst/2和/dev/pst/3都收到了該消息


wall message
Linux Shell 介紹
Linux Shell提供了用戶與內核進行交互操作的一種接口,它接收用戶輸入的命令并提交到內核去執行。Shell實際上是一個命令解釋器,它通過解釋用戶輸入的命令并提交給內核執行。Shell有自己的編程語言,它允許用戶編寫由Shell命令組成的程序。Shell編程語言具有常用編程語言(C/C++)的許多特點,比如說它也有循環結構和分支控制等等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。
Shell執行命令的流程當用戶輸入命令時會提交到Shell,Shell會判斷該命令是否是內部命令,如果是內部命令,則直接執行系統內核對應的功能調用,如果是外部命令,Shell會在系統中查找該命令對應的執行程序并加載到內存中執行。

內部命令是在系統啟動時就加載到內存中,是常駐內存,所以執行效率高。外部命令是系統軟件的功能,用戶需要時才會從硬盤加載到內存中。
可以通過type command來查看當前執行的命令是內部命令還是外部命令。
例如當執行命令type pwd時輸出pwd是shell 內嵌,即內部命令。而當執行命令type cat時輸出cat 命令對應的路徑/usr/bin/cat,即外部命令。
[root@ittimeline ~]# type pwd
pwd 是 shell 內嵌
[root@ittimeline ~]# type cat
cat 是 /usr/bin/cat
后期在進行Linux系統管理(文件目錄、用戶、權限、磁盤、軟件、網絡等等)都是通過Shell實現的。
Shell 提示符
當以root用戶登錄系統時,Shell命令提示會顯示[root@ittimeline ~]#
[root@ittimeline ~]#
而當以普通用戶guanglei登錄時,Shell命令提示符會顯示[guanglei@ittimeline ~]$
[guanglei@ittimeline ~]$
因此如果在Shell命令提示符中看到$表示該用戶是普通用戶,如果看到#表示該用戶是系統管理員root用戶。
如果想要從root用戶切換到普通用戶guanglei,可以使用su - guanglei
[root@ittimeline guanglei]# su - guanglei
上一次登錄:二 6月 23 12:46:18 CST 2020pts/3 上
[guanglei@ittimeline ~]$ whoami
guanglei
Shell命令提示符[root@ittimeline ~]#表示的含義[用戶名@主機名 當前所在目錄],其中~表示用戶的家目錄,而#表示root用戶,$表示普通用戶。
Bash Shell
如果想要知道系統支持哪些Shell類型,可以通過命令cat /etc/shells查看
[root@ittimeline ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
如果想要知道當前系統具體使用的是哪種Shell,取決于用戶配置,可以通過命令head -1 /etc/passwd查看/etc/passwd文件的第一行
[root@ittimeline ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
通過命令可以查看到當前root用戶使用的Shell是Bash Shell。
Linux基本命令常用操作
Linux命令組成
Linux命令由命令、【選項】和【參數】三部分組成,其中命令就是具體執行的命令,例如pwd,whoami,head等等,而選項是影響到命令的一些行為操作,通常是以-或者是--實現,參數就是命令作用的對象。
以命令ls -al /home/guanglei為例,其中ls命令查看文件列表,-a選項是顯示所有文件,包含隱藏文件(.開頭的文件就是隱藏文件),l表示文件的詳細信息。參數/home/guanglei 就是命令作用的路徑。
[root@ittimeline ~]# ls -al /home/guanglei/
總用量 32
drwx------. 15 guanglei guanglei 4096 6月 23 09:48 .
drwxr-xr-x. 3 root root 22 6月 23 07:29 ..
-rw-------. 1 guanglei guanglei 215 6月 23 12:52 .bash_history
-rw-r--r--. 1 guanglei guanglei 18 4月 1 10:17 .bash_logout
-rw-r--r--. 1 guanglei guanglei 193 4月 1 10:17 .bash_profile
-rw-r--r--. 1 guanglei guanglei 231 4月 1 10:17 .bashrc
drwx------. 14 guanglei guanglei 4096 6月 23 07:41 .cache
drwxr-xr-x. 14 guanglei guanglei 261 6月 23 09:48 .config
drwx------. 3 guanglei guanglei 25 6月 23 07:35 .dbus
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Desktop
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Documents
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Downloads
-rw-------. 1 guanglei guanglei 16 6月 23 07:35 .esd_auth
-rw-------. 1 guanglei guanglei 620 6月 23 09:48 .ICEauthority
drwx------. 3 guanglei guanglei 19 6月 23 07:35 .local
drwxr-xr-x. 4 guanglei guanglei 39 6月 23 07:20 .mozilla
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Music
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Pictures
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Public
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Templates
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Videos
ls命令詳解
ls命令的作用查看當前目錄下有哪些文件,其語法就是ls 目錄/文件,如果不加路徑參數,默認就是查看當前路徑下的內容
例如這里使用普通用戶guanglei登錄后查看/home/guanglei目錄下的文件列表
[guanglei@ittimeline ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
使用pwd命令可以查看當前用戶所在的路徑
[guanglei@ittimeline ~]$ pwd
/home/guanglei
使用 ls -l 選項可以查看當前路徑文件列表的詳細信息
[guanglei@ittimeline ~]$ ls -l
總用量 0
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Desktop
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Documents
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Downloads
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Music
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Pictures
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Public
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Templates
drwxr-xr-x. 2 guanglei guanglei 6 6月 23 09:48 Videos
這里為了更加具體的了解文件的詳細信息,首先使用命令cd Documents切換到Documents目錄下,然后使用touch file.txt創建一個空的文本文件,接下來使用命令ls -l file.txt查看file.txt的文件詳細信息
[guanglei@ittimeline ~]$ cd Documents/
[guanglei@ittimeline Documents]$ touch file.txt
[guanglei@ittimeline Documents]$ ls -l file.txt
-rw-rw-r--. 1 guanglei guanglei 0 6月 23 13:30 file.txt
ls -l file.txt命令輸出如下
-rw-rw-r--. 1 guanglei guanglei 0 6月 23 13:30 file.txt
- -表示文件類型d表示目錄文件l表示鏈接文件b表示塊設備文件c表示字符設備文件p表示管道文件-表示普通文件
- rw-rw-r--.表示文件的權限
- 1 表示鏈接個數
- guanglei 表示文件所有者
- guanglei 用戶所屬組名
- 0 表示文件大小
- 6月 23 13:30 表示文件上次修改的日期和時間
- file.txt表示文件名稱
使用命令echo "hello world" >file.txt往file.txt寫入字符串helloworld,然后再次使用ls -l file.txt查看文件詳細信息。
[guanglei@ittimeline Documents]$ echo "hellworld" > file.txt
[guanglei@ittimeline Documents]$ ls -l file.txt
-rw-rw-r--. 1 guanglei guanglei 10 6月 23 13:35 file.txt
Linux下/dev目錄是用于存放各種設備文件,如果想要查看不同類型的文件,可以使用命令ls -l /dev查看,CentOS系統中不同的顏色表示不同的文件類型。
顏色代表內容舉例藍色目錄/etc黑色文件/etc/passwd淺藍色鏈接/etc/grub2.cfg紅色壓縮包boot.tar.gz綠色可執行文件/etc/init/d/network黑底黃字設備文件/dev/sda
ls -a選項用于列出指定目錄下的所有文件,包括以.開頭的隱藏文件,如果存在兩個點代表著父目錄,一個點表示當前目錄。
ls -a 查看/home/guanglei/下的所有文件
[guanglei@ittimeline ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[guanglei@ittimeline ~]$ ls -a
. .bash_history .bash_profile .cache .dbus Documents .esd_auth .local Music Public Videos
.. .bash_logout .bashrc .config Desktop Downloads .ICEauthority .mozilla Pictures Templates
ls -ld 查看指定目錄的詳細信息
查看/root目錄的詳細信息
[guanglei@ittimeline ~]$ ls -ld /root/
dr-xr-x---. 5 root root 221 6月 23 12:58 /root/
查看/home/guanglei目錄的詳細信息
[guanglei@ittimeline ~]$ ls -ld /home/guanglei/
drwx------. 15 guanglei guanglei 4096 6月 23 09:48 /home/guanglei/
ls -S 查看文件目錄,并且以文件的大小排序(默認是降序)
查看/root目錄,并且按照文件大小排序
[root@ittimeline ~]# ls -lS /root/
總用量 8
-rw-r--r--. 1 root root 1852 6月 23 07:33 initial-setup-ks.cfg
-rw-------. 1 root root 1804 6月 23 07:29 anaconda-ks.cfg
alias命令詳解
在Shell中,ls -l和ll執行的結果是等價的
[root@ittimeline ~]# ll
總用量 8
-rw-------. 1 root root 1804 6月 23 07:29 anaconda-ks.cfg
-rw-r--r--. 1 root root 1852 6月 23 07:33 initial-setup-ks.cfg
[root@ittimeline ~]# ls -l
總用量 8
-rw-------. 1 root root 1804 6月 23 07:29 anaconda-ks.cfg
-rw-r--r--. 1 root root 1852 6月 23 07:33 initial-setup-ks.cfg
當使用type命令查看ll時輸出結果顯示ll是ls -al的別名
[root@ittimeline ~]# type ll
ll 是 `ls -l --color=auto' 的別名
那么如何創建一個別名呢?這里以常用的編輯網卡配置為例,CentOS7中編輯網卡配置,通常會使用命令vim
/etc/sysconfig/network-scripts/ifcfg-ens33來編輯網卡配置文件ifcfg-ens33。為了實現同樣的作用,我們可以使用alias命令來創建一個別名,其格式類似于編程語言中變量的聲明,alias 變量名=變量值,其中變量值需要使用""包含起來,而變量名通常是英文開頭。
[root@ittimeline ~]# alias vimens33="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
當別名創建完成后就可以使用vimens33來快速編輯網卡配置文件ifcfg-ens33
[root@ittimeline ~]# vimens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f474f5ec-6f09-43b5-bfd9-88750562441f"
DEVICE="ens33"
ONBOOT="yes"
IPV6_PRIVACY="no"
如果想要刪除別名,可以使用命令unalias 命令別名。
[root@ittimeline ~]# unalias vimens33
[root@ittimeline ~]# vimens33
bash: vimens33: 未找到命令...
而alias命令創建的別名在服務器重啟后會丟失。
如果想要別名永遠有效,可以使用命令vim .bashrc來編輯.bashrc用戶配置文件,將alias定義的別名存儲在該文件中。
在使用vim .bashrc編輯.bashrc文件時,此時vim處于命令模式,可以按i鍵進入編輯模式。
[root@ittimeline ~]# vim .bashrc
當編輯文件時,系統已經存在如下別名
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
然后將ens33的別名追加到已有別名的后面

別名追加完成以后輸入:wq保存.bashrc修改的內容,然后使用命令source .bashrc重新加載配置,需要注意的是該命令只在當前終端刷新.bashrc的配置。如果是其他已經打開的終端無法使用,則需要再次使用source .bashrc重新加載配置文件。
[root@ittimeline ~]# source .bashrc
剛才編輯的.bashrc文件位于/root目錄下,因此別名vimens33只會對root用戶有效,普通用戶(例如guanglei)則是無效的
Last login: Tue Jun 23 13:26:10 2020 from 192.168.0.115
[guanglei@ittimeline ~]$ vimens33
bash: vimens33: 未找到命令...
[guanglei@ittimeline ~]$
如果想要所有用戶都能使用別名(例如ens33),則需要在修改/etc目錄下的bashrc文件。
[root@ittimeline ~]# vim /etc/bashrc
在使用vim編輯該文件時,首先下滑到文件的末尾,然后按i鍵由命令模式切換到編輯模式,然后添加別名vimens33的配置
alias vimens33="vim /etc/sysconfig/network-scripts/ifcfg-ens33"

添加vimens33配置
配置添加完成后按esc退出編輯模式,然后按:wq保存文件,再使用命令source /etc/bashrc重新加載配置。
[root@ittimeline ~]# source /etc/bashrc
然后重新使用普通用戶(guanglei)登錄,輸入別名vimens33便可以實現快速修改網卡配置
[guanglei@ittimeline ~]$ vimens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f474f5ec-6f09-43b5-bfd9-88750562441f"
DEVICE="ens33"
ONBOOT="yes"
IPV6_PRIVACY="no"
~

通過ens33別名修改網卡
cd命令詳解
cd命令用于切換目錄,其用法就是cd 目錄
可以使用cd ~切換到用戶的家目錄
root用戶使用cd ~和cd切換到家目錄
[root@ittimeline ~]# cd ~
[root@ittimeline ~]# pwd
/root
[root@ittimeline ~]# cd
[root@ittimeline ~]# pwd
/root
普通用戶guanglei使用cd ~和cd切換到家目錄
[guanglei@ittimeline ~]$ cd ~
[guanglei@ittimeline ~]$ pwd
/home/guanglei
[guanglei@ittimeline ~]$ cd
[guanglei@ittimeline ~]$ pwd
/home/guanglei
cd ..可以切換到上一級目錄
guanglei用戶切換到/home/guanglei的上一級目錄
[guanglei@ittimeline ~]$ pwd
/home/guanglei
[guanglei@ittimeline ~]$ cd ..
[guanglei@ittimeline home]$ pwd
/home
cd .進入到當前目錄
[guanglei@ittimeline home]$ pwd
/home
[guanglei@ittimeline home]$ cd .
[guanglei@ittimeline home]$ pwd
/home
cd - 返回切換前的目錄
[guanglei@ittimeline home]$ pwd
/home
[guanglei@ittimeline home]$ cd -
/home/guanglei
[guanglei@ittimeline ~]$ cd -
/home
history命令詳解
在Shell中可以通過上下鍵來切換之前輸入的命令,除此以外可以使用history獲取輸入的歷史命令
[guanglei@ittimeline home]$ history
1 ifconfig
2 tty
3 tty
4 echo ittimeline.net >/dev/pts/2
5 shutdown +10
6 clear
7 tty
8 clear
9 tty
10 walk "boss is coming"
11 whoami
12 exit
13 su root
14 su - root
15 su root
16 eixt
17 exit
18 clear
19 su guanglei
20 clear
21 clear
22 su -guanglei
23 clear
24 su - guanglei
25 ls
26 pwd
27 ls -l
28 cd Documents/
29 touch file.txt
30 ls -l file.txt
31 echo "hellworld" > file.txt
32 ls -l file.txt
33 ls /dev
34 clear
35 ls -l /dev
36 clear
37 cd ../
38 pwd
39 clear
40 ls
41 ls -a
42 ls /
43 clear
44 ls .
45 ls
46 ls -ld /root/
47 ls -ld /home/guanglei/
48 ls /home/guanglei/
49 ls -l /home/guanglei/
50 ls -ld /home/guanglei/
51 pwd
52 ls -lS /root/
53 clear
54 vimens33
55 clear
56 cd ~
57 pwd
58 cd
59 pwd
60 cd ..
61 pwd
62 cd -
63 pqd
64 clear
65 pwd
66 cd .
67 pwd
68 cler
69 clear
70 history
如果想要在history命令的輸出結果中查找歷史的命令,可以使用如下方法:
- 光標上下鍵切換輸入過的命令
- ctrl+r 進入命令搜索模式, 輸入某條命令的關鍵字,找出來對應的命令,然后按右方向鍵并回車就能夠執行命令
- !num 執行指定編號的歷史命令,例如!26就會執行history歷史命令的第二十六條命令
[guanglei@ittimeline network-scripts]$ !26
pwd
/etc/sysconfig/network-scripts
- !字符串 會搜索歷史命令中最近一個以xxx字符串開頭的命令,例如 !who
當輸入!who,history會匹配到whoami命令
[guanglei@ittimeline network-scripts]$ !who
whoami
guanglei
Linux常用快捷鍵
- Ctrl+c (^C)終止前臺運行程序
例如在使用ping baidu.com 檢查網絡連接時,如果網絡通常,則會一直輸出接收的數據包信息,如果想要此時停止接收數據,則此時可以使用快捷鍵Ctrl+c來終止前臺運行的ping程序
[guanglei@ittimeline network-scripts]$ ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=50 time=27.7 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=50 time=27.8 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=50 time=29.7 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=50 time=28.2 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 27.797/28.414/29.781/0.833 ms
[guanglei@ittimeline network-scripts]$
- Ctrl+d(^d) 退出,等價于exit在遠程連接終端時如果想要退出當前登錄的賬戶,可以使用快捷鍵Ctrl+d來退出,也可以使用exit命令退出當前登錄的賬戶。使用Ctrl+d退出當前登錄用戶使用exit命令退出當前登錄用戶
- Ctrl+l 清屏,等價于clear命令如果在終端上執行某條命令時的輸出結果占滿屏幕,此時可以使用快捷鍵Ctrl+l或者是clear命令來實現清除屏幕的輸出結果。
使用clear或者快捷鍵Ctrl+L清除屏幕

- Ctrl+a 跳到命令行的開頭
- Ctrl+e 跳到命令行的結尾
- Ctrl+u 將光標處到命令行開頭的內容刪除
- Ctrl+k 將光標處到命令行末尾的內容刪除
- Ctrl+r 搜索歷史命令,可以利用好關鍵詞
- !$ 引用上一個命令的最后一個參數
當首先執行cat /etc/hosts后,再執行vim !$后,上一個命令的最后一個參數/etc/hosts會傳入到vim命令中并被得到執行
[guanglei@ittimeline ~]$ cat /etc/hosts
7.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[guanglei@ittimeline ~]$ vim !$
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
~
- Tab命令補全命令和和文件
當在Shell中輸入命令時,如果記不住命令的完整名字,此時可以使用Tab鍵來補全命令
例如當執行whoami時只需要輸入wh,然后使用Tab補全后系統會列出wh開頭的命令。
[guanglei@ittimeline ~]$ wh
whatis whereis which while whiptail who whoami
Tab補全命令還有一種應用場景就是補全路徑,例如在使用cd切換路徑時,如果忘記某個完整路徑,可以使用Tab來補全
[guanglei@ittimeline ~]$ cd /home/guanglei/
Linux系統時間管理
在Linux中有硬件時鐘與系統時鐘兩種時鐘。硬件時鐘指的是主板上的時鐘設備,也就是通常可以在BIOS中設定的時鐘,可以在root用戶登錄后使用hwclock命令查看
[root@ittimeline guanglei]# hwclock
Thu 25 Jun 2020 11:57:39 AM CST -0.037282 seconds
CST (China Standard Time):中國標準時間GMT(Greenwich Mean Time):格林威治時間UTC(Universal Time Coordinated):世界標準時間
系統時鐘指的是Linux Kernel中的時鐘,所有Linux相關的指令與函數都是讀取系統時鐘的設定。當Linux系統啟動時,系統時鐘會去讀取硬件時鐘的設定,然后系統時鐘獨立運作。系統時間可以通過date命令查看。
[guanglei@ittimeline ~]$ date
Thu Jun 25 11:57:38 CST 2020
date除了可以顯示系統時間外,還可以修改系統時間,在使用date 命令修改時間之前,首先需要了解時間的格式,可以通過命令date --help查看date命令的幫助信息
下面是截取的日期格式說明
%% 一個文字的 %
%a 當前locale 的星期名縮寫(例如: 日,代表星期日)
%A 當前locale 的星期名全稱 (如:星期日)
%b 當前locale 的月名縮寫 (如:一,代表一月)
%B 當前locale 的月名全稱 (如:一月)
%c 當前locale 的日期和時間 (如:2005年3月3日 星期四 23:05:25)
%C 世紀;比如 %Y,通常為省略當前年份的后兩位數字(例如:20)
%d 按月計的日期(例如:01)
%D 按月計的日期;等于%m/%d/%y
%e 按月計的日期,添加空格,等于%_d
%F 完整日期格式,等價于 %Y-%m-%d
%g ISO-8601 格式年份的最后兩位 (參見%G)
%G ISO-8601 格式年份 (參見%V),一般只和 %V 結合使用
%h 等于%b
%H 小時(00-23)
%I 小時(00-12)
%j 按年計的日期(001-366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n 換行
%N 納秒(000000000-999999999)
%p 當前locale 下的"上午"或者"下午",未知時輸出為空
%P 與%p 類似,但是輸出小寫字母
%r 當前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)
%R 24 小時時間的時和分,等價于 %H:%M
%s 自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數
%S 秒(00-60)
%t 輸出制表符 Tab
%T 時間,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第幾周,以周日為每星期第一天(00-53)
%V ISO-8601 格式規范下的一年中第幾周,以周一為每星期第一天(01-53)
%w 一星期中的第幾日(0-6),0 代表周一
%W 一年中的第幾周,以周一為每星期第一天(00-53)
%x 當前locale 下的日期描述 (如:12/31/99)
%X 當前locale 下的時間描述 (如:23:13:48)
%y 年份最后兩位數位 (00-99)
%Y 年份
%z +hhmm 數字時區(例如,-0400)
%:z +hh:mm 數字時區(例如,-04:00)
%::z +hh:mm:ss 數字時區(例如,-04:00:00)
%:::z 數字時區帶有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的時區縮寫 (例如,EDT)
其中比較常用的日期格式有
%F 完整日期格式,等價于 %Y-%m-%d
%y 年份最后兩位數位 (00-99)
%Y 年份
%m month (01..12)
%d 按月計的日期(例如:01)
%M minute (00..59)
%H 小時(00-23)
%S 秒(00-60)
date除了可以顯示時間以外,還可以通過date -s "STRING" 把時間設置成字符串所描述的時間
將日期修改為指定的時間
[root@ittimeline ~]# date -s "2020-6-25 12:17 "
2020年 06月 25日 星期四 12:17:00 CST
[root@ittimeline ~]# date
2020年 06月 25日 星期四 12:17:00 CST
顯示完整日期
[root@ittimeline ~]# date "+%F"
2020-06-25
顯示完整日期和時間
[root@ittimeline ~]# date "+%Y-%m-%d %H:%M:%S"
2020-06-25 12:32:34
[root@ittimeline ~]# date "+%Y/%m/%d %H:%M:%S"
2020/06/25 12:32:42
顯示時間
[root@ittimeline ~]# date "+%H:%M:%S"
12:30:42
date -d 顯示字由字符串描述的時間,而不是當前時間
例如查看當前時間的下個月的時間
[root@ittimeline ~]# date
2020年 06月 25日 星期四 12:34:37 CST
[root@ittimeline ~]# date -d "+1 months"
2020年 07月 25日 星期六 12:34:45 CST
使用time命令測試命令運行的時間
[root@ittimeline ~]# time ls -al /etc/
real 0m0.010s
user 0m0.005s
sys 0m0.005s
real 表示實際使用時間,user表示用戶狀態使用時間,sys表示內核狀態使用時間。實際使用時間=用戶狀態使用時間+內核狀態使用時間
Linux幫助命令的使用
由于CentOS7.8在企業運維的應用場景基本都是基于字符界面的命令使用。如果在使用命令時不知道怎么使用,這時就可以通過幫助命令來了解命令的使用方法。常用的查看幫助信息的命名有如下幾個
- 通過man命令查看
[root@ittimeline ~]# man find

man find
在使用man 命令時使用/ keyword可以搜索指定的關鍵字,搜索關鍵字時使用n跳轉到下一個匹配結果,p返回上一個匹配結果,退出使用q。
2. 命令的--help選項
通過--help選項查看find命令的幫助信息,通過輸出結果顯示對比man命令,--help顯示的幫助信息就少很多了。
[root@ittimeline ~]# find --help

find --help
開關機命令以及7個啟動級別
Linux的開關機以及重啟命令
Linux下常用的關機、重啟命令有shutdown、init、reboot
shutdown主要是用于關機、重啟和定時關機。該命令只用root用戶能夠使用,普通用戶無法使用shutdown -r表示重啟計算機shutdown -r 時間 表示定時重啟shutdown -h表示關機,shutdown -h 時間 表示定時關機shutdown -c 取消關機
使用shutdown -h +10實現10分鐘后關機,然后立即使用shutdown -c 取消關機
[root@ittimeline ~]# shutdown -h +10
Shutdown scheduled for 四 2020-06-25 13:20:26 CST, use 'shutdown -c' to cancel.
[root@ittimeline ~]#
Broadcast message from [email protected] (Thu 2020-06-25 13:10:26 CST):
The system is going down for power-off at Thu 2020-06-25 13:20:26 CST!
^C
[root@ittimeline ~]# shutdown -c
Broadcast message from [email protected] (Thu 2020-06-25 13:10:31 CST):
The system shutdown has been cancelled at Thu 2020-06-25 13:11:31 CST!
[root@ittimeline ~]#
如果想要立即關機可以使用shutdown -h now實現,關機以后需要從VMware WorkStation Pro 中啟動虛擬機。

而且關機以后所有的客戶端連接(例如這里的SecureCRT)都會關閉,

待虛擬機中的系統開機之后點擊會話重新連接。

Linux系統的啟動級別
Linux系統的啟動級別主要作用是切換系統的運行級別,通過init命令加上數字0-6之間的7個數字來進行切換。該命令也只能是root用戶使用0:系統停機模式,系統默認運行級別不能設置為0,否則不能正常啟動,此時機器處于關閉狀態。1:單用戶模式:root權限,用于系統維護,禁止遠程登錄,就像windows下的安全模式登錄2:多用戶模式,沒有NFS和網絡支持3:完整的多用戶文本模式,有NFS和網絡,登錄后進入控制臺的命令行模式4:系統未使用,保留一般不用,在一些特殊情況下可以用它來做一些事情,例如在筆記本電腦電池耗盡時,可以切換到這個模式做一些設置。5:圖形化模式,登錄后進入圖形GUI模式,例如CentOS7.8就會進入GNOME桌面6:重啟模式,默認運行級別不能為6,否則不能正常啟動,運行init 6機器就會重啟。
在Linux系統的日常使用中,通常使用init 0來進行關機,init 3進入字符界面,init 5進入圖形界面(前提條件是安裝了圖形界面)。如果是從init3切換到init5,通常是在系統內置的虛擬終端進行。
當使用普通用登錄時,默認打開終端登錄的用戶也是普通用戶,此時可以使用 命令su root命令和密碼來切換成root用戶

然后輸入命令init 3回車后進入字符界面,然后輸入普通用戶的賬號和密碼就可以登錄

然后便可以輸入相關的命令進行操作了

如果想要切換回圖形界面只需要輸入命令init 5并輸入root用戶密碼后便可以切換成圖形界面,因為之前的CentOS7.8安裝了圖形化界面GNOME。

圖形界面
如果圖形界面卡頓時可以修改默認的啟動級別為字符界面CentOS7不在使用/etc/inittab文件進行默認的啟動級別設置,而是使用比sysvinit的運行級別更為自由的target替代。其中第三運行級別用multi-user.target替代,第五運行級別用graphical.target替代。
設置默認啟動級別為3,即字符界面,該設置重啟后生效
[root@ittimeline ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@ittimeline ~]#
使用shutdown -r now命令重啟系統后發現CentOS7.8是在字符界面下啟動

設置默認啟動級別為5,即圖形化界面,該設置重啟后生效
[root@ittimeline ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
如果想要查看當前系統的運行級別,可以通過runlevel命令或者是systemctl get-default查看
如果systemctl get-default輸出的結果是graphical.taget表示當前的運行級別是圖形化界面
[root@ittimeline ~]# systemctl get-default
graphical.target
runlevel命令可以查看系統啟動級別的切換過程
[root@ittimeline ~]# runlevel
5 3
[root@ittimeline ~]# init 5
[root@ittimeline ~]# runlevel
3 5