Ubuntu终端中的文件内容显示

文件内容显示

前面已经说过了文件的创建、操作等命令及方法,除去这些以外,最重要的其实还是文件的查看,如果每个文件的内容都看不到,那么这个文件就没了意义。在Windows的平台上,不同的文件类型使用不同的编辑器或查看器打开就可以,在Linux的平台上,也是这样,每种不同的文件,都会有其特定的查看方式,本节中主要讲解文本文档的查看。查看文件主要使用的cat(Concatenate)命令,还有一些其他命令与之搭配实现不同的查看模式,例如more、less、grep等。

cat命令

和前面讲的touch命令等命令类似的,cat命令本来的作用也并非是用于文件内容的查看,而是用于文件的拼接,即可以将两个或多个文件进行拼接形成同一个文件,并且将拼接结果输出到终端中进行显示,与重定向符号配合,可以实现多个文件的拼接并将拼接后的内容输出到新的文件中。

#首先创建两个内容并不相同的问价作为测试
os@DESKTOP-2DHQBVS:~$ echo "test1 content" > test1
os@DESKTOP-2DHQBVS:~$ echo "test2 content" > test2
#使用cat命令可以直接查看文件的内容
os@DESKTOP-2DHQBVS:~$ cat test1
test1 content
#cat命令后如果添加两个文件,则会将两个文件的内容按顺序拼接后输出到终端中
os@DESKTOP-2DHQBVS:~$ cat test1 test2
test1 content
test2 content
#使用cat命令及重定向符号可以将两个文件进行拼接并创建第三个文件进行保存
os@DESKTOP-2DHQBVS:~$ cat test1 test2 > test3
#查看第三个文件的内容,为上述test1、test2两个的内容拼接
os@DESKTOP-2DHQBVS:~$ cat test3
test1 content
test2 content

查看文件时,如果希望显示行号,可以使用cat命令的-n选项进行显示。

#输出的内容会自动在每一行内容前加上行号,方便阅读与确定位置
os@DESKTOP-2DHQBVS:~$ cat -n test3
     1  test1 content
     2  test2 content

当文件内容较少时,使用cat命令显示文件简单、快捷,能够在终端一屏中显示所有的内容,多出的几行能够通过鼠标滚动来显示。然而当文件内容太长,或在纯命令行界面中,超过一屏的内容后,前面的内容将不会显示,只会显示最后的几行内容,无法查看全部的内容,而此时鼠标也是无法使用的,显然这是不合适的,所以有了一些专门用来查看文件内容的命令,比如more命令。

more命令

顾名思义,more,更过的意思,亦即显示更多的东西。more命令一般用来显示内容较长的文件,提供了翻页等选项,能够方便的显示所有内容。

#以bashrc文件为例,该文件内容较长,能够很好的演示more命令的用法
os@DESKTOP-2DHQBVS:~$ more .bashrc
#执行more命令后,会进入more命令的运行环境,此时最下边会显示文件显示的百分比。
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

--More--(21%)

进入more命令的运行环境后,就可以通过快捷键的方式进行文件浏览,常用的快捷键有如下几个:

  • 空格:(space)向下翻一页
  • B:(back)向上翻一页
  • 回车:(enter)向下滚动一行
  • “/”:斜线,斜线后输入字符串,能够在文档中查找该字符串并显示
  • H:(help)显示帮助信息
  • Q:(quit)退出当前环境,除了使用Q外,当文件阅读结束,more命令也会自动退出
    除了显示文件内容外,也可以使用管道符“|”将上一个命令的输出作为more命令的输入,让more命令来进行分页显示。
