shell腳本介紹


一、編程語言介紹

編程語言是指計算機能理解的語言,人類通過使用計算機語言可以給計算機批量下達任務,讓其按照人類的思想去完成工作。最常見的語言有:匯編語言、C語言、java語言、php語言、Python語言、golang語言等等。

編程語言分類:

  • 編譯型語言
    程序在執行之前需要一個專門的編譯過程,把程序編譯成為機器語言文件,運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平台性差些。如C、C++、java
  • 解釋型語言
    程序不需要編譯,程序在運行時由解釋器翻譯成機器語言,每執行一次都要翻譯一次。因此效率比較低。比如Python/JavaScript/ Perl /ruby/Shell等都是解釋型語言。

二、shell介紹

shell在計算機中起到什么作用呢?為什么要求shell呢,我們可以看看計算機操作系統的組成:

OS分層.png

看圖之前問大家個問題,兩個人在電話聊天:只會說法語的法國人,只會說漢語的你。如何溝通呢?

請個翻譯在你兩中間

同理,系統內核只知道二進制

如果你想給計算機內核下任務,讓其驅動硬件干活,那么有兩種選擇

1、你學會二進制

2、找個翻譯

1、shell介紹

shell就是我們找來的翻譯

shell是一個程序,采用C語言編寫,是用戶和linux內核溝通的橋梁。它既是一種命令語言,又是一種解釋性的編程語言。通過一個圖表來查看一下shell的作用。

00_shell.png

2、bash shell基本特性

知己知彼方可百戰百勝,如何應用Bash shell,我們先看看他的特性,有助於我們快速應用。

2.1、 命令和文件自動補全

Tab只能補全命令和文件 (RHEL6/Centos6)

2.2、 常見的快捷鍵—提升操作熟練度

^c    終止前台運行的程序
^z    將前台運行的程序掛起到后台
^d    退出 等價exit
^l    清屏 
^a |home   光標移到命令行的最前端
^e |end   光標移到命令行的后端
^u    刪除光標前所有字符
^k    刪除光標后所有字符
^r   搜索歷史命令

3、shell腳本介紹

shell腳本是什么

簡單來說就是將需要完成某個任務所執行的命令按照執行順序保存到文本中,並給予執行權限。

                                                 shell腳本精髓 學會60%

按照順序執行。

它是解釋型的,意味着不需要編譯。

准確來說

若干命令 + 腳本的基本格式 + 腳本特定語法 + 思想= shell腳本

腳本命令演示
創建一個用戶:harry     useradd harry
密碼設置為:yunwei.98989 echo "yunwei.98989"|passwd --stdin harry
該用戶創建文件夾/tmp/zutuanxue   mkdir /tmp/zutuanxue
該用戶創建文件/tmp/zutuanxue/README  touch /tmp/zutuanxue/README
將“hello world“輸入到/tmp/zutuanxue/README  echo 'hello world' > /tmp/zutuanxue/README

實現代碼 01_task.sh
#!/bin/bash

#DESC: this is a test script 
#AUTHOR: Bai Shuming
#RELEASE: 1.0

#main 

#創建用戶harry
useradd harry

#設置用戶密碼 yunwei.98989
echo "yunwei.98989"|passwd --stdin harry


#使用harry創建文件夾,文件,輸入文件中內容
su - harry -c "mkdir /tmp/zutuanxue"
su - harry -c "touch /tmp/zutuanxue/README"
su - harry -c "echo 'hello world' > /tmp/zutuanxue/README"

什么時候用到腳本?

重復化、復雜化的工作,通過把工作的命令寫成腳本,以后僅僅需要執行腳本就能完成這些工作。

①自動化分析處理

②自動化備份

③自動化批量部署安裝

④等等…

如何學習shell腳本?

盡可能記憶更多的命令

掌握腳本的標准的格式(指定魔法字節、使用標准的執行方式運行腳本)

必須熟悉掌握腳本的基本語法(重點)

學習腳本的秘訣:

多看(看懂)——>多模仿(多練)——>多思考

4、shell腳本語法

來吧,光說不練嘴把式,我們來看看如何書寫一個腳本呢,寫好一個腳本有哪些規范呢?

  • shell腳本組成

shell程序組成.png

  • 腳本命名
    nginx_install.sh 腳本名稱 腳本擴展名 .sh
    名字不要太長 26個字節內
  • 代碼規范:
1、#!/bin/bash
//腳本第一行, #!魔法字符,指定腳本代碼執行的程序。即它告訴系統這個腳本需要什么解釋器來執行,也就是使用
哪一種Shell

2、#代表注釋,#!特例 

3、//以下內容是對腳本的基本信息的描述,大家可以根據實際情況盡可能的寫詳細一些,方便后續使用者
# Name: 腳本名字
# Desc:描述describe
# Path:存放路徑
# Usage:用法
# Update:更新時間
# Author:作者
# Release: 分發版本

//下面就是腳本的具體內容
commands
...
  • 腳本執行方法:
    – 標准腳本執行方法(建議):
[root@zutuanxue shell01]# cat 1.sh 
#!/bin/bash
#xxxx
#xxx
#xxx
hostname
date
[root@zutuanxue shell01]# chmod +x 1.sh 
[root@zutuanxue shell01]# ll
total 4
-rwxr-xr-x 1 root root 42 Jul 22 14:40 1.sh
[root@zutuanxueshell01]# /shell/shell01/1.sh 
zutuanxue
Sun Jul 22 14:41:00 CST 2018
[root@zutuanxue shell01]# ./1.sh 
zutuanxue
Sun Jul 22 14:41:30 CST 2018

– 非標准的執行方法(不建議):

[root@zutuanxue shell01]# bash 1.sh 
zutuanxue
Sun Jul 22 14:42:51 CST 2018
[root@zutuanxue shell01]# sh 1.sh
zutuanxue
Sun Jul 22 14:43:01 CST 2018
[root@zutuanxue shell01]# 
[root@zutuanxue shell01]# bash -x 1.sh
+ hostname
zutuanxue
+ date
Sun Jul 22 14:43:20 CST 2018

-x:一般用於排錯,查看腳本的執行過程
-n:用來查看腳本的語法是否有問題

注意:如果腳本沒有加可執行權限,不能使用標准的執行方法執行,bash 1.sh

其他:
[root@zutuanxueshell01]# source 2.sh
server
Thu Nov 22 15:45:50 CST 2018
[root@zutuanxue shell01]# . 2.sh
server
Thu Nov 22 15:46:07 CST 2018

source 和 . 表示讀取文件,執行文件里的命令

– 命令式腳本執行方法:

定義命令路徑變量  PATH
PATH=$PATH:腳本路徑

備注:腳本必須給執行權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM