linux終端介紹與Bash Shell應(yīng)用
Linux終端介紹
Linux終端有兩種,分別是桌面終端和遠(yuǎn)程終端,桌面終端根據(jù)不同的桌面分為GNOME桌面的GNOME Terminal、KDE桌面的Konsole Terminal。而遠(yuǎn)程終端有基于SSH2協(xié)議的SecureCRT、XShell。
GNOME Ternimal
SecureCRT
如果想要知道當(dāng)前使用是哪個(gè)終端,可以使用tty命令查看終端
其中/dev/pts/1表示第一個(gè)終端,/dev/pts/2表示第二個(gè)終端。
如果你在SecureCRT上也登錄了centos7.8,那么當(dāng)輸入tty命令時(shí)將會輸出/dev/pts/3,即表示第三個(gè)終端
在操作終端的過程中有一些常用的快捷鍵
Ctrl+Shift+N:快速打開一個(gè)終端
Ctrl+Shift+ +:終端字體放大
Ctrl+Shift+ -:終端字體減小
在一臺服務(wù)器的多個(gè)終端之間是可以進(jìn)行通訊。例如可以使用echo message > 終端 發(fā)送指定的消息。
首先同時(shí)打開兩個(gè)終端/dev/pts/1和/dev/pts/2然后在/dev/pts/1上使用命令echo ittimeline.net >/dev/pts/2時(shí),第二個(gè)終端/dev/pts/2收到了消息ittimeline.net
shutdown命令用于關(guān)機(jī),該命令必須使用root用戶執(zhí)行,普通用戶(例如guanglei)無法執(zhí)行該命令。
使用命令shutdown +10 實(shí)現(xiàn)十分鐘后關(guān)機(jī),該命令會向所有的終端廣播消息
shutdown +10
其他終端也收到10分鐘之后關(guān)機(jī)的消息
如果想要終止可以使用shutdown -c取消關(guān)機(jī),在輸入該命令之前需要使用Ctrl+c中斷命令shutdown +10的執(zhí)行。
當(dāng)取消關(guān)機(jī)時(shí),該命令也會發(fā)送廣播消息給所有的終端
如果想要通過終端廣播消息,可以使用命令wall ”message“實(shí)現(xiàn)
當(dāng)在終端設(shè)備/dev/pst/1上使用命令wall "boss is comming"時(shí),此時(shí)/dev/pst/2和/dev/pst/3都收到了該消息
wall message
Linux Shell 介紹
Linux Shell提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口,它接收用戶輸入的命令并提交到內(nèi)核去執(zhí)行。Shell實(shí)際上是一個(gè)命令解釋器,它通過解釋用戶輸入的命令并提交給內(nèi)核執(zhí)行。Shell有自己的編程語言,它允許用戶編寫由Shell命令組成的程序。Shell編程語言具有常用編程語言(C/C++)的許多特點(diǎn),比如說它也有循環(huán)結(jié)構(gòu)和分支控制等等,用這種編程語言編寫的Shell程序與其他應(yīng)用程序具有同樣的效果。
Shell執(zhí)行命令的流程當(dāng)用戶輸入命令時(shí)會提交到Shell,Shell會判斷該命令是否是內(nèi)部命令,如果是內(nèi)部命令,則直接執(zhí)行系統(tǒng)內(nèi)核對應(yīng)的功能調(diào)用,如果是外部命令,Shell會在系統(tǒng)中查找該命令對應(yīng)的執(zhí)行程序并加載到內(nèi)存中執(zhí)行。
內(nèi)部命令是在系統(tǒng)啟動(dòng)時(shí)就加載到內(nèi)存中,是常駐內(nèi)存,所以執(zhí)行效率高。外部命令是系統(tǒng)軟件的功能,用戶需要時(shí)才會從硬盤加載到內(nèi)存中。
可以通過type command來查看當(dāng)前執(zhí)行的命令是內(nèi)部命令還是外部命令。
例如當(dāng)執(zhí)行命令type pwd時(shí)輸出pwd是shell 內(nèi)嵌,即內(nèi)部命令。而當(dāng)執(zhí)行命令type cat時(shí)輸出cat 命令對應(yīng)的路徑/usr/bin/cat,即外部命令。
[root@ittimeline ~]# type pwd
pwd 是 shell 內(nèi)嵌
[root@ittimeline ~]# type cat
cat 是 /usr/bin/cat
后期在進(jìn)行Linux系統(tǒng)管理(文件目錄、用戶、權(quán)限、磁盤、軟件、網(wǎng)絡(luò)等等)都是通過Shell實(shí)現(xiàn)的。
Shell 提示符
當(dāng)以root用戶登錄系統(tǒng)時(shí),Shell命令提示會顯示[root@ittimeline ~]#
[root@ittimeline ~]#
而當(dāng)以普通用戶guanglei登錄時(shí),Shell命令提示符會顯示[guanglei@ittimeline ~]$
[guanglei@ittimeline ~]$
因此如果在Shell命令提示符中看到$表示該用戶是普通用戶,如果看到#表示該用戶是系統(tǒng)管理員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 ~]#表示的含義[用戶名@主機(jī)名 當(dāng)前所在目錄],其中~表示用戶的家目錄,而#表示root用戶,$表示普通用戶。
Bash Shell
如果想要知道系統(tǒng)支持哪些Shell類型,可以通過命令cat /etc/shells查看
[root@ittimeline ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
如果想要知道當(dāng)前系統(tǒng)具體使用的是哪種Shell,取決于用戶配置,可以通過命令head -1 /etc/passwd查看/etc/passwd文件的第一行
[root@ittimeline ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
通過命令可以查看到當(dāng)前root用戶使用的Shell是Bash Shell。
Linux基本命令常用操作
Linux命令組成
Linux命令由命令、【選項(xiàng)】和【參數(shù)】三部分組成,其中命令就是具體執(zhí)行的命令,例如pwd,whoami,head等等,而選項(xiàng)是影響到命令的一些行為操作,通常是以-或者是--實(shí)現(xiàn),參數(shù)就是命令作用的對象。
以命令ls -al /home/guanglei為例,其中l(wèi)s命令查看文件列表,-a選項(xiàng)是顯示所有文件,包含隱藏文件(.開頭的文件就是隱藏文件),l表示文件的詳細(xì)信息。參數(shù)/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命令的作用查看當(dāng)前目錄下有哪些文件,其語法就是ls 目錄/文件,如果不加路徑參數(shù),默認(rèn)就是查看當(dāng)前路徑下的內(nèi)容
例如這里使用普通用戶guanglei登錄后查看/home/guanglei目錄下的文件列表
[guanglei@ittimeline ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
使用pwd命令可以查看當(dāng)前用戶所在的路徑
[guanglei@ittimeline ~]$ pwd
/home/guanglei
使用 ls -l 選項(xiàng)可以查看當(dāng)前路徑文件列表的詳細(xì)信息
[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
這里為了更加具體的了解文件的詳細(xì)信息,首先使用命令cd Documents切換到Documents目錄下,然后使用touch file.txt創(chuàng)建一個(gè)空的文本文件,接下來使用命令ls -l file.txt查看file.txt的文件詳細(xì)信息
[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表示塊設(shè)備文件c表示字符設(shè)備文件p表示管道文件-表示普通文件
- rw-rw-r--.表示文件的權(quán)限
- 1 表示鏈接個(gè)數(shù)
- guanglei 表示文件所有者
- guanglei 用戶所屬組名
- 0 表示文件大小
- 6月 23 13:30 表示文件上次修改的日期和時(shí)間
- file.txt表示文件名稱
使用命令echo "hello world" >file.txt往file.txt寫入字符串helloworld,然后再次使用ls -l file.txt查看文件詳細(xì)信息。
[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目錄是用于存放各種設(shè)備文件,如果想要查看不同類型的文件,可以使用命令ls -l /dev查看,CentOS系統(tǒng)中不同的顏色表示不同的文件類型。
顏色代表內(nèi)容舉例藍(lán)色目錄/etc黑色文件/etc/passwd淺藍(lán)色鏈接/etc/grub2.cfg紅色壓縮包boot.tar.gz綠色可執(zhí)行文件/etc/init/d/network黑底黃字設(shè)備文件/dev/sda
ls -a選項(xiàng)用于列出指定目錄下的所有文件,包括以.開頭的隱藏文件,如果存在兩個(gè)點(diǎn)代表著父目錄,一個(gè)點(diǎn)表示當(dāng)前目錄。
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 查看指定目錄的詳細(xì)信息
查看/root目錄的詳細(xì)信息
[guanglei@ittimeline ~]$ ls -ld /root/
dr-xr-x---. 5 root root 221 6月 23 12:58 /root/
查看/home/guanglei目錄的詳細(xì)信息
[guanglei@ittimeline ~]$ ls -ld /home/guanglei/
drwx------. 15 guanglei guanglei 4096 6月 23 09:48 /home/guanglei/
ls -S 查看文件目錄,并且以文件的大小排序(默認(rèn)是降序)
查看/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執(zhí)行的結(jié)果是等價(jià)的
[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
當(dāng)使用type命令查看ll時(shí)輸出結(jié)果顯示ll是ls -al的別名
[root@ittimeline ~]# type ll
ll 是 `ls -l --color=auto' 的別名
那么如何創(chuàng)建一個(gè)別名呢?這里以常用的編輯網(wǎng)卡配置為例,CentOS7中編輯網(wǎng)卡配置,通常會使用命令vim
/etc/sysconfig/network-scripts/ifcfg-ens33來編輯網(wǎng)卡配置文件ifcfg-ens33。為了實(shí)現(xiàn)同樣的作用,我們可以使用alias命令來創(chuàng)建一個(gè)別名,其格式類似于編程語言中變量的聲明,alias 變量名=變量值,其中變量值需要使用""包含起來,而變量名通常是英文開頭。
[root@ittimeline ~]# alias vimens33="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
當(dāng)別名創(chuàng)建完成后就可以使用vimens33來快速編輯網(wǎng)卡配置文件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"
如果想要?jiǎng)h除別名,可以使用命令unalias 命令別名。
[root@ittimeline ~]# unalias vimens33
[root@ittimeline ~]# vimens33
bash: vimens33: 未找到命令...
而alias命令創(chuàng)建的別名在服務(wù)器重啟后會丟失。
如果想要?jiǎng)e名永遠(yuǎn)有效,可以使用命令vim .bashrc來編輯.bashrc用戶配置文件,將alias定義的別名存儲在該文件中。
在使用vim .bashrc編輯.bashrc文件時(shí),此時(shí)vim處于命令模式,可以按i鍵進(jìn)入編輯模式。
[root@ittimeline ~]# vim .bashrc
當(dāng)編輯文件時(shí),系統(tǒng)已經(jīng)存在如下別名
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
然后將ens33的別名追加到已有別名的后面
別名追加完成以后輸入:wq保存.bashrc修改的內(nèi)容,然后使用命令source .bashrc重新加載配置,需要注意的是該命令只在當(dāng)前終端刷新.bashrc的配置。如果是其他已經(jīng)打開的終端無法使用,則需要再次使用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編輯該文件時(shí),首先下滑到文件的末尾,然后按i鍵由命令模式切換到編輯模式,然后添加別名vimens33的配置
alias vimens33="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
添加vimens33配置
配置添加完成后按esc退出編輯模式,然后按:wq保存文件,再使用命令source /etc/bashrc重新加載配置。
[root@ittimeline ~]# source /etc/bashrc
然后重新使用普通用戶(guanglei)登錄,輸入別名vimens33便可以實(shí)現(xiàn)快速修改網(wǎng)卡配置
[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別名修改網(wǎng)卡
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 .進(jìn)入到當(dāng)前目錄
[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命令的輸出結(jié)果中查找歷史的命令,可以使用如下方法:
- 光標(biāo)上下鍵切換輸入過的命令
- ctrl+r 進(jìn)入命令搜索模式, 輸入某條命令的關(guān)鍵字,找出來對應(yīng)的命令,然后按右方向鍵并回車就能夠執(zhí)行命令
- !num 執(zhí)行指定編號的歷史命令,例如!26就會執(zhí)行history歷史命令的第二十六條命令
[guanglei@ittimeline network-scripts]$ !26
pwd
/etc/sysconfig/network-scripts
- !字符串 會搜索歷史命令中最近一個(gè)以xxx字符串開頭的命令,例如 !who
當(dāng)輸入!who,history會匹配到whoami命令
[guanglei@ittimeline network-scripts]$ !who
whoami
guanglei
Linux常用快捷鍵
- Ctrl+c (^C)終止前臺運(yùn)行程序
例如在使用ping baidu.com 檢查網(wǎng)絡(luò)連接時(shí),如果網(wǎng)絡(luò)通常,則會一直輸出接收的數(shù)據(jù)包信息,如果想要此時(shí)停止接收數(shù)據(jù),則此時(shí)可以使用快捷鍵Ctrl+c來終止前臺運(yùn)行的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) 退出,等價(jià)于exit在遠(yuǎn)程連接終端時(shí)如果想要退出當(dāng)前登錄的賬戶,可以使用快捷鍵Ctrl+d來退出,也可以使用exit命令退出當(dāng)前登錄的賬戶。使用Ctrl+d退出當(dāng)前登錄用戶使用exit命令退出當(dāng)前登錄用戶
- Ctrl+l 清屏,等價(jià)于clear命令如果在終端上執(zhí)行某條命令時(shí)的輸出結(jié)果占滿屏幕,此時(shí)可以使用快捷鍵Ctrl+l或者是clear命令來實(shí)現(xiàn)清除屏幕的輸出結(jié)果。
使用clear或者快捷鍵Ctrl+L清除屏幕
- Ctrl+a 跳到命令行的開頭
- Ctrl+e 跳到命令行的結(jié)尾
- Ctrl+u 將光標(biāo)處到命令行開頭的內(nèi)容刪除
- Ctrl+k 將光標(biāo)處到命令行末尾的內(nèi)容刪除
- Ctrl+r 搜索歷史命令,可以利用好關(guān)鍵詞
- !$ 引用上一個(gè)命令的最后一個(gè)參數(shù)
當(dāng)首先執(zhí)行cat /etc/hosts后,再執(zhí)行vim !$后,上一個(gè)命令的最后一個(gè)參數(shù)/etc/hosts會傳入到vim命令中并被得到執(zhí)行
[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命令補(bǔ)全命令和和文件
當(dāng)在Shell中輸入命令時(shí),如果記不住命令的完整名字,此時(shí)可以使用Tab鍵來補(bǔ)全命令
例如當(dāng)執(zhí)行whoami時(shí)只需要輸入wh,然后使用Tab補(bǔ)全后系統(tǒng)會列出wh開頭的命令。
[guanglei@ittimeline ~]$ wh
whatis whereis which while whiptail who whoami
Tab補(bǔ)全命令還有一種應(yīng)用場景就是補(bǔ)全路徑,例如在使用cd切換路徑時(shí),如果忘記某個(gè)完整路徑,可以使用Tab來補(bǔ)全
[guanglei@ittimeline ~]$ cd /home/guanglei/
Linux系統(tǒng)時(shí)間管理
在Linux中有硬件時(shí)鐘與系統(tǒng)時(shí)鐘兩種時(shí)鐘。硬件時(shí)鐘指的是主板上的時(shí)鐘設(shè)備,也就是通常可以在BIOS中設(shè)定的時(shí)鐘,可以在root用戶登錄后使用hwclock命令查看
[root@ittimeline guanglei]# hwclock
Thu 25 Jun 2020 11:57:39 AM CST -0.037282 seconds
CST (China Standard Time):中國標(biāo)準(zhǔn)時(shí)間GMT(Greenwich Mean Time):格林威治時(shí)間UTC(Universal Time Coordinated):世界標(biāo)準(zhǔn)時(shí)間
系統(tǒng)時(shí)鐘指的是Linux Kernel中的時(shí)鐘,所有Linux相關(guān)的指令與函數(shù)都是讀取系統(tǒng)時(shí)鐘的設(shè)定。當(dāng)Linux系統(tǒng)啟動(dòng)時(shí),系統(tǒng)時(shí)鐘會去讀取硬件時(shí)鐘的設(shè)定,然后系統(tǒng)時(shí)鐘獨(dú)立運(yùn)作。系統(tǒng)時(shí)間可以通過date命令查看。
[guanglei@ittimeline ~]$ date
Thu Jun 25 11:57:38 CST 2020
date除了可以顯示系統(tǒng)時(shí)間外,還可以修改系統(tǒng)時(shí)間,在使用date 命令修改時(shí)間之前,首先需要了解時(shí)間的格式,可以通過命令date --help查看date命令的幫助信息
下面是截取的日期格式說明
%% 一個(gè)文字的 %
%a 當(dāng)前l(fā)ocale 的星期名縮寫(例如: 日,代表星期日)
%A 當(dāng)前l(fā)ocale 的星期名全稱 (如:星期日)
%b 當(dāng)前l(fā)ocale 的月名縮寫 (如:一,代表一月)
%B 當(dāng)前l(fā)ocale 的月名全稱 (如:一月)
%c 當(dāng)前l(fā)ocale 的日期和時(shí)間 (如:2005年3月3日 星期四 23:05:25)
%C 世紀(jì);比如 %Y,通常為省略當(dāng)前年份的后兩位數(shù)字(例如:20)
%d 按月計(jì)的日期(例如:01)
%D 按月計(jì)的日期;等于%m/%d/%y
%e 按月計(jì)的日期,添加空格,等于%_d
%F 完整日期格式,等價(jià)于 %Y-%m-%d
%g ISO-8601 格式年份的最后兩位 (參見%G)
%G ISO-8601 格式年份 (參見%V),一般只和 %V 結(jié)合使用
%h 等于%b
%H 小時(shí)(00-23)
%I 小時(shí)(00-12)
%j 按年計(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 當(dāng)前l(fā)ocale 下的"上午"或者"下午",未知時(shí)輸出為空
%P 與%p 類似,但是輸出小寫字母
%r 當(dāng)前l(fā)ocale 下的 12 小時(shí)時(shí)鐘時(shí)間 (如:11:11:04 下午)
%R 24 小時(shí)時(shí)間的時(shí)和分,等價(jià)于 %H:%M
%s 自UTC 時(shí)間 1970-01-01 00:00:00 以來所經(jīng)過的秒數(shù)
%S 秒(00-60)
%t 輸出制表符 Tab
%T 時(shí)間,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第幾周,以周日為每星期第一天(00-53)
%V ISO-8601 格式規(guī)范下的一年中第幾周,以周一為每星期第一天(01-53)
%w 一星期中的第幾日(0-6),0 代表周一
%W 一年中的第幾周,以周一為每星期第一天(00-53)
%x 當(dāng)前l(fā)ocale 下的日期描述 (如:12/31/99)
%X 當(dāng)前l(fā)ocale 下的時(shí)間描述 (如:23:13:48)
%y 年份最后兩位數(shù)位 (00-99)
%Y 年份
%z +hhmm 數(shù)字時(shí)區(qū)(例如,-0400)
%:z +hh:mm 數(shù)字時(shí)區(qū)(例如,-04:00)
%::z +hh:mm:ss 數(shù)字時(shí)區(qū)(例如,-04:00:00)
%:::z 數(shù)字時(shí)區(qū)帶有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的時(shí)區(qū)縮寫 (例如,EDT)
其中比較常用的日期格式有
%F 完整日期格式,等價(jià)于 %Y-%m-%d
%y 年份最后兩位數(shù)位 (00-99)
%Y 年份
%m month (01..12)
%d 按月計(jì)的日期(例如:01)
%M minute (00..59)
%H 小時(shí)(00-23)
%S 秒(00-60)
date除了可以顯示時(shí)間以外,還可以通過date -s "STRING" 把時(shí)間設(shè)置成字符串所描述的時(shí)間
將日期修改為指定的時(shí)間
[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
顯示完整日期和時(shí)間
[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
顯示時(shí)間
[root@ittimeline ~]# date "+%H:%M:%S"
12:30:42
date -d 顯示字由字符串描述的時(shí)間,而不是當(dāng)前時(shí)間
例如查看當(dāng)前時(shí)間的下個(gè)月的時(shí)間
[root@ittimeline ~]# date
2020年 06月 25日 星期四 12:34:37 CST
[root@ittimeline ~]# date -d "+1 months"
2020年 07月 25日 星期六 12:34:45 CST
使用time命令測試命令運(yùn)行的時(shí)間
[root@ittimeline ~]# time ls -al /etc/
real 0m0.010s
user 0m0.005s
sys 0m0.005s
real 表示實(shí)際使用時(shí)間,user表示用戶狀態(tài)使用時(shí)間,sys表示內(nèi)核狀態(tài)使用時(shí)間。實(shí)際使用時(shí)間=用戶狀態(tài)使用時(shí)間+內(nèi)核狀態(tài)使用時(shí)間
Linux幫助命令的使用
由于CentOS7.8在企業(yè)運(yùn)維的應(yīng)用場景基本都是基于字符界面的命令使用。如果在使用命令時(shí)不知道怎么使用,這時(shí)就可以通過幫助命令來了解命令的使用方法。常用的查看幫助信息的命名有如下幾個(gè)
- 通過man命令查看
[root@ittimeline ~]# man find
man find
在使用man 命令時(shí)使用/ keyword可以搜索指定的關(guān)鍵字,搜索關(guān)鍵字時(shí)使用n跳轉(zhuǎn)到下一個(gè)匹配結(jié)果,p返回上一個(gè)匹配結(jié)果,退出使用q。
2. 命令的--help選項(xiàng)
通過--help選項(xiàng)查看find命令的幫助信息,通過輸出結(jié)果顯示對比man命令,--help顯示的幫助信息就少很多了。
[root@ittimeline ~]# find --help
find --help
開關(guān)機(jī)命令以及7個(gè)啟動(dòng)級別
Linux的開關(guān)機(jī)以及重啟命令
Linux下常用的關(guān)機(jī)、重啟命令有shutdown、init、reboot
shutdown主要是用于關(guān)機(jī)、重啟和定時(shí)關(guān)機(jī)。該命令只用root用戶能夠使用,普通用戶無法使用shutdown -r表示重啟計(jì)算機(jī)shutdown -r 時(shí)間 表示定時(shí)重啟shutdown -h表示關(guān)機(jī),shutdown -h 時(shí)間 表示定時(shí)關(guān)機(jī)shutdown -c 取消關(guān)機(jī)
使用shutdown -h +10實(shí)現(xiàn)10分鐘后關(guān)機(jī),然后立即使用shutdown -c 取消關(guān)機(jī)
[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 root@ittimeline.net (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 root@ittimeline.net (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 ~]#
如果想要立即關(guān)機(jī)可以使用shutdown -h now實(shí)現(xiàn),關(guān)機(jī)以后需要從VMware WorkStation Pro 中啟動(dòng)虛擬機(jī)。
而且關(guān)機(jī)以后所有的客戶端連接(例如這里的SecureCRT)都會關(guān)閉,
待虛擬機(jī)中的系統(tǒng)開機(jī)之后點(diǎn)擊會話重新連接。
Linux系統(tǒng)的啟動(dòng)級別
Linux系統(tǒng)的啟動(dòng)級別主要作用是切換系統(tǒng)的運(yùn)行級別,通過init命令加上數(shù)字0-6之間的7個(gè)數(shù)字來進(jìn)行切換。該命令也只能是root用戶使用0:系統(tǒng)停機(jī)模式,系統(tǒng)默認(rèn)運(yùn)行級別不能設(shè)置為0,否則不能正常啟動(dòng),此時(shí)機(jī)器處于關(guān)閉狀態(tài)。1:單用戶模式:root權(quán)限,用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登錄,就像windows下的安全模式登錄2:多用戶模式,沒有NFS和網(wǎng)絡(luò)支持3:完整的多用戶文本模式,有NFS和網(wǎng)絡(luò),登錄后進(jìn)入控制臺的命令行模式4:系統(tǒng)未使用,保留一般不用,在一些特殊情況下可以用它來做一些事情,例如在筆記本電腦電池耗盡時(shí),可以切換到這個(gè)模式做一些設(shè)置。5:圖形化模式,登錄后進(jìn)入圖形GUI模式,例如CentOS7.8就會進(jìn)入GNOME桌面6:重啟模式,默認(rèn)運(yùn)行級別不能為6,否則不能正常啟動(dòng),運(yùn)行init 6機(jī)器就會重啟。
在Linux系統(tǒng)的日常使用中,通常使用init 0來進(jìn)行關(guān)機(jī),init 3進(jìn)入字符界面,init 5進(jìn)入圖形界面(前提條件是安裝了圖形界面)。如果是從init3切換到init5,通常是在系統(tǒng)內(nèi)置的虛擬終端進(jìn)行。
當(dāng)使用普通用登錄時(shí),默認(rèn)打開終端登錄的用戶也是普通用戶,此時(shí)可以使用 命令su root命令和密碼來切換成root用戶
然后輸入命令init 3回車后進(jìn)入字符界面,然后輸入普通用戶的賬號和密碼就可以登錄
然后便可以輸入相關(guān)的命令進(jìn)行操作了
如果想要切換回圖形界面只需要輸入命令init 5并輸入root用戶密碼后便可以切換成圖形界面,因?yàn)橹暗腃entOS7.8安裝了圖形化界面GNOME。
圖形界面
如果圖形界面卡頓時(shí)可以修改默認(rèn)的啟動(dòng)級別為字符界面CentOS7不在使用/etc/inittab文件進(jìn)行默認(rèn)的啟動(dòng)級別設(shè)置,而是使用比sysvinit的運(yùn)行級別更為自由的target替代。其中第三運(yùn)行級別用multi-user.target替代,第五運(yùn)行級別用graphical.target替代。
設(shè)置默認(rèn)啟動(dòng)級別為3,即字符界面,該設(shè)置重啟后生效
[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命令重啟系統(tǒng)后發(fā)現(xiàn)CentOS7.8是在字符界面下啟動(dòng)
設(shè)置默認(rèn)啟動(dòng)級別為5,即圖形化界面,該設(shè)置重啟后生效
[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.
如果想要查看當(dāng)前系統(tǒng)的運(yùn)行級別,可以通過runlevel命令或者是systemctl get-default查看
如果systemctl get-default輸出的結(jié)果是graphical.taget表示當(dāng)前的運(yùn)行級別是圖形化界面
[root@ittimeline ~]# systemctl get-default
graphical.target
runlevel命令可以查看系統(tǒng)啟動(dòng)級別的切換過程
[root@ittimeline ~]# runlevel
5 3
[root@ittimeline ~]# init 5
[root@ittimeline ~]# runlevel
3 5