【Linux】Linux命令快速學習神器tldr、cheat介紹和使用

Xander發表於2023-02-02

引言

本文介紹tldr和Cheat等實用工具的安裝和使用,這些工具雖然本身不能替代maninfo等命令,但是在很多時候想要快速學習和掌握命令但是忘記常見用法非常有幫助。

個人看法:對於非運維人員簡直是神器。

tldr:全稱 too long, Don’t read,翻譯成中文就是太長不想閱讀,比–help或者man這些傳統手冊更便捷、更便於使用。
cheat:作弊。

這兩個命令有什麼用?這裡簡單舉個例子就知道了:

ubuntu@VM-8-8-ubuntu:~$ sudo tldr ls

  ls

  List directory contents.
  More information: https://www.gnu.org/software/coreutils/ls.

  - List files one per line:
    ls -1

  - List all files, including hidden files:
    ls -a

  - List all files, with trailing / added to directory names:
    ls -F

  - Long format list (permissions, ownership, size, and modification date) of all files:
    ls -la

  - Long format list with size displayed using human-readable units (KiB, MiB, GiB):
    ls -lh

  - Long format list sorted by size (descending):
    ls -lS

  - Long format list of all files, sorted by modification date (oldest first):
    ls -ltr

  - Only list directories:
    ls -d */

內容概覽

  1. Ubuntu和CenterOs介紹和安裝tldr命令。

    1. CenterOs和Ubuntu的安裝方式使用
    2. Ubuntu的常見問題和解決方案。
  2. Ubuntu和CenterOs介紹和安裝cheat命令。

    1. 安裝驗證和使用
    2. Ubuntu和CenterOs處理方式一致
  3. 類似專案列舉。

官方資料

線上wiki搜尋:tldr | simplified, community driven man pages (ostera.io)
(注意國內訪問比較慢,需要自帶魔法)

官方的安裝介紹頁面地址:https://tldr.sh/#installation

tldr專案地址:https://github.com/tldr-pages/tldr

tldr

Ubuntu安裝tldr

安裝

Ubuntu 安裝比較簡單,直接使用sudo apt-get install tldr安裝。

sudo apt-get install tldr

如果上面的命令安裝之後依然無法使用,可以按照下面的命令進行安裝:

sudo apt-get install npm
sudo apt-get install nodejs-legacy
sudo npm install n -g

注意這裡有兩種方式,一種是使用latest版本,另外一種是使用stable版本,個人建議使用stable版本,如果Ubuntu的系統版本比較低,則需要降低node版本。

sudo n stable
(或 sudo n latest)
sudo npm install -g tldr

當然也可以不使用nodeJS,也可以使用pip

pip3 install tldr

如果是Mac系統就是十分簡單了:

brew install tldr

驗證

在ubuntu當中驗證直接使用:

ubuntu@VM-8-8-ubuntu:~$ tldr
tldr - Simplified and community-driven man pages

Usage: tldr [-v|--version] 
            ((-u|--update) | [-p|--platform PLATFORM] COMMAND | (-a|--about))
  tldr Client program

Available options:
  -h,--help                Show this help text
  -v,--version             Show version
  -u,--update              Update offline cache of tldr pages
  -p,--platform PLATFORM   Prioritize specfic platform while searching. Valid
                           values include linux, osx, windows, sunos
  COMMAND                  name of the command
  -a,--about               About this program

Ubuntu安裝常見問題

No tldr entry for xxx

Ubuntu安裝tldr使用tldr ls之後,很有可能出現類似No tldr entry for ls的命令,出現這種情況可能有下面兩種情況:

  • 首次安裝需要更新tldr的“資料庫”。
  • 當天使用者安裝使用sudo,tldr的資料庫沒法訪問。

更新tldr

ubuntu@VM-8-8-ubuntu:~$ tldr ls
No tldr entry for ls

更新tldr的資料庫。

ubuntu@VM-8-8-ubuntu:~$ sudo tldr --update
✔ Updating...
✔ Creating index...

當然也可以使用tldr -u

ubuntu@VM-8-8-ubuntu:~$ sudo tldr --u

sudo安裝使用

個人ubuntu使用了sudo安裝之後,使用sudo tldr才可以正常使用,因為日常登入的使用者為ubuntu使用者,安裝的過程全部使用sudo,查詢某個命令也需要使用root身份進行查詢。

