自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用 Shell 腳本自動(dòng)化命令的五種方法

開(kāi)發(fā) 前端
Shell 編寫(xiě)由 UNIX 終端執(zhí)行的命令序列。 這意味著您可以使用它們與命令行界面 (CLI) 進(jìn)行交互,甚至可以編寫(xiě)自己的邏輯。 本文將向您展示如何使用簡(jiǎn)單的 shell 腳本作為您自己的 CLI。

當(dāng)您的計(jì)算機(jī)可以為您完成時(shí),不要浪費(fèi)時(shí)間記住長(zhǎng)命令。

本文使用的是 MacOS

Shell 編寫(xiě)由 UNIX 終端執(zhí)行的命令序列。 這意味著您可以使用它們與命令行界面 (CLI) 進(jìn)行交互,甚至可以編寫(xiě)自己的邏輯。 本文將向您展示如何使用簡(jiǎn)單的 shell 腳本作為您自己的 CLI。

Shell 腳本的用例

  • 縮短長(zhǎng) CLI 函數(shù)
  • 運(yùn)行多個(gè)連續(xù)函數(shù)
  • 實(shí)現(xiàn)邏輯以確定要執(zhí)行的適當(dāng)命令

制作 bin 目錄

如果您希望能夠從任何地方運(yùn)行您的腳本,那么好消息,您可以!

基于 UNIX 的操作系統(tǒng)(例如 MacOS 和 Linux)會(huì)將位于 ~/bin 目錄中的所有 shell 腳本納入范圍。

通過(guò)在終端中運(yùn)行以下命令來(lái)檢查您是否擁有它。

$ [[ -d ~/bin ]] && echo "Directory ~/bin exists." || echo "Directory ~/bin does not exist"

如果你沒(méi)有這個(gè)文件夾,你的終端會(huì)回復(fù)“目錄~/bin 不存在”。

如果您收到此消息,請(qǐng)運(yùn)行命令 mkdir ~/bin。

示例 1:Hello World

讓我們從一個(gè)基本腳本開(kāi)始,以幫助您掌握它!

在您的終端中,執(zhí)行以下命令:

$ cd ~/bin
$ touch hello
$ chmod 777 hello

這會(huì)將您的終端移動(dòng)到 bin 作為您的工作目錄,創(chuàng)建一個(gè)名為 hello 的文件,并授予它作為可執(zhí)行文件運(yùn)行的權(quán)限。 在您選擇的代碼編輯器中打開(kāi)文件。

#!/bin/bash
echo "World!"

注意:#!/bin/bash 告訴您的設(shè)備將文件作為 bash 腳本運(yùn)行,沒(méi)有它腳本將無(wú)法運(yùn)行。

現(xiàn)在讓我們運(yùn)行文件!

如您所見(jiàn),我可以從計(jì)算機(jī)上的任何目錄運(yùn)行腳本!

示例 2:引入?yún)?shù)

既然我們已經(jīng)掌握了基礎(chǔ)知識(shí),那么在進(jìn)入我一直使用的腳本之前,讓我們看一下稍微復(fù)雜一點(diǎn)的 hello world 版本!

Shell 腳本保留了變量名稱(chēng),例如 $1、$2、$3 等。這些是命令行參數(shù)的替身。 讓我們?cè)谖覀兊?hello 腳本中使用它們,如下所示:

#!/bin/bash
echo "hello $1"

讓我們將這個(gè)概念應(yīng)用到一個(gè)真實(shí)的例子中。

許多使用 Java 編碼的人可能都知道,您必須先將 .java 文件編譯為 .class 才能運(yùn)行它,這是兩個(gè)單獨(dú)的命令。 讓我們制作一個(gè) shell 腳本,將它們組合成一個(gè)“編譯并運(yùn)行”命令!

如果您在創(chuàng)建新腳本時(shí)需要幫助,可以跳回 hello world 步驟。 我將此文件稱(chēng)為“javab”

#!/bin/bash
javac $1 # compile to .class
/bin/java ${1:-5} # point to local java function, run

示例 3:縮短現(xiàn)有命令

