标签 命令 下的文章

这是关于文件列表命令的第二篇文章,继续探讨‘ls’命令的其他方面。该系列的第一篇文章受到了社区的高度关注,如果你错过了该系列的第一部分,可以访问以下地址:

这篇文章通过样例来很好地展现‘ls’命令的深入应用,我们加倍小心地来写这篇文章来保持其简洁可理解性,同时又能提供最全面的服务。

10 Interview Questions on ls Command

10 ‘ls’ 命令面试的问题

16. 假如你想要以长列表的形式列出目录中的内容,但是不打印文件创建者名称以及文件所属组。看看输出有何不同之处。

a. ls 命令在与‘-l’选项一起使用时会将文件以长列表格式输出。

# ls -l

List Files in- Long List Format

以长格式列出文件

b. ls 命令在与‘-l’和‘--author’一起使用时,会将文件以长列表格式输出并带有文件创建者的名称信息。

# ls -l --author

List Files By Author

列出文件的创建者

c. ls 命令在与‘-g’选项 一起将会列出文件名但是不带属主名称。

# ls -g

List Files Without Printing Owner Name

列出文件但不列出属主

d. ls 命令在与'-G'和‘-l’选项一起将会使用长列表格式列出文件名称但是不带文件所属组名称。

# ls -Gl

List Files Without Printing Group

列出文件但是不列出所属组

17. 使用易读格式打印出当前目录中的文件以及文件夹的大小,你会如何做?

这里我们需要使用'-h'选项(人类可阅读的、易读的)同‘-l’或‘-s’选项与ls命令一起使用来得到想要的输出。

# ls -hl

List Files in Human Readable Format

以易读格式的长列表列出文件

# ls -hs

List File Sizes in Long List Format

以易读格式的短列表列出文件

注意: ‘-h’选项使用1024(计算机中的标准)的幂,文件或文件夹的大小分别以K,M和G作为输出单位。

18. 既然‘-h’选项是使用1024的幂作为标准来输出大小,那么ls命令是否还支持其他的幂值呢?

存在一个选项 ‘--si’与选项‘-h’相似,不同之处在于前者以使用1000的幂,后者使用1024的幂。

# ls --si

所以'--si'也可以与‘-l’选项一起使用来按照1000的幂来输出文件夹的大小,并且以长列表格式显示。

# ls --si -l

(LCTT 译注:此处原文参数有误,附图也不对,因此删除之。--si 参数是双连线参数,而且有的版本的 ls 并不支持该参数)

19. 假如要你使用逗号‘,’作为分隔符来打印一个目录中的内容,可以吗? 对于长列表形式也可行吗?

当然!linux的ls命令当与其选项‘-m’一起使用时可以在打印目录内容时以逗号‘,’分割。由于逗号分割的内容是水平填充的,ls命令不能在垂直列出内容时使用逗号来分割内容。

# ls -m

Print Contents of Directory by Comma

以逗号分隔显示内容

当使用长列表格式时,‘-m’选项就没有什么效果了。

# ls -ml

Listing Content Horizontally

长列表不能使用逗号分隔列表

20. 有办法将目录的内容逆序打印出来吗?

可以!上面的情形可以轻松地通过'-r'选项搞定,该选项将输出顺序倒置。这个选项也可以与‘-l’选项一起使用。

# ls -r

List Content in Reverse Order

逆序列出

# ls -rl

Long List Content in Reverse Order

逆序长列表

21. 如果你被分配一个任务,来递归地打印各个子目录,你会如何应付?注意,只针对子目录而不是文件哦。

小意思!使用“-R”选项就可以轻轻松松拿下,它也可以更进一步地与其他选项如‘-l’和‘-m’选项等组合使用。

# ls -R

Print Sub Directories in Recursively

递归列出子目录

22. 如何按照文件大小对其进行排序?

linux命令行选项'-S'赋予了ls命令这个超能力。按照文件大小从大到小的顺序排序:

# ls -S

Sort Files with ls Command 按文件大小排序

按照文件大小从小到大的顺序排序。

# ls -Sr

Sort Files in Descending Order

从小到大的排序

23. 按照一行一个文件列出目录中的内容,并且不带额外信息的方式

选项‘-1’在此可以解决这个问题,使用‘-1’选项来使用ls命令可以将目录中的内容按照一行一个文件并且不带额外信息的方式进行输出。

