博客 / 詳情

返回

老年人記不住命令?ShellGPT 是你的終端外掛

前言

ShellGPT = 命令行 × AI。無需記憶複雜參數,一句話生成精準命令;無需手動解析輸出,管道直接丟給 AI 分析。本文詳解安裝配置、模型選擇(白嫖阿里雲)、三種使用模式(簡潔/交互/會話),以及 netstat、kubectl、git 等實戰場景。適合所有想在終端裏"偷懶"的開發者和運維。

安裝

安裝非常的簡單粗暴,一條命令即可

pip3 install shell-gpt

選擇模型

1)基於白piao的精神,選擇了千問,至於原因:

shell-gpt_1

阿里雲百鍊 ,低門檻快速入門

2)確定好平台之後,登陸選擇模型,隨便選一個即可,這裏筆者選擇了Qwen3.5-Plus

shell-gpt_2

3)點擊模型查看詳情,最主要的是拿到api key

shell-gpt_3

4)生成api即可,將其按照下列格式準備着

export OPENAI_API_KEY="sk-***********************"
export API_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export DEFAULT_MODEL="qwen-plus"
  • OPENAI_API_KEY,就是剛才生成的
  • API_BASE_URL,這是api地址,在文檔中也可以找到
  • DEFAULT_MODEL,默認使用的模型

初次使用

1)先配置環境變量:

export OPENAI_API_KEY="sk-***********************"
export API_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export DEFAULT_MODEL="qwen-plus"

2)hello world

> sgpt '你是誰?'
我是 ShellGPT,你的編程與系統管理助手。我專為 Linux/Debian GNU/Linux 13(代號 trixie)環境優化,熟悉 zsh
shell、包管理(apt)、服務管理(systemd)、腳本編寫及常見運維任務。我能幫你調試命令、解釋錯誤、生成安全的 Bash/Zsh 腳本、配置服務或排查網絡/權限問題。所有響應力求簡潔(約 100 字),並用 Markdown
增強可讀性(如 code、加粗、列表等)。數據僅保留在當前對話中,不持久化。需要執行具體任務?比如:

 • ✅ sudo apt update 後出錯?
 • ✅ 想寫個自動備份腳本?
 • ✅ systemctl status nginx 顯示 failed?
   隨時告訴我 👇

日常使用

1)日常中工作中經常容易迷惑的命令:find,找出目錄下1天前修改的文件?找出目錄下1天內修改的文件?

這種問題使用sgpt簡直不要太容易

> sgpt '找出當前目錄下1天前修改的文件'
在當前目錄下查找 1天前修改 的文件(即修改時間恰好為24小時前),可使用:


 find . -maxdepth 1 -type f -mtime 1


⚠️ 注意:-mtime 1 表示“恰好 24–48 小時前”(即 24 ≤ 修改時間 < 48 小時),這是 find 的標準行為(按完整天數向下取整)。

若需精確到1天(±幾分鐘),用 -mmin 更準:


 find . -maxdepth 1 -type f -mmin +1439 -mmin -1441


(≈24h = 1440 分鐘;+1439 表示 >1439min,-1441 表示 <1441min,覆蓋 ±1 分鐘誤差)

排除隱藏文件?加 -not -name ".*"。需要遞歸子目錄?刪掉 -maxdepth 1。

2)我只想知道命令是什麼,不想聽到你bb這麼多沒用的消息

加上-s參數即可

> sgpt -s '找出當前目錄下1天前修改的文件'
find . -type f -mtime 1
[E]xecute, [M]odify, [D]escribe, [A]bort:

還貼心的詢問要不要執行,敲e立即執行,馬上就將所有的1天前修改的文件列出來

這簡直就是老年人記不住命令的福音啊

交互模式

進入一個完全交互式的一問一答會話環境,並且上下文感知

> sgpt --repl temp
Entering REPL mode, press Ctrl+C to exit.
>>> 當前操作系統是什麼
...
>>> 當前內核的版本是什麼
...

交互模式也可以進入之前的shell模式,即交互執行模式,sgpt回答給出命令之後,可以選擇立即執行

> sgpt -s --repl work-cmd
Entering shell REPL mode, type [e] to execute commands or [d] to describe the commands, press Ctrl+C to exit.
>>> 找出/data目錄下超過一天的文件
find /data -type f -mtime +1
>>> e

/data/test/1
/data/test/2

會話模式

該模式最大的特點就是內容記錄下來,當還需要使用該上下文的時候,可以繼續詢問

> sgpt --chat find-command "找出/data下的所有的log結尾的文件"
...
> sgpt --chat find-command "再找出1天前的"

列出所有會話:

> sgpt --list-chats
/tmp/chat_cache/find-command

查看會話內容:

> sgpt --show-chat find-command

注:在交互--repl模式的內容也能夠看到

交互模式與會話模式的區別

乍一看兩個模式非常相似,其實也有差別

  • --chat 會話模式:
    • 想快速查詢信息,過一段時間又需要使用該上下文
    • 在寫腳本中調用
  • --repl 交互模式:
    • 要進行深度對話/調試
    • 需要連續問很多相關問題
    • 想保持專注不被打斷
    • 在開發過程中實時諮詢
  • chat模式與repl模式也是可以互相進入的

這裏據一個例子讓大家更加清晰的理解

1)早上日常巡檢系統,看看目錄下有哪些文件

> sgpt --chat monday '查看/data/目錄下有多少個文件'

2)中午的時候開始深度與sgpt交流一個關於kafka的問題

> sgpt --repl kafka-topic

3)下午的時候想起來上午巡檢的內容,還有個地方沒做完:有多少文件是1天前修改的,這時候繼續上午巡檢的上下文

> sgpt --chat monday '有那些文件是1天前修改的'

4)快要下班的時候再統計,這次為了專注下班之前完成,進入了--repl交互模式,之前會話模式的內容也能夠看到

> sgpt --repl monday
... # 顯示之前的上下文

>>> 把1天前修改的文件全部刪掉
...

奇技淫巧

1)netstat -nlpt | sgpt '監聽了那些端口,並且把進程名打印出來'

> sudo netstat -nlpt | sgpt '監聽了哪些端口,並且把進程名打印出來'
以下是監聽的端口及其對應進程(去重合並 IPv4/IPv6):

 • 10887/tcp → trojan
 • 16067/tcp → sunloginclient
 • 631/tcp & 631/tcp6 → cupsd (IPP printing service)

所有服務均綁定本地(127.0.0.1 或 ::1),除 trojan(0.0.0.0:10887)外,其餘均不對外網開放。建議用 sudo ss -tulpn | grep :<PORT> 驗證詳情。

2)kubectl describe pod xxx | sgpt "解釋這裏的異常"

3)git diff | sgpt "幫我 review 這段改動"

總結

sgpt極大的增強了日常使用命令行的效率,並且也在重構命令行使用的方式

聯繫我

  • 聯繫我,做深入的交流

至此,本文結束
在下才疏學淺,有撒湯漏水的,請各位不吝賜教...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.