如果你之前用過(guò)FFmpeg壓縮過(guò)視頻文件,你就會(huì)知道這個(gè)命令并不短,而且通常每一步都很難記住。 這是一個(gè)使用 25 的恒定速率因子 (CRF) 的示例。

ffmpeg -i file.mov -vcodec libx264 -crf 25 newfile.mp4

這是我經(jīng)常運(yùn)行的命令,用于壓縮 mac 屏幕錄制并將其轉(zhuǎn)換為 mp4。 讓我們嘗試使用 shell 腳本來(lái)簡(jiǎn)化它!

如果你沒(méi)有安裝 FFmpeg,你可以在這里下載。

#!/bin/bash
ffmpeg -i $1 -vcodec libx264 -crf $2 $3

我稱(chēng)這個(gè)文件為“壓縮”。

現(xiàn)在,我可以從任何工作目錄壓縮視頻并將新文件保留在同一目錄中。 如果你愿意,你可以添加一些額外的邏輯,比如

#!/bin/bash
ffmpeg -i $1 -vcodec libx264 -crf $2 ${1%.*}.mp4 && rm $1

此命令將 $1 中文件名的擴(kuò)展名去掉,并將其替換為 .mp4。 如果命令運(yùn)行成功,則刪除原始文件,否則不執(zhí)行任何操作

示例 5:循環(huán)和 If

這將是我們最后的也是最復(fù)雜的例子,但它也是我使用最多的例子。

如果您曾經(jīng)有許多不同的遙控器鏈接到 heroku、github、bitbucket 等,并且想要推送到所有這些,那總是很麻煩。

特別是如果您進(jìn)行了許多小提交并希望與同事分享您的最新更改以防止合并沖突。

這是一個(gè)簡(jiǎn)短的“保存”腳本,它將提交您的最新更改,然后推送到您的遙控器!

#!/bin/bash
commit=$1 # set var commit to argument 1
if [ -z "$commit" ] # if commit is empty
then
commit="autosave"
fi
git commit -am "$commit"
output=$(git remote) # run git remote and save all remotes
pusharray=($output) # convert to array
for i in ${pusharray[@]}; do # for every item in pusharray, git push
git push $i
done

結(jié)論

總之,您已經(jīng)學(xué)會(huì)了如何使用參數(shù)、字符串操作、條件(if 語(yǔ)句和 &&)和循環(huán)來(lái)自動(dòng)化本地命令行工作流。

您現(xiàn)在能夠更好地利用您的 shell 腳本知識(shí)來(lái)推進(jìn)您的工作并節(jié)省一些時(shí)間!

責(zé)任編輯:華軒 來(lái)源: 七爪網(wǎng)
相關(guān)推薦

2023-10-30 17:41:29

機(jī)器人自動(dòng)化

2022-05-27 14:27:29

人工智能自動(dòng)化流程RPA

2022-06-02 08:47:24

人工智能CIO自動(dòng)化

2021-03-11 14:23:17

云計(jì)算混合云工具

2021-03-02 10:55:07

云計(jì)算自動(dòng)化云應(yīng)用

2023-03-20 15:14:39

視覺(jué)回歸測(cè)試軟件開(kāi)發(fā)

2023-09-01 09:21:03

Python自動(dòng)化測(cè)試

2022-02-07 08:50:40

CIO自動(dòng)化

2012-03-15 10:32:05

Windows系統(tǒng)網(wǎng)絡(luò)故障

2017-12-17 21:58:18

2022-02-17 13:03:28

Python腳本代碼

2021-07-26 14:34:02

springboot 時(shí)間格式化項(xiàng)目

2019-10-29 14:07:24

大數(shù)據(jù)人工智能技術(shù)

2024-11-05 08:28:50

2021-03-23 08:00:00

工具開(kāi)發(fā)審查

2009-12-09 14:22:44

2024-11-11 16:55:54

2022-12-29 08:46:15

IT采購(gòu)投資

2009-07-03 17:48:24

JSP頁(yè)面跳轉(zhuǎn)

2022-12-07 11:24:51

首席信息官IT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)