# ls -1

List Files Without Information

不带其他信息,一行一个列出文件

24. 现在委派给你一个任务,你必须将目录中的内容输出到终端而且需要使用双引号引起来,你会如何做?

有一个选项‘-Q’会将ls命令的输出内容用双引号引起来。

# ls -Q

Print Files with Double Quotes

输出的文件名用引号引起来

25. 想象一下你正在与一个包含有很多文件和文件夹的目录打交道,你需要使目录名显示在文件名之前,你如何做?

# ls --group-directories-first

Print Directories First

目录优先显示

先点到为止,我们会马上提供该系列文章的下一部分。别换频道,关注我们。 另外别忘了在下面的评论中提出你们宝贵的反馈信息,喜欢就分享,帮助我们得到更好的传播吧!


via: http://www.tecmint.com/ls-interview-questions/

作者:Ravi Saive 译者:theo-l 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使用的最广泛的命令行中工具之一。它是一个POSIX兼容工具,在GNU基本工具集以及BSD各种变体上都可以使用。“ls”命令可以结合大量的选项来达到想要的结果。

这篇文章的目的在于通过相关的样例来深入讨论文件列表命令。

15 ls Command Questions

15个“ls”命令问题。

1. 如何列出目录中的文件?

答:linux文件列表命令“ls”就是干这个的。

# ls

List Files

列出文件

同时,我们也可以使用“echo(回显)”命令与一个通配符(*)参数来雷锤目录中的所有文件。

# echo *

List All Files

列出所有的文件。

2. 如何只使用echo命令来只列出所有目录?

# echo */

List All Directories

列出所有的目录

3. 怎样列出一个目录中的所有文件, 包括隐藏的以“.”开头的文件?

答:我们需要将“-a”选项与“ls”命令一起使用。

# ls -a

List All Hidden Files

列出所有的隐藏文件。

4. 如何列出目录中除了 “当前目录 .”和“父目录 ..”之外的所有文件,包括隐藏文件?

答: 我们需要将“-A”选项与“ls”命令一起使用

# ls -A

Do Not List Implied

别列出指代当前目录和父目录的文件

5. 如何使用长格式打印出当前目录内容?

答: 我们需要将“-l”选项与“ls”命令一起使用。

# ls -l

List Files Long

列出文件的长格式。

上面的样例中,其输出结果看起来向下面这样。

drwxr-xr-x  5 avi tecmint      4096 Sep 30 11:31 Binary

上面的drwxr-xr-x 是文件的权限,分别代表了文件所有者,所属组以及“整个世界”。 所有者具有读(r),写(w)以及执行(x)等权限。 该文件所属组具有读(r)和执行(x)但是没有写的权限,整个世界的其他可以访问到该文件的人也具有相同权限。

  • 开头的‘d’意味着这是一个目录
  • 数字'5'表示链接数为5
  • 文件 Binary归属于用户 “avi”以及用户组 "tecmint"
  • Sep 30 11:31 表示文件最后一次的访问日期与时间。

6. 假如让你来将目录中的内容以长格式列表打印,并且显示出隐藏的“点文件”,你会如何实现?

答: 我们需要同时将"-a"和"-l"选项与“ls”命令一起使用(LCTT 译注:单字符选项可以合并写)。

# ls -la

Print Content of Directory

打印目录内容

此外,如果我们不想列出“当前目录”和"父目录",可以将“-A”和“-l”选项同“ls”命令一起使用。

# ls -lA

7. 如何找到每个文件的创建者?

答: 我们需要结合 “--author”和 "-l"选项来打印出每个文件的创建者。

# ls --author -l

List Author Files

列出文件创建者。

8. 如何对用转义字符打印出非显示字符?

答:我们只需要使用“-b”选项来对非显示字符进行转义打印

# ls -b

Print Escape Character

9. 用指定特定的单位格式来列出文件和目录的大小,你会如何实现?

答: 在此可以同时使用选项“-block-size=scale”和“-l”,但是我们需要用特定的单位如M,K等来替换‘scale’参数。

# ls --block-size=M -l
# ls --block-size=K -l

List File Scale Format

列出文件大小单位格式。

10. 列出目录中的文件,但是不显示备份文件,即那些文件名以‘~’结尾的文件

答: 选项‘-B’赶来救驾。

# ls -B

List File Without Backup

列出非备份文件