所以如果出現No tldr entry for xxx,有可能是你用的sudo安裝但是當前的使用者卻沒有sudo的許可權。

ubuntu@VM-8-8-ubuntu:~$ sudo tldr ls

  ls

  List directory contents.
  More information: https://www.gnu.org/software/coreutils/ls.

  - List files one per line:
    ls -1

  - List all files, including hidden files:
    ls -a

  - List all files, with trailing / added to directory names:
    ls -F

  - Long format list (permissions, ownership, size, and modification date) of all files:
    ls -la

  - Long format list with size displayed using human-readable units (KiB, MiB, GiB):
    ls -lh

  - Long format list sorted by size (descending):
    ls -lS

  - Long format list of all files, sorted by modification date (oldest first):
    ls -ltr

  - Only list directories:
    ls -d */

nodeJs版本降級

版本降級相關資料參考自:https://blog.csdn.net/Fabulous1111/article/details/84983869

(1)安裝node版本管理模組n
    sudo npm install n -g

下邊步驟請根據自己需要選擇

(2)安裝穩定版
    sudo n stable
(3)安裝最新版
    sudo n latest
(4) 版本降級/升級
    sudo n 版本號
(5)檢測目前安裝了哪些版本的node
n

提示內容如下:

  ο node/16.15.1
    node/18.13.0
    node/19.5.0

Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
切換版本(不會刪除已經安裝的其他版本)
n 版本號

比如:n 16.15.1

(7)刪除版本
sudo n rm 版本號
(8)直接移除Nodejs

PS:注意不同的作業系統命令會有差別,這裡為Ubuntu的解除安裝方式

sudo apt-get remove nodejs
簡單使用
sudo npm install -g n

sudo n install 16.15.1 # 太新的也會有問題

以上就是ubuntu常見問題和處理。

CenterOs 安裝 tldr

CenterOs的安裝方式和Ubuntu類似,這裡展示安裝Node環境之後安裝tldr並使用的過程。

安裝

  1. 安裝NodeJs,如果嫌麻煩可以直接安裝sudo yum install -y npm

[[【Linux】NodeJs 安裝和環境變數配置]]

  1. 我們使用官方提供的命令安裝。
sudo npm install -g tldr
  1. 如果是使用NodeJs環境變數設定的方式安裝,需要設定軟連結,tldr命令預設會安裝到nodeJs安裝路徑的Bin目錄下面,如果不好理解,可以參考下面的軟連結構建命令。
還有一種方式是在Path中設定/xx/nodejs/bin 為環境變數
[zxd@localhost ~]$ sudo ln -s /opt/nodeJs/bin/tldr /usr/local/bin
[sudo] password for zxd: 
如果軟連結路徑構建錯誤,可以使用sudo ln -fs /opt/nodeJs/bin/tldr /usr/local/bin加入 -f引數強制覆蓋之前的軟連結。

驗證

因為構建了tldr軟連結,我們可以再任意路徑使用這個命令。如果敲入tldr命令出現下面的提示證明安裝成功:

[zxd@localhost bin]$ tldr
Usage: tldr command [options]

Simplified and community-driven man pages

Options:
  -v, --version            Display version
  -l, --list               List all commands for the chosen platform in the cache
  -a, --list-all           List all commands in the cache
  -1, --single-column      List single command per line (use with options -l or -a)
  -r, --random             Show a random command
  -e, --random-example     Show a random example
  -f, --render [file]      Render a specific markdown [file]
  -m, --markdown           Output in markdown format
  -o, --os [type]          Override the operating system [linux, osx, sunos, windows]
  --linux                  Override the operating system with Linux
  --osx                    Override the operating system with OSX
  --sunos                  Override the operating system with SunOS
  --windows                Override the operating system with Windows
  -t, --theme [theme]      Color theme (simple, base16, ocean)
  -s, --search [keywords]  Search pages using keywords
  -u, --update             Update the local cache
  -c, --clear-cache        Clear the local cache
  -h, --help               Show this help message

  Examples:

    $ tldr tar
    $ tldr du --os=linux
    $ tldr --search "create symbolic link to file"
    $ tldr --list
    $ tldr --list-all
    $ tldr --random
    $ tldr --random-example

  To control the cache:

    $ tldr --update
    $ tldr --clear-cache

  To render a local file (for testing):

    $ tldr --render /path/to/file.md

