成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

macOS 上如何寫自定義命令行工具?

開發 開發工具
蘋果的 masOS 系統的底層核心是 Darwin 系統。Darwin 是類 Unix 系統,所以我們可以在 masOS 上,像 Linux 一樣,執行命令行工具。我們通常通過第三方安裝的命令行工具,比如 node、npm、nginx 等,這很方便。

大家好,我是前端西瓜哥,今天來說說怎么在 macOS 上寫自定義命令行工具。

蘋果的 masOS 系統的底層核心是 Darwin 系統。Darwin 是類 Unix 系統,所以我們可以在 masOS 上,像 Linux 一樣,執行命令行工具。

我們通常通過第三方安裝的命令行工具,比如 node、npm、nginx 等,這很方便。

但,有時候我們想運行自己編寫的命令行工具,怎么做呢?

在這之前,我們先了解一些比較基本的惡概念

Shell

對于類 Unix 系統,它有一個 shell 的概念。

Shell 是命令行的輸入界面,用戶可以在上面輸入命令去執行任務。因為它是操作系統底層的一層封裝,因此得名為 Shell(殼)。

Shell 本身也是腳本語言,在能運行一些命令行工具的同時,也能進行一些判斷、循環之類的邏輯。

Shell 有各種實現,比如最常用的 Bash,它是 Linux 和舊版本的 macOS 的默認版本。

目前 macOS 默認的 Shell 換成了 zsh。zsh 配置比較復雜,我推薦安裝 Oh My Zsh,會讓你的 zsh 更好用。

腳本保存位置

Shell 怎么知道可以執行的命令行工具,也就是腳本的放在哪里呢?

答案是它會找全局變量 PATH 指定的目錄,找到匹配的文件去執行。

我們執行 echo $PATH 就能看到有哪些目錄:

$ echo $PATH
/Users/watermelon/.nvm/versions/node/v18.8.0/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin

目錄是有多個的,用冒號分隔。會按順序查詢每個目錄下的文件,直到找到一個同名的執行它,然后結束。

如果你想要知道某個命令的位置,可以使用 which 命令:

$ which node
/Users/watermelon/.nvm/versions/node/v18.8.0/bin/node

現在我們想寫自己的自定義腳本,那么就需要找到一個目錄放這些腳本。

我的做法是在用戶家目錄下創建一個 bin 目錄,也就是路徑位置 ~/bin。

mkdir ~/bin

然后給 PATH 變量新增一個路徑,我們需要在 ~/.zshrc 文件加上:

export PATH=~/bin:$PATH

這樣,每次打開終端時,PATH 路徑都會執行 .zshrc 文件,然后給 PATH 變量加上 ~/bin 路徑。

自定義腳本

然后我們就可以在 bin 目錄下寫自己的腳本。

你可以寫名為 hello 的 sh 腳本:

#!/bin/sh
echo Hello!

也可以寫一個名為 hi 的 nodejs 腳本:

#!/usr/bin/env node
console.log('Hi!')

我們通過第一行帶有 #! (稱為 shebang)的注釋來指定編譯器。然后下面的幾行就是對應語言的腳本。

然后記得給這些腳本的屬性設置為可執行,否則會報權限否認的錯誤。

chmod u+x hello
chmod u+x hi

看看效果:

圖片

下面就可以根據自己需要做寫一些腳本了。

想要在 VS Code 下集成的終端打開獨立的 iterm2 窗口,我們的一個方式是:

open . -a iTerm .

很長,我們可以寫一個名為 iterm 的腳本:

open . -a iTerm ${1:-.}

${1:-.} 代表取第一個參數,如果沒有,就實用默認值 .。另外把第一行的注釋也省略掉了,默認會作為 shell 腳本執行。

這樣我執行 iterm 就能打開獨立 iterm2 窗口。

或者你可以用 github 做一些文章備份,我寫了一個 artcle-push 腳本:

cd ~/Documents/articles
git add .
arg1=${1:-update}
git commit -m $arg1
git push

該腳本可以某個目錄的文件進行 commit,然后提交到 Github,且支持指定 commit 信息。

當你寫了新的內容,想備份的時候,輸入 artcle-push 就可以了,非常方便。

結尾

想要提高效率嗎?那你需要做自動化或半自動化,把一些重復的工作交給計算機,趕緊來寫你的自定義腳本吧。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2010-11-16 13:21:08

Oracle命令行

2018-07-12 16:22:45

Linux命令行文本顏色

2022-11-18 12:47:51

LinuxAWS命令行工具

2020-12-10 16:16:08

工具代碼開發

2020-12-11 06:44:16

命令行工具開發

2023-03-08 15:38:56

Linux命令dict

2023-08-12 11:40:11

命令行生存

2018-04-25 10:46:05

Linux命令行日歷

2023-06-09 07:45:29

Kuberneteskubectl

2018-03-29 15:58:55

Linux命令行編輯器

2010-11-24 17:12:17

MySQL命令行

2013-12-09 14:29:13

OpenStack命令行工具API

2011-01-18 19:11:26

Postfix命令行

2021-12-06 11:38:17

命令Glances工具

2021-07-15 13:25:43

LinuxPDF

2013-11-15 09:43:15

JDK工具

2018-05-04 09:15:35

PythonPlumbum命令行

2019-08-27 10:32:01

Linux操作系統Windows

2016-03-29 11:03:30

DISM命令Windows 10

2014-04-16 10:44:56

OpenStack命令行工具虛擬機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲天堂中文字幕 | 免费视频成人国产精品网站 | 日本三级电影免费观看 | 99re视频在线| 在线观看av网站永久 | 日韩中文字幕一区二区 | 日本不卡一区 | 盗摄精品av一区二区三区 | 欧美日韩在线精品 | 99pao成人国产永久免费视频 | 久久国产精品久久久久久 | 综合精品久久久 | 欧产日产国产精品v | 久久久久综合 | 一区二区免费 | 亚洲成色777777在线观看影院 | 91久久精品一区二区二区 | 人人玩人人干 | 91婷婷韩国欧美一区二区 | 国产成人福利在线观看 | 日韩影院一区 | 99久久婷婷国产综合精品电影 | 国产高清视频 | 日日干日日操 | www.亚洲精品 | wwww.8888久久爱站网 | 久久久激情 | 久久精品电影 | 日韩成人 | 国产精品一区二区不卡 | 国产精品视频网站 | 97日日碰人人模人人澡分享吧 | 91精品久久久久久久久久入口 | 先锋资源网 | 欧美网站一区二区 | 国产乱码精品1区2区3区 | 久青草影院 | 日韩欧美一区二区三区免费看 | 久久精品性视频 | 成人在线免费视频 | 国产成人综合亚洲欧美94在线 |