11. 将目录中的所有文件按照名称进行排序,并显示其最后修改时间信息?

答: 为了实现这个需求,我们需要同时将“-c”和"-l"选项与命令一起使用。

# ls -cl

Sort Files

文件排序

12. 将目录中的文件按照修改时间进行排序,并显示相关联的信息。

答: 我们需要同时使用3个选项:'-l','-t','-c' 来对文件使用修改时间排序,最新的修改时间排在最前。

# ls -ltc

Sort Files by Modification

按照修改时间对文件排序。

13. 如何控制‘ls’命令的输出颜色的有无?

答: 需要使用选项‘--color=parameter’,参数具有三种不同值,“auto(自动)”,“always(一直)”,“never(无色)”。

# ls --color=never
# ls --color=auto
# ls --color=always

ls Colorful Output

ls的输出颜色

14. 假如只需要列出目录本身,而不是目录的内容,你会如何做?

答:在此“-d”选项就会显得很顺手。

# ls -d

List Directory Entries

列出目录本身

15. 为长格式列表命令"ls -l"创建一个别名“ll”,并将其结果输出到一个文件而不是标准输出中。

答:在上述的这个场景中,我们需要将别名添加到.bashrc文件中,然后使用重定向操作符将输出写入到文件而不是标准输出中。我们将会使用编辑器nano。

# ls -a
# nano .bashrc
# ll >> ll.txt
# nano ll.txt

Create Alias for ls command

为ls命令创建别名。

先到此为止,别忘了在下面的评论中提出你们的宝贵意见,我会再次带着另外的有趣的文章在此闪亮登场。

参考阅读:


via: http://www.tecmint.com/ls-command-interview-questions/

作者:Avishek Kumar 译者:theo-l 校对:校对者ID

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Coreutils Viewer(cv)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp、mv、dd、tar、gzip、gunzip、cat、grep、fgrep、egrep、cut、sort、xz、exiting)的进度。它使用文件描述信息来确定一个命令的进度,比如cp命令。cv之美在于,它能够和其它Linux命令一起使用,比如你所知道的watch以及I/O重定向命令。这样,你就可以在脚本中使用,或者你能想到的所有方式,别让你的想象力束缚住你。

安装

你可以从cv的github仓库那儿下载所需的源文件。把zip文件下载下来后,将它解压缩,然后进入到解压后的文件夹。

该程序需要ncurses library。如果你已经在你的Linux系统中安装了ncurses,那么cv的安装过程对你而言就是那么的轻松写意。

通过以下两个简单步骤来进行编译和安装吧。

$ make
$ sudo make install

运行cv

要运行cv,只需要想其它程序一样,在命令行输入此命令即可。如果你没有执行make install,而选择从当前目录中去运行,那么你可以运行以下命令:

$ ./cv

否则,就运行以下命令吧。

$ cv

如果没有核心组件命令在运行,那么cv程序会退出,并告诉你:没有核心组件命令在运行。

cv no command

要有效使用该程序,请在你系统上运行某个核心组件程序。在本例中,我们将使用cp命令。

当拷贝一个打文件时,你就可以看到当前进度了,以百分比显示。

cv default

添加选项到 cv

你也可以添加几个选项到cv命令,就像其它命令一样。一个有用的选项是让你了解到拷贝或移动大文件时的预计剩余时间。

添加-w选项,它就会帮你显示预计的剩余时间。

$ cv -w

cv estimated throughput

试着添加更多的命令选项吧。像下面这样添加其它选项:

$ cv -wq

cv 和 watch 命令

watch是一个用于周期性运行程序并显示输出结果的程序。有时候,你可能想要持续看看命令运行状况而不想将 cv 的结果存储到日志文件中。在这种情况下,watch就会派上用场了,它可以和cv一起使用。

$ watch cv -qw

该命令将会显示所有运行着的核心组件命令的实例。它也会显示进度和预计完成时间。

cv and watch

在日志文件中查看输出结果

正如其所承诺的那样,你可以使用cv来重定向它的输出结果到一个日志文件。这功能在命令运行太快而看不到任何有意义的内容时特别有用。

要在日志文件中查看进度,你仅仅需要重定向输出结果,就像下面这样。

$ cv -w >> log.txt

要查看该命令的输出结果,请用你喜爱的文本编辑器打开日志文件,也可以用cat命令,就像下面这样:

