特別感謝我們最大的贊助商:
您的應用程序,企業就緒。
只需幾行程式碼即可開始向企業客戶銷售。
只需幾分鐘而不是幾個月即可新增單一登入(甚至更多)。
Warp,智慧終端
像高級用戶一樣使用 AI 和您的開發團隊運行命令
知識盡在一個快速、直覺的終端機。適用於 MacOS 或 Linux。
bat
支援大量程式設計和標記語言的語法突出顯示:
bat
與git
通訊以顯示索引的修改(請參閱左側欄):
您可以使用-A
/ --show-all
選項來顯示和反白顯示不可列印的字元:
預設情況下,如果輸出對於一個螢幕來說太大,則bat
會將其自己的輸出傳送到尋呼機(例如less
)。如果您希望bat
始終像cat
一樣工作(從不分頁輸出),您可以在命令列或設定檔中設定--paging=never
作為選項。如果您打算在 shell 配置中將cat
別名為bat
,則可以使用alias cat='bat --paging=never'
來保留預設行為。
即使設定了尋呼機,您仍然可以使用bat
來連接檔案。每當bat
偵測到非互動終端時(即,當您透過管道進入另一個流程或檔案), bat
將充當cat
的直接替代品並回退到列印純檔案內容,無論--pager
選項如何價值。
在終端機上顯示單一文件
>bat README.md
一次顯示多個文件
> 蝙蝠 src/*.rs
從 stdin 讀取,自動確定語法(注意,僅當可以從檔案的第一行確定語法時,突出顯示才會起作用,通常透過諸如#!/bin/sh
之類的 shebang )
> 捲曲 -s https://sh.rustup.rs |蝙蝠
從 stdin 讀取,明確指定語言
> yaml2json .travis.yml | json_pp |蝙蝠 -l json
顯示並反白顯示不可列印的字元:
> bat -A /etc/hosts
用它作為cat
替代品:
bat > note.md # 快速新建檔案 bat header.md content.md footer.md > document.md bat -n main.rs # (僅)顯示行號 bat f - g # 輸出 'f',然後是 stdin,然後是 'g'。
fzf
您可以使用bat
作為fzf
的預覽器。為此,請使用bat
s --color=always
選項強制彩色輸出。您也可以使用--line-range
選項來限制長檔案的載入時間:
fzf --preview“bat --color=always --style=numbers --line-range=:500 {}”
有關更多信息,請參閱fzf
的README
。
find
或fd
您可以使用find
的-exec
選項透過bat
預覽所有搜尋結果:
找到...-exec bat {} +
如果您碰巧使用fd
,則可以使用-X
/ --exec-batch
選項執行相同操作:
fd … -X 蝙蝠
ripgrep
透過batgrep
, bat
可以用作ripgrep
搜尋結果的印表機。
batgrep 針 src/
tail -f
bat
可以與tail -f
結合使用,透過語法突出顯示持續監視給定檔案。
尾-f /var/log/pacman.log | bat --paging=從不 -l 日誌
請注意,我們必須關閉分頁才能使其正常運作。我們也明確指定了語法( -l log
),因為在這種情況下無法自動偵測到它。
git
您可以將bat
與git show
結合使用,以使用正確的語法反白顯示給定檔案的舊版本:
git show v0.6.0:src/main.rs | git show v0.6.0:src/main.rs |蝙蝠-l rs
git diff
您可以將bat
與git diff
結合起來,透過適當的語法突出顯示來查看程式碼變更周圍的行:
蝙蝠差(){ git diff --name-only --relative --diff-filter=d | git diff --name-only --relative --diff-filter=d | xargs 蝙蝠 --diff }
如果您喜歡將其用作單獨的工具,請查看bat-extras
中的batdiff
。
如果您正在尋找對 git 和 diff 操作的更多支持,請查看delta
。
xclip
bat
輸出中的行號和 Git 修改標記可能會使複製檔案內容變得困難。為了防止這種情況,您可以使用-p
/ --plain
選項呼叫bat
或簡單地將輸出傳輸到xclip
:
蝙蝠主.cpp |剪輯
bat
將偵測輸出是否被重定向並列印純檔案內容。
man
透過設定MANPAGER
環境變量, bat
可以用作man
的著色分頁器:
導出 MANPAGER =“sh -c 'col -bx | bat -l man -p'”man 2 選擇
(如果您使用的是 Debian 或 Ubuntu,請將bat
替換為batcat
)
如果遇到格式問題,可能還需要設定MANROFFOPT="-c"
。
如果您希望將其捆綁在新命令中,您也可以使用batman
。
請注意,手冊頁語法是在此儲存庫中開發的,仍然需要一些工作。
另請注意,這不適用於 Mandocs man
實現。
prettier
/ shfmt
/ rustfmt
prettybat
腳本是一個包裝器,它將格式化程式碼並使用bat
列印它。
--help
訊息您可以使用bat
為幫助文字著色: $ cp --help | bat -plhelp
您也可以使用包裝器來解決此問題:
# 在你的 .bashrc/.zshrc/*rcalias 中 bathelp='bat --plain --language=help'help() {"$@" --help 2>&1 |蝙蝠幫助 }
然後你可以執行$ help cp
或$ help git commit
。
當您使用zsh
時,您也可以使用全域別名來完全覆寫-h
和--help
:
別名 -g -- -h='-h 2>&1 | bat --language=help --style=plain'alias -g -- --help='--help 2>&1 |蝙蝠--語言=幫助--風格=普通'
這樣,您可以繼續使用cp --help
,但獲得彩色幫助頁面。
請注意,在某些情況下, -h
可能不是--help
的簡寫(例如使用ls
)。
請報告此存儲庫中幫助語法的任何問題。
apt
)...以及其他基於 Debian 的 Linux 發行版。
bat
自 20.04(“Focal”)起在 Ubuntu 上可用,自 2021 年 8 月起在 Debian 上可用(Debian 11 - “Bullseye”)。
如果您的 Ubuntu/Debian 安裝足夠新,您只需運行:
sudo apt安裝bat
重要:如果您以這種方式安裝bat
,請注意,可執行檔可能會安裝為batcat
而不是bat
(由於與另一個套件的名稱衝突)。您可以設定bat -> batcat
符號連結或別名,以防止因此可能出現的任何問題,並與其他發行版保持一致:
mkdir -p ~/.local/bin ln -s /usr/bin/batcat ~/.local/bin/bat
.deb
軟體包)...以及其他基於 Debian 的 Linux 發行版。
如果該軟體包尚未升級到您的 Ubuntu/Debian 安裝,或者您想要最新版本的bat
,請從發布頁面下載最新的.deb
軟體包並透過以下方式安裝:
sudo dpkg -i bat_0.18.3_amd64.deb # 調整版本號碼和架構
您可以從官方來源安裝bat
軟體包,前提是您啟用了適當的儲存庫:
apk新增bat
您可以從官方來源安裝bat
套件:
吃豆人-S 蝙蝠
您可以從官方 Fedora Modular 儲存庫安裝bat
軟體包。
dnf安裝bat
您可以從 dev-kit 安裝bat
套件。
出現系統應用程式/bat
您可以從官方來源安裝bat
套件:
出現系統應用程式/bat
您可以透過 xbps-install 安裝bat
:
xbps-安裝-S bat
您可以透過 pkg 安裝bat
:
pkg安裝bat
您可以使用 pkg 安裝預編譯的bat
套件:
pkg安裝bat
或從 FreeBSD ports 自己建置它:
cd /usr/ports/textproc/bat 進行安裝
您可以使用pkg_add(1)
安裝bat
套件:
pkg_add 蝙蝠
您可以使用 nix 套件管理器安裝bat
:
nix-env -i 蝙蝠
您可以使用 Flox 安裝bat
flox安裝bat
您可以使用 zypper 安裝bat
:
zypper 安裝蝙蝠
目前沒有建議的 snap 包可用。現有的軟體包可能可用,但不受官方支持,並且可能存在問題。
您可以使用 Homebrew 安裝bat
:
釀造安裝蝙蝠
或使用MacPorts安裝bat
:
連接埠安裝bat
在 Windows 上安裝bat
有幾個選項。安裝bat
後,請查看「在 Windows 上使用bat
」部分。
您需要安裝 Visual C++ Redistributable 軟體套件。
您可以透過 WinGet 安裝bat
:
winget安裝sharkdp.bat
您可以透過 Chocolatey 安裝bat
:
choco安裝bat
您可以透過 scoop 安裝bat
:
舀安裝蝙蝠
您可以從發布頁面下載預先建置的二進位文件,
您需要安裝 Visual C++ Redistributable 軟體套件。
請查看發布頁面,了解適用於許多不同體系結構的bat
預建置版本。靜態連結的二進位檔案也可用:尋找檔案名稱中帶有musl
的檔案。
如果您想從原始程式碼建立bat
,則需要 Rust 1.70.0 或更高版本。然後你可以使用cargo
來建立一切:
貨物安裝--鎖定蝙蝠
請注意,無法以這種方式安裝其他文件,例如手冊頁或 shell 完成文件。它們將由cargo
生成,並且應該在Cargo目標資料夾中可用(在build
下)。
使用bat --list-themes
取得所有可用主題的清單以進行語法突出顯示。若要選擇TwoDark
主題,請使用--theme=TwoDark
選項呼叫bat
或將BAT_THEME
環境變數設為TwoDark
。在 shell 的啟動檔案中使用export BAT_THEME="TwoDark"
以使變更永久生效。或者,使用bat
的設定檔。
如果您想預覽自訂文件上的不同主題,可以使用以下命令(為此需要fzf
):
蝙蝠--列表主題| fzf --preview="bat --theme={} --color=always /path/to/file"
bat
根據終端的背景顏色自動選擇適當的主題。您可以使用--theme-light
/ --theme-light
選項或BAT_THEME_DARK
/ BAT_THEME_LIGHT
環境變數來自訂所使用的主題。如果您經常在深色和淺色模式之間切換,這尤其有用。
您也可以按照下面的「新增主題」部分來使用自訂主題。
bat
有三個始終使用 8 位元顏色的主題,即使真彩色支援可用:
ansi
在任何終端上看起來都不錯。它使用 3 位元顏色:黑色、紅色、綠色、黃色、藍色、洋紅色、青色和白色。
base16
專為 Base16 終端主題設計。它根據 base16 樣式指南使用 4 位元顏色(3 位元顏色加上明亮的變體)。
base16-256
是為 base16-shell 設計的。它用 16 到 21 的 8 位元顏色取代某些明亮的顏色。
儘管這些主題受到更多限制,但它們比真彩色主題有三個優勢。他們:
享受最大的兼容性。某些終端實用程式不支援超過 3 位元顏色。
適應終端主題變化。即使對於已經列印的輸出也是如此。
在視覺上與其他終端軟體更好地協調。
您可以使用--style
選項來控制bat
輸出的外觀。例如,您可以使用--style=numbers,changes
來只顯示 Git 變更和行號,但不顯示網格和檔案頭。設定BAT_STYLE
環境變數以使這些變更永久生效或使用bat
的設定檔。
提示
如果您在bat
的設定檔中指定預設樣式,則可以使用--style
命令列參數來變更單次執行bat
期間顯示的元件。透過在組件前面加上+
或-
前綴,可以將其新增至目前樣式或從目前樣式中刪除。
例如,如果您的設定包含--style=full,-snip
,則可以使用--style=-grid,+snip
執行 bat 來刪除網格並重新新增snip
元件。或者,如果您想完全覆蓋樣式,可以使用--style=numbers
來只顯示行號。
如果您發現bat
中不提供特定語法,您可以按照這些說明輕鬆地將新語法新增至目前的bat
安裝。
bat
使用優秀的syntect
函式庫進行語法高亮。 syntect
可以讀取任何 Sublime Text .sublime-syntax
檔案和主題。
Package Control 是尋找 Sublime Syntax 套件的一個很好的資源。一旦找到語法:
建立一個包含語法定義檔的資料夾:
mkdir -p "$(bat --config-dir)/syntaxes"cd "$(bat --config-dir)/syntaxes"# 將新的'.sublime-syntax' 語言定義檔# 放入此資料夾(或其子目錄) ),例如:git clone https://github.com/tellnobody1/sublime-purescript-syntax
現在使用以下命令將這些檔案解析到二進位快取中:
蝙蝠緩存--構建
最後,使用bat --list-languages
檢查新語言是否可用。
如果您想返回預設設置,請致電:
蝙蝠快取--清除
如果您認為預設應在bat
中包含特定語法,請在閱讀此處的政策和說明後考慮開啟「語法請求」票證:開啟語法請求。
這與我們添加新語法定義的方式非常相似。
首先,使用新語法突出顯示主題建立一個資料夾:
mkdir -p "$(bat --config-dir)/themes"cd "$(bat --config-dir)/themes"# 下載 '.tmTheme' 格式的主題,例如:git clone https:// github. com/greggb/sublime-snazzy# 更新二進位快取bat 快取--build
最後,使用bat --list-themes
檢查新主題是否可用。
您可以使用--map-syntax
命令列選項新增的(或變更現有的)檔案名稱模式。此選項採用pattern:syntax
形式的參數,其中pattern
是與檔案名稱和絕對檔案路徑相符的全域模式。 syntax
部分是受支援語言的全名(使用bat --list-languages
進行概述)。
注意:您可能希望將此選項用作bat
配置檔案中的條目以實現持久性,而不是一次性將其傳遞到命令列。通常,如果您想手動指定文件的語言,只需使用-l
即可。
範例:若要對所有具有.conf
檔案副檔名的檔案使用「INI」語法反白顯示,請使用
--map-syntax='*.conf:INI'
範例:若要使用「Git Ignore」語法開啟所有名為.ignore
(完全符合)的文件,請使用:
--map-syntax='.ignore:Git 忽略'
範例:若要使用「Apache Conf」語法開啟/etc/apache2
子資料夾中的所有.conf
文件,請使用(此映射已內建):
--map-syntax='/etc/apache2/**/*.conf:Apache Conf'
bat
使用PAGER
環境變數中指定的分頁程式。如果未設定此變量,則預設使用less
。如果要使用不同的尋呼機,可以修改PAGER
變數或設定BAT_PAGER
環境變數以覆寫PAGER
中指定的內容。
筆記
如果PAGER
是more
或most
, bat
會默默地使用less
來代替以確保對顏色的支撐。
如果要將命令列參數傳遞給尋呼機,也可以透過PAGER
/ BAT_PAGER
變數來設定它們:
導出 BAT_PAGER="少-RF"
除了使用環境變數之外,您還可以使用bat
的設定檔來設定尋呼機( --pager
選項)。
less
作為尋呼機當使用less
作為尋呼機時, bat
會自動將額外的選項傳遞給less
以改善體驗。具體來說, -R
/ --RAW-CONTROL-CHARS
、 -F
/ --quit-if-one-screen
,並且在某些條件下, -X
/ --no-init
和/或-S
/ --chop-long-lines
。
重要的
如果出現以下情況,則不會新增這些選項:
尋呼機沒有命名為less
。
--pager
參數包含任何命令列參數(例如--pager="less -R"
)。
BAT_PAGER
環境變數包含任何命令列參數(例如export BAT_PAGER="less -R"
)
在以下情況下,不會新增--quit-if-one-screen
選項:
使用--paging=always
參數。
BAT_PAGING
環境設定為always
。
需要-R
選項才能正確解釋 ANSI 顏色。
如果輸出大小小於終端的垂直大小, -F
選項指示less
立即退出。這對於小檔案來說很方便,因為您不必按q
退出尋呼機。
需要-X
選項來修復less
版本less
的版本中的--quit-if-one-screen
功能的錯誤。如果您想在舊版的less
上啟用滑鼠滾輪滾動且不介意失去「if-one-screen」功能,則可以將尋呼機(透過--pager
或BAT_PAGER
)設為less -R
。對於 530 less
或更高版本,它應該可以開箱即用。
當使用bat
的-S
/ --chop-long-lines
選項時,會新增-S
選項。這告訴less
截斷任何大於終端寬度的行。
bat
自行將製表符擴展為 4 個空格,而不依賴於尋呼機。若要變更此設置,只需新增--tabs
參數以及要顯示的空格數。
注意:不會考慮為尋呼機定義製表位(透過bat
的--pager
參數,或透過less
的LESS
環境變數),因為尋呼機已經獲得擴展的空格而不是製表符。新增此行為是為了避免側邊欄引起的縮排問題。使用--tabs=0
呼叫bat
將覆蓋它並讓分頁器使用選項卡。
如果您在 macOS 中使用深色模式功能,您可能需要將bat
配置為根據作業系統主題使用不同的主題。以下程式碼片段在深色模式下使用default
主題,在淺色模式下使用GitHub
主題。
別名 cat="bat --theme=$(預設讀取 -globalDomain AppleInterfaceStyle &> /dev/null && echo 預設 || echo GitHub)"
也可以使用設定檔自訂bat
。該檔案的位置取決於您的作業系統。若要取得系統的預設路徑,請呼叫
bat --設定檔
或者,您可以使用BAT_CONFIG_PATH
或BAT_CONFIG_DIR
環境變數分別將bat
指向設定檔或設定目錄的非預設位置:
導出 BAT_CONFIG_PATH="/path/to/bat/bat.conf"導出 BAT_CONFIG_DIR="/path/to/bat"
可以使用--generate-config-file
選項建立預設設定檔。
bat --產生設定檔
現在還有一個系統範圍的設定文件,在 Linux 和 Mac OS 上位於/etc/bat/config
下,在 Windows 上位於C:ProgramDatabatconfig
下。如果存在系統範圍的設定文件,則使用者配置的內容將簡單地附加到其中。
設定檔是命令列參數的簡單列表。使用bat --help
查看可能的選項和值的完整清單。此外,您可以透過在行前面新增#
字元來新增註解。
設定檔範例:
# 將主題設為「TwoDark」--theme="TwoDark"# 顯示行號、Git 修改和檔案頭(但沒有網格)--style="numbers,changes,header"# 在終端機上使用斜體文字(不是所有終端支援)--italic-text=always# 對 Arduino .ino 檔案使用 C++ 語法--map-syntax "*.ino:C++"
bat
bat
大多數情況下可以在 Windows 上開箱即用,但有些功能可能需要額外設定。
您需要安裝 Visual C++ Redistributable 軟體套件。
Windows 僅包含非常有限的more
形式的尋呼機。您可以從其主頁或透過 Chocolatey 以less
下載 Windows 二進位。要使用它,請將二進位檔案放置在PATH
中的目錄中或定義一個環境變數。 Chocolatey 軟體包的自動安裝程度less
。
自 v1511 起,Windows 10 原生支援conhost.exe
(命令提示字元)和 PowerShell 以及較新版本的 bash 中的顏色。在早期版本的 Windows 上,您可以使用 Cmder,其中包含 ConEmu。
注意:舊版的less
無法正確解釋 Windows 上的顏色。若要解決此問題,您可以在安裝 Git 時將可選的 Unix 工具新增至您的 PATH 中。如果您沒有安裝任何其他尋呼機,則可以透過傳遞--paging=never
或將BAT_PAGER
設為空字串來完全停用分頁。
Windows 上的bat
本身不支援 Cygwin 的 unix 樣式路徑 ( /cygdrive/*
)。當傳遞絕對 cygwin 路徑作為參數時, bat
將遇到以下錯誤: The system cannot find the path specified. (os error 3)
這可以透過建立包裝器或將以下函數新增至.bash_profile
檔案中來解決:
bat() {本地索引local args=("$@")for $(seq 0 ${#args[@]}) 中的索引; docase "${args[index]}" in-*) continue;;*) [ -e "${args[index]}" ] && args[index]="$(cygpath --windows "${args[索引]}")";;esacdonecommand bat "${args[@]}"}
如果輸入檔包含顏色代碼或其他 ANSI 轉義序列或控製字符, bat
在執行語法突出顯示和文本換行時將出現問題,因此輸出可能會出現亂碼。
如果您的bat
版本支援--strip-ansi=auto
選項,則可以使用它在語法反白顯示之前刪除此類序列。或者,您可以透過將--color=never --wrap=never
選項傳遞給bat
來停用語法反白和換行。
筆記
--strip-ansi
的auto
選項可以避免在語法為純文字時刪除轉義序列。
bat
處理帶或不帶真彩色支援的終端。但是,大多數語法突出顯示主題中的顏色並未針對 8 位元顏色進行最佳化。因此,強烈建議您使用支援 24 位元真彩色的終端( terminator
、 konsole
、 iTerm2
等),或使用專為有限色彩集設計的基本 8 位元主題之一。請參閱本文以了解更多詳細資訊以及支援真彩色的終端的完整清單。
確保您的 truecolor 終端將COLORTERM
變數設為truecolor
或24bit
。否則, bat
將無法確定是否支援 24 位元轉義序列(並回退到 8 位元顏色)。
請嘗試不同的主題(有關列表,請參閱bat --list-themes
)。 OneHalfDark
和OneHalfLight
主題提供更明亮的網格和線條顏色。
bat
本身支援 UTF-8 和 UTF-16。對於所有其他檔案編碼,您可能需要先轉換為 UTF-8,因為通常無法自動偵測編碼。您可以使用iconv
來執行此操作。範例:如果您有一個採用 Latin-1 (ISO-8859-1) 編碼的 PHP 文件,您可以呼叫:
iconv -f ISO-8859-1 -t UTF-8 my-file.php | iconv -f ISO-8859-1 -t UTF-8 my-file.php |蝙蝠
注意:如果bat
無法自動偵測語法,您可能必須使用-l
/ --language
選項。
# 遞歸克隆檢索所有子模組git clone --recursive https://github.com/sharkdp/bat# Build (debug version)cd bat cargo build --bins# 運行單元測試和整合測試cargo test# 安裝(發布版本)cargo install --path 。 --locked# 使用修改後的語法和主題來建立 bat 二進位檔案bash asset/create.sh 貨物安裝--路徑。 --鎖定--強制
如果您想建立一個使用bat
的漂亮列印功能作為庫的應用程序,請查看 API 文件。請注意,當您依賴bat
作為庫時,您必須使用regex-onig
或regex-fancy
作為功能。
查看CONTRIBUTING.md
指南。
鯊魚dp
eth-p
基斯·霍爾
恩塞利克
如果您想報告bat
中的漏洞,請透過電子郵件聯絡 David Peter。
bat
試圖實現以下目標:
提供美觀、進階的語法高亮顯示
與 Git 整合以顯示文件修改
成為 (POSIX) cat
的直接替代品
提供用戶友好的命令列介面
如果您正在尋找類似的程序,有很多選擇。請參閱此文件進行比較。
版權所有 (c) 2018-2023 bat-developers。
bat
可以根據 MIT 授權或 Apache 授權 2.0 的條款提供,具體由您選擇。
有關許可證詳細信息,請參閱 LICENSE-APACHE 和 LICENSE-MIT 文件。