Shell腳本基礎

来源:https://www.cnblogs.com/shy13138/archive/2019/08/06/11310422.html
-Advertisement-
Play Games

命令歷史: 查看已經使用過的命令 關於歷史命令的文件 每個用戶的家目錄下的./bash_history 在關機的時候,會自動寫入一次(history -r ) 手動寫入 關於歷史命令的變數(環境變數) env //查看環境變數 set //查看更詳細的環境變數參數 HISTSIZE=1000 //數 ...


命令歷史:

       查看已經使用過的命令

       關於歷史命令的文件

              每個用戶的家目錄下的./bash_history

              在關機的時候,會自動寫入一次(history -r ) 手動寫入

       關於歷史命令的變數(環境變數)

              env //查看環境變數

              set //查看更詳細的環境變數參數

              HISTSIZE=1000 //數量

              HISTCONTROL=ignoredups 忽略重覆的歷史命令

                                    ignorespace 忽略空白開頭的歷史命令

                                    ignoreboth  兩個都生效

       history的常見操作

              查看歷史命令

              !# #便是數值,執行#行的命令

              !String 匹配最近一次的字元串

              !!  上一條命令

              *!$*   上調命令的最後一個參數

                     ls /etc

                     ls !$

                     =esc .

命令補全

       TAB鍵

命令展開——date命令

       {}

       linux 的目錄需要遵循什麼規則?——FHS目錄規則

       屬性1     屬性2

       a     1

       b     2

       mkdir -pv /var/{a,b}-{1,2}

       date 基於date創建命令

                     %F  CCYY-mm-dd

                     %T hh:MM:ss

                     %H hh

                     %D mm/dd/YY

                     %M MM

                     %S ss

                     練習:通過for語句創建一個月的日誌文件 2019-08-06.log

                     touch `date %F`.log

                     for I in {1..30}:do

                            touch `date +%Y-%m-$i`.log

                     done

