字符界面下的文件着色
这是一则读书笔记,参考了 << Linux Desktop Hacks >> 中的Hack 15 : Colorize Files in Your Pager
在Linux的字符界面下,当键入ls或dir等指令时,一般而言,我们可以看到罗列出来的文件根据其类型的不同而呈现不同的颜色,显然,这有助于我们定位文件。有时侯可能需要罗列的文件较多而必须分页显示,这时候我们会使用less等分页显示指令,但出现的情况是,尽管文件列表被分页显示,但原先文件所对应的颜色却消失了,这是怎么回事?
一般来说,ls指令在各种版本的Linux中都是以别名(alias)出现,例如:
Fedora Core下的alias配置:
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
Debian下的alias配置:
alias ls='ls --color=auto'
SUSE下的配置:
alias ls='ls --color=tty'
Gentoo下的配置:
alias ls="ls --color=auto"
可见,在各种Linux版本中,ls往往被alias为:ls --color=auto 或者ls --color=tty。问题就出在这里,无论是ls --color=auto 还是 ls --color=tty,都只能将带颜色的文件列表输出到终端屏幕,而如果是通过管道(pipe)送到另外一个程序(如less)时,这些颜色会自动消失。
解决方法: 在<< Linux Desktop Hacks >>中提供了三种方法,但总的来说,三者是原理一致,方法各异。其主要的改进就在于,将ls --color=auto 或 ls --color=tty 改成 ls --color ,以这种方式来罗列文件,其输出不论是终端屏幕还是管道,都不会对原始的输出产生任何影响,也就是说,文件对应的颜色不会消失。而相应的,以less等分页工具接收管道传送过来的输出时,也需要做出相应的改动,以less -R 来取代 less ,这个-R 开关用来开启色彩的显示。
将alias重新定义后,再输入ls -al | less ,可见看到文件的颜色被完整保留,而值得注意的是,如果将 ls -al 的输出重定向到一个文件:ls -al > directory.txt ,当我们以编辑器来检查文件内容时,可以看到,这些文件所带的色彩却是以代码的形式出现。可见,如果将 ls alias 成 ls --color,有时侯并不一定产生我们希望看到的结果,更好的方法是,将它们分开处理:
alias ls='ls --color=auto'
alias lsp='ls --color | less -R'
alias dir='ls -al'
alias dirp='ls -al --color | less -R'
现在就一切OK了。
Technorati Tags: Linux, Commandline
在Linux的字符界面下,当键入ls或dir等指令时,一般而言,我们可以看到罗列出来的文件根据其类型的不同而呈现不同的颜色,显然,这有助于我们定位文件。有时侯可能需要罗列的文件较多而必须分页显示,这时候我们会使用less等分页显示指令,但出现的情况是,尽管文件列表被分页显示,但原先文件所对应的颜色却消失了,这是怎么回事?
一般来说,ls指令在各种版本的Linux中都是以别名(alias)出现,例如:
Fedora Core下的alias配置:
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
Debian下的alias配置:
alias ls='ls --color=auto'
SUSE下的配置:
alias ls='ls --color=tty'
Gentoo下的配置:
alias ls="ls --color=auto"
可见,在各种Linux版本中,ls往往被alias为:ls --color=auto 或者ls --color=tty。问题就出在这里,无论是ls --color=auto 还是 ls --color=tty,都只能将带颜色的文件列表输出到终端屏幕,而如果是通过管道(pipe)送到另外一个程序(如less)时,这些颜色会自动消失。
解决方法: 在<< Linux Desktop Hacks >>中提供了三种方法,但总的来说,三者是原理一致,方法各异。其主要的改进就在于,将ls --color=auto 或 ls --color=tty 改成 ls --color ,以这种方式来罗列文件,其输出不论是终端屏幕还是管道,都不会对原始的输出产生任何影响,也就是说,文件对应的颜色不会消失。而相应的,以less等分页工具接收管道传送过来的输出时,也需要做出相应的改动,以less -R 来取代 less ,这个-R 开关用来开启色彩的显示。
将alias重新定义后,再输入ls -al | less ,可见看到文件的颜色被完整保留,而值得注意的是,如果将 ls -al 的输出重定向到一个文件:ls -al > directory.txt ,当我们以编辑器来检查文件内容时,可以看到,这些文件所带的色彩却是以代码的形式出现。可见,如果将 ls alias 成 ls --color,有时侯并不一定产生我们希望看到的结果,更好的方法是,将它们分开处理:
alias ls='ls --color=auto'
alias lsp='ls --color | less -R'
alias dir='ls -al'
alias dirp='ls -al --color | less -R'
现在就一切OK了。
Technorati Tags: Linux, Commandline
0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页