iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
IT管理

Rocky Linux 8:系統管理與維運實戰系列 第 4

第3章:基本存取命令列與終端機介紹

前言

從上一章節中,我們已經將實驗與教學的環境給建置起來了,在這一章節中,將會演示使用「workstation」之虛擬主機來存取終端機的方法以及基本的Bash shell之介紹。

開啟workstation虛擬主機

首先,先打開VirtualBox,接著選取「workstation」後,按下啟動的按鈕,就可以把這台虛擬機器給啟動了,相關的操作畫面如下圖所示:

啟動虛擬機器圖示

登入到本地端主機

接著會顯示登入畫面,如下圖所示:

登入畫面

從上面的登入畫面可以得知,使用者為:rockylinux,點擊下去之後,要輸入密碼,密碼為:rocky,輸入完密碼按下「enter」鍵之後,就可以登入到桌面環境了,相關的操作圖示如下所示:

輸入密碼

Bash shell基本介紹

Bash全名叫做「GNU Bourne-Again Shell」,將這個Bash之shell呼叫出來的方式如下:登入進去到桌面之後,可以執行一個終端機,在Rocky Linux這個Linux發行版本底下預設執行shell為Bash,可以點桌面上方的「Activities」,並會得到下面的圖示:

桌面圖示

接著選擇畫面左邊的黑色圖示,從下面數來第二個,這個圖示就是開啟終端機的圖示,點擊下去之後,就會打開終端機,並啟動互動式模式的Bash shell了,相關的操作如下圖所示:

終端機縮圖圖示

終端機

從上述的操作,就可以把一個終端機給呼叫出來了,接著會有一個文字,如下所示:

[rockylinux@workstation ~]$

從上面這一行的文字來看,rockylinux指的是登入的使用者名稱,而中間用小老鼠隔開,後面指的是這台主機的名稱,像以這台主機為例,就叫做workstation,而~則是目前停在的目錄,這在Bash shell的世界中,這個代表的是當前使用者的家目錄路徑,而$是這個結尾的意思,後面開始的地方就是我們可以輸入指令的地方了。

登出本地端的電腦主機

成功登入了桌面環境以及打開了終端機之後,我們也可以進行登出本地端的主機,由於我們有安裝桌面環境的緣故,因此當輸入了「exit」指令時,只會把當前所開啟的終端機給關閉,桌面環境所執行的shell還是在登入的狀態,若要回到原來前面小節中,一開始在使用者的登入狀態的話,需要關閉終端機之後,按下右上角的電源鍵之圖示並選擇使用者名稱選項,點下去之後,有一個「log out」選項,按下去之後,才會回到先前一開始使用者登入圖示的畫面,相關的圖示如下圖所示:

exit

click logout option

桌面環境操作介紹

回到桌面環境,這是一個叫做GNOME之桌面環境,這個桌面環境也是一種廣為流行的桌面環境,有了桌面環境就可以有圖示之外,還可以選擇圖形化的應用程式出來,像是前面小節中所提到的終端機就是桌面圖形化程式的其中一種,而我們可以照著下圖所示,點擊左邊的最後一個選項,叫做「show applications」,就會把所有在這台主機上所安裝的圖形化應用程式都列出來,有點類似像Windows作業系統上的應用程式集,相關的操作如下圖所示:

show applications

show applications list

使用Bash shell執行基本的命令

利用上面小節中所提到的終端機開啟的方法,將終端機打開之後,輸入「whoami」之指令,可以得到下面的文字:

[rockylinux@localhost ~]$ whoami
rockylinux
[rockylinux@localhost ~]$

上述的指令是查看當前使用者名稱,接著,輸入「date」則可以跳出當前的時間的字串,相關的輸出如下所示:

[rockylinux@localhost ~]$ date
Sun Sep 19 21:01:12 CST 2021
[rockylinux@localhost ~]$

如果要顯示目前的時間並以「時:分」之格式來表示的話,輸出的結果如下所示:

[rockylinux@localhost ~]$ date +%R
21:02
[rockylinux@localhost ~]$
[rockylinux@localhost ~]$

而「+%R」是一個格式化日期字串之參數,顯示出來就是我們上面所要格式的結果,表示的時分字串是以24小時制,而使用「+%x」之格式化選項,則是會輸出:「月/日/年」之格式化日期字串。

