Text-Processing

為什麼要使用 cat 查看文件?

  • April 10, 2019

似乎 的目的cat是連接幾個文件。但是,許多人仍然使用cat代替less(或類似的程序more)來顯示文件。例如,參見GNU m4 手冊和答案“如何在命令行上顯示文本文件的內容? ”。

手冊頁:少

-F 或 –quit-if-one-screen

less如果整個文件可以顯示在第一個螢幕上,則    導致自動退出。

-X 或 –no-init

    禁用將 termcap 初始化和取消初始化字元串發送到終端。如果去初始化字元串做了一些不必要的事情,比如清除螢幕,這有時是可取的。

cat如今,用於顯示或查看文件是一種好習慣嗎?為什麼使用cat查看文件?

這讓我想到了無用的 Cat

注意:less這個問題不是關於和之間的區別more。此外,它還涉及之前創建的文件的視覺化。


根據答案和評論,它的使用似乎cat超出了它的用途,因為它比尋呼機更容易使用(例如moreless…)。有些人認為這是一個無關緊要的事實(或無用),但經驗表明,與 shell 有關的各種微妙之處可能會產生實際後果:使用 shell 循環處理文本 文件使用不帶引號的變數……

負面後果的強度各不相同。例如,cat foo bar | less是有效的,因為使用者連接了兩個文件但cat foo | less 無效。本著同樣的精神,cat似乎在“管道”中是必需的,儘管尋呼機似乎也less可以在管道中工作(注意:less並不適合所有有關顯示的情況,例如讀取命名管道:tail 或 cat?)。

另請參閱: 如何使用“或”選項對文件進行分類

我將假設問題中的“許多人”是指在諸如此類的網站上編寫教程、手冊或答案的人。

在文本文件中編寫終端命令時,該cat命令通常用於顯示文件的內容。

一個例子:

$ cat script.sh
#!/bin/sh
echo 'hello'
$ chmod +x script.sh
$ ./script.sh
hello

在這裡,我展示了我有一個名為 的文件script.sh,它的內容是什麼,我正在使它成為執行檔,我正在執行它以及它的結果是什麼。

在這個例子中使用cat只是“顯示所有卡片”的一種方式,即明確顯示一個例子的所有先決條件(並將其作為終端會話的文本表示的一部分)。

less和其他基於螢幕的尋呼機,取決於它們的使用方式,不一定會在終端中提供該輸出。所以如果我寫

$ less script.sh
#!/bin/sh
echo 'hello'

並且使用者自己嘗試過,他們可能想知道為什麼腳本的文本在他們的終端中看起來不同,然後在他們關閉less尋呼機後從終端中消失(如果這是他們配置尋呼機的方式),或者他們是否less是與less答案(或教程或任何可能的內容)中使用的不同,或者他們做錯了什麼。允許這種構想的可能性對使用者來說適得其反並且具有破壞性。

cat在終端中將範例顯示為文本時使用是很好的,因為它提供了一種相當簡單的方法來重現與給定文本中完全相同的結果。對於較大的文件,最好單獨顯示文件,然後在將終端命令編寫為文本時專注於如何使用該文件。

如果您更喜歡使用less, more, most, view,sublime或其他尋呼機或程序來查看文件,那完全沒問題。繼續做吧。但是,如果您想在終端中提供描述某些工作流程的可重現文本,您還必須向使用者發出警告,即他們閱讀的內容與他們在自己的終端中看到的內容可能不同,具體取決於所使用的尋呼機以及它是如何配置的。

引用自:https://unix.stackexchange.com/questions/511232