$ cat log.txt

获得帮助

如果你在任何地方受到阻碍,你总是可以通过查阅手册页或使用help选项来获取帮助信息。 要获取帮助信息,可以使用带-h选项的cv命令。

$ cv -h

如果需要更多详细信息,那么手册页是个很不错的地方。

$ man cv

但是,要获取上述手册页,你必须执行make install来安装cv。

耶!现在,你的Linux工具箱中又多了个伟大的工具。 你学会么?亲自去试试吧~


via: http://linoxide.com/linux-command/tool-show-command-progress/

作者:Allan Mbugua 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

对于那些使用Linux命令行的人来说,‘pwd‘命令是非常有用的,它告诉你你现在在那个目录,从根目录(/)如何到达。特别是对于或许会在目录的切换间容易糊涂的Linux新手而言,‘pwd‘ 可以拯救他们。

15 pwd Command Examples

什么是pwd?

pwd‘ 代表的是‘Print Working Directory’(打印当前目录)。如它的名字那样,‘pwd’会打印出当前工作目录,或简单的来说就是当前用户所位于的目录。它会打印出以根目录 (/)为起点的完整目录名(绝对目录)。这条命令是一条shell内建命令,并且在大多数shell中都可以使用,如bash、Bourne shell,ksh、zsh等等。

pwd的基本语法:

# pwd [OPTION]

pwd的选项

| 选项 | 描述 |
| -L (即逻辑路径logical ) | 使用环境中的路径,即使包含了符号链接 |
| -P (即物理路径physical) | 避免所有的符号链接 |
| –help | 显示帮助并退出 |
| –version | 输出版本信息并退出 |

如果同时使用了‘-L‘和‘-P‘,‘-L‘会有更高的优先级。如果没有指定参数,pwd会避开所有的软链接,也就是说会使用‘-P‘参数。

pwd的退出状态:

| 0 | 成功 |
| 非零值 | 失败 |

本篇的目的是采用例子让你对‘pwd‘有更深入的领悟。

1. 打印当前工作目录.

avi@tecmint:~$ /bin/pwd
/home/avi

Print Working Directory

打印工作目录

2. 为文件夹创建一个符号链接(比如说在home目录下创建一个htm链接指向/var/www/html)。进入新创建的目录并打印出含有以及不含符号链接的目录。

在home目录下创建一个htm链接指向/var/www/html,并进入。

avi@tecmint:~$ ln -s /var/www/html/ htm
avi@tecmint:~$ cd htm

Create Symbolic Link

创建符号链接

3. 从当前环境中打印目录即使它含有符号链接。

avi@tecmint:~$ /bin/pwd -L
/home/avi/htm

Print Current Working Directory

打印工作目录

4. 解析符号链接并打印出物理目录。

avi@tecmint:~$ /bin/pwd -P
/var/www/html

Print Physical Working Directory

打印物理工作目录

5. 查看一下“pwd”和“pwd -P”的输出是否一致,也就是说,如果没有跟上选项,“pwd”时候会自动采用-P选项。

avi@tecmint:~$ /bin/pwd
/var/www/html

Check pwd Output

检查pwd输出

结论: 上面例子4和5的输出很明显(结果相同),当你“pwd”后面不带参数时,pwd会使用“-P”选项。

6. 打印pwd命令的版本。

avi@tecmint:~$ /bin/pwd --version

pwd (GNU coreutils) 8.23
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jim Meyering.

Check pwd Version

检查pwd命令版本

注意: ‘pwd’ 通常不带选项运行,且没有任何参数

重要: 你可能注意到我们刚才运行的都是 “/bin/pwd” 而不是 “pwd”。

这有什么区别呢?直接使用“pwd”意味着使用shell内置的pwd。你的shell可能有不同版本的pwd。具体请参考手册。当你使用的是/bin/pwd时,我们调用的是二进制版本的命令。虽然二进制的版本有更多的选项,但是它们两者都能打印当前的目录。

7. 打印所有含有可执行pwd的路径

avi@tecmint:~$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

Print Executable Locations

打印可执行文件路径

8. 存储“pwd”命令的值到变量中(比如说:a ),并从中打印变量的值(对于观察shell脚本很重要)。

avi@tecmint:~$ a=$(pwd)
avi@tecmint:~$ echo "Current working directory is : $a"
Current working directory is : /home/avi