我們使用tldr ls檢視ls命令的用法,確實賞心悅目。

[zxd@localhost ~]$ tldr ls
✔ Page not found. Updating cache...
⠴ Creating index...
✔ Creating index...

  ls

  List directory contents.
  More information: https://www.gnu.org/software/coreutils/ls.

  - List files one per line:
    ls -1

  - List all files, including hidden files:
    ls -a

  - List all files, with trailing / added to directory names:
    ls -F

  - Long format list (permissions, ownership, size, and modification date) of all files:
    ls -la

  - Long format list with size displayed using human-readable units (KiB, MiB, GiB):
    ls -lh

  - Long format list sorted by size (descending):
    ls -lS

  - Long format list of all files, sorted by modification date (oldest first):
    ls -ltr

  - Only list directories:
    ls -d */

Cheat

介紹

這個漫畫是Cheat惡搞man命令查一個命令需要翻幾本書的時間,挺有意思的。

cheat:有欺騙的意思,可以直接理解為舞弊或者作弊

官方資料

github專案地址:
cheat/cheat: cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember. (github.com)

官方安裝教程:cheat/INSTALLING.md at master · cheat/cheat (github.com)

手動安裝

類Unix

類Unix系統可以使用下面一串命令解決。

cd /tmp \
  && wget https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz \
  && gunzip cheat-linux-amd64.gz \
  && chmod +x cheat-linux-amd64 \
  && sudo mv cheat-linux-amd64 /usr/local/bin/cheat

個人的CenterOs實驗如下:

[zxd@localhost ~]$ cd /tmp \
>   && wget https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz \
>   && gunzip cheat-linux-amd64.gz \
>   && chmod +x cheat-linux-amd64 \
>   && sudo mv cheat-linux-amd64 /usr/local/bin/cheat
--2023-01-28 18:34:35--  https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
Unable to establish SSL connection.
[zxd@localhost tmp]$ cd /tmp   && wget https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz   && gunzip cheat-linux-amd64.gz   && chmod +x cheat-linux-amd64   && sudo mv cheat-linux-amd64 /usr/local/bin/cheat
--2023-01-28 18:34:59--  https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz
Resolving github.com (github.com)... 
... 省略一些安裝提示資訊

... github訪問比較慢,耐心等待
100%[=============================================================================>] 4,696,443   9.87KB/s   in 6m 11s 

2023-01-28 18:41:13 (12.4 KB/s) - ‘cheat-linux-amd64.gz’ saved [4696443/4696443]

個人的Ubuntu雲伺服器的實驗如下:

ubuntu@VM-8-8-ubuntu:~$ cd /tmp \
  && wget https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz \
  && gunzip cheat-linux-amd64.gz \
  && chmod +x cheat-linux-amd64 \
  && sudo mv cheat-linux-amd64 /usr/local/bin/cheat
--2023-01-28 10:56:00--  https://github.com/cheat/cheat/releases/download/4.4.0/cheat-linux-amd64.gz
... 省略資訊
Saving to: ‘cheat-linux-amd64.gz’

cheat-linux-amd64.gz              100%[==========================================================>]   4.48M   871KB/s    in 1m 42s  

2023-01-28 10:57:43 (44.9 KB/s) - ‘cheat-linux-amd64.gz’ saved [4696443/4696443]

ubuntu@VM-8-8-ubuntu:/tmp$ cheat
A config file was not found. Would you like to create one now? [Y/n]: y
Would you like to download the community cheatsheets? [Y/n]: y
Cloning community cheatsheets to /home/ubuntu/.config/cheat/cheatsheets/community.
Enumerating objects: 335, done.
Counting objects: 100% (335/335), done.
Compressing objects: 100% (314/314), done.
Total 335 (delta 36), reused 274 (delta 19), pack-reused 0
Cloning personal cheatsheets to /home/ubuntu/.config/cheat/cheatsheets/personal.
Created config file: /home/ubuntu/.config/cheat/conf.yml
Please read this file for advanced configuration information.
注意:這裡可能需要更改版本號(“4.4.0”)和存檔(“cheat-linux-amd64.gz”),具體取決於安裝平臺。

可以閱讀 releases page 瞭解當前命令支援的平臺。

透過 go install安裝

如果有GO 1.17 以上的版本,可以透過go install安裝cheat。