#使用ls命令查看/bin目录下的文件和文件夹
#由于内容较多,显示时需要分为多屏显示,此时就可以使用more命令进行分屏
os@DESKTOP-2DHQBVS:~$ ls -l /bin | more
total 15984
-rwxr-xr-x 1 root root 1037528 May 16  2017 bash
-rwxr-xr-x 1 root root  520992 Jun 16  2017 btrfs
-rwxr-xr-x 1 root root  249464 Jun 16  2017 btrfs-calc-size
lrwxrwxrwx 1 root root       5 Jun 16  2017 btrfsck -> btrfs
-rwxr-xr-x 1 root root  278376 Jun 16  2017 btrfs-convert
-rwxr-xr-x 1 root root  249464 Jun 16  2017 btrfs-debug-tree
-rwxr-xr-x 1 root root  245368 Jun 16  2017 btrfs-find-root
-rwxr-xr-x 1 root root  270136 Jun 16  2017 btrfs-image
-rwxr-xr-x 1 root root  249464 Jun 16  2017 btrfs-map-logical
-rwxr-xr-x 1 root root  245368 Jun 16  2017 btrfs-select-super
。。。。。。
--More--

上述示例中,需要注意的是,对于一般文件,最后会显示该文件显示内容的百分比,而使用管道进行内容输出时,并不会出现内容的百分比,而只显示“--More--”字样,这是由于more命令对于管道符传递过来的内容,只能进行下翻页,不能进行上翻页造成的。所以,虽然相对于cat命令来说,more命令已经足够强大,但是在某些情况下,仍然有其局限性,而less命令补足了这些问短板。

less命令

与more命令相同,是less也是专门用来进行文件查看的命令,基本上常用的快捷键与more命令都是相同的。
而与more命令相比,less命令更加的灵活,由于采用了缓存的技术,并不是一次性全部将文件内容读取到内存中,所有在读取大文件时,速度也比more命令要快。

#同样以bashrc文件为例,使用less命令进行打开
os@DESKTOP-2DHQBVS:~$ less .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
。。。。。。
:

上述示例中最后一行并不像more命令一样显示文件显示的百分比,而是显示的“:”,提示用户,此时可以按快捷键进行换页等,常用的快捷键和more命令完全相同,空格向下翻页、回车滚动一行等。除了这些以外,还有一些其他的操作也比较实用。

  • y:向上滚动一行
  • d:向下滚动半屏
  • u:向上滚动半屏
  • →,右箭头:文档整体左移,显示文档右侧的隐藏内容,多用于一行文字较长,显示不完全的情况。
  • ←,左箭头,与右箭头相反
    需要注意的是,比more命令更加实用的一点,在使用管道符将内容传递到less命令后,同样可以使用上述所有的命令,而不是只能向下滚动显示。而且less命令即使显示到了结尾,也不会自动退出。

head、tail命令

head命令只能够显示文件指定的前几行或前几个字符,tail则是后面的几行内容,通过两个命令的组合,可以灵活的查看文件中任意位置的内容。

#显示bashrc文件前5行的内容,此时使用的是-n选项
os@DESKTOP-2DHQBVS:~$ head -n 5 .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything

上述示例中,-n 后面跟的是行数,5代表显示前五行的内容,如果没有指定该参数,则默认显示前十行的内容,如果指定为负数,如-5,则除最后5行不显示外,其他内容都会显示。

#使用-c选项则是显示指定数量的字符数,比如示例中显示前15个字符
#由于前15个字符中并没有换行符,所以可以看到,命令输入提示紧跟在输出的信息后面,而不是自动切换到下一行显示
os@DESKTOP-2DHQBVS:~$ head -c 15 .bashrc
# ~/.bashrc: exos@DESKTOP-2DHQBVS:~$

使tail的命令使用方法与head基本相同。

#显示文件最后五行的内容
os@DESKTOP-2DHQBVS:~$ tail -n 5 .bashrc
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
#显示第115行至最后的内容
os@DESKTOP-2DHQBVS:~$ tail -n +115 .bashrc
    . /etc/bash_completion
  fi
fi

上述示例中,需要注意正负号的用法。

#head和tail命令组合实现查看任意位置的内容
os@DESKTOP-2DHQBVS:~$ head -n 50 .bashrc | tail -n 5
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48

上述示例为显示第46-50行的内容,其中使用head命令显示文件的前50行内容,之后将内容使用管道传递给tail命令,tail命令显示最后的5行内容,实现了显示46-50行的内容。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容