onedrive-cli
OneDrive 的跨平台命令列界面(個人)。通過x-cmd一鍵安裝,即刻體驗高效工作流程。
| Language | nix & javascript |
| Homepage | https://www.lunesu.com/onedrive-cli/ |
sh
x install onedrive-cli
| arch/snap | sh
|
| centos/snap | sh
|
| debian/snap | sh
|
| elementary/snap | sh
|
| fedora/snap | sh
|
| neon/snap | sh
|
| kubuntu/snap | sh
|
| manjaro/snap | sh
|
| pop/snap | sh
|
| opensuse/snap | sh
|
| rhel/snap | sh
|
| ubuntu/snap | sh
|
onedrive-cli:在終端管理 OneDrive 文件的跨平台 CLI 工具
還在打開瀏覽器、等待 OneDrive 網頁加載、然後再找文件?onedrive-cli 讓你直接在命令列完成所有 OneDrive 操作——列目錄、上傳下載、分享鏈接,甚至讓 OneDrive 服務器幫你從 URL 直接拉取文件。對於習慣終端工作流的人來説,這省去了反覆切換工具的麻煩。
這是一個面向 OneDrive 個人版的命令列客户端,用熟悉的類 Unix 命令語法操作雲端文件。它基於 Node.js 開發,通過 OAuth 2.0 與微軟 API 交互,支持跨平台運行。
核心功能一覽
| 命令 | 功能説明 |
|---|---|
ls | 列出 OneDrive 文件夾內容 |
cat | 將遠程文件內容輸出到 stdout,支持管道操作 |
cp | 本地與 OneDrive 之間雙向複製文件 |
mv | 移動本地或遠程文件 |
mkdir | 在 OneDrive 創建文件夾 |
df | 查看 OneDrive 存儲空間使用情況 |
find | 按名稱搜索文件或文件夾,支持正則 |
stat | 查看文件的完整元數據信息 |
chmod | 修改文件分享權限(支持 -w 移除寫入權限、og-rw 等語法) |
ln | 為遠程項目創建鏈接 |
sendmail | 發送邀請郵件給他人共同編輯 |
wget | 讓 OneDrive 服務器直接從 URL 下載文件(不走本地流量) |
login | 獲取並存儲 OAuth 訪問令牌 |
安裝方式
通過 npm 安裝(推薦)
bash
npm install -g @lionello/onedrive-cli通過 Nix 安裝
bash
nix-env -if https://github.com/lionello/onedrive-cli/archive/master.tar.gz -A package從源碼安裝
bash
git clone https://github.com/lionello/onedrive-cli.git
cd onedrive-cli
npm installx-cmd 安裝
bash
x env use onedrive-cli快速上手
1. 首次使用需登錄
bash
onedrive login執行後會顯示微軟登錄頁面的 URL。登錄成功後,頁面會跳轉到回調地址,你需要從 URL 中複製 access_token 粘貼到命令列。令牌默認保存在 ~/.onedrive-cli-token,有效期約 1 小時。
2. 列目錄內容
bash
# 查看根目錄
onedrive ls
# 查看特定文件夾
onedrive ls Documents/Projects3. 文件內容直接管道處理
bash
# 將 OneDrive 中的密碼文件 grep 過濾
onedrive cat Documents/passwords.txt | grep github
# 查看日誌文件後 20 行
onedrive cat Logs/app.log | tail -204. 上傳與下載
bash
# 上傳本地文件到 OneDrive(遠程路徑前加 :/ 表示 OneDrive)
onedrive cp ./report.pdf :/Documents/
# 或者本地路徑前加 ./ 明示 onedrive cp ./report.pdf :/Documents/
# 從 OneDrive 下載文件到本地
onedrive cp :/Documents/report.pdf ./report.pdf
# 遞歸上傳多個文件
find . -type f -print0 | xargs -0 -n1 -I{} onedrive cp "./{}" "Backup/{}"5. 讓 OneDrive 服務器直接下載遠程文件
這個功能很實用:如果你想把一個網上的大文件保存到 OneDrive,不用先下載到本地再上傳,直接讓 OneDrive 服務器幫你抓:
bash
onedrive wget https://example.com/largefile.zip :/Downloads/largefile.zip6. 批量移動遠程文件
bash
# 將 2015 年的照片移動到歸檔文件夾
onedrive find 'Pictures/Camera Roll' -regex 2015 -type f -print0 | \
xargs -0 onedrive mv -t :/Pictures/2015/7. 管理分享權限
bash
# 移除所有分享權限
onedrive chmod og-rw Documents/shared-file.txt
# 設置為只讀
onedrive chmod -w Documents/shared-file.txt路徑前綴約定
cp 和 mv 命令支持本地與 OneDrive 之間的雙向複製。為避免歧義,建議使用以下前綴:
./- 明確表示本地路徑(如./local-file.txt):/- 明確表示 OneDrive 遠程路徑(如:/Documents/file.txt)
兩個前綴至少使用一個即可區分來源。
當前限制
使用時需要注意以下幾點:
- 暫不支持刪除 (
rm命令未實現) - 單文件上傳限制 100MB(大文件需要分片上傳 API,尚未支持)
- 僅支持個人版 OneDrive,企業版 (OneDrive for Business) 暫未支持
- 無法複製文件夾,只能操作單個文件(可用 find + xargs 批量處理)
- 同名文件衝突時會報錯,需先手動刪除或重命名
適用場景
- 服務器自動化:在 VPS/雲服務器上定時備份數據到 OneDrive
- 管道處理工作流:將雲端日誌、配置文件直接管道給本地工具分析
- 批量文件整理:用 find + xargs 模式批量歸檔、移動雲端文件
- 離線下載:利用
wget命令讓 OneDrive 直接抓取遠程大文件
技術細節
- 語言:JavaScript (Node.js)
- 包管理器:已發佈到 npm,包名為
@lionello/onedrive-cli - 認證:OAuth 2.0 Bearer Token,令牌存儲遵循 XDG Base Directory 規範
- 異步實現:使用 async/await 處理 API 調用
來源:
幫助我們改善文檔
X-CMD 的文檔內容來自命令的幫助文檔、多個數據源以及文檔庫生成。文檔中如果有錯誤或不明確的地方,歡迎通過這些方式進行告知~
完成验证加入微信群