docs: create sysadmin/Linux/Base-znaniy/Bat
parent
f392769491
commit
af20f47aba
|
|
@ -0,0 +1,210 @@
|
|||
---
|
||||
title: Bat как замена для cat
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-15T18:07:37.064Z
|
||||
tags:
|
||||
editor: markdown
|
||||
dateCreated: 2023-11-15T18:07:37.064Z
|
||||
---
|
||||
|
||||

|
||||
|
||||
Знакомлю вас с утилитой командной строки, которая мне очень понравилась. Речь пойдёт про bat, аналоге cat, только с подсветкой синтаксиса и не только.
|
||||
|
||||
Лично я утилиту cat использую постоянно. Сформировалась привычка при поиске чего-то делать сначала cat, потом grep. Например:
|
||||
|
||||
`cat /var/log/messages | grep kernel`
|
||||
|
||||
По идее, логичнее и проще сделать так:
|
||||
|
||||
`egrep "kernel" /var/log/messages`
|
||||
|
||||
Но я привык к первому варианту и cat использую постоянно. И при грепанье, и просто при просмотре чего-то в консоли. Перед тем, как что-то скопировать из файла, вывожу через cat в консоль.
|
||||
|
||||
Bat очень классно подсвечивает вывод в консоли. Нет смысла рассказывать, на картинке к посту все и так видно:
|
||||
|
||||
`bat /etc/hosts`
|
||||
|
||||
|
||||
Репозиторий утилиты - https://github.com/sharkdp/bat. В Debian/Ubuntu bat ставится из стандартных реп:
|
||||
```
|
||||
apt install bat
|
||||
ln -s /usr/bin/batcat /usr/bin/bat
|
||||
```
|
||||
Если нет в репах, то качаем с репозитория и устанавливаем.
|
||||
|
||||
```
|
||||
wget https://github.com/sharkdp/bat/releases/download/v0.18.2/bat-musl_0.18.2_amd64.deb
|
||||
dpkg -i bat-musl_0.18.2_amd64.deb
|
||||
```
|
||||
В Centos 8 (на 7 не заработает из-за устаревших пакетов) и форках придется бинарник качать:
|
||||
```
|
||||
wget https://github.com/sharkdp/bat/releases/download/v0.18.2/bat-v0.18.2-x86_64-unknown-linux-gnu.tar.gz
|
||||
tar xzvf bat-v0.18.2-x86_64-unknown-linux-gnu.tar.gz
|
||||
cd bat-v0.18.2-x86_64-unknown-linux-gnu
|
||||
cp bat /usr/bin/
|
||||
```
|
||||
|
||||
________________________
|
||||
Добавлю от себя, на centos вылетела ошибка
|
||||
```
|
||||
/lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./bat)
|
||||
```
|
||||
|
||||
Поэтому пришлось найти решение вот такое.
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
red=`tput setaf 1`
|
||||
green=`tput setaf 2`
|
||||
bold=`tput bold`
|
||||
reset=`tput sgr0`
|
||||
|
||||
echo ""
|
||||
echo "${bold}${green}Installing the latest CentOS release version of bat command from GitHub...${reset}"
|
||||
|
||||
echo ""
|
||||
echo "${bold}Note${reset}: For more information, please see https://github.com/sharkdp/bat."
|
||||
|
||||
echo ""
|
||||
echo "Finding the latest version tag from Github..."
|
||||
|
||||
BAT_VERSION=$(curl --silent "https://api.github.com/repos/sharkdp/bat/releases/latest" | grep -Eo '"tag_name": "v(.*)"' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
BAT_RELEASE="bat-$BAT_VERSION-x86_64-unknown-linux-musl"
|
||||
BAT_ARCHIVE="$BAT_RELEASE.tar.gz"
|
||||
|
||||
echo ""
|
||||
echo "Version ${bold}$BAT_VERSION${reset} found, downloading ${bold}$BAT_ARCHIVE${reset} from GitHub..."
|
||||
|
||||
curl -sOL "https://github.com/sharkdp/bat/releases/download/$BAT_VERSION/$BAT_ARCHIVE"
|
||||
|
||||
echo ""
|
||||
echo "Unarchiving ${bold}$BAT_ARCHIVE${reset} to ${bold}$HOME/$BAT_RELEASE${reset}..."
|
||||
|
||||
tar xzvf $BAT_ARCHIVE -C $HOME/
|
||||
|
||||
echo ""
|
||||
echo "Copying executable to ${bold}/usr/local/bin/bat${reset}..."
|
||||
|
||||
sudo sh -c "cp $HOME/$BAT_RELEASE/bat /usr/local/bin/bat"
|
||||
|
||||
echo ""
|
||||
echo "Removing ${bold}$BAT_ARCHIVE${reset} and cleaning up..."
|
||||
|
||||
rm $BAT_ARCHIVE
|
||||
|
||||
unset BAT_ARCHIVE
|
||||
unset BAT_RELEASE
|
||||
unset BAT_VERSION
|
||||
|
||||
if command -v bat &> /dev/null
|
||||
then
|
||||
echo ""
|
||||
echo "${bold}${green}Finished installing $(bat --version).${reset}"
|
||||
else
|
||||
echo ""
|
||||
echo "${bold}${red}Installation failed! Please examine this script and try steps manually.${reset}"
|
||||
exit 1
|
||||
fi
|
||||
```
|
||||
|
||||
|
||||
Знакомлю вас с утилитой командной строки, которая мне очень понравилась. Речь пойдёт про bat, аналоге cat, только с подсветкой синтаксиса и не только.
|
||||
|
||||
Лично я утилиту cat использую постоянно. Сформировалась привычка при поиске чего-то делать сначала cat, потом grep. Например:
|
||||
|
||||
`cat /var/log/messages | grep kernel`
|
||||
|
||||
По идее, логичнее и проще сделать так:
|
||||
|
||||
`egrep "kernel" /var/log/messages`
|
||||
|
||||
Но я привык к первому варианту и cat использую постоянно. И при грепанье, и просто при просмотре чего-то в консоли. Перед тем, как что-то скопировать из файла, вывожу через cat в консоль.
|
||||
|
||||
Bat очень классно подсвечивает вывод в консоли. Нет смысла рассказывать, на картинке к посту все и так видно:
|
||||
|
||||
`bat /etc/hosts`
|
||||
|
||||
Репозиторий утилиты - https://github.com/sharkdp/bat. В Debian/Ubuntu bat ставится из стандартных реп:
|
||||
```
|
||||
apt install bat
|
||||
ln -s /usr/bin/batcat /usr/bin/bat
|
||||
```
|
||||
Если нет в репах, то качаем с репозитория и устанавливаем.
|
||||
|
||||
```
|
||||
wget https://github.com/sharkdp/bat/releases/download/v0.18.2/bat-musl_0.18.2_amd64.deb
|
||||
dpkg -i bat-musl_0.18.2_amd64.deb
|
||||
```
|
||||
|
||||
В Centos 8 (на 7 не заработает из-за устаревших пакетов) и форках придется бинарник качать:
|
||||
```
|
||||
wget https://github.com/sharkdp/bat/releases/download/v0.18.2/bat-v0.18.2-x86_64-unknown-linux-gnu.tar.gz
|
||||
tar xzvf bat-v0.18.2-x86_64-unknown-linux-gnu.tar.gz
|
||||
cd bat-v0.18.2-x86_64-unknown-linux-gnu
|
||||
cp bat /usr/bin/
|
||||
```
|
||||
|
||||
________________________
|
||||
Добавлю от себя, на centos вылетела ошибка
|
||||
```
|
||||
/lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./bat)
|
||||
```
|
||||
|
||||
Поэтому пришлось найти решение вот такое.
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
red=`tput setaf 1`
|
||||
green=`tput setaf 2`
|
||||
bold=`tput bold`
|
||||
reset=`tput sgr0`
|
||||
|
||||
echo ""
|
||||
echo "${bold}${green}Installing the latest CentOS release version of bat command from GitHub...${reset}"
|
||||
|
||||
echo ""
|
||||
echo "${bold}Note${reset}: For more information, please see https://github.com/sharkdp/bat."
|
||||
|
||||
echo ""
|
||||
echo "Finding the latest version tag from Github..."
|
||||
|
||||
BAT_VERSION=$(curl --silent "https://api.github.com/repos/sharkdp/bat/releases/latest" | grep -Eo '"tag_name": "v(.*)"' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
BAT_RELEASE="bat-$BAT_VERSION-x86_64-unknown-linux-musl"
|
||||
BAT_ARCHIVE="$BAT_RELEASE.tar.gz"
|
||||
|
||||
echo ""
|
||||
echo "Version ${bold}$BAT_VERSION${reset} found, downloading ${bold}$BAT_ARCHIVE${reset} from GitHub..."
|
||||
|
||||
curl -sOL "https://github.com/sharkdp/bat/releases/download/$BAT_VERSION/$BAT_ARCHIVE"
|
||||
|
||||
echo ""
|
||||
echo "Unarchiving ${bold}$BAT_ARCHIVE${reset} to ${bold}$HOME/$BAT_RELEASE${reset}..."
|
||||
|
||||
tar xzvf $BAT_ARCHIVE -C $HOME/
|
||||
|
||||
echo ""
|
||||
echo "Copying executable to ${bold}/usr/local/bin/bat${reset}..."
|
||||
|
||||
sudo sh -c "cp $HOME/$BAT_RELEASE/bat /usr/local/bin/bat"
|
||||
|
||||
echo ""
|
||||
echo "Removing ${bold}$BAT_ARCHIVE${reset} and cleaning up..."
|
||||
|
||||
rm $BAT_ARCHIVE
|
||||
|
||||
unset BAT_ARCHIVE
|
||||
unset BAT_RELEASE
|
||||
unset BAT_VERSION
|
||||
|
||||
if command -v bat &> /dev/null
|
||||
then
|
||||
echo ""
|
||||
echo "${bold}${green}Finished installing $(bat --version).${reset}"
|
||||
else
|
||||
echo ""
|
||||
echo "${bold}${red}Installation failed! Please examine this script and try steps manually.${reset}"
|
||||
exit 1
|
||||
fi
|
||||
```
|
||||
Loading…
Reference in New Issue