壓縮工具

       只能對文件壓縮,不能對目錄進行操作

       gzip

       bzip2

       xz9

              tar歸檔可以對目錄進行操作

              -j bzip2

              -J xz

              -z gzip

              -c create

              -x extract //可以不用指定解壓工具

              -f 指定文件名

              -v 顯示詳細信息 verbose

              -t 不解壓查看內容

              tar cjvf 2018-08-*.log.bz2 2018-08-*.log

              tar xvf 2018-08-*.log.bz2 -C abc

       練習:編寫腳本,每天2:20備份/etc/目錄中所有文件,名稱為當天日期;並且文件為壓縮文件

       crontab --20 2 * * * /root/xxx.sh

       vim xxx.sh

              #!/bin/bash

              #

              tar  cJvf /var/ `date +%F`.xz /etc/*

       chmod +x xxx.sh

       clock / hwclock 查看硬體時鐘  (如何同步系統與硬體時鐘)

       cal 日曆

命令的執行狀態

在Linux中,每一條命令執行後都會有兩個結果

              命令本身放回的內容

              其次,命令執行的結果狀態

$? 變數,就是用來存放命令執行狀態的變數:

       0     表示成功狀態

       1-255     表示失敗狀態

       [$? -eq0]&&exit0||exit1

命令快捷鍵:

       ctrl +I

       Ctrl +c

       Ctrl +u  //刪除游標前的字元

       Ctrl +k  //刪除游標後的字元

       Ctrl +a

       Ctrl +e

       Ctrl +w  //以空格為分隔符,去刪除文件

       Ctrl +r  //進入一個交互界面,搜索最近一次使用的命令

alias別名

              系統啟動時讀取一些特殊文件的順序

              alisa cdnet="cd /etc/sysconfig/network-scriptes/" //這種方式定義的alias只能在當前shell生效

              /etc/profile:定義環境變數(所有用戶)

              /etc/bashrc:定義本地變數--alias

              ~/.bash_profile:定義環境變數(指定用戶)

              ~/.bashrc:定義本地變數--alias(指定用戶)

文件通配符--globbing

       [文件通配符不是正則表達式]

       ?  --任意單個字元

       *  -- 任意長度的任意字元

       []  --指定範圍內的任意一個字元

       ^   --1:以什麼開頭

              2:【^】指定範圍之外的任意一個字元

                     【^0-9A-ZA-z】

                     【0-9】【a-z】【A-Z】【a-zA-Z】

 

作業:

       1.顯示/var目錄下所有以1開頭的,以小寫字母結尾,且中間出現至少一位數字的文件或目錄

              ls /var/1*[0-9]*[a-z]

       2.顯示/etc下,以任意一位數字開頭,且以非數字結尾的文件或目錄

              ls /etc/[^0-9]*[0-9]

       3.顯示/etc目錄下,以非字母開頭,後面跟了一個字母及其它任意長度任意字元的文件或目錄

              ls /etc/[^[:alpha:]][[:alpha:]]*

       4.複製/etc目錄下,所有以m開頭,以非數字結尾的文件或目錄至/tmp/test目錄中;

              cp /etc/m*[^0-9] /tmp/test

       5.複製/etc目錄下,所有以.d結尾的文件或目錄至/tmp/test.com目錄中

              cp /etc/*.d /tmp/test.com

       6.

       複製/etc目錄下,所有.conf結尾,且以m n r p開頭的文件或目錄至/tmp/test.com目錄中

              cp /etc/[mnrp]*.conf /tmp/test.com


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於C#是,Net框架的一部分,且用於編寫.Net應用程式,所以我們需先瞭解下C#與.Net框架之間的關係。 .Net框架(.Net Framework) .Net框架是一個創新的平臺,能幫你編寫出下麵類型的應用程式: Windows應用程式 Web應用程式 Web服務 .Net框架應用程式是多平臺 ...
  • 1. .Net Core的序列化方式 1.1 json.Net 常用的工具包,如Newtonsoft.Json, 它是基於json格式的序列化和反序列化的組件 json.net 有以下優點: 侵入性:可以不添加attribute,就能進行序列化操作 靈活性:可以靈活性配置,比如允許被序列化的成員自定 ...
  • 此方法針對的是在沒有顯示器(這裡說的顯示器為可以接受HDMI信號的顯示器,故不包括一般的筆記本顯示器)情況下如何設置樹莓派和網路連接 ...
  • 炎炎夏日中想和小伙伴們開黑的同學可以進來看一下了,本教程教你搭建基於兩個平臺的Minecraft伺服器,這裡我以Minecraft 1.11.2版本為例給大家講解搭建流程。其中有Forge版本可以加入mods。 一、Windows下的Minecraft純凈(無Forge)伺服器搭建 1.獲取伺服器文 ...
  • Linux標準的讀音:哩吶科斯 Linux是一種類UNIX的系統,具有以下特點: 1、免費開源 2、模塊化程度高 3、廣泛的硬體支持 4、安全穩定 5、多用戶,多任務(所以常應用於系統運維,以及合作開發) 6、良好的可移植性 man文件 man 命令 查看某個命令的用法 空格鍵:翻頁 q:退出,結束 ...
  • 最近因為公司的伺服器需要做基線和漏洞掃描,基線方面問題不大,按照報告上的加固建議,選一些權重高的問題處理一下就好了。但是漏洞掃描就比較坑了,掃出來了十幾個高危和一百六十多個中危漏洞,不過還好漏洞基本上都出在openSSH和mysql上,升級一下這兩個的版本就好了。因為是雲主機openSSH不敢亂動, ...
  • MODBUS功能碼簡介 代碼 中文名稱 位操作/字操作 操作數量 01h 讀線圈狀態 位操作 單個或多個 02h 讀離散輸入狀態(只能讀到0或1) 位操作 單個或多個 03h 讀保持寄存器(保持寄存器可以通過06h功能寫入) 字操作 單個或多個 04h 讀輸入寄存器(輸入寄存器只能讀取,不能通過06 ...
  • 轉自:https://blog.csdn.net/sinat_29957455/article/details/89036005 在使用apt-get安裝程式的時候報: E: 無法打開鎖文件 /var/lib/dpkg/lock-frontend - open (2: 沒有那個文件或目錄)E: Un ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...