這份設定檔將 mc 轉化為指令集,整合了影音處理、電子書出版、系統監控與加密雲端備份功能。
📦 1. 環境依賴安裝 (Homebrew)
在開始使用前,請確保已安裝以下必要工具:
midnight-commander
yt-dlp
ffmpeg
pandoc
rclone
sevenzip
poppler
libreoffice
calibre
btop
ncdu
🛠 2. 選單功能說明 (F2 Menu)
🎵 影音下載與處理
[y] YouTube 音訊下載: 讀取清單批次下載為 MP3,自動嵌入封面與元數據。
[Y] YouTube MV 下載: 下載高品質 MP4 (最高 1080p),確保 CarPlay 相容性。
[f/F] ffmpeg 轉檔: 將選取或全目錄的影片(mp4/mkv)批次提取音軌為 192k MP3。
[c] cmus 播放: 將目前目錄加入並立即進入
cmus音樂播放器。
📚 書籍製作與文件轉換
[B] Pandoc 電子書出版: 一鍵將目錄下所有 Markdown 檔案依序(01, 02...)合併為一本帶目錄、自動分章、繁體中文優化的 EPUB。
[p/d] 文件轉純文字: 批次提取 PDF 文字(維持排版)或將 Word (
doc/docx) 轉為純文字。[e/E] Calibre 格式轉換: 批次或選取特定的
azw3檔案轉換為epub並保留內嵌圖片。
🛡 安全備份與雲端同步 (核心功能)
[U] 強力加密備份:
對選取檔案進行 AES-256 加密打包。
自動打包並加密全系統設定檔目錄 (
~/.config),排除快取以精簡體積。透過
rclone同步至雲端backup/目錄。
[u] 空間深度分析: 備份前置動作。精準分析選取項目(含隱藏檔如
.dropbox)內部的容量排序,快速揪出空間佔用怪獸。
📊 系統監控
[m] btop: 視覺化系統資源、CPU 與網路流量監控。
[n] ncdu: 互動式磁碟空間分析。
📂 3. 目錄結構與管理建議
設定檔路徑:
~/.config/mc/menu(建議備份此檔案)。XDG 規範: 大多數開源 CLI 工具設定皆存放於
~/.config,備份此目錄即可恢復 90% 以上的工作環境。備份排除: 建議排除
.dropbox/instance1或其他軟體產生的大型 Cache 目錄(已整合進U與u指令邏輯中)。
📝 4. 恢復流程
在新電腦安裝上述 Homebrew 依賴。
將備份的
menu檔案內容貼回~/.config/mc/menu。執行
rclone config恢復雲端連結。一鍵恢復所有高效生產力。
備註: 本說明文件最後更新於 2025 年 12 月。任何指令微調請同步更新至 menu 本體。
# ======================================================
# mc menu
# ======================================================
# --- [ 影音下載與播放 ] ---
y YouTube: 讀取清單批次下載歌曲 (%s)mp3
# 確保 archive.txt 放在目前目錄下,避免重複下載
yt-dlp -x --audio-format mp3 --embed-thumbnail --add-metadata -c -i --no-overwrites --download-archive "%d/archive.txt" -a "%f"
echo "--- 下載任務完成! ---"
read
Y. YouTube: 讀取清單批次下載mv(MP4)
echo "正在為 CarPlay 準備高品質 MV 下載..."
# 參數解釋:
# -f: 選擇最佳影片(不超過1080p) + 最佳音訊,並合併為 mp4
# --merge-output-format mp4: 確保最終容器是 MP4 (CarPlay 相容性最高)
# --download-archive: 這裡建議跟音樂的 archive 分開,以免下載過音樂就跳過影片
yt-dlp -f "bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" \
--merge-output-format mp4 \
--embed-thumbnail --add-metadata \
-c -i --no-overwrites \
--download-archive "%d/archive_mv.txt" \
-a "%f"
echo "--- MV 下載任務完成,已存為 MP4 格式! ---"
read
f ffmpeg: 批次將【目前選取】的檔案轉 MP3
for file in %s; do
if [[ "$file" == *.mp4 || "$file" == *.mkv ]]; then
echo "正在處理: $file"
ffmpeg -i "$file" -vn -ab 192k -map_metadata 0 -id3v2_version 3 "${file%.*}.mp3"
fi
done
echo "--- 選取檔案處理完畢 ---"
read
F ffmepg: 批次將【整個目錄】的影片轉 MP3
echo "正在掃描目錄 %d 下的所有影片..."
for file in "%d"/*.mp4 "%d"/*.mkv; do
[ -e "$file" ] || continue
echo "正在提取: $(basename "$file")"
ffmpeg -i "$file" -vn -ab 192k -map_metadata 0 -id3v2_version 3 "${file%.*}.mp3"
done
echo "--- 整個目錄轉換完成 ---"
read
c 直接播放此目錄並進入 cmus (%d)
cmus-remote -c -a "%d" ; cmus-remote -p ; cmus
# --- [ 系統監控與分析 ] ---
m 監: 系統資源監控 (btop)
btop
n 監: 磁碟空間深度分析 (ncdu)
ncdu --color dark -x %d
# --- [ 備份與雲端同步 ] ---
u 檢查容量: 檢查【選取項目】容量排序(含隱藏檔)
echo "正在深度分析選取項目內的空間分佈..."
echo "------------------------------------------"
# 增加 .[^.]* 用來抓取隱藏資料夾 (如 .dropbox, .vscode)
# 2>/dev/null 隱藏權限不足的報錯
du -sh %s/* %s/.[^.]* 2>/dev/null | sort -h
echo "------------------------------------------"
echo "選取項目總計:"
du -shc %s 2>/dev/null | grep total
read
U rclone+7z: 壓縮加密備份 (選取檔案 + 系統設定 .config)
@set /p pass="請輸入 AES-256 加密密碼: "
NOW=$(date +%y%m%d)
# --- 第一部分:處理目前選取的檔案 ---
for file in %s; do
[ -e "$file" ] || continue
BNAME=$(basename "$file")
OUTNAME="${BNAME}_bk_${NOW}.7z"
echo "正在壓縮選取檔案: $BNAME ..."
7zz a "$OUTNAME" "$file" -p"$pass" -mhe=on -m0=lzma2 -mx=9
echo "正在上傳至雲端 backup/files/ ..."
rclone copy "$OUTNAME" remote_dest:backup/files/ -P
rm "$OUTNAME"
done
# --- 第二部分:備份全系統設定 (.config) ---
echo "------------------------------------------"
echo "正在打包全系統設定檔 (~/.config) ..."
CONFIG_OUT="mac_config_all_${NOW}.7z"
# 排除可能過大的快取資料夾以節省空間與時間
7zz a "$CONFIG_OUT" "$HOME/.config" -p"$pass" -mhe=on -m0=lzma2 -mx=9 -xr!cache
echo "正在上傳至雲端 backup/configs/ ..."
rclone copy "$CONFIG_OUT" remote_dest:backup/configs/ -P
rm "$CONFIG_OUT"
echo "--- 所有備份任務已完成 ---"
read
# --- [ 文件格式的轉換 ] ---
p PDF: 提取文字至 .txt (維持排版)
for file in %s; do
[ -f "$file" ] || continue
pdftotext -layout "$file" "${file%.*}.txt"
done
read
d 轉換文件格式: 批次 doc/docx 轉 txt
echo "正在轉換目錄 %d 下的 Word 檔案..."
# 這裡移除最後的 *.doc,讓 LibreOffice 自己在 outdir 裡找檔案,或用 loop 確保安全
for file in "%d"/*.doc*; do
[ -f "$file" ] || continue
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to txt:Text:UTF8 --outdir "%d" "$file"
done
echo "--- 轉換完成 ---"
read
e Calibre: 掃描目錄所有 azw3 轉 epub
for file in "%d"/*.azw3; do
# 增加這一行檢查,防止沒檔案時出錯
[ -e "$file" ] || continue
echo "正在轉換: $file ..."
/Applications/calibre.app/Contents/MacOS/ebook-convert "$file" "${file%.*}.epub" --keep-inline-images
done
echo "--- 目錄轉換完成 ---"
read
E Calibre: 轉換選取的 azw3 檔案 (%s)成 epub
for file in %s; do
if [[ "$file" == *.azw3 ]]; then
echo "正在轉換: $file ..."
/Applications/calibre.app/Contents/MacOS/ebook-convert "$file" "${file%.azw3}.epub" --keep-inline-images
fi
done
echo "--- 選取的檔案處理完畢 ---"
read
# --- [ 書籍製作與轉換 ] ---
B Pandoc: 全目錄 md 合併轉為 EPUB (自動章節/目錄)
BOOK_NAME=$(basename "%d")
echo "正在彙整資料夾 [%d] 內的檔案..."
# 強制使用標準 C 排序,確保 01, 02 順序正確
export LC_ALL=C
# --top-level-division=chapter: 確保每個 # 標題都是新章節
# --toc: 自動產生目錄
# --toc-depth=2:目錄往下展到第二層
# --number-sections: 自動為章節加上 1, 1.1, 1.2 等編號 (可選)
# 增加 lang: zh-TW 確保閱讀器正確識別繁體中文
pandoc "%d"/*.md -o "${BOOK_NAME}.epub" \
--top-level-division=chapter \
--toc \
--toc-depth=2 \
--metadata title="${BOOK_NAME}" \
--metadata lang="zh-TW" \
--number-sections
echo "--- 轉換完成:${BOOK_NAME}.epub ---"
read
========
以下保留
========
# 保留 Termux 設定
a 手機: 快速操作
# 檢查電池與系統負載 (結合 Termux-API)
termux-battery-status
termux-telephony-deviceinfo
read