Linux運維必須掌握的Shell-o技巧

一、快速查找命令行歷史記錄

在日常運維工作中,我們經常需要重複執行某個命令或者查找之前執行過的命令,這時就可以使用history命令來查看命令行歷史記錄。

$ history
1  ls
2  cd /var/log
3  tail -f messages
4  vi /etc/nginx/nginx.conf
5  systemctl restart nginx
6  history

上述命令表示我們執行了6個命令,我們可以使用!加上命令序號來執行某個命令:

$ !4

上述命令表示執行第4個命令,也就是編輯nginx配置文件。同時,我們也可以使用Ctrl+R來快速查找之前執行過的命令。

二、使用重定向來保存命令執行結果

在運維工作中,我們經常需要將命令執行的結果保存下來,例如將日誌輸出到文件,或者將命令行輸出以郵件方式發送等。這時就可以使用重定向來處理。

1、將命令執行結果輸出到文件:

$ ls > list.txt

上述命令表示將當前目錄下的文件列表輸出到list.txt文件中。

2、將日誌輸出到文件:

$ tail -f /var/log/messages > messages.log

上述命令表示將消息日誌輸出到messages.log文件中。

3、將命令行輸出以郵件方式發送:

$ uptime | mail -s "System Load" user@example.com

上述命令表示將系統負載輸出以郵件方式發送給user@example.com。

三、使用通配符來匹配文件名

在Linux系統中,通配符可以用來匹配文件名,讓我們可以快速地查找到符合條件的文件。

1、匹配單個字符:
?表示任意單個字符。

$ ls /var/log/messag?

上述命令表示查找/var/log目錄下的messages、message1、message2等文件。

2、匹配任意多個字符:
*表示任意多個字符(包括0個字符)。

$ ls /var/log/message*

上述命令表示查找/var/log目錄下的message、messages、message1、message2等文件。

3、使用中括號[]匹配指定範圍的字符:
[a-z]表示匹配a到z中的任意一個字符;
[0-9]表示匹配數字0到9中的任意一個字符。

$ ls /var/log/message[1-9]

上述命令表示查找/var/log目錄下的message1、message2、message3等文件,但不包括message文件。

四、使用管道來組合命令

在Linux系統中,我們可以使用管道(|)來將一個命令的標準輸出作為下一個命令的標準輸入,這使得我們可以將多個命令組合在一起,實現更為複雜的操作。

1、結合grep命令來查找指定文本:

$ cat /var/log/messages | grep "error"

上述命令表示查找messages文件中包含error的行。同樣,我們也可以結合其他命令來進行查找和處理。

2、結合awk命令來對文本進行處理:

$ ps -ef | awk '{print $1,$2,$8}'

上述命令表示查看進程信息,並且只輸出進程的用戶、PID和命令名。

3、結合sort命令來排序:

$ ls -l /var/log/ | sort -k 5

上述命令表示查看/var/log目錄下的文件,按文件大小進行排序。

五、使用cron定時執行任務

cron是Linux系統中的一個定時任務工具,可以幫助我們定期執行一些任務,例如備份數據、清理日誌等。

1、編輯cron定時任務:

$ crontab -e

上述命令表示編輯當前用戶的cron定時任務,編輯完成後保存退出即可。

2、cron定時任務格式說明:
* * * * * command
其中,星號*表示任意時間,分別對應分鐘、小時、日、月、星期幾,command表示要執行的命令。

3、添加cron定時任務:

# 清理30天前的日誌文件
0 0 * * * find /var/log -name "*.log" -mtime +30 | xargs rm -f

上述命令表示每天0點定時執行,清理30天前的日誌文件。

# 每周六備份數據庫
0 0 * * 6 mysqldump -u root -p123456 -h localhost testdb > /backup/testdb_$(date +%Y%m%d).sql

上述命令表示每周六0點定時執行,備份testdb數據庫。

六、使用變量來簡化命令

在Linux系統中,我們經常需要執行一些重複的、繁瑣的命令,例如某個目錄下的文件名列表、某個命令的輸出等,這時我們可以使用變量來簡化命令。

1、定義變量:

$ DIR=/var/log/

上述命令表示定義變量DIR為/var/log/。

2、查看變量的值:

$ echo $DIR

上述命令表示輸出變量DIR的值。

3、發送郵件時使用變量:

$ uptime | mail -s "System Load" $USER

上述命令表示將系統負載以郵件方式發送給當前用戶。

七、使用函數來複用代碼

