亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

CLI-Anything:萬(wàn)物皆可命令行的終端效率提升指南

CLI-Anything:萬(wàn)物皆可命令行的終端效率提升指南 從去年開始我?guī)缀醢讶粘9ぷ骼镆话胍陨系牟僮鞫及徇M(jìn)了終端。瀏覽器里翻書簽、刷新聞、查天氣文件管理器里找文件、看圖片、批量重命名甚至記錄靈感、管理待辦統(tǒng)統(tǒng)換成了命令行工具。朋友問(wèn)我圖什么我說(shuō)就圖一個(gè)“不離開鍵盤”。這種把任何東西都改造成命令行操作的做法圈子里有個(gè)很形象的說(shuō)法——CLI-Anything翻譯過(guò)來(lái)就是“萬(wàn)物皆可命令行”。它不是某個(gè)具體的軟件而是一整套工具思路和實(shí)現(xiàn)方法核心就一句話凡是你頻繁要做的事都能用一條命令搞定或者被封裝成一條命令。這篇文章我想按自己的實(shí)踐經(jīng)驗(yàn)把CLI-Anything從理念到落地完整拆一遍。你會(huì)看到現(xiàn)代CLI工具鏈里那些“被低估”的替代品看到怎么把一個(gè)普通API封裝成順手的命令行工具看到交互式CLI那些提升體驗(yàn)的細(xì)節(jié)還會(huì)走一遍真實(shí)案例的全過(guò)程。適合誰(shuí)看想提升日常效率但還沒(méi)系統(tǒng)性接觸過(guò)現(xiàn)代CLI工具的開發(fā)者以及已經(jīng)會(huì)用終端、想更進(jìn)一步把自己的工作流“命令化”的人。1. CLI-Anything到底是什么一場(chǎng)終端里的效率革命1.1 從“萬(wàn)物皆文件”到“萬(wàn)物皆命令”Unix哲學(xué)里有個(gè)經(jīng)典說(shuō)法叫“萬(wàn)物皆文件”鍵盤、顯示器、磁盤在系統(tǒng)眼里都是文件這種抽象讓一切操作都有了統(tǒng)一入口。CLI-Anything的思路跟它一脈相承但抽象層級(jí)更高——不只是文件任何服務(wù)、任何數(shù)據(jù)源、任何重復(fù)性操作都可以被包裝成一個(gè)“命令”。我給你舉幾個(gè)具體的例子感受一下查天氣weather一條命令返回未來(lái)三天的天氣和穿衣建議。管理書簽bmark add 標(biāo)題 URL添加書簽bmark ls --tag python按標(biāo)簽過(guò)濾bmark rm刪除。發(fā)筆記note 靈感內(nèi)容直接把想法追加到本地日記文件并按日期歸檔。查快遞track 快遞單號(hào)調(diào)快遞API終端里直接輸出物流軌跡。你會(huì)發(fā)現(xiàn)這些東西本來(lái)都有對(duì)應(yīng)的App或網(wǎng)頁(yè)版但App要解鎖、要點(diǎn)開、要一步步操作網(wǎng)頁(yè)版要在瀏覽器里敲網(wǎng)址、等加載。而CLI版本按一下Tab、敲一行字、回車結(jié)果秒出還能跟其他命令組合成流水線。一個(gè)具體的組合例子note 開會(huì)記錄 sync-notes記完筆記自動(dòng)同步到遠(yuǎn)端倉(cāng)庫(kù)兩步變一步。這種“萬(wàn)物皆命令”的思維本質(zhì)上是把反復(fù)要做的事抽象成固定接口輸入?yún)?shù)、輸出結(jié)果。一旦你習(xí)慣了這種抽象會(huì)發(fā)現(xiàn)自己越來(lái)越不愿意打開那些“重型”應(yīng)用因?yàn)樗鼈兊牟僮髀窂教L(zhǎng)了。1.2 現(xiàn)代CLI工具鏈全景那些值得替換的舊工具CLI-Anything能流行起來(lái)很大程度上要?dú)w功于近幾年冒出來(lái)的一批現(xiàn)代命令行工具。它們不是傳統(tǒng)命令的小修小補(bǔ)而是完全重寫的替代品在速度、可讀性、交互性上都甩開舊工具一大截。我列一張表把最常用的幾組對(duì)比寫出來(lái)你看完會(huì)很清楚用途傳統(tǒng)工具現(xiàn)代替代核心優(yōu)勢(shì)查看文件內(nèi)容catbat語(yǔ)法高亮、行號(hào)、Git變更標(biāo)記查找文件findfd默認(rèn)忽略.gitignore、速度快到飛起搜索文件內(nèi)容grepripgrep (rg)秒級(jí)搜索大型代碼庫(kù)自動(dòng)尊重.gitignore模糊查找/切換目錄cd lsz / zoxide fzf按訪問(wèn)頻率跳轉(zhuǎn)fzf支持交互式過(guò)濾查看目錄樹treebroot / lsd帶縮略圖、可交互操作、更好看的圖標(biāo)查看進(jìn)程psprocs彩色輸出、樹狀展示、搜索方便網(wǎng)絡(luò)調(diào)試curlcurlie / httpie更友好的請(qǐng)求構(gòu)造和響應(yīng)展示磁盤占用duduf / ncdu圖形化占比、交互式掃描JSON解析grep/sedjq結(jié)構(gòu)化查詢、強(qiáng)大的過(guò)濾能力我自己身上最典型的例子是替換grep。以前搜代碼全靠grep -r結(jié)果把 node_modules 里的文件也搜出來(lái)一屏根本看不過(guò)來(lái)。換用rg之后默認(rèn)就跳過(guò)隱藏目錄和.gitignore里列出的內(nèi)容搜索結(jié)果干凈利落速度還快了不止一個(gè)量級(jí)。這類工具就是CLI-Anything的基礎(chǔ)——好的“命令”是打磨出來(lái)的而這些現(xiàn)代工具就是已經(jīng)被別人打磨好的“萬(wàn)物”。這套工具鏈選型的邏輯很簡(jiǎn)單舊工具設(shè)計(jì)年代早對(duì)現(xiàn)代工程目錄、大文件、Unicode支持都不夠友好。新工具普遍用Rust或Go重寫天然更快、更安全、更懂得現(xiàn)代開發(fā)者的痛點(diǎn)。你不需要一次性全換先挑一個(gè)高頻命令替換用兩天就會(huì)明顯感覺(jué)到差別。1.3 哪些場(chǎng)景最適合“萬(wàn)物皆CLI”不是什么東西都值得塞進(jìn)終端。我實(shí)踐中總結(jié)出的判斷標(biāo)準(zhǔn)就三條高頻、重復(fù)、可參數(shù)化。高頻指你每周至少要操作好幾次比如查快遞、查天氣、開機(jī)電腦后必做的事。低頻操作做CLI反而浪費(fèi)維護(hù)成本。重復(fù)指操作路徑固定、邏輯不變比如“把當(dāng)前目錄下的PNG圖片統(tǒng)一壓縮到80%質(zhì)量”這種場(chǎng)景非常適合封裝??蓞?shù)化是關(guān)鍵只有輸入和輸出能用參數(shù)表達(dá)清楚才可能做成通用命令。適合做成CLI的幾個(gè)典型方向個(gè)人知識(shí)管理快速記錄、搜索筆記、歸檔網(wǎng)頁(yè)。開發(fā)輔助創(chuàng)建項(xiàng)目模板、格式化提交信息、批量重命名分支。數(shù)據(jù)加工把一個(gè)文件從CSV轉(zhuǎn)成JSON、提取日志里的錯(cuò)誤并統(tǒng)計(jì)。生活效率天氣、匯率、二維碼生成、番茄鐘。不適合做CLI的場(chǎng)景也有需要復(fù)雜圖形交互的任務(wù)比如圖像精修、視頻剪輯需要團(tuán)隊(duì)協(xié)作同步的復(fù)雜界面比如項(xiàng)目管理看板頻繁變化業(yè)務(wù)邏輯且沒(méi)有穩(wěn)定API的服務(wù)。判斷一個(gè)需求是否值得“CLI化”我建議先手動(dòng)操作三次以上再?zèng)Q定真正常用才值得投入。2. 把任意API封裝成CLICLI-Anything的骨架與原理2.1 一條命令背后的四層結(jié)構(gòu)絕大多數(shù)CLI工具背后都是這么一套四層架構(gòu)命令入口 → 參數(shù)解析 → 業(yè)務(wù)邏輯 → 輸出呈現(xiàn)。命令入口就是你在終端里敲的那個(gè)名字比如weather、bmark它負(fù)責(zé)找到對(duì)應(yīng)的可執(zhí)行程序或腳本。參數(shù)解析負(fù)責(zé)理解輸入比如--city 上海、--tags python,web這是CLI的“門面”決定了命令好不好用。業(yè)務(wù)邏輯是核心調(diào)用API、處理數(shù)據(jù)、執(zhí)行計(jì)算都在這一層。輸出呈現(xiàn)負(fù)責(zé)把結(jié)果格式化后展示出來(lái)可以是純文本、表格、彩色高亮也可以是 JSON 方便別的程序繼續(xù)處理。把這四層分開設(shè)計(jì)有非常大的好處參數(shù)變了不用動(dòng)邏輯輸出形式變了不用動(dòng)接口。我早期做CLI的時(shí)候就吃過(guò)耦合的虧——把輸出格式寫死在業(yè)務(wù)邏輯里后來(lái)想加一個(gè)--json參數(shù)改了三天才理清。舉個(gè)例子把“查天氣”做成CLI四層拆解大概是這樣的入口weather對(duì)應(yīng)/usr/local/bin/weather腳本。參數(shù)城市名、天數(shù)、單位通過(guò)標(biāo)準(zhǔn)參數(shù)解析庫(kù)獲取。邏輯調(diào)用和風(fēng)天氣或OpenWeatherMap的API解析返回的JSON。輸出根據(jù)參數(shù)決定輸出表格還是JSON。2.2 用Python Click實(shí)現(xiàn)一個(gè)天氣查詢CLIPython是做CLI最成熟的語(yǔ)言之一。標(biāo)準(zhǔn)庫(kù)里的argparse能用但寫復(fù)雜參數(shù)時(shí)比較啰嗦我推薦用Click它用裝飾器定義參數(shù)代碼直觀自動(dòng)生成幫助信息還支持參數(shù)校驗(yàn)和交互式確認(rèn)。一個(gè)最小可用的天氣CLI代碼大致是這樣import click import requests click.command() click.option(--city, -c, requiredTrue, help城市名如 上海) click.option(--days, -d, default3, help預(yù)報(bào)天數(shù)默認(rèn)3天, show_defaultTrue) click.option(--json-output, is_flagTrue, help以JSON格式輸出) def weather(city, days, json_output): 查詢指定城市的天氣信息 url https://api.example.com/weather params {city: city, days: days, key: your-api-key} resp requests.get(url, paramsparams, timeout10) data resp.json() if json_output: click.echo(click.style(json.dumps(data, ensure_asciiFalse, indent2), fggreen)) else: for day in data[forecasts][:days]: date day[date] temp day[temperature] desc day[description] click.echo(f{date} {temp}°C {desc}) if __name__ __main__: weather()注意幾個(gè)關(guān)鍵的“為什么”。參數(shù)解析里requiredTrue強(qiáng)制用戶必須輸入城市提前阻斷錯(cuò)誤請(qǐng)求default3給可選參數(shù)設(shè)置默認(rèn)值避免每次都敲一遍--json-output用is_flagTrue表示一個(gè)開關(guān)型參數(shù)存在即True。超時(shí)設(shè)置 timeout10 也很重要不設(shè)的話遇到慢接口整個(gè)命令會(huì)卡住。Click還自帶幫助信息運(yùn)行weather --help會(huì)清楚列出所有參數(shù)和說(shuō)明這對(duì)命令行工具的可發(fā)現(xiàn)性是質(zhì)的提升——你自己寫的命令過(guò)兩個(gè)月再看照樣能通過(guò)幫助信息快速上手。2.3 命令行參數(shù)設(shè)計(jì)的三個(gè)原則參數(shù)設(shè)計(jì)的好壞直接決定你這個(gè)CLI是“順手的工具”還是“勸退的麻煩”。我踩過(guò)不少坑總結(jié)出三個(gè)原則短參數(shù)優(yōu)先、長(zhǎng)參數(shù)兜底。高頻參數(shù)要給短別名比如-c表示city-d表示days這樣日常敲起來(lái)手不累。低頻或語(yǔ)義復(fù)雜的參數(shù)用--長(zhǎng)格式比如--json-output。默認(rèn)值要站在大多數(shù)用戶角度。如果你的工具90%的場(chǎng)景都是查詢未來(lái)三天天氣那--days的默認(rèn)值就設(shè)為3而不是把默認(rèn)值設(shè)為1讓每個(gè)人填參數(shù)。默認(rèn)值不是隨便設(shè)的而是要研究真實(shí)的使用習(xí)慣。輸出格式要為“管道”留口子。這是我最想強(qiáng)調(diào)的一點(diǎn)。命令行最強(qiáng)大的地方就是能在一個(gè)管道里串聯(lián)多命令weather -c 北京 --json | jq .temperature | ...。如果你的輸出只有彩色文本后面的命令沒(méi)法解析而只要加一個(gè)--json開關(guān)你的CLI就瞬間從“給人看”升級(jí)成“給程序用”。我現(xiàn)在的習(xí)慣是優(yōu)先級(jí)最高的輸出格式是JSON而把彩色的表格輸出當(dāng)作“給人看”的友好包裝。3. 交互式CLI的體驗(yàn)升級(jí)讓終端不再冷冰冰3.1 輸出美化的三個(gè)層次一個(gè)CLI工具能不能持續(xù)用下去輸出體驗(yàn)占了很大比重。我自己把輸出美化分成三個(gè)層次第一層是基礎(chǔ)顏色。用顏色區(qū)分信息類型綠色表示成功、紅色表示錯(cuò)誤、黃色表示警告、青色表示鏈接或關(guān)鍵詞。注意顏色不只是為了好看它能幫眼睛快速定位關(guān)鍵信息——一堆日志里掃一遍顏色就對(duì)哪里是錯(cuò)誤一目了然。第二層是表格對(duì)齊。多字段數(shù)據(jù)盡量按列對(duì)齊字段名加下劃線標(biāo)記數(shù)字右對(duì)齊、文本左對(duì)齊。手工排版容易錯(cuò)位建議直接用表格庫(kù)Python里可以用rich的Table或者tabulate。第三層是富交互。包括進(jìn)度條、動(dòng)態(tài)加載動(dòng)畫、交互式選擇列表。比如下載多個(gè)文件時(shí)顯示總進(jìn)度占比和當(dāng)前文件名搜索時(shí)彈出一個(gè)可過(guò)濾的實(shí)時(shí)列表供你上下選擇。這些體驗(yàn)做得好的代表就是fzf、tui-rs這類工具它們讓終端不再是“死板的黑框”。我的建議是個(gè)人內(nèi)用的小工具至少做到第一層稍有規(guī)模、可能給別人用的做到第二層凡是涉及選擇、搜索、確認(rèn)的場(chǎng)景盡量上第三層。別一上來(lái)就追求富交互先保證顏色和表格對(duì)齊用戶感受提升立竿見影。3.2 用fzf實(shí)現(xiàn)模糊搜索交互fzf是一個(gè)非常強(qiáng)悍的模糊查找工具它是CLI-Anything生態(tài)的“粘合劑”。它的基本用法是把多行數(shù)據(jù)用管道丟給它你輸入關(guān)鍵字它實(shí)時(shí)過(guò)濾回車后輸出你選中的那一行然后你可以在腳本里對(duì)這個(gè)結(jié)果做后續(xù)操作。我舉一個(gè)超實(shí)用的例子——快速切換最近的Git分支git checkout $(git branch --format%(refname:short) | fzf)這行命令的運(yùn)作邏輯先列出所有分支fzf彈出交互式界面你輸入幾個(gè)字母它按模糊匹配規(guī)則把最接近的分支頂上來(lái)回車選中分支名傳給git checkout。整個(gè)過(guò)程一秒內(nèi)完成比git branch一個(gè)個(gè)肉眼找快太多了。再舉個(gè)例子用fzf做文件預(yù)覽選擇fd -e log | fzf --preview tail -n 50 {}先列出所有l(wèi)og文件fzf里每切換一個(gè)選項(xiàng)右側(cè)實(shí)時(shí)預(yù)覽該文件末尾50行。找日志的時(shí)候這種感覺(jué)簡(jiǎn)直像在IDE里查看文件一樣流暢。fzf的強(qiáng)大之處在于它不挑數(shù)據(jù)源——列表可以來(lái)自任意命令的輸出、任意文件的內(nèi)容、任意數(shù)據(jù)庫(kù)的查詢結(jié)果。所以你在自己的CLI里集成交互式選擇時(shí)最省事的方案就是把選擇交棒給fzf而不是自己寫一套選擇界面。省力且老用戶本來(lái)就有使用習(xí)慣。要注意的是fzf默認(rèn)輸出的是被選中的那一行原始內(nèi)容如果數(shù)據(jù)源帶了多余的前后綴記得在交給后續(xù)命令前先用sed或awk清洗一下。3.3 進(jìn)度反饋與錯(cuò)誤處理的常見坑任何需要網(wǎng)絡(luò)請(qǐng)求或批量處理的CLI都要考慮“卡住時(shí)用戶怎么知道發(fā)生了什么”。進(jìn)度反饋方面最基礎(chǔ)的要求是超過(guò)2秒的操作必須給出提示。你可以用rich.progress顯示進(jìn)度條也可以簡(jiǎn)單打印一行“正在下載文件A12/30”。但注意別做成每隔0.1秒刷一行日志刷屏比沒(méi)有進(jìn)度條更煩人。正確的做法是原地刷新當(dāng)前行比如用\r回車符覆蓋當(dāng)前行輸出讓進(jìn)度信息保持在一行內(nèi)變動(dòng)。錯(cuò)誤處理方面我總結(jié)出幾個(gè)必須避開的坑不吞異常。很多CLI最喜歡寫try: ... except: pass結(jié)果用戶遇到問(wèn)題只看到一句話“操作失敗”完全不知道卡在哪。正確做法是捕獲異常后打印出具體錯(cuò)誤來(lái)源和原始錯(cuò)誤信息。退出碼要規(guī)范。成功返回0邏輯性錯(cuò)誤返回1網(wǎng)絡(luò)錯(cuò)誤返回2參數(shù)錯(cuò)誤返回3這樣別人才能在腳本里根據(jù)退出碼判斷執(zhí)行結(jié)果。命令行世界的約定俗成是0成功、非0失敗別覺(jué)得自己程序內(nèi)部能處理就等于成功。輸出要可解釋。給錯(cuò)誤提示帶上發(fā)生錯(cuò)誤的上下文比如“無(wú)法連接API服務(wù)響應(yīng)碼503請(qǐng)稍后重試”比“請(qǐng)求失敗”有用太多。一個(gè)人用的小工具可能不在乎這些但一旦你要把CLI分享給團(tuán)隊(duì)或開源錯(cuò)誤處理和退出碼的規(guī)范性會(huì)直接影響別人愿不愿意用。4. 實(shí)際案例全流程用CLI管理書簽與筆記4.1 從需求到命令拆解一個(gè)真實(shí)項(xiàng)目為了把CLI-Anything從理念到落地串起來(lái)看一遍我?guī)阕咭粋€(gè)我真實(shí)在用的項(xiàng)目書簽與筆記管理工具名字就叫bmark。需求背景很簡(jiǎn)單我瀏覽器里存了幾千個(gè)書簽分了一堆文件夾但找起來(lái)依然要用“三明治”式路徑——先開瀏覽器點(diǎn)開書簽欄展開一個(gè)文件夾再翻幾層才能找到目標(biāo)URL。筆記就更亂了散落在各個(gè)App里很難快速搜索和歸檔。我想要的是一個(gè)統(tǒng)一的命令行入口既能存書簽、又能記筆記還能快速搜索兩者。核心需求拆出來(lái)就這么幾條添加書簽bmark add 標(biāo)題 URL --tags python,web列出書簽bmark ls [--tag python] [--fmt json|table]添加筆記bmark note 內(nèi)容 [--title 標(biāo)題]搜索兩者bmark search 關(guān)鍵字刪除書簽bmark rm 書簽ID數(shù)據(jù)存儲(chǔ)方面我沒(méi)有用數(shù)據(jù)庫(kù)而是用最簡(jiǎn)單的本地JSON文件——個(gè)人工具的數(shù)據(jù)量級(jí)幾千條用JSON完全足夠讀寫文件比維護(hù)數(shù)據(jù)庫(kù)省心得多。存放路徑放在~/.bmark/data.json這樣換機(jī)時(shí)拷一個(gè)文件就能遷移。選擇JSON文件而非SQLite因?yàn)镴SON天然可讀、可手動(dòng)編輯、可放進(jìn)Git倉(cāng)庫(kù)做版本管理這對(duì)個(gè)人筆記類數(shù)據(jù)是隱形優(yōu)勢(shì)。4.2 核心代碼實(shí)現(xiàn)整個(gè)工具用Python實(shí)現(xiàn)核心文件是bmark.py依賴Click。我先給出核心部分然后逐個(gè)解釋關(guān)鍵點(diǎn)import click import json import os from datetime import datetime from pathlib import Path DATA_DIR Path.home() / .bmark DATA_FILE DATA_DIR / data.json def load_data(): if not DATA_FILE.exists(): return {bookmarks: [], notes: []} with open(DATA_FILE, r, encodingutf-8) as f: return json.load(f) def save_data(data): DATA_DIR.mkdir(exist_okTrue) with open(DATA_FILE, w, encodingutf-8) as f: json.dump(data, f, ensure_asciiFalse, indent2) click.group() def cli(): 個(gè)人書簽與筆記管理工具 pass cli.command() click.argument(title) click.argument(url) click.option(--tags, -t, default, help標(biāo)簽逗號(hào)分隔) def add(title, url, tags): 添加一條書簽 data load_data() bm { id: len(data[bookmarks]) 1, title: title, url: url, tags: [t.strip() for t in tags.split(,) if t.strip()], created_at: datetime.now().isoformat(timespecseconds), } data[bookmarks].append(bm) save_data(data) click.echo(f已添加書簽 #{bm[id]}: {title} ({url})) cli.command() click.option(--tag, default, help按標(biāo)簽過(guò)濾) click.option(--fmt, fmt, typeclick.Choice([table, json]), defaulttable) def ls(tag, fmt): 列出書簽 data load_data() items data[bookmarks] if tag: items [b for b in items if tag in b[tags]] if fmt json: click.echo(json.dumps(items, ensure_asciiFalse, indent2)) else: for b in items: click.echo(f#{b[id]:3} {b[title]:30} {b[url]}) if b[tags]: click.echo(f tags: {, .join(b[tags])}) cli.command() click.argument(content) click.option(--title, default, help筆記標(biāo)題) def note(content, title): 記錄一條筆記 data load_data() note_item { id: len(data[notes]) 1, title: title or content[:20], content: content, created_at: datetime.now().isoformat(timespecseconds), } data[notes].append(note_item) save_data(data) click.echo(f已記錄筆記 #{note_item[id]}) if __name__ __main__: cli()代碼里幾個(gè)細(xì)節(jié)值得說(shuō)清楚。用click.group()實(shí)現(xiàn)多命令分組這樣一條命令入口下掛多個(gè)子命令是CLI工具最常見的形態(tài)。Path.home()獲取用戶主目錄不依賴硬編碼路徑這在多用戶機(jī)器上特別重要。時(shí)間戳用datetime.now().isoformat(timespecseconds)格式是2025-06-14T12:30:00可讀性和可排序性都很好。ID用len(data[bookmarks]) 1生成看起來(lái)簡(jiǎn)單但有個(gè)隱患刪除書簽后可能重復(fù)計(jì)數(shù)。真實(shí)項(xiàng)目里更穩(wěn)妥的方案是維護(hù)一個(gè)全局自增計(jì)數(shù)器或者直接用UUID。個(gè)人工具數(shù)據(jù)量小如果介意ID重復(fù)的話可以改成基于當(dāng)前時(shí)間戳取哈希但用戶可讀性就差了。我的建議是支持刪除的工具用自增計(jì)數(shù)器存最大值或者每次添加時(shí)取max(id) 1。4.3 發(fā)布與日常使用技巧寫好了腳本之后讓它變成系統(tǒng)命令只差最后一步。把文件放到PATH目錄里或者軟鏈接過(guò)去chmod x bmark.py ln -s /path/to/bmark.py /usr/local/bin/bmark日常使用的時(shí)候我總結(jié)了幾個(gè)高頻組合實(shí)測(cè)下來(lái)非常舒服# 保存看到的好文章并順帶記個(gè)想法 bmark add CLI-Anything筆記 https://example.com --tags cli,python bmark note 今天把bmark分享給同事了反應(yīng)不錯(cuò) # 按標(biāo)簽快速找Python相關(guān)書簽 bmark ls --tag python # 和fzf聯(lián)動(dòng)交互式選擇書簽后直接用瀏覽器打開 open $(bmark ls --fmt json | jq -r .[].url | fzf --preview echo {}) # 定期把數(shù)據(jù)備份到Git倉(cāng)庫(kù) git -C ~/.bmark add -A git -C ~/.bmark commit -m backup這里特別想強(qiáng)調(diào)--fmt json的價(jià)值。寫CLI的時(shí)候給結(jié)構(gòu)化數(shù)據(jù)一個(gè)JSON輸出口子哪怕你現(xiàn)在根本用不到將來(lái)一定會(huì)在某個(gè)腳本里用上。書簽數(shù)據(jù)導(dǎo)出JSON后用jq做篩選再配合fzf做交互式選擇能力直接翻倍——這就是CLI-Anything的哲學(xué)單個(gè)命令是積木組合起來(lái)才是樂(lè)高成品。5. 常見問(wèn)題與排查技巧實(shí)錄5.1 環(huán)境差異導(dǎo)致的路徑問(wèn)題Python寫的CLI最容易遇到的一個(gè)坑是路徑和環(huán)境不一致。最常見的情況是你用了系統(tǒng)自帶的Python寫腳本換臺(tái)機(jī)器后發(fā)現(xiàn)/usr/bin/python沒(méi)有第三方庫(kù)或者腳本依賴某個(gè)全局命令結(jié)果目標(biāo)機(jī)器上沒(méi)裝。排查思路按順序來(lái)用which python確認(rèn)解釋器路徑不同機(jī)器可能指向不同版本。檢查腳本第一行建議寫成#!/usr/bin/env python3讓它自動(dòng)找PATH里的python3。第三方依賴寫進(jìn)requirements.txt并用虛擬環(huán)境安裝別強(qiáng)行裝到全局。如果腳本依賴外部命令比如用到了ffmpeg、jq啟動(dòng)時(shí)最好先做一個(gè)依賴檢查缺失時(shí)給出安裝提示而不是直接崩。我在bmark里就吃過(guò)一次虧在Mac上開發(fā)時(shí)用brew install jq裝了jq分享給Linux同事后發(fā)現(xiàn)他那邊沒(méi)有jq腳本跑一半直接報(bào)錯(cuò)。后來(lái)在入口處加了依賴檢測(cè)邏輯哭了。經(jīng)驗(yàn)就是CLI工具的友好度有一半體現(xiàn)在“缺東西的時(shí)候能告訴你缺了什么、怎么裝”上。5.2 輸出亂碼與編碼問(wèn)題命令行工具輸出中文亂碼是另一個(gè)高頻問(wèn)題。根源大多是終端和Python的stdout編碼不一致。Python3默認(rèn)UTF-8正常但如果腳本運(yùn)行環(huán)境設(shè)置了非UTF-8的locale或者重定向到文件時(shí)編碼轉(zhuǎn)換出問(wèn)題就會(huì)亂碼。應(yīng)對(duì)方法腳本里明確用encodingutf-8打開文件不要依賴默認(rèn)編碼。JSON輸出用ensure_asciiFalse保證中文可讀。輸出重定向到文件時(shí)指定UTF-8比如bmark ls out.txt在腳本里對(duì)stdout做編碼聲明或者設(shè)置環(huán)境變量PYTHONIOENCODINGutf-8。如果用的是Windows終端打開終端時(shí)確保代碼頁(yè)是65001UTF-8模式Windows PowerShell新版基本默認(rèn)UTF-8老版本需要手動(dòng)改。這類問(wèn)題雖然煩人但排查起來(lái)其實(shí)有章法先確認(rèn)腳本內(nèi)的字符串是正常的Unicode再確認(rèn)文件讀寫編碼最后查終端渲染。絕大多數(shù)情況是第二層出了問(wèn)題因?yàn)槟_本內(nèi)部的字符串在內(nèi)存里本來(lái)就是Unicode只要打開文件時(shí)編碼指定對(duì)了問(wèn)題就沒(méi)了。5.3 效率陷阱什么時(shí)候不該用CLICLI-Anything讓一切都能變成命令但“能”跟“該”是兩回事。我見過(guò)太多人為了CLI而CLI最后反而拖累效率。我給自己定的三條紅線不符合“2秒內(nèi)出結(jié)果”的交互式復(fù)雜任務(wù)不做成CLI。比如在線聊天、可視化數(shù)據(jù)分析這些需要持續(xù)交互和圖形反饋的場(chǎng)景終端不是好的載體別勉強(qiáng)。維護(hù)成本超過(guò)使用收益的不做。一個(gè)腳本你一個(gè)月才用兩次每次能省5分鐘但為了修它的bug花了3小時(shí)這就不值。個(gè)人工具的真諦是先快速有再持續(xù)改不要一開始就追求完美。涉及敏感數(shù)據(jù)的場(chǎng)景要格外小心。命令行有個(gè)特點(diǎn)輸入會(huì)在shell歷史里留下記錄。直接在命令參數(shù)里寫密碼、API密鑰等于把密鑰明文寫在歷史文件里這是安全隱患。這種情況優(yōu)先用環(huán)境變量或配置文件去讀密鑰而不是作為參數(shù)傳入。拿bmark舉例如果某天我要讓它保存賬號(hào)密碼類數(shù)據(jù)我一定會(huì)先做加密存儲(chǔ)否則寧可不加這個(gè)功能。最后再分享一個(gè)我個(gè)人的心得CLI本身也是一種語(yǔ)言你的命令設(shè)計(jì)、參數(shù)命名、輸出格式都體現(xiàn)著你對(duì)自己工作流的理解。做完一個(gè)工具別急著宣布完工先在實(shí)際場(chǎng)景里用兩周把不順手的參數(shù)改順把多余的輸出刪掉直到這個(gè)命令變成你手指的肌肉記憶——到那一刻你才真正理解了CLI-Anything帶來(lái)的自由感。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品玖九九久| 性爱动态120秒| 国产97亚洲| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 亚洲欧洲精品成人| 在线观看一卡二卡| 伊人五月天| 性videos欧美熟妇hdx| 啊啊啊啊在线播放| 日韩懂色网| 99爱在线视频| www.91色综合| 婷婷综合网站| 欧美日韩操操操| 久久中文字幕一区不卡| 日韩AV无码网站| 九九九九九九九九九国产精品 | 吊色| 日本在线15p| 久久香蕉超碰97国产精品| 亚洲日韩美女丝袜美腿人妻视频| 黑人干亚洲| 超碰激情808| 桃色六月天| 丁香五月偷拍| 97久久精品国产| 射丝袜高跟鞋99| 五月天激情网图片| julia高潮后不停追击中出| 亚洲图片欧洲图片aⅴ| 少妇厨房愉情理伦片bd在线观看| 国产精品人妻免费精品| 九九九久久久| 蜜乳AV.COM| 收看日本人日bb| 青娱乐二区免费| 久久久97| 亚洲,日韩,欧美,成人播放| 97色网| 日韩欧美性爱电影在线观看| 人妻久热在线| 97亚洲资源| 密臀在线免费观看| 丰满丝袜少妇AV| 97久久天天综合色天天综合色电影| 中文字幕55555| baiduhicn.com。| 欧美色日| 日韩综合色图| 插欧洲美女欧美精品| 日韩探花精品在线视频| 好淫网一二三视区| 一直超碰| JuliaAnnXXX888| 一起草视频在线| 国产无码精品无码| A片 AV一级在线播放观看免费| 色欲日韩欧美在线一区| 久九九九九九九热| 777奇米影视777四色| 亚洲日韩美女中文字幕乱| 天天插天天舔舔天天干| 国产91美女视频| 久久久久久久久九九久孕交| 久草婷婷| 久久精品无码一区二区三区| 国产精品午夜AV完会免费 | 亚洲无码成人精品| 大香蕉强奸乱伦| 日韩人妻无码专区| 亚洲情色一区综合| 亚洲蜜臀精品视频久久| 国产在线综合福利网站| 欧美顶级黄色大片免费| 91大胆欧美| 激情视频一二三| 大香蕉狠狠爱| 美女尤物人人操| 欧美日韩性感| 亚洲天天自拍| 国产精品无套内谢| 97二区四区| 婷婷九月国产| 欧美系列在线一区二区| 国产九九久久久精品| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 人妻中文在线| 欧美性生活内射| 国产麻豆91欧美一区二区久久婷婷国产精品| 高潮精品| 青青青国产| 美女网站黄页| 欧美精品91| 超碰超碰超碰超碰的大鸡吧操黑丝袜| AⅤ片水多多| 综合自拍| 狠狠操狠狠燥| 日韩操逼HD| 日本91白丝| 欧美色图小说综合| 国产网站在线播放| 91性感网站| 亚洲乱妇p22| 四虎影院成年人片| 日本不卡免费二区| 999国产精品999| 少妇三P| 久久人| 色综合久久久久| 亚洲综合伊人| 老熟女区| 加勒比综合| 久久亚洲av成人无码国产| 天天看高清麻豆| 亚洲麻豆av一区二区| 日本三级黄页| 免费福利视频中文字幕| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 啊啊啊要高潮了| 激情五月综合开心五月| 成人A片男人的天堂| 男人的天堂 在线一区| 激情五月天色色网| 五月天婷婷社区| 99操碰| 亚洲极品| 男人的天堂不卡一区二区 | 91人妻Pr| 亚洲色图超碰在线| 国产亚洲欧洲在线观看| 久久黄色性爱视频| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 鸥美精品一区二区久久婷婷| 男人的天堂va在线| 久色网| 中文字幕欧美日本乱码一线二线| 色噜噜人妻丝袜a∨先锋影| 加勒比综合a∨| 免费操逼视频下载| 亚洲色婷婷综合久久一区二区三区| 99热综合| www.五月天| 在线国产一区二区av| 偷拍欧美激情| 久久手机视直播| 午夜精品99久久久久传媒| 亚洲清纯综合| 久久精品人体AV| 97精品免费视频网站| 精品国产一区二区三区久久久蜜臀| 999999精品| 高清不卡国产| 激情综合久久| 丰满翘臀美女影院视频| 日韩免费在线视频观看| 手机看片91人妻| 7777奇米影视久久| 2020中文字幕在线| 人妻天天夜夜爽一区二区| 97在线免费观看视频| 9精品在线| 久久社区一区二区三区| 唯美清纯 妖精视频| 91中文精品日韩欧美在线| 欧美大香蕉同搞| 99色热| 亚洲精品97在线| 日本性爱网址| 天天影视色香色欲| 日韩中文字幕视频在线观看| 97爱| 亚洲一级特黄大片在线播放91| 蜜桃臀一区二区三区久久| 色五月激情综合网| 亚洲 自拍偷拍 欧美| 男人综合网| 亚洲 图片 欧美 色图| 免费在线黄片视频| 一级性爱视频免费观看| 91综合在线| 无码精品啪啪啪一区二区三区三州| 久久五月份| yellow网站免费观看日韩高清无码| aaa淫乱视频| 91无遮挡| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 亚洲精品成人动漫在线| 这里只有精品97| 国产熟女少妇一区| 欧美激情高清性猛交| 国产精品一区二区三| 综合五月婷婷亚洲一区| 精品美女少妇一区二区| 亚码人妻| 97色色色综合网站| 麻豆久久精品亚洲精品88| 青青草狠狠撸| 日本男人插女人的逼黄色| 亚洲夜色在线| 精品久久視頻在线| 99精品久久| 亚洲国产激情国产av| 色激情综合网站| 国产尤物AV尤物在线观看不卡| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 密桃99999| 国产无马视频| 亚洲精品天堂久久A∨51成人漫| 亚洲无码视频免费在线观看网址!| 91男人综合| 97在线观看免费视频l| 日本天堂网| 亚洲不卡不卡中文字幕不卡| 97人肏| 亚州少妇| 青青操在线亚洲视频观看欧美在线 | 伊人青青一区成人视频在线观看区 | 少妇三P| 天美传媒Av在线| 97欧美色资源| 欧 美 自 拍 偷 拍| 精品国产一区二区三区四区在线看 | 亚洲无码色| 欧洲中文字幕| 免费国产| 欧美日韩色| 欧美亚洲天堂| 午夜国产乱伦视频| 激情专区综合| 91丝袜在线观看视频在线观看| 欧美狠狠弄| 亚洲性少妇| 精品久久久久成人码免| 亚洲高清欧美总合| 欧美极品美女aaaaaa级黄片| 国产日韩精品人妻久久久久色欲网站 | 久久久精品中文字幕爱豆| 中字幕人妻一区二区三区| 最新三级网址| 色丁香五月婷婷| 91 国产丝袜在线放观看| 神马午夜久久久| 亚洲清纯唯美| www.亚洲黄色| 色99视频| 欧洲与亚洲欧美精品中文字幕| 91老妇女| 国产精品无码成人精品| 91校园春色长篇| 91天天爽| 色嗨嗨在线| 女人的久久久| 精品国产乱子伦一区二区三区,精品一 | 欧美第38页| 加勒比伊人影院| 亚洲高潮影院| 亚洲暴力强奸AV| 五月天婷婷欧美三区| 99操| 亚洲少妇在线观看| 日韩成人大片在线观看| 欧美精品三区| 小草精彩毛片| 丰满人妻一区| 色就色综合| AV中文在线可看| 91爱看| 亚洲欧美综合| 天天综合网站| 亚洲清纯唯美| 久久无码一区二区二三区性色| 欧美视频中文字幕区| 国产农村妇女精品1区二区| 人妻熟妇一区二区三区| 久久av成人无码免费| 精品人妻一区二区三区-国产| 欧美性五月| 免费无码国产精品v片在线观看| 97欧美精品| 久久精品国产97欧美精品亚洲| 精品国产丝袜一区二区三区乱码| 天天操天天干一区二区 | 亚洲精品国产av天美传媒| 久久久啊啊啊| 久久婷婷一区二| 日日摸日日弄日日拍| 神马麻豆福利院| 国产激情在线| 激情内射| AA特级绝黄| 91网站视频在线观看| 亚洲一区在线观看欧洲 | 欧日韩不卡视.频| 好爽要喷了| n1038 一二三区| 久久精品久| 免费试看60秒| 亚洲无码偷拍| 噜噜瑟| 激情五月综合开心五月| 婷婷色一区| 午夜精品久久久久久久第一页按摩| 97干日韩| 91总综合网| 欧美一区二区三区互相| 另类av天堂| 日韩av不卡在线看| 97国产精品久久久久| 乱伦av国产| 欲女人妻性色av| 亚洲va有码在线天堂| 91欧美丝袜| 日韩亚洲Av人人夜夜澡人人爽| 9997se| 婷婷视频网| 天天爽天天操啊啊啊| baisiav| 亚洲黄片免费在线播放| 蜜桃视频一区二区三区| 欧美性生活综合| 欧美日韩狠狠爱| 日本曲间由美性生活片| 国产第25页在线观看| 久热这里只有精品9| 91久青| 99热| 亚洲天堂久久久久久粉红视频| 国产又黄又爽| 97色碰| 青青久久手机线视频| 殴美色网| 国产最新AV| 国产精品嫩草影院午夜两性| 日本中文字幕熟妇| 欧美亚性天堂| 日本成人电影资源网| 超碰美国| 国产精品久久久九九九| 综合熟女| 小视频玖玖| 精品人妻一区二区三区四区| 另类 综合 日韩 欧美 亚洲| 99热9| 草草影院日本第一页| 中文字幕丝袜| 91色色综合| 97青青操视频| 久久婷婷五月天| 黄片国产精品一区二区| 亚洲一区二区三区春色| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 五月丁香综合啪啪| 免费自拍三级综合| 99re超碰| 青青草字幕AV| av网站在线看| 丁香婷婷激情五月天无毒不卡| 久久久精品一区二区| 国产 无码 一区二区| 七月婷婷综合| 风韵犹存大大大大香蕉| 国产AV线| 啊啊啊啊,啊啊好多水| 91夜色chaopeng| 大香蕉宗合网在线| 国模精品一区二区三区苹果色戒| 亚洲伊人a线观看视频| 综合久久2017| 在线αⅴ| 精品免费一区二区三区在线亚洲人成| 91性高潮久久久久久久久| 人妻密肉在线观看| 人妻天天夜夜爽一区二区| 国产无套粉嫩白浆在| 2018天天干在线视频| 一二三区操逼国产91| 99草精| 色哟哟AV| 欧美女同在线| 午夜福利一区二区三区四区五区色婷婷| 日韩一999精品| 操操啪| 激情五月天视频| 在线观看精品国产免费| 日躁天天爽爽| 成人精品水蜜桃久久久久久久| 中文字幕高清精品一区| 超碰在线1234区| 骚女天天综合网| 日本韩高清无砖码22o| 中文字幕视频在线观看一区二区| 婷婷五月天久久久| 伊人激情五月天一区二区| 手机在线中文字幕国产| 国产日韩在线播放av| 日韩免费高清大片在线| 人妻偷拍一区二区三区| 黄色片,com| 18禁精品网站在线看| 精品午夜福利国产一区二区在线观看 | 99色视频| av操操不卡| 亚洲天堂人人妻| 久久综合久色欧美综合狠狠 | 夜夜做夜夜爽精品视频| 国产精品久久久吖| 色色香蕉| 操B在线观看| 人人看人人摸人人色| 天天操天天舔| 国产成人资源| 麻豆天美制片厂网站视频| 大香蕉啪啪啪啪在线| 97精品久久久久中文字幕| 青青草中日韩在线| 91亚洲欧美激情| aa片毛片| 青青久久手机线视频| 九九无码视频| 91人妻视频在线| 日日夜夜噜| 美女爽到高潮91| 日韩国产精品人妻无码久久久| 欧美精品久久久久久久丰满| 久久久久亚洲Aⅴ无码| 色5月婷婷| 欧美中文字幕一区 | 久久大香蕉97| 亚洲成人在线高清| 色婷婷久久| 中文在线久久字幕| 亚洲学生妹高清av| 六月丁香五月婷婷| 91久久久老司机| 亚洲欲色| 精品国产久热在线观看| 色999偷自拍拍| 欧美综合中文| 三级网色| 亚洲淫色网中文| 性色A∨91| 我爱搞逼综合网| 色诱avtt| 国产精品毛片?v一区二区三区| 91亚洲欧美| 久久免费精品视频免一| 青青草视频在线观看一区二区| 欧美成人贴图| 女同性恋久久| 日韩欧美偷拍美女视频| 精品人妻中文字幕高清| 色综合久久888| 嗯嗯嗯啊啊啊干死我吧| 免费αV在线视频| 欧美大香蕉卡久久| 欧美大的香蕉有线电视视频| 久操热线| 欧美少妇高潮| 五月色网| 99色热| 亚洲一区二区三区AV无码| 国产美女口爆吞精| 日韩成人在线性爱视频| 日韩啪啪啪视频| 自拍偷拍 日韩欧美| 日本有码影片下载| 欧洲在线性爱视频| av在线浏览| 欧美成人一级麻豆| 情色五月天久久久| 熟女这里只有精品6| 一区麻豆 高清中文字幕| 性爱av在线免费观看| 伦理弟一页| 手机在线中文字幕国产| 97情超碰色| 乱伦日本色图AⅤ| 91超碰在线播放| 人人爱人人操人人性| 毛片麻豆91糖心精品毛情片| 麻豆国产96在线| 天天操天天干美女网址导航| 一起草av| 五月丁香黄色网| 亚州人妻| 欧美精品自慰系列寂寞少妇| av橘色网站| 天天综合网站| 亚洲天堂久久| 久久99亚洲精品久久99果| 亚洲激情深爱文学小说网站| 操操啪| 91美女视频| 午夜精品久久久99| 日本高清有码网址视频| 欧美 亚洲| 中文字幕丝袜人妻| 日韩探花精品在线视频| 99热精品在线观看| 亚欧美天堂在线| 99久久婷婷丁香| 亚州精品人妻一二三区| 99国内精品| 中文字幕一二区二三区人妻专区| AV男人天堂网| 91女人的网站| wwwcaobibi| 97欧美精品| 婷婷九月国产| 日日日啊啊啊| 国产亚洲精品自在线亚洲情侣| 欧美天天综合网| 天天舔天天日天天射| 久久婷婷亚洲| 久久精品日韩| 狠狠操狠狠操操| 国产女s强制榨精视频| 亚洲综合夜色| 骚乳在线| 五月丁香网站| 69精品久久久久中文字幕| 探花精品 一区二区| 欧洲亚洲天堂精品| 日韩97视频!在线| 人人天天干干| 国产一区二区三区久久久精品| 精品人妻一区二区三区不卡断| 久久深夜无码| 日韩有码一区三区| 久久亚洲av成人无码国产| 韩三级a视频在线观看| 女人香蕉久久毛毛片精品| 欧天美中出| 欧美中文字幕男人天堂久久精品| 91人人臊| 成人亚欧免费视频| 午夜视频久久久久一区| 牛牛AV人人夜夜澡人人爽| 青青五月天| 亭亭在线资源| oumeizonghese,www| 欧美亚洲激情小说| 人妻天堂综合网| 免费一级视频特黄色大片| 亚洲最大成人a毛毛片| 少妇一级无码精品| 一区二区乱码福利| 久久久久9999| 中日韩免费看男女操逼大全| 97久久超碰| 日韩色| 日韩精品一二三| 深夜激情| 亚洲色图欧美色18直播在线| 香港久久久| 偷窥自拍亚洲| 日本男人天堂| 三级片网站在线播放| 伊人久久大香线综合无码| 日韩综合97P| 91精品国产91熟女| 亚洲AV噜噜狠狠网址蜜桃动漫| 国产女人91精品嗷嗷嗷嗷| 日本亚欧爱爱| 91影库| 四月丁香婷婷| 国产粉嫩蜜臀av一区二区三区| 亚洲女毛多水多21P| 97人人夜| 亚洲精品久久久久久久蜜桃臀| 999国产精品999久久久久久| 欧美日本不卡在线| 色噜噜国产精品视频一区二区| 欧亚三区动漫| 中文字幕久久婷婷丁香五月天| 综合另类| 777AV电影| 一级性爱aaaa| 亚洲欧美精品一区天堂久久 | 欧美白嫩女HD| 一区二区首页| 亚洲综合情色| 成人区人妻精品一| 色牛aV| 国产91亚洲精品一区二区三区| 激情小说日韩无码| 97K超碰在线| 欧美亚洲宗合色性图| 岛国在线国产| 亭亭丁香激情| 婷婷丁香五月天综合东京热| 久插综合| 大香蕉伊人色偷偷在线| 91欧美长吊| 91亚洲欧美综合高清在线| 欧美色交| 都市久久精品激情亚洲| 人、人、摸,人、人、草| 小泽玛利亚一二三| 亚洲日韩欧美一区二区| 日韩情色一区二区| 国产日韩欧美亚洲精品95 | 日韩超碰精品综合| 欧美丝袜91| 97资源视频| 久久婷婷视频| 综合天天网| 韩日欧亚a级| 岛国激情视频软件| 日韩亚洲美州欧洲综三区一品在线| 97 超碰 人人做 人人爱| 日韩在线观看AV| 欧美人人曰人人操人人射射| 日本一级一级一级一级| 亚洲色资源| 91天天看| 91欧美综合在线| 97超碰色色| 亚洲一本大道中文字幕无码在线| 国产精品经典一卡久久久| 亚洲天堂一区二区| 岛国色情视频在线观看| 美女露胸露奶头| 国产成人五月天丁香花| 国产偷拍自拍在线视频| 97视频7| 久久久96| 黄污污污污| 深夜激情| 日本精品不卡一二三区| 很很很很操| 翔田千里无码一区| 日韩99神马视频播放片在线播放| 这里都是精品| 九九色影院| 久草线上视频免费看| 成人a级高清视频在线观看| 97网址www| 日少妇视频| 桃色五月天| 蜜臀中文无码午夜| 久久婷婷精品| 亚洲狠狠入| 婷婷久久网| 亚春色色| 91狠狠综合久久久久久| 韩日欧亚a级| 色婷婷小说| 久久香蕉国产线看观看亚洲女人| 国模精品一区二区三区苹果色戒 | 欧美大香蕉久| 天天日天天射天天干| 国产JDAV无码视频在线观看| 精品视频97| 被男人添B超爽视频| 亚洲免费97免费| 嗯啊视频免费在线观看| 国产精品一区二区后入| 久久婷婷综合国际产色怕| 久久九九精品一区二区 | 日韩精品系列| 亚洲成?V人片在线观看福利| 在线性黄高清免费视频| 怡红院网站在线视频| 久久久精品国产亚洲AV无码| 国产欧美另类久久久精品课程| 久久精彩免费视频| 欧美裸体美女日麻屄| 欧美第38页| 国产极品99热在线播放69| 熟女一区二区三区四区| 大香蕉综合在线| 老熟女网站| 欧美香蕉视xxx| 精品国产丝袜一区二区三区乱码| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 国产性爱在线视频一区二区| 美女视频尤物网在线看| 午夜福利一区二区影院| 97精品97久久| 六月婷婷五月丁香| 国产精品分类在线观看| 综合97久久| 日韩有码免费视频| 超碰人人操97碰| 骚货 中文字幕 av| 啊啊啊啊啊在线观看网址 | 日韩综合无码色欲vv| 一区二区三区男人的天堂| 亚洲综合色男人网| 亚洲精品官网在线观看| 97AV在线观看| 97久久天天综合色天天综合色电影| 日韩成人综合网| 欧美在线永久天堂| 欧美综合色图片| 激情亚洲天堂| 久久久久久人妻| 亚欧性爱无码| 亚洲成人贴图| 欧洲亚洲人人爽爽视频| 久热色情精品| 五月丁香激情综合| 噜噜噜在线视频| 91美女视频在线观看| 亚洲色悠悠久久88| 偷拍 精品 另类 四区| 欧美黄片欧美黄片xxx| 麻豆久久精品亚洲精品88| 国产精品久久久久无码A√| yazhououmeizongya| 玖玖蜜臀资源网| 99日韩| 天天干干天天干干| 麻豆久久精品亚洲精品88| 极品后入免费视频| 国产婷婷一区| 97九色人妻| 成人在线视频网| 91快色色色色色| 五月天我淫我色av| 天天综合网网欲色| 97在线观| 啪啪啪男女亚洲中文字幕99| 日韩中文9| 色香在线| 亚洲 欧美 另类 日韩 人妻一区| 99热这里只有精| 国产成人网| 91色久| 国内毛片国产专区二| 国产精品亚洲一级av第二区| 9国产超碰| 无码高清操逼| 国产精品午夜AV完会免费| 欧美美女视频| 青草成人免费视频一COm| 五月天婷婷社区| 午夜亚洲| 天天色欧美| 97干在线| 91人妻人人澡人人爽人人精品| 91天天综合日韩欧美| 神马麻豆福利院| 大香蕉综合网| 91社区伊人| 国产欧美在线观看免费观看| 国产无码三级视频在线观看| 你懂的在线观看区国产| 在线观看一级α片刺激高潮视频| 日韩精品资源专区二区| 超清福利精品视频在线| av最新免费中文字幕| 国产精品久久99日日| 亚洲一区二区三区四区视频| 极品白嫩美女白浆成人福利在线看| 亚洲国产一级精品毛一级精品看免费视频 | 日韩欧美性吧婷婷乱伦大香蕉| 欧美美女视频| 人人模人人看| 成人八戒网站| 国产视频第2页| 91网亚洲| caopeng97人妻| 欧美乱妇狂野欧美在线视频| 热的中文 热的有码 热的国产| 任你干在线视频| 九九热re99re6在线精品| 日本精品一区二区三区四区的功能| 久久人妻| jizzjizz欧美| 黄色AV影视| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 亚洲天堂2020| 国产精品久久久久久久AV大片 | 国产丝袜美腿美女麻豆| 国产AV线| 欧美精品宗合| 女人喷水视频在线观看| 中文字幕黑人大片| 97欧美色资源| 性91| 美女写真| 亚 欧 美 综合| 久久综合av| 亚欧美色| 久久久久久国产精品免费网站| 水野优香在线观看| 97视频www| 欧美亚洲图片| AV污污污污| 97 亚洲 日韩 欧美 在线| 99999这里都精品| 亚洲欧美综合| 韩国一级做A片免费的| 色 婷97| 超碰99在线| 人人人人插| 性色乱AV一区二区| 九九九九热只有精品| 草草影院最新网址| 亚洲有薄码区日本系列中文字幕| 青青草玖玖爱| 18禁看网站一区| 婷婷久草| 97天天插| 久久亚洲AV无码专区首页| 97视频网站在线观看| 久久国产精品视频| 黄色AAAAAAAAAAA大片| 亚洲欧美中日韩| 中文字幕丝袜| 超碰人人超在线观看| 另类 综合 日韩 欧美 亚洲| 永久免费观看的毛片的网站| 大香蕉520| 色天使AV天堂| 亚洲无码一二三区| 欧美97在线观看| 亚洲欧美成人网站AAA| 激情综合五月婷婷| 欧美色图99| 一区二区三区精品视频| 亚洲偷拍欧美激情| 免费一级a毛片久久久久久鸭绿欲| 亚洲天堂东京热| 殴美性天天| 丁香五月天堂网| 国产丁香精品露脸视频| 92午夜免费福利视频| 亚洲人久久久网| 最新三级网址| 97精品久久久久中文字幕| 免费a级毛片av无码久久精品中文字幕| 欧美色三级片91| 91老熟女视频| 操我啊啊啊啊啊| 成人羞羞视频国产| www.一本大99| se吧提供91精品国产91久久久久久| 青青11操操操操操操操操| 国产一区二区在线播放| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲情色一区综合| 99re这里只有精品9| 夜色五月天| 天天综合91| 美女高潮视频91| 眼镜人妻101.com| 欧美色图成人网一区二区| av一区二区三区四区| 久久大陆| 一级啊性爱在线视频| 激情婷婷黑人91| 亚洲男人天堂2019| 一区二区三区美女超清| 精品一区二区麻豆| 人人做天天爱| 欧美日韩国产人人| 国产九区| 亚洲国产一级中文综合久久天堂在线免费观看 | 欧美姓爱综合网| 亚洲精品成人激情在线| 色网1| 国产精品网址| 加勒比av网| 91狠狠综合久久久久久| 91综合网站| 日韩一区二区熟女| 777AV电影| 91亚.色| 亚洲影视综合网| 乱伦一二三区| 欧亚揄拍偷拍精品视频| av一区二区三区 中文| 欧美色图亚洲色| 夜夜狠狠躁日日躁色视频| 国产白嫩漂亮KTV在线| 大香蕉视频啪啪啪啪| 曰本精品久久久| 黄色一级视| 狠狠爱综合网| 是还免费视频1727我| www久| 国产亚洲欧美每日在线| 久久激情四射婷婷丁香五月天| 欧美乱色| 精品性爱一二三区| 亚洲人妻在线精品| 97在线欧| 日韩99神马视频片| 9 9精品一区二区三区| 亚洲成aⅴ人片不卡无码| 色欧美在线| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 九九av| 久久侵犯人妻爽爽爽| 日本高清_区二区三区| 国产福利合集| 另类老少妇| 精品视频专区| 亚洲日本成人动漫| 亚洲一区二区三区欧美日韩| 伊人五月天婷婷| se..亚洲欧美| 亚洲第一男人天堂| av72网| 中文字幕少妇色| 国产精品交换一区二区| 亚洲精品aa久久伊人| 香蕉热人人精品| 在线a亚洲视频播放在线| 无套后入双马尾| 欧美日日人人天天| 狠操91,com| 亚洲视频,小说| 无码91| 97WW精品| 屌逼麻豆| 操一区| 国产免费一区在线观看| 黄片aaaaa一区| 国产黄片精品在线| 一起草欧美| 欧 美 自 拍 偷 拍| 男女啪啪啪18禁网站| 欧美一二三| 91亚洲人| 色汉综合| 九九九久久久| 日韩三级伦理中文字幕| 91亚洲网| 免费人成毛片乱码| 91免费看一区二区三区| 国产成年女黄特黄| 日韩啊V| 黄色片A级一区二区三区| 日韩啊V| 内射老妇BBWX0C0CK| 国内偷拍精品一区二区| 热思思免费视频| 中国操逼无码| 国产亚洲精品无码三区| 91精品微拍福利| 99老司机精品视频在线观看| 蜜乳av一区二区| 97人人操人人摸人人爱| 欧美精品久久久久久久久88| 五月婷婷丁香中文字幕| 免费A V在线| 狠狠综合| 熟妇女人妻呻吟久久AV| 激情文学欧美| 久久草视频污视频| 玖玖综合视频| 亚洲在线a| av一区二区三区不卡| 欧美一级特黄淫片在线观看| 思思热在线cao| 国产福利影视| 大香蕉宗合网在线| 亚洲精品欧洲精品| 久久久96精品| 99久久99久久免费精品蜜臀| A级片日韩欧美国产欧美视频精选观看 | 91激情国产| 少妇无码999| 91被操| 亚洲欧洲国产综合av| 亚洲激情网一二三四区| 精品人妻一区二区免费蜜桃| 精品9区| 亚洲图片小说欧洲| 欧美日韩在线视频网站| 久久久久久国产精品免费网站| 亚洲成av人片色午夜乱码| 97超碰碰碰| 高清肉丝中文无码| 俞拍久久国应视频| 家庭乱伦国产| 久久精品性| 97玖玖超碰| 欧美后入式| 婷婷色色五月天福利| 另类小色呦| 久久手机好看网站| 日韩色图 一区二区| 亚洲天堂男人天堂网| 黄色AAAAA欧美| 亚洲天堂男人在线| 天天综合麻豆视频| 91欧洲国产成人久久精品网站| 黄在线| 亚洲不卡不卡中文字幕不卡| 国产风韵犹存熟妇三区| 中国一级αV| av一区二区三区 中文| 欧美五区| 人妻久久一区二区三区| 欧美人妻精品一区二区| 人妻久热在线| 人人妻人人爽人人精品| 国产51色综合久久免费| 欧美综合骚| 中文字幕日韩情色| 国产日产精品久久快鸭的功能介绍| 99综合网| 国产精品色约约| 伊人丁香五月婷婷| 天天综合精品| 97超碰9| 91狼人| 亚洲自拍欧美色综合| 亚洲最新Av| 精品区9| 欧美另类丝袜熟女| 日韩AV无码中文一区二区| 91欧美成人色站| 男女一进一出视频久久| 任你艹| 人人操超碰在线| 亚洲精品天堂久久A∨51成人漫| 美女露胸露屁股| 玖玖久久久| 天美麻花大全视频| 91女优在线观看| 无码天天操| 77国产精品| 久久久久人妻二区精品叶可怜| 国产白嫩精品久久| 91在线免费精品视频| 午夜精品久久久久久久男人的天堂 | 夜夜爽夜夜| 超碰人人妻| 欧美高清第一页| 91色艳| 91无码西班牙视频在线| 久久久啊啊| 国产精品白领在线观看| 有码免费观看| 人人操,人人插| 亚州综合AⅤ| 在线观看AV片| 亚洲熟妇综合久久久久久| 夜色AV无码手机在线影院 | 福利色色| 黑丝制服中文字幕| 激情五月综合网| 超碰97中文| 伊人97色天使| 超碰国产精品无码| 中文字幕久久亚州无码| 操逼网免费无码视频| 欧美午夜熟妇黑人精品91| 婷婷亚洲综合| 精品久久久av无码免费| 日韩一999精品| 欧美日韩另类在线播放| 欧美色自拍| 男女一级A片大黄,一进一出| 97综合激情| 天天干2019| A级毛片在线看免费| 久久AV色| 丁香五月综合| 久久久性| 欧美 亚洲 91| 激情看片网站| 视频不卡中文字幕| 日韩啪啪啪视频| 夜色AV无码手机在线影院| 性欧美999| 在线综合 亚洲 欧美中文字幕 | 麻豆区久久久久亚| 五月天开心网| 亚洲国产成人精品久久久国产成人一区二区 | 这里只有精品视频在线| 伊人国产成人av网站| 色欲色香天天天综合网www-亚洲综合国| 日本视频一区二区三区| 欧美激情高清性猛交| 日日天天久久啊啊aaa| 1禁看欧美黄片免费看| 中文 人妻 制服| 91国产美女丝袜足交精品视频 | 中文字幕乱碼在线| 激情接吻视频久久久久久| 免费试看60秒| 四虎在线观看网站| 麻豆 欧美 日韩| 久久久久久国产精品免费网站| 97亚洲欧美| 懂色av中文字幕一区二区三区天美| h在线看免费版在线看| 无遮挡一级毛片视频免费的| 操一对老熟妇爽上天视频| 神马久久久久久久久久| 大香蕉人妻| 很黄很色的视频在线观看| 91观看 国产白丝| 鸥美极品| 97干色天堂| 天天做天天爱天天高潮| 色黄色美女大长腿午夜视频| 亚洲激情综合另类| 五十路熟女,国产欧美精品区一区二区三区| 99热免费| 涩五月婷婷| 久久精视频美日韩在线视频| 人人模人人看| 久久一区二区蜜桃| 蜜臀无码一区二区| 日本不卡二三区| www色婷婷| 蜜桃在线观看一区二区三区| 丁香五月天激情| 欧美人妻久久精品二区三区| 国产精品黑人一区二区三区| 久操免费电影| 精品九九淫乱男| 91人妻视频| 国产suv精品一区二区四| 五月综合久久| 国产超碰| 在线国产一区二区av| 日韩免费大片一级播放| 激情熟女12P| 亚洲麻豆av一区二区| 女人综合网| 久久久久久久9| 上床啊啊啊| 亚洲色图A| 极品出轨视频网站| 屁股久久久久久久久| 97一区二压| 亚洲欧洲久久天堂| 一区二区三区蜜桃成人撸久久东京热 | 丁香六月激情| 国产成人网站在线观看| 国语av最新自产拍在线观看| 成人av影院在线观看| 岛国在线免费视频| 精品人妻1区| 国产最新小视频在线播放下载| 欧美中文字幕日韩在线| 69av一区二区三区| 国语对白露脸XXXXXX| 乱性AV| 国产乱伦亚洲| 一本一道波多野毛片中文在线| 亚欧性爱无码| 你想操日本小逼吗| 精品国产乱码久久久久久口爆网站| 人人插人人摸人人| 国产树林里野战在线看| av凤凰久久久| 亚洲男人天堂2013| 中文字幕精品乱码| 黄色av播放免不| 九九九九一区|