如何在命令行上显示文本文件的内容?


Answers:


194

使用 cat

由于文件很短,因此可以使用 cat

cat filename

使用 less

如果必须查看较长文件的内容,可以使用诸如的寻呼机 less

less filename

您可以通过将和标志传递给小文件,使其less行为类似于cat在小文件上被调用时的行为。-F-X

less -FX filename

我有个别名less -FX。您可以这样使自己:

alias aliasname='less -FX'

如果将别名添加到shell配置中,则可以永久使用它。

使用 od

如果文件包含奇怪或无法打印的字符,则可以使用 od来检查字符。例如,

$ cat file
(ÐZ4 ?o=÷jï
$ od -c test
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

+1,也sed -n l file可能有用。
enzotib

1
less相对于诸如的其他寻呼程序pg,是否有明显的优势,或者只是归结为个人喜好?
山姆·温伯格2013年

@SamWeinberg:less比拥有更多功能pg。查看less(1)pg(1)手册页。也有其他传呼机。看看unix.stackexchange.com/questions/81129/…less可能是使用最广泛的传呼机,但是您使用哪一个取决于个人喜好。

不要忘记moremost
Rudolf Olah 2015年

29

尽管每个人都使用cat filename打印文件中的文本到标准输出第一个目的是CON enating。从猫的手册页:

cat-连接文件并在标准输出上打印

现在cat适用于打印文件,但是还有其他选择:

  echo "$(<filename)"
or
  printf "%s" "$(<filename)"

所述( )的内容返回一个表达式的值,在这种情况下的文件名,然后由膨胀$echoprintf

更新:

< filename

这正是您想要的,并且容易记住。

这是一个示例,可让您在菜单中选择一个文件然后进行打印。

#!/bin/bash

select fname in *;
do
# Don't forget the "" around the second part, else newlines won't be printed
  printf "%s" "$(<$fname)"
  break
done

有关更多阅读:
BashPitfalls-cat文件| sed s / foo / bar />文件
Bash参考-重定向


您的更新:“ < filename正是您想要的,...”具有误导性。总体而言,尽管这是关于替代方案的有趣讨论,但我认为cat这更简单。
X田

Bare < filename不显示文件的内容,但是显示cat filename
jarno

您也可以使用tee < filename
jarno

2
+1为echo "$(<filename)"bashism。这里还不够。
Yokai

这是将Linux Internal Command与echo结合使用的好主意"$(<filename)"。谢谢...
Reza Harasani

9

您可以使用以下命令来显示文本文件的内容。

猫文件名 

有关更多信息cat,请运行man cat

9

在unix上处理文本文件的工具是基本的日常命令:

在UNIX和Linux中将文件中的全部内容打印出来

cat filename.txt

要么

more filename.txt

要么

less filename.txt

最后几行

tail filename.txt

对于前几行

head filename.txt

4

一种选择是使用 more

例如 more file.txt

但是,它并不具有所添加的所有功能less
一个简单的示例是您无法在输出中向上滚动。通常,它已被less取代-之所以开玩笑是因为

少即是多


3

我总是使用$ less "your file here",因为它非常简单,它提供了一个内置的交互式grep命令,并为您提供了易于使用的界面,您可以使用箭头键进行滚动。

(几乎每个* nix系统都包含该文件)


less是的矫枉过正版本more(对比man lessman more),对我来说有两个讨厌的特点:1)它在EOF切换到备用屏幕缓冲区,少的时候终止,你正在观看的文件消失2)你必须明确地键入q(我知道,对此有一个选择)。因此,在新环境中的第一个动作是export PAGER=/bin/more在个人资料中进行设置并一直使用more
ott-- 2013年

@ ott--:1)试用-X标志。2)尝试-E标志。less具有more仿真模式。您可以通过设置LESS_IS_MORE环境变量来启用它。您可以在more仿真模式下向上滚动。


不过,总的来说,我确实认为这less过于复杂。它运行外部命令的能力是其过于复杂的完美示例。

@EvanTeitelman我一直发现grep功能对我自己非常有用,@ ott--我发现由于grep的仿真more,并且具有许多其他功能,因此可以很好地完成工作。
SG60

2

如果文件很大,并且您要搜索某些特定部分,则可以使用

 cat filename | grep text_to_search -ni 

您也可以使用更具交互性的Vim编辑器(如果没有Vim,则可以使用vi编辑器):

 vim filename
Or
 vi filename

Vim / vi是一个很棒的编辑器,也可以在“普通模式”中使用阅读器或使用-R选项,它具有许多功能,可以帮助您浏览文件。


更短的vim -Rview。但是请记住,如xargs和vi中所讨论的那样,它不喜欢重定向-“输入不是来自终端”
manatwork

感谢@manatwork的注意!我最近开始使用Vim,由于它的几个功能,我喜欢它。关于重定向,我忘记了这一点,谢谢提醒。到目前为止,我正在一个远程VM上工作,在这里我使用不带GUI界面的ssh,因此,Vim很有用,当任何其他GUI编辑器无法工作时,这就是我在这里强调Vim的原因。
不要担心孩子

1

使用cat命令显示文件名的内容。猫文件名

使用vim命令编辑文件。vim文件名

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.