Linux運維之旅第五天(2023年5月9日)

2021-10-05 23:20:58 字數 3194 閱讀 9550

今天是學習linux作業系統的第五天,在此做乙個簡短的小結吧:

1、什麼是vim編輯器?

在linux系統中一切都是檔案,而配置乙個服務就是在修改其配置檔案的引數」。而且在日常工作中大家也肯定免不了要編寫文件,這些工作都是通過文字編輯器來完成的。我們這裡選擇使用vim文字編輯器,它缺省會安裝在當前所有的linux作業系統上,是一款超棒的文字編輯器。

vim之所以能得到廣大廠商與使用者的認可,原因在於vim編輯器中設定了三種模式—命令模式、末行模式和編輯模式,每種模式分別又支援多種不同的命令快捷鍵,這大大提高了工作效率,而且使用者在習慣之後也會覺得相當順手。要想高效率地操作文字,就必須先搞清這三種模式的操作區別以及模式之間的切換方法:

在每次執行vim編輯器時,預設進入命令模式,此時需要先切換到輸入模式後再進行文件編寫工作,而每次在編寫完文件後需要先返回命令模式,然後再進入末行模式,執行文件的儲存或退出操作。在vim中,無法直接從輸入模式切換到末行模式

末行模式主要用於儲存或退出檔案,以及設定vim編輯器的工作環境,還可以讓使用者執行外部的linux命令或跳轉到所編寫文件的特定行數。要想切換到末行模式,在命令模式中輸入乙個冒號就可以了

2、編寫shell指令碼

可以將shell終端直譯器當作人與計算機硬體之間的「翻譯官」,它作為使用者與linux系統內部的通訊媒介,除了能夠支援各種變數與引數外,還提供了諸如迴圈、分支等高階程式語言才有的控制結構特性。要想正確使用shell中的這些功能特性,準確下達命令尤為重要shell指令碼命令的工作方式有兩種:互動式和批處理

互動式(interactive):使用者每輸入一條命令就立即執行

批處理(batch):由使用者事先編寫好乙個完整的shell指令碼,shell會一次性執行指令碼中諸多的命令

在shell指令碼中不僅會用到前面學習過的很多linux命令以及正規表示式、管道符、資料流重定向等語法規則,還需要把內部功能模組化後通過邏輯語句進行處理,最終形成日常所見的shell指令碼

例子①#!/bin/bash

#for example by linuxprobe.com

pwdls -al

shell指令碼檔案的名稱可以任意,但為了避免被誤以為是普通檔案,建議將.sh字尾加上,以表示是乙個指令碼檔案。在上面的這個指令碼中實際上出現了三種不同的元素:第一行的指令碼宣告(#!)用來告訴系統使用哪種shell直譯器來執行該指令碼;第二行的注釋資訊(#)是對指令碼功能和某些命令的介紹資訊,使得自己或他人在日後看到這個指令碼內容時,可以快速知道該指令碼的作用或一些警告資訊;第

三、四行的可執行語句也就是我們平時執行的linux命令了

例子②接收使用者的引數

但是,像上面這樣的指令碼程式只能執行一些預先定義好的功能,未免太過死板了。為了讓shell指令碼程式更好地滿足使用者的一些實時需求,以便靈活完成工作,必須要讓指令碼程式能夠像之前執行命令時那樣,接收使用者輸入的引數。

其實,linux系統中的shell指令碼語言早就考慮到了這些,已經內設了用於接收引數的變數,變數之間可以使用空格間隔。例如0對應

的是當前

shel

l指令碼程

序的名稱

,0對應的是當前shell指令碼程式的名稱,

0對應的是當

前she

ll指令碼

程式的名

稱,#對應的是總共有幾個引數,∗對應

的是所有

位置的參

數值,*對應的是所有位置的引數值,

∗對應的是所

有位置的

引數值,

?對應的是顯示上一次命令的執行返回值,而$1、$2、$3……則分別對應著第n個位置的引數值

[root@mylinux ~]# vim example.sh

#!/bin/bash

echo 「當前指令碼名稱為0"e

cho"

總共有0" echo "總共有

0"echo

"總共有

#個引數,分別是$*。」

echo 「第1個引數為$1,第5個為$5。」

[root@mylinux ~]# sh example.sh one two three four five six

當前指令碼名稱為example.sh

總共有6個引數,分別是one two three four five six。

第1個引數為one,第5個為five

例子③判斷使用者的引數

學習是乙個登堂入室、由淺入深的過程。在學習完linux命令、掌握shell指令碼語法變數和接收使用者輸入的資訊之後,就要踏上新的高度—能夠進一步處理接收到的使用者引數。

在本書前面章節中講到,系統在執行mkdir命令時會判斷使用者輸入的資訊,即判斷使用者指定的資料夾名稱是否已經存在,如果存在則提示報錯;反之則自動建立。shell指令碼中的條件測試語法可以判斷表示式是否成立,若條件成立則返回數字0,否則便返回其他隨機數值

按照測試物件來劃分,條件測試語句可以分為4種:

檔案測試語句

邏輯測試語句

整數值比較語句

字串比較語句

邏輯語句用於對測試結果進行邏輯分析,根據測試結果可實現不同的效果。例如在shell終端中邏輯「與」的運算符號是&&,它表示當前面的命令執行成功後才會執行它後面的命令,因此可以用來判斷/dev/cdrom檔案是否存在,若存在則輸出exist字樣

[root@mylinux ~]# [ -e /dev/cdrom ] && echo 「exist」

exist

測試一下8是否大於8以及8是否等於8(通過輸出的返回值內容來判斷)

[root@mylinux ~]# [ 8-gt 8]

[root@mylinux ~]# echo $?

1[root@mylinux ~]# [ 8-eq 8]

[root@mylinux ~]# echo $?

0最後附上幾張吧!

linux學習第五天

計算機只會識別0和1,那我們要和計算機進行互動就要用到shell shell命令的解釋官 shell會把我們的命令解釋為linux核心的可以執行的二進位制 並執行返回在標準終端上 linux是可以高度的定製的系統 別名系統 管道 命令1 命令2 命令1的輸出作為命令二的操作物件 輸出 echo 重要...

linux的第五天

今天開始了vim和shell的學習。剛學開始命令綜合應用層面上的學習啦對於之前沒有學習linux,很多東西都是新新的定義 linux系統中的一切都是檔案 部署乙個服務,就是在修改服務的配置 vim文字編輯器 該編輯器主要有三個模式 命令模式 可對檔案進行複製,貼上刪除和查詢,每次執行vim編輯器時都...

國慶第五天

直接在寢室待了乙個上午 一 matlab 試了一下昨天安裝的matlab2010b發現檔案都打不開,報這個錯 undefined function or method uiopen for input arguments of type char 二 c 1.找到了個之前 裡的乙個問題 把本週開頭和...