[rockylinux@localhost ~]$ date +%x
09/19/2021

有關於「date」指令所用到的日期之格式化字串選項還有很多,如「%F」、「+%Y」、「+%m」以及「+%d」等,要看一個指令的用法或是相觀的說明將會在後面的章節中提到,這個章節只要會基本的操作指令輸入即可。

接著再介紹一個指令叫做「passwd」,這個指令是用來修改當前的使用者密碼的,當我們執行這個指令下去的時候,就會得到下面的輸出文字:

[rockylinux@localhost ~]$ passwd
Changing password for user rockylinux.
Current password:

接著就會要求輸入當前使用者的密碼,當成功的輸入當前這個使用者密碼之後,就會要求輸入新的密碼,接著就會得到下列的文字:

[rockylinux@localhost ~]$ passwd
Changing password for user rockylinux.
Current password:
New password:

當輸入新的密碼之後,則會輸入下列的文字:

[rockylinux@localhost ~]$ passwd
Changing password for user rockylinux.
Current password:
New password:
Retype new password:

從上面的輸出文字來看,會再要求再輸入一次密碼,當兩次輸入的密碼都相同之後,則當前的使用者修改密就算成功了,整個成功的修改密碼過程之輸出文字如下所示:

[rockylinux@localhost ~]$ passwd
Changing password for user rockylinux.
Current password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

有時候,當設定新的密碼太簡單的話,則會出現下列的錯誤:

[rockylinux@localhost ~]$ passwd
Changing password for user rockylinux.
Current password:
New password:
BAD PASSWORD: The password is shorter than 8 characters
passwd: Authentication token manipulation error

從上面的輸出文字得知,就是密碼設定的長度太短,沒有到8個字元,因此不允許修改此過短的密碼,但是若要設定這個密碼也是可以的,可以用root使用者,或是當前使用者有使用「sudo」權限的話,也可以做到,這部分在後面的章節會再提到。

所有的使用者與相對應的密碼都會存在檔案裏面,存在的路徑為:「/etc/passwd」這個路徑底下,可以用「cat」這個指令將此密碼檔案給印出來到終端機上面,相關的輸出文字如下所示:

