今天開始學習,開始做筆記,希望自己能堅持下去 參考鏈接:https://www.linuxprobe.com/chapter-04.html vim編輯器 Linux系統中通用的文本編輯器 vi的升級版本:著色 三種模式 命令模式:控制游標移動,文本複製、粘貼、刪除等操作 輸入模式:輸入文本信息 末 ...
今天開始學習,開始做筆記,希望自己能堅持下去
參考鏈接:https://www.linuxprobe.com/chapter-04.html
vim編輯器
Linux系統中通用的文本編輯器
vi的升級版本:著色
三種模式
命令模式:控制游標移動,文本複製、粘貼、刪除等操作
輸入模式:輸入文本信息
末行模式:保存或退出文檔,以及設置編輯環境
模式切換
i |
在游標前插入 |
I |
定位到行首插入 |
o(小寫) |
在游標所在行下一行插入 |
O(大寫) |
在游標所在行上一行插入 |
a |
在游標後插入 |
A |
在行尾插入 |
常用命令
命令模式
移動
h/← |
向左移動 |
l/→ |
向右移動 |
j/↑ |
向下移動 |
k/↑ |
向上移動 |
5j |
向下移動5行 |
0/^ |
移動到行首 |
$ |
移動到行尾 |
gg |
定位到首行 |
G |
定位到尾行 |
50G |
定位到50行 |
刪除
x(小寫) |
向後刪除一個字元 |
X(大寫) |
向前刪除一個字元 |
dd |
刪除(剪切)游標所在整行 |
5dd |
刪除(剪切)從游標處開始的5行 |
複製
yy |
複製游標所在整行 |
nyy |
複製游標所在n行 |
粘貼
p | 將之前刪除(dd)或複製(yy)過的數據粘貼到游標後面 |
翻頁
Ctrl+b/pageup |
向前翻頁 |
Ctrl+f/pagedown |
向後翻頁 |
撤銷
u |
撤銷上一步操作 |
查詢
n | 顯示搜索命令定位到的下一個字元串 |
N |
顯示搜索命令定位到的上一個字元串 |
末行模式
命令 | 作用 |
:w | 保存 |
:q | 退出 |
:q! | 強制退出(放棄對文檔的修改內容) |
:wq! | 強制保存退出 |
:set nu | 顯示行號 |
:set nonu | 不顯示行號 |
:命令 | 執行該命令 |
:整數 | 跳轉到該行 |
:s/one/two | 將當前游標所在行的第一個one替換成two |
:s/one/two/g | 將當前游標所在行的所有one替換成two |
:%s/one/two/g | 將全文中的所有one替換成two |
?字元串 | 從游標處向前搜索該字元串 |
/字元串 | 從游標處向後搜索該字元串 |
vim實驗
1.vim practice.txt
2.配置主機名稱
3.配置網卡信息
4.配置yum倉庫
2.shell腳本
簡單腳本
[root@localhost ~]# cat example.sh
[root@linuxprobe ~]# bash example.sh
/root/Desktop
total 8
drwxr-xr-x. 2 root root 23 Jul 23 17:31 .
dr-xr-x---. 14 root root 4096 Jul 23 17:31 ..
-rwxr--r--. 1 root root 55 Jul 23 17:31 example.sh
接受用戶參數
$0 |
當前shell腳本的名稱 |
$# |
總共有多少個參數 |
$* |
所有位置的參數值 |
$? |
顯示上一次命令的執行返回值 |
$n |
第n個參數 |
[root@linuxprobe ~]# vim example.sh
判斷用戶的參數
文件測試語句
返回值為0則為真,1則為假
-d | 測試文件是否為目錄類型 |
-e | 測試文件是否存在 |
-f | 判斷是否為一般文件 |
-r | 測試當前用戶是否有許可權讀取 |
-w | 測試當前用戶是否有許可權寫入 |
-x | 測試當前用戶是否有許可權執行 |
[root@linuxprobe ~]# [ -d /etc/fstab ]
[root@linuxprobe ~]# echo $?
1
邏輯測試語句
&&:當前面的命令執行成功後才會執行後面的命令
||:當前面的命令執行失敗後才會執行後面的命令
!:把條件測試中的判斷結果取反
[root@linuxprobe ~]# [ $USER != root ] && echo "user" || echo "root"
root
先判斷當前登錄用戶的USER變數名稱是否等於root,然後用邏輯運算符“非”進行取反操作,效果就變成了判斷當前登錄的用戶是否為非管理員用戶了。最後若條件成立則會根據邏輯“與”運算符輸出user字樣;或條件不滿足則會通過邏輯“或”運算符輸出root字樣,而如果前面的&&不成立才會執行後面的||符號。
整數值比較語句
-eq | 是否等於 |
-ne | 是否不等於 |
-gt | 是否大於 |
-lt | 是否小於 |
-le | 是否等於或小於 |
-ge | 是否大於或等於 |
字元串比較語句
= | 比較字元串內容是否相同 |
!= | 比較字元串內容是否不同 |
-z | 判斷字元串內容是否為空 |
流程式控制制語句
if條件測試語句
[root@linuxprobe ~]# vim mkcdrom.sh
判斷/media/cdrom文件是否存在,若存在就結束條件判斷和整個Shell腳本,反之則去創建這個目錄
[root@linuxprobe ~]# vim chkhost.sh
使用雙分支的if條件語句來驗證某台主機是否線上,然後根據返回值的結果,要麼顯示主機線上信息,要麼顯示主機不線上信息。這裡的腳本主要使用ping命令來測試與對方主機的網路聯通性,而Linux系統中的ping命令不像Windows一樣嘗試4次就結束,因此為了避免用戶等待時間過長,需要通過-c參數來規定嘗試的次數,並使用-i參數定義每個數據包的發送間隔,以及使用-W參數定義等待超時時間。
[root@linuxprobe ~]# vim chkscore.sh
使用多分支的if條件語句來判斷用戶輸入的分數在哪個成績區間內,然後輸出如Excellent、Pass、Fail等提示信息。在Linux系統中,read是用來讀取用戶輸入信息的命令,能夠把接收到的用戶輸入信息賦值給後面的指定變數,-p參數用於向用戶顯示一定的提示信息。在下麵的腳本示例中,只有當用戶輸入的分數大於等於85分且小於等於100分,才輸出Excellent字樣;若分數不滿足該條件(即匹配不成功),則繼續判斷分數是否大於等於70分且小於等於84分,如果是,則輸出Pass字樣;若兩次都落空(即兩次的匹配操作都失敗了),則輸出Fail字樣
for條件迴圈語句
[root@linuxprobe ~]# vim Example.sh
編寫Shell腳本Example.sh。在腳本中使用read命令讀取用戶輸入的密碼值,然後賦值給PASSWD變數,並通過-p參數向用戶顯示一段提示信息,告訴用戶正在輸入的內容即將作為賬戶密碼。在執行該腳本後,會自動使用從列表文件users.txt中獲取到所有的用戶名稱,然後逐一使用“id 用戶名”命令查看用戶的信息,並使用$?判斷這條命令是否執行成功,也就是判斷該用戶是否已經存在。
需要多說一句,/dev/null是一個被稱作Linux黑洞的文件,把輸出信息重定向到這個文件等同於刪除數據(類似於沒有回收功能的垃圾箱),可以讓用戶的屏幕視窗保持簡潔
while條件迴圈語句
[root@linuxprobe ~]# vim Guess.sh
使用多分支的if條件測試語句與while條件迴圈語句,編寫一個用來猜測數值大小的腳本Guess.sh。該腳本使用$RANDOM變數來調取出一個隨機的數值(範圍為0~32767),將這個隨機數對1000進行取餘操作,並使用expr命令取得其結果,再用這個數值與用戶通過read命令輸入的數值進行比較判斷。這個判斷語句分為三種情況,分別是判斷用戶輸入的數值是等於、大於還是小於使用expr命令取得的數值。當前,現在這些內容不是重點,我們當前要關註的是while條件迴圈語句中的條件測試始終為true,因此判斷語句會無限執行下去,直到用戶輸入的數值等於expr命令取得的數值後,這兩者相等之後才運行exit 0命令,終止腳本的執行。
case條件測試語句
[root@linuxprobe ~]# vim Checkkeys.sh
計劃任務服務程式
[root@linuxprobe ~]# at 23:30
at > systemctl restart httpd
at > #此處請同時按下Ctrl+d來結束編寫計劃任務
job 3 at Mon Apr 27 23:30:00 2015
[root@linuxprobe ~]# at -l
3 Mon Apr 27 23:30:00 2016 a root
一次性計劃任務只執行一次,一般用於滿足臨時的工作需求。我們可以用at命令實現這種功能,只需要寫成“at 時間”的形式就可以。如果想要查看已設置好但還未執行的一次性計劃任務,可以使用“at -l”命令;要想將其刪除,可以用“atrm 任務序號”。在使用at命令來設置一次性計劃任務時,預設採用的是互動式方法。例如,使用上述命令將系統設置為在今晚23:30分自動重啟網站服務。
-
前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 開源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果覺得寫的還行,請點個 star 支持一下吧 歡迎前來交流探討: 企鵝群568015492 目錄 ...
-
上次使用別人打包好的docker鏡像,往裡邊加入文件,最終asp.net的docker容器化運行。 這次決定直接全新打包一個jexus+asp.net網站的docker包。 進入root目錄,併在root目錄下建立一個名稱為docker的目錄作為我們這次打包項目的基礎目錄。 首先準備.Net運行環境 ...
-
如何選gcc包,避免安裝不需要的包 Cygwin讀音:/ˈsɪɡwɪn/ 參考:http://blog.sina.com.cn/s/blog_143cf62360102wrgd.html。 gcc官網沒有提供windows平臺的二進位文件,只提供源碼,官方推薦windows下要用Gcc需使用cygw ...
-
1、移除舊版本: yum remove docker \ docker-client \ docker-client-latest \ docker-common \ ... ...
-
首先是LRU的定義,LRU表示最近最少使用,如果數據最近被訪問過,那麼將來被訪問的幾率也更高。 所以邏輯應該是每次都要將新被訪問的頁放到列表頭部,如果超過了list長度限制,就將列表尾部的元素踢出去。 主要結構,STL中的雙向鏈表結構list。 主要操作有get,表示訪問key對應的value,此時 ...
-
關機:halt/poweroff :立刻關機reboot :立刻重啟 shutdown -r now :立刻重啟shutdown -h 00:00 :定時重啟 now:立刻shutdown -h +num :num分鐘後重啟shutdown -c :取消命令sync :系統文件同步,關機將記憶體問價存 ...
-
Installation of the latest version of netease-cloud-music on Fedora 30 linux platform Abtract As we know, netease company pushed debian-based version ...
-
題目如下: 求最後的輸出結果: 這道題當時沒分清楚,太菜了,結果應該這樣推出來, 首先弄清楚fork()返回值,在父進程中是一個非0數,子進程中則是0, 所以pid1可以分為兩類值非0和0, (1)pid1非0,pid2同理有兩種取值,0或者非0, (2)pid1為0,表示是子進程,則pid2同樣是 ...