Store Pwd Value in Variable

存储pwd的值到变量中

下面的例子中也可以用printf来替代。

9. 将工作路径切换到其他地方(比如说 /home),并在命令行中显示。通过执行命令(比如说 ‘ls‘)来验证一切OK

avi@tecmint:~$ cd /home
avi@tecmint:~$ PS1='$pwd> '     [注意例子中的单引号]
> ls

Change Current Working Directory

改变当前工作路径

10. 设置多行显示 (就像下面这样),

/home
123#Hello#!

接着执行命令(比如说 ls)来检验一切OK

avi@tecmint:~$ PS1='
> $PWD
$ 123#Hello#!
$ '

/home
123#Hello#!

Set Multi Commandline Prompt

设置多行显示

11. 一下子检查当前工作路径以及先前的工作路径。

avi@tecmint:~$ echo “$PWD $OLDPWD”
/home /home/avi

Check Present Previous Working Directory

检查当前工作路径

12. pwd文件的绝对路径(以/开始)。

/bin/pwd 

13. pwd源文件文件的绝对路径(以/开始)。

/usr/include/pwd.h 

13. pwd手册的绝对路径(以/开始)。

/usr/share/man/man1/pwd.1.gz

15. 写一个shell脚本分析home目录下的一个目录(比如tecmint)。如果当前目录是tecmint就输出“Well! You are in tecmint directory”接着输出“Good Bye”,不然就在tecmint下面创建一个目录并提示你cd进入它。

让我们首先创建一个‘tecmint’目录,在下面创建一个名为‘pwd.sh’的脚本文件。

avi@tecmint:~$ mkdir tecmint
avi@tecmint:~$ cd tecmint
avi@tecmint:~$ nano pwd.sh

接下来在pwd.sh中加入下面的脚本。

#!/bin/bash

x="$(pwd)"
if [ "$x" == "/home/$USER/tecmint" ]
then
     {
      echo "Well you are in tecmint directory"
      echo "Good Bye"
     }
else
     {
      mkdir /home/$USER/tecmint
      echo "Created Directory tecmint you may now cd to it"
     }
fi

给予执行权限并运行。

avi@tecmint:~$ chmod 755 pwd.sh
avi@tecmint:~$ ./pwd.sh
Well you are in tecmint directory
Good Bye

总结

pwd是一个最简单且会广泛用到的命令。掌握好pwd是使用Linux终端的基础。就是这些了。我很快会再带来另外有趣的文章,请不要走开继续关注我们。


via: http://www.tecmint.com/pwd-command-examples/

作者:Avishek Kumar 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串。

echo命令的语法是:

echo [选项] [字符串]

1. 输入一行文本并显示在标准输出上

$ echo Tecmint is a community of Linux Nerds 

会输出下面的文本:

Tecmint is a community of Linux Nerds 

2. 输出一个声明的变量值

比如,声明变量x并给它赋值为10

 $ x=10

会输出它的值:

$ echo The value of variable x = $x 

The value of variable x = 10 

3. 使用‘\b‘选项

-e‘后带上'\b'会删除字符间的所有空格。

注意: Linux中的选项‘-e‘扮演了转义字符反斜线的翻译器。

$ echo -e "Tecmint \bis \ba \bcommunity \bof \bLinux \bNerds" 

TecmintisacommunityofLinuxNerds 

4. 使用‘\n‘选项

-e‘后面的带上‘\n’行会在遇到的地方作为新的一行

$ echo -e "Tecmint \nis \na \ncommunity \nof \nLinux \nNerds" 

Tecmint 
is 
a 
community 
of 
Linux 
Nerds 

5. 使用‘\t‘选项

-e‘后面跟上‘\t’会在空格间加上水平制表符。

$ echo -e "Tecmint \tis \ta \tcommunity \tof \tLinux \tNerds" 

Tecmint     is  a   community   of  Linux   Nerds 

6. 也可以同时使用换行‘\n‘与水平制表符‘\t

$ echo -e "\n\tTecmint \n\tis \n\ta \n\tcommunity \n\tof \n\tLinux \n\tNerds" 

    Tecmint 
    is 
    a 
    community 
    of 
    Linux 
    Nerds 

7. 使用‘\v‘选项

-e‘后面跟上‘\v’会加上垂直制表符。

$ echo -e "\vTecmint \vis \va \vcommunity \vof \vLinux \vNerds" 