[rockylinux@localhost ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pipewire:x:996:992:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
libstoragemgmt:x:995:989:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
clevis:x:994:988:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
unbound:x:993:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin
gluster:x:992:986:GlusterFS daemons:/run/gluster:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
setroubleshoot:x:991:984::/var/lib/setroubleshoot:/sbin/nologin
saslauth:x:990:76:Saslauthd user:/run/saslauthd:/sbin/nologin
dnsmasq:x:983:983:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
sssd:x:982:982:User for sssd:/:/sbin/nologin
cockpit-ws:x:981:980:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:980:979:User for cockpit-ws instances:/nonexisting:/sbin/nologin
chrony:x:979:978::/var/lib/chrony:/sbin/nologin
flatpak:x:978:977:User for flatpak system helper:/:/sbin/nologin
colord:x:977:976:User for colord:/var/lib/colord:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rockylinux:x:1000:1000:rockylinux:/home/rockylinux:/bin/bash
[rockylinux@localhost ~]$

從上述的密碼檔案來看,內容除了記錄使用者的資訊之外,還有使用者對應的家目錄路徑、使用者id等資訊,此檔案的資訊解讀在後面的章節也會提到,有鑑於用cat /etc/passwd這個指令會把密碼檔案所有內容都印出來,若要此檔案內容的前幾行要怎麼做?這時我們可以使用「head」這個指令來做到,相關指令輸出的結果如下:

[rockylinux@localhost ~]$ head /etc/passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

從上述的指令來看,head預設會印出指定檔案之前10行內容出來,若要印出更少行或更多行,則可以使用「-n」選項做到,例如:「head -n 5 /etc/passwd」,接著就會得到下列的輸出結果:

[rockylinux@localhost ~]$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
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

有印出檔案前幾行的內容,當然也有印出檔案內容後面幾行的內容之指令,那就是「tail」,使用這個tail指令與head指令相仿,什麼參數都沒有加上去的話,則印出檔案內容中最後10行的內容,若要指定印出最後幾行,則可以使用「-n」之參數做到。

指令參數有時候很多,不是人可以記得起來的,這時可以使用TAB按鍵來做到,以tail這個指令來說,可以這樣做:

[rockylinux@localhost ~]$ tail
.bash_history  .bashrc        Desktop/       .esd_auth      .mozilla/      .pki/          Videos/
.bash_logout   .cache/        Documents/     .ICEauthority  Music/         Public/
.bash_profile  .config/       Downloads/     .local/        Pictures/      Templates/

從上述輸出的文字,當指輸入tail指令並按下TAB鍵時,則會跳出所有路徑選項,因為要接上檔案的路徑,或是打上一個「-」並按下TAB則會再跳出「-」,接著按兩下TAB鍵,則會跳出所有可能的長選項供使用者所使用,相關的輸出指令如下所示:

[rockylinux@localhost ~]$ tail --
--bytes=                --lines=                --silent                --zero-terminated
--follow                --max-unchanged-stats=  --sleep-interval=
--follow=               --pid=                  --verbose
--help                  --retry                 --version

假設要印出/etc/passwd檔案裏面之前5行則可以使用長選項之「--lines」或是短選項的「-n」來做到,相關輸出文字如下所示:

[rockylinux@localhost ~]$ tail --lines=5 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rockylinux:x:1000:1000:rockylinux:/home/rockylinux:/bin/bash
[rockylinux@localhost ~]$ tail -n 5 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rockylinux:x:1000:1000:rockylinux:/home/rockylinux:/bin/bash

TAB按鍵是一個很實用的按鍵,尤其當使用不知道指令有什麼選項參數可以選用的時候,可以透過這按鍵將所有情況的選項列出,供使用者做選擇。

當打了很多指令之後,需要將之前打過的指令歷史列出,則可以使用「history」來做到,相關輸出的文字如下所示:

[rockylinux@localhost ~]$ history
    1  ls /home/
    2  ip a show
    3  sudo reboot
    4  whoami
    5  date
    6  date +%R
    7  date +%X
    8  date +%x
    9  date +%d
   10  date +%F
   11  who
   12  date +%F
   13  date +%f
   14  date +%Y
   15  date +%M
   16  date +%m
   17  date +%d
   18  passwd
   19  cat /etc/passwd
   20  head /etc/passwd
   21  head -n 5 /etc/passwd
   22  tail /etc/passwd
   23  tail --lines=1 /etc/passwd
   24  tail --lines=5 /etc/passwd
   25  tail -n 5 /etc/passwd
   26  history

當我們要用上面列出來之第25行指令再執行一次時,可以使用「!25」來做到,相關輸出如下所示:

[rockylinux@localhost ~]$ !25
tail -n 5 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rockylinux:x:1000:1000:rockylinux:/home/rockylinux:/bin/bash

編輯指令

當指令一多的時候,難免會有打錯的可能,為了要更方便的編輯指令,以下介紹幾個實用的組合鍵可以做到編輯指令的方法:

  1. 「ctrl」鍵加上「A」鍵,則是移到指令的最前面,而這個組合鍵也等同於「home」鍵。
  2. 「ctrl」鍵加上「E」鍵,則是移到指令的最後面,而這個組合鍵等同於「end」鍵。
  3. 「ctrl」鍵加上「U」鍵,則是將指令的游標(cursor)之前的字串全部清除。
  4. 「ctrl」鍵加上「K」鍵,則是將指令的游標(cursor)之後的字串全部清除。
  5. 「ctrl」鍵加上鍵盤左方向鍵,則是快速的將游標往左移動。
  6. 「ctrl」鍵加上鍵盤右方向鍵,則是快速的將游標往右移動。
  7. 「ctrl」鍵加上「R」鍵,則是可以在執行過的歷史清單中搜尋指令。

課後練習

  1. 請使用head指令印出/etc/passwd檔案中之前8行出來。
  2. 請使用tail指令印出/etc/passwd檔案中最後15行出來。
  3. 請使用date指令印出帶有「年-月-日」之日期格式字串結果出來,假設今天是2021年9月19日,則印出「2021-09-19」。

上一篇
第2章:實驗操作的環境之虛擬機器介紹
下一篇
第4章:檔案系統結構介紹
系列文
Rocky Linux 8:系統管理與維運實戰23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言