CLI On macOS:mc menu

 

這份設定檔將 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] 強力加密備份:

    1. 對選取檔案進行 AES-256 加密打包。

    2. 自動打包並加密全系統設定檔目錄 (~/.config),排除快取以精簡體積。

    3. 透過 rclone 同步至雲端 backup/ 目錄。

  • [u] 空間深度分析: 備份前置動作。精準分析選取項目(含隱藏檔如 .dropbox)內部的容量排序,快速揪出空間佔用怪獸。

📊 系統監控

  • [m] btop: 視覺化系統資源、CPU 與網路流量監控。

  • [n] ncdu: 互動式磁碟空間分析。

📂 3. 目錄結構與管理建議

  • 設定檔路徑: ~/.config/mc/menu (建議備份此檔案)。

  • XDG 規範: 大多數開源 CLI 工具設定皆存放於 ~/.config,備份此目錄即可恢復 90% 以上的工作環境。

  • 備份排除: 建議排除 .dropbox/instance1 或其他軟體產生的大型 Cache 目錄(已整合進 Uu 指令邏輯中)。

📝 4. 恢復流程

  1. 在新電腦安裝上述 Homebrew 依賴。

  2. 將備份的 menu 檔案內容貼回 ~/.config/mc/menu

  3. 執行 rclone config 恢復雲端連結。

  4. 一鍵恢復所有高效生產力。


備註: 本說明文件最後更新於 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