Tecmint 
        is 
           a 
             community 
                       of 
                          Linux 
                                Nerds 

8. 也可以同时使用换行‘\n‘与垂直制表符‘\v

$ echo -e "\n\vTecmint \n\vis \n\va \n\vcommunity \n\vof \n\vLinux \n\vNerds" 


Tecmint 

is 

a 

community 

of 

Linux 

Nerds 

注意: 你可以按照你的需求连续使用两个或者多个垂直制表符,水平制表符与换行符。

9. 使用‘\r‘选项

-e‘后面跟上‘\r’来指定输出中的回车符。(LCTT 译注:会覆写行开头的字符)

$ echo -e "Tecmint \ris a community of Linux Nerds" 

is a community of Linux Nerds 

10. 使用‘\c‘选项

-e‘后面跟上‘\c’会抑制输出后面的字符并且最后不会换新行。

$ echo -e "Tecmint is a community \cof Linux Nerds" 

Tecmint is a community @tecmint:~$ 

11.-n‘会在echo完后不会输出新行

$ echo -n "Tecmint is a community of Linux Nerds" 
Tecmint is a community of Linux Nerds@tecmint:~/Documents$ 

12. 使用‘\a‘选项

-e‘后面跟上‘\a’选项会听到声音警告。

$ echo -e "Tecmint is a community of \aLinux Nerds" 
Tecmint is a community of Linux Nerds

注意: 在你开始前,请先检查你的音量设置。

13. 使用echo命令打印所有的文件和文件夹(ls命令的替代)

$ echo * 

103.odt 103.pdf 104.odt 104.pdf 105.odt 105.pdf 106.odt 106.pdf 107.odt 107.pdf 108a.odt 108.odt 108.pdf 109.odt 109.pdf 110b.odt 110.odt 110.pdf 111.odt 111.pdf 112.odt 112.pdf 113.odt linux-headers-3.16.0-customkernel_1_amd64.deb linux-image-3.16.0-customkernel_1_amd64.deb network.jpeg 

14. 打印制定的文件类型

比如,让我们假设你想要打印所有的‘.jpeg‘文件,使用下面的命令。

$ echo *.jpeg 

network.jpeg 

15. echo可以使用重定向符来输出到一个文件而不是标准输出

$ echo "Test Page" > testpage 

## Check Content
avi@tecmint:~$ cat testpage 
Test Page 

echo 选项列表

| 选项 | 描述 |
| -n | 不输出末尾的换行符。 |
| -e | 启用反斜线转义。 |
| \b | 退格 |
| \ | 反斜线 |
| \n | 新行 |
| \r | 回车 |
| \t | 水平制表符 |
| \v | 垂直制表符 |

就是这些了,不要忘记在下面留下你的反馈。


via: http://www.tecmint.com/echo-command-in-linux/

作者:Avishek Kumar 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

当你不确定你所运行的命令,尤其是那些使用了许多选项的复杂命令时,你会怎么做?在这种情况下,我们使用man pages来获取帮助。还有一些其它的选择可能包括像‘help’,‘whereis’和‘whatis’这样的命令。但是所有的这些既有优点,也有缺点。

当我们浏览man pages来查看选项和帮助的时候,里面的描述实在太冗长了,我们无法在短的时间里理解它的意思。

Linux Man PagesLinux Man Pages

同样,‘help’命令可能也不会给你期待的答案。

Help CommandHelp Command

whereis’命令几乎不给你任何信息,除了安装二进制文件的位置(有些时候可能是重要的)

Whereis CommandWhereis Command

whatis’命令给出一套很严格的答案,它除了说出所查询命令的作用,并没有什么太大帮助。而且,它从来不说明可用的选项。

Whatis CommandWhatis Command

直到在困难中解决问题前,我们已经使用了以上全部选项,但是现在来了一个交互式的备忘录应用程序‘cheat’,它将在其余的命令中脱颖而出。

什么是cheat?

cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。

Cheat: Provides Easy Command Options

Cheat:提供简单命令选项

在Linux系统中安装‘Cheat’

Cheat’有两个主要的依赖——‘python’ 和 ‘pip’,在安装‘cheat’之前,确保你的系统安装了python和pip。

Install Python

# apt-get install Python (基于Debian的系统)
# yum install python (基于小红帽的系统)

Install Pip