go install github.com/cheat/cheat/cmd/cheat@latest

其他安裝方式

下面是官方介紹的其他安裝方式。

Package managerPackage(s)
aurcheat, cheat-bin
brewcheat
dockerdocker-cheat
nixnixos.cheat
snapcheat

基礎使用

和tldr類似,第一次使用cheat也需要構建“資料庫”,但是cheat比tldr的使用體驗更好,我們只需要按照提示輸入兩次y確認即可:

[zxd@localhost tmp]$ cheat 
A config file was not found. Would you like to create one now? [Y/n]: y
Would you like to download the community cheatsheets? [Y/n]: y
Cloning community cheatsheets to /home/zxd/.config/cheat/cheatsheets/community.
Enumerating objects: 335, done.
Counting objects: 100% (335/335), done.
Compressing objects: 100% (314/314), done.
Total 335 (delta 36), reused 274 (delta 19), pack-reused 0
Cloning personal cheatsheets to /home/zxd/.config/cheat/cheatsheets/personal.
Created config file: /home/zxd/.config/cheat/conf.yml
Please read this file for advanced configuration information.

最後是直接使用,個人感覺要比tldr麻煩事情少很多:

和 tldr的區別是排版的方式有點不同
[zxd@localhost tmp]$ cheat ls
# To display everything in <dir>, excluding hidden files:
ls <dir>

# To display everything in <dir>, including hidden files:
ls -a <dir>

# To display all files, along with the size (with unit suffixes) and timestamp:
ls -lh <dir>

# To display files, sorted by size:
ls -S <dir>

# To display directories only:
ls -d */ <dir>

# To display directories only, include hidden:
ls -d .*/ */ <dir>

# To display all files sorted by changed date, most recent first:
ls -ltc 

# To display files sorted by create time:
ls -lt

# To display files in a single column:
ls -1

# To show ACLs (MacOS):
# see also `cheat chmod` for `/bin/chmod` options for ACLs
/bin/ls -le

# To show all the subtree files (Recursive Mode):
ls -R

Uuntu的使用類似:

# 基礎使用
ubuntu@VM-8-8-ubuntu:/tmp$ cheat cp
# To copy a file:
cp ~/Desktop/foo.txt ~/Downloads/foo.txt

# To copy a directory:
cp -r ~/Desktop/cruise_pics/ ~/Pictures/

# To create a copy but ask to overwrite if the destination file already exists:
cp -i ~/Desktop/foo.txt ~/Documents/foo.txt

# To create a backup file with date:
cp foo.txt{,."$(date +%Y%m%d-%H%M%S)"}

# To copy a symlink that points to a directory (and is thus soft) and not
# 'expand' the symlink (aka, preserve its nature as a symlink):
# Note this does NOT work (note trailing '/'):  cp -P /path/to/symlink-dir/
cp -P <symlink-dir> <dest-dir>

# To copy sparsely:
cp --sparse=always <src> <dest>

類似專案

還有更多和cheat以及tldr類似的專案,這裡就不過多介紹了。

Cheat 允許您在命令列上建立和檢視互動式備忘單。它旨在幫助提醒 Linux 系統管理員他們經常使用但不夠頻繁而無法記住的命令的選項。

cheat.sh 將來自多個來源(包括 tldr-pages)的備忘單聚合到 1 個統一介面中。

devhints Rico 的備忘單不僅僅關注命令列,還包括大量與程式設計相關的其他備忘單。

eg 在命令列上提供了詳細的示例和解釋。示例來自儲存庫,但例如支援顯示自定義示例和命令以及預設值。

kb 是一個極簡的命令列知識庫管理器。 kb 可用於以極簡主義和乾淨的方式組織您的筆記和備忘單。它還支援非文字文件。

navi 是一個互動式備忘單工具,它允許您即時瀏覽特定示例或完整命令。

bropages(已棄用)是對手冊頁的高度可讀性補充。它顯示了 Unix 命令的簡明、常見示例。這些示例由使用者群提交,可以投票贊成或反對;最好的條目是人們在查詢命令時最先看到的內容。

寫在最後

整體體驗下來個人比較偏向cheat一點,類Unix系統安裝官方的教程一個名稱就可以完成,而tldr需要Node環境,同時因為Node更新速度就像喝湯容易導致Linux系統版本或者核心版本低而不支援的問題。

相關文章