在Linux系統中,我們可以使用函數來複用代碼,避免重複編寫相同的代碼。

1、定義函數:

$ hello() {
    echo "Hello, $1!"
}

上述命令表示定義函數hello,接收一個參數,並輸出“Hello, 參數值!”。

2、調用函數:

$ hello world

上述命令表示調用函數hello,參數為world,輸出“Hello, world!”。

3、函數可以在shell腳本中復用:

#!/bin/bash

hello() {
    echo "Hello, $1!"
}

hello world

上述命令表示定義一個shell腳本,在其中調用函數hello並傳遞參數world。

八、使用條件語句和循環語句來控制流程

在Linux系統中,我們可以使用條件語句和循環語句來控制程序流程,實現更複雜的操作。

1、if語句:

#!/bin/bash

if [ $1 -gt 10 ]
then
    echo "$1 is greater than 10"
else
    echo "$1 is less than or equal to 10"
fi

上述命令表示定義一個shell腳本,在其中使用if語句判斷參數是否大於10,並輸出結果。

2、for循環:

#!/bin/bash

for i in {1..5}
do
    echo "Count: $i"
done

上述命令表示定義一個shell腳本,在其中使用for循環輸出數字1到5。

3、while循環:

#!/bin/bash

i=1
while [ $i -le 5 ]
do
    echo "Count: $i"
    i=$((i+1))
done

上述命令表示定義一個shell腳本,在其中使用while循環輸出數字1到5。

九、總結

本文介紹了Linux運維必須掌握的Shell-o技巧,包括快速查找命令行歷史記錄、使用重定向來保存命令執行結果、使用通配符來匹配文件名、使用管道來組合命令、使用cron定時執行任務、使用變量來簡化命令、使用函數來複用代碼以及使用條件語句和循環語句來控制流程。這些技巧都是運維工程師必備的工具,能夠幫助我們更快、更高效地完成工作。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/241022.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:25
下一篇 2024-12-12 12:25

相關推薦

  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟件開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟件開發中,UML圖是必不可少的重要工具之一。它為軟件架構和各種設計模式的…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • 優秀周記1000字的撰寫思路與技巧

    優秀周記是每個編程開發工程師記錄自己工作生活的最佳方式之一。本篇文章將從周記的重要性、撰寫思路、撰寫技巧以及周記的示例代碼等角度進行闡述。 一、周記的重要性 作為一名編程開發工程師…

    編程 2025-04-28
  • Shell嵌入式介紹及應用

    本文將介紹Shell嵌入式的概念、特點和應用,並針對嵌入式系統開發中的一些問題,給出相應的解決方案。 一、Shell嵌入式概念 Shell嵌入式是一種將Shell(命令行解釋器)嵌…

    編程 2025-04-28
  • Python Shell保存PY文件的方法

    Python Shell是一種交互式編程環境,它能夠快速驗證代碼實現。有時,為了將代碼保存到文件中,我們需要了解如何在Python Shell中保存Python文件。本文將從多個方…

    編程 2025-04-27
  • Shell和Python哪個難學

    Python比Shell更難學習。 一、語法複雜度 Shell腳本是一種受眾較為廣泛的編程語言,它的語法相對於Python來說要簡單很多,很多基本的語句都只需要幾個字符就能表示出來…

    編程 2025-04-27
  • 堆疊圖配色技巧分享

    堆疊圖是數據可視化中常用的一種表現形式,而配色則是影響堆疊圖觀感和傳達信息的重要因素之一。本文將分享一些堆疊圖配色的技巧,幫助你創造更好的數據可視化。 一、色彩搭配原則 色彩是我們…

    編程 2025-04-27
  • 使用uring_cmd提高開發效率的技巧

    對於編程開發工程師來說,提高效率一直是致力追求的目標。本文將深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一個非常強大的命令行工具,但是大部…

    編程 2025-04-27
  • 通信專業Python和Java的開發技巧

    本文旨在介紹通信專業Python和Java的開發技巧,為讀者提供實用且可操作的思路和方法。 一、Python在通信領域中的應用 Python是一種優秀的程序設計語言,因其易學易用、…

    編程 2025-04-27
  • 前端引用字體的實現方法和技巧

    對於前端開發人員而言,字體關系著網站的整體美觀度和用戶體驗。為了滿足客戶,開發人員經常需要引用特定的字體。在這篇文章中,我們將會詳細解決前端引用字體的實現方法和技巧。 一、字體引用…

    編程 2025-04-27

發表回復

登錄後才能評論