# apt-get install python-pip (基于Debian的系统)
# yum install python-pip (基于小红帽的系统)

Note:pip是一个简单的安装替代,是一个有极大改进的Python第三方包安装器。

下载并安装Cheat

我们将通过Git下载‘Cheat’,确保你安装了‘git’包,如果没有最好安装一下。

# apt-get install git (基于Debian的系统)
# yum install git (基于小红帽的系统)

接下来,通过运行下面的命令来安装所需要的python依赖包。

# pip install docopt pygments

现在,复制cheat的Git库

# git clone https://github.com/chrisallenlane/cheat.git

进入cheat目录,运行‘setup.py’(一个python脚本)。

# cd cheat
# python setup.py install

如果安装很顺利,你就能够看到安装在系统上的cheat版本了。

# cheat -v
cheat 2.0.9

cheat的一些必要配置

你必须在‘~/.bashrc’文件里设置‘EDITOR’环境变量,打开用户‘.bashrc’文件,然后把下面这行加入到里面:

export EDITOR = /usr/bin/nano

你可以使用你喜欢的编辑器来替代‘nano’。保存文件然后退出,再次登录以确保修改生效。

接下来,添加cheat的自动补全特性,来确保不同解释器下命令行的自动补全。为了到达该功能要求,简单地将‘cheat.bash’脚本clone下来,然后复制到你系统正确的路径下。

# wget https://github.com/chrisallenlane/cheat/raw/master/cheat/autocompletion/cheat.bash 
# mv cheat.bash /etc/bash_completion.d/

NOTE:团队已经在Git上上传了其他解释器的自动补全脚本,这些都可以被克隆,然后用在不同的解释器上。使用下面的链接,以找到其余解释器的自动补全脚本:

不仅如此,如果需要的话,你也可以使用语法高亮。要想做到这一点,在你的‘.bashrc’文件中添加‘CHEATCOLORS’环境变量。

export CHEATCOLOR=true

Cheat应用默认只提供最基本和最常用的命令。cheat备忘单的内容保存在~/.cheat/.目录里,我们可以手动在这个目录添加备忘单里面的内容,这样,我们的cheat应用将更强大。

# cheat -xyz

这将打开xyz备忘单,如果没有的话就会创建一个。备忘单将使用.bashrc里设置的默认编辑器打开,默认编辑器就是在上面.bashrc所设置的。

一些Cheat命令的使用

一个包可以是 *.gz , *.bz2 , *.zip , *.xz,可是什么情况下用哪些选项呢?

tar command optionstar命令选项

除非在不同的地方咨询和核对后,我才使用dd命令,在此之前,无论我对这个命令多么的肯定,我从不使用它。现在,事情就变得简单多了。

dd command optionsdd命令选项

uname’命令帮助

uname command optionsuname命令选择

一个简短的ifconfig命令操作教程

ifconfig command optionsifconfig命令选项

‘top’命令,对管理员和普通用户来说,是最重要的命令之一。

top command optionstop命令选项

我们来骗骗cheat命令,如何(尽管别有意义)?得到一个可用命令的列表,其实就是安装在你系统里的cheat备忘录。

List All Linux Commands列出所有Linux命令

使用关键字搜索备忘单。

Search Cheat Sheet搜索备忘单

来看看包含所有命令的内置备忘单。

$ cheat -d

/home/avi/.cheat
/usr/local/lib/python2.7/dist-packages/cheat/cheatsheets

复制内置的备忘单到你的本地目录。

# cp /usr/local/lib/python2.7/dist-packages/cheat/cheatsheets/* /home/avi/.cheat/

结论

这个超棒的工具在许多情况下担任“救世主”的角色,它给予你需要的信息,信息不冗余,不模糊,相反地,却击中要点。这是每个人都会需要的工具,很简单就能创建、安装,使用和理解,这个工具前途无量。

这个Git仓库已经添加了一个精彩的gag,这里我不打算去解释它,而留给各位来解释。

Linux Gag Linux Gag

好了,文章就要结束了,我会带着下一篇你们喜欢的有趣文章回到这里的,在此之前,要时刻关注我们。别忘了在下面的评论部分给我们留下您宝贵的反馈信息。


via: http://www.tecmint.com/cheat-command-line-cheat-sheet-for-linux-users/

作者:Avishek Kumar 译者:su-kaiyao 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出