shell学习四十一天----列出文件ls和od命令

原创 2015年07月08日 18:46:25

列出文件

首先恶臭命令提供简单的方式列出匹配模式的文件:

命令: echo /bin/*sh #显示/bin下的shell

输出:/bin/bash /bin/csh /bin/dash /bin/sh /bin/tcsh

分析:shell将通配符字符模式替换为匹配的文件列表,echo以空格区分文件列表,在单一行上显示他们.echp不会更近一部解释他的参数,因此与文件系统里的文件也没有任何关系.

 

ls命令则比echo能做更多的处理,因为他纸袋自己的参数应该是文件.未提供命令行选项时,ls只会验证其参数是否存在,并显示它们,如果输出并非终端,则以一行一个的方式显示,如果是终端,则为多栏显示模式.下例:

命令:ls /bin/*sh | cat 

输出:/bin/bash

/bin/csh

/bin/dash

/bin/sh

/bin/tcsh

分析:在输出管道里显示shell

 

命令:ls /bin/*sh

输出:/bin/bash  /bin/csh  /bin/dash  /bin/sh  /bin/tcsh

分析:80个字幅宽度的终端窗口,显示shell

 

命令:ls /bin/*sh

输出:/bin/bash  /bin/csh  /bin/dash  /bin/sh  

/bin/tcsh

分析:40个字幅宽度的终端端口,显示shell.

 

为了终端输出时,ls会使用刚好适合的多栏,将数据以栏加以排列,这只是为了人们方便检查,如果你要单栏输出到终端,可以使用 ls -1(数字1)强制执行.另外,处理ls的管道输出的程序,可预期得到一个文件明一行的模式.

 

ls的语法:

ls [options] [file(s)]

用途:列出文件目录的内容

主要选项:

选项

作用

-1 

数字1.强制为单栏输出.在交互式模式下,ls一般会以适用于当前窗口的最小宽度,使用多个列

-a

显示所有文件,包括隐藏文件(文件名以点号其实的文件)

-d

显示于目录本身相关的信息,而非他们包含的文件的信息

-F

使用特殊结尾字符,标记特定的文件类型

-g

仅适用于组:省略所有者名称

-i

列出inode编号

-L

紧接着符号性连接,列出他们指向的文件

-l

小写的l(字母).以冗长形式列出,带有类型,全乡保护,所有者,,字节计数,最后修改事件和文件名

-r

倒置默认的排序顺序

-R

递归列出,下延进入每个子目录

-S

按照由大到小的文件大小计数排序.GNU版本支持

-s

以块(一系统有关)为单位,列出文件的大小

-t

按照最后修改时间戳排序

--full-time

显示完整的时间戳.GNu版本支持

 

 

行为模式:ls通常只显示文件名称:如要取得与文件属性相关的信息,必须提供额外选项.文件是以辞典编排的顺序排序,不过可通过-S-t选项改变他.排序的顺序是按照系统的语言环境而定.

 

不同于echo的是:ls要求他的文件参数要存在,而且如果他们不存在的话,则会出现提示:

命令:ls dfrdsgjfgkjd

输出:ls: 无法访问dfrdsgjfgkjd: 没有那个文件或目录

然后使用echo $?查看一下ls的退出码:

输出:2

 

无参时,echo只会显示一个空行,ls会列出当前目录的内容.

案例:依次输入下列命令

mkdir test

cd test

touch one two three

然后应用echols:

命令:echo *

输出:one three two

命令: ls *

输出:one three two

命令:echo

输出:空行

命令:ls 

输出:one three two

 

以一个点号为开头的文件名,在正规shell模式匹配中会被隐藏.

依次执行下列命令:

mkdir hidden

cd hidden

toucho .uno .dos .tres

接着使用下列命令尝试显示他的内容:

$echo

*

$ls

不显示任何东西

$ls *

ls: 无法访问*: 没有那个文件或目录

 

当没有匹配模式的文件时,shell会将模式视为参数:在这里echo看到星号并打印他,ls则试图寻找名为*的文件,然后报告寻找失败.

 

 

现在,如果我们提供匹配前置点号的模式:

$echo #回应隐藏文件

. .. .dos .tres .uno

$ls .* #列出隐藏文件

.dos  .tres  .uno

 

.:

 

..:

hidden  test

 

linux目录总是包含特殊实例..(父目录).(当前目录),shell会床底所有的匹配给这两个程序.echo只报告他们,ls会做更多的事:当命令行参数为目录时,他会列出该目录的内容.

 

可以显示目录本身的相关信息,而非其内容,只要使用-d选项即可:

$ls -d .*

.  ..  .dos  .tres  .uno

$ls -d ../*

../hidden  ../test

 

由于你通常要的不是显示父目录,因此,ls还提供了-a选项,提供打印当前目录的所有文件,包含隐藏文件:

$ls -a

.  ..  .dos  .tres  .uno

 

长的文件列出

由于ls知道他的参数是文件,所以可以进一步的报告相关细节,尤其是文件系统的一些metadata,这个功能通常以-l(字母)选项完成:

$ls -l /bin/*sh

-rwxr-xr-x. 1 root root 938832 7月  18 2013 /bin/bash

lrwxrwxrwx. 1 root root      4 5月  29 02:34 /bin/csh -> tcsh

-rwxr-xr-x. 1 root root 109672 10月 17 2012 /bin/dash

lrwxrwxrwx. 1 root root      4 5月  29 02:25 /bin/sh -> bash

-rwxr-xr-x. 1 root root 387328 2月  22 2013 /bin/tcsh

 

下面来介绍一下这种输出类型是个什么东西

首字符描述文件类型:- 为一般文件,d为目录,l为符号连接.,此处是文件.

接下来的9个字符,则报告文件权限:针对每个用户,组以及除此外的其他人.r表示读权限,w表示写权限,x表示执行权限,如果未提供权限则是-.

 

第二栏包含连接计数:在这里,只有/bin/zsh拥有直接连接到另一个文件,但是还有其他的文件未显示于这里的输出,因为他们的名称与参数模式不匹配.

 

第三栏,第四栏报告文件所有者和所属组,第五栏则是以字节为单位的文件大小.

 

接下来的三栏是最后修改的时间戳.这里显示的是一直沿用下来的形式:,,.

 

最后说一下od命令

od命令用于输出文件的八进制,十六进制或其他格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符.

 

常见的文件为文本文件和二进制文件.此命令主要用来查看保存在二进制文件中的值.比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数.这些记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派生用场了.个人认为:od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释.不管是IEEE754格式的浮点数还是ASCII,od命令都能按照需求输出他们的值.

 

 

语法:od [选项] [参数]

 

选项:

-a:此参数的效果和同时指定“-ta”参数相同; 

-A<字码基数>:选择以何种基数计算字码; 

-b:此参数的效果和同时指定“-toC”参数相同; 

-c:此参数的效果和同时指定“-tC”参数相同; 

-d:此参数的效果和同时指定“-tu2”参数相同; 

-f:此参数的效果和同时指定“-tfF”参数相同; 

-h:此参数的效果和同时指定“-tx2”参数相同; 

-i:此参数的效果和同时指定“-td2”参数相同; 

-j<字符数目>--skip-bytes=<字符数目>:略过设置的字符数目; 

-l:此参数的效果和同时指定“-td4”参数相同; 

-N<字符数目>--read-bytes=<字符数目>:到设置的字符树目为止; 

-o:此参数的效果和同时指定“-to2”参数相同; 

-s<字符串字符数>--strings=<字符串字符数>:只显示符合指定的字符数目的字符串; 

-t<输出格式>--format=<输出格式>:设置输出格式; 

-v--output-duplicates:输出时不省略重复的数据; 

-w<每列字符数>--width=<每列字符数>:设置每列的最大字符数; 

-x:此参数的效果和同时指定“-h”参数相同; 

--help:在线帮助; 

--version:显示版本信息。



参数:

文件:指定要显示的文件

 

案例:

准备一个test文件

$ echo abcdef g >test

$cat test

abcdef g

使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节

$ od -b test

0000000 141 142 143 144 145 146 040 147 012

0000011

 

使用ASCII码进行输出,注意其中包括转义字符

$ od -c test

0000000   a   b   c   d   e   f       g  \n

0000011

 

使用单字节十进制进行解释

$od -t d1 test  (这里是数字1)

0000000   97   98   99  100  101  102   32  103   10

0000011

 

设置地址格式为十进制

$ od -A d -c test 

0000000   a   b   c   d   e   f       g  \n

0000009

 

 

设置地址格式为十六进制

$od -A x -c test 

000000   a   b   c   d   e   f       g  \n

000009

 

 

跳过开始的两个字节

$ od -j 2 -c test 

od -j 2 -c test   

0000002   c   d   e   f       g  \n

0000011

 

 

跳过开始的两个字节,并且仅输出两个字节

$ od -N 2 -j 2 -c test 

0000002   c   d

0000004

 

 

每行仅输出一个字节

$od -w1 -c test (这里也是数字1)

0000000   a

0000001   b

0000002   c

0000003   d

0000004   e

0000005   f

0000006    

0000007   g

0000010  \n

0000011

 

 

 

每行输出两个字节:

$ od -w2 -c test 

0000000   a   b

0000002   c   d

0000004   e   f

0000006       g

0000010  \n

0000011

 

 

 

每行输出3个字节,并使用八进制字节进行解释

$ od -w3 -b test 

0000000 141 142 143

0000003 144 145 146

0000006 040 147 012

0000011

ls命令(列出所有子目录与文件)

ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令之一,因为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。 语法:ls [选项] [目录或是文件] ...
  • xingpidong
  • xingpidong
  • 2016年12月07日 14:28
  • 6122

ls 列出文件或目录下的文件名

ls 列出文件或目录下的文件名 语法:ls   [选项]   目录路径  参数说明: 短选项 长选项 含义 -a -all 显示全部文件,包括隐藏...
  • euyy1029
  • euyy1029
  • 2016年08月05日 14:13
  • 1480

自己动手写shell命令之ls

linux下ls命令(支持-R参数)的c语言实现: #include #include #include #include #include #include #include vo...
  • yao_wust
  • yao_wust
  • 2014年10月15日 13:26
  • 1731

【Unix/Linux】【命令】【文件,目录操作工具】列出所有子目录与文件——ls (ll)命令

ls命令是Linux下最常用的命令。ls命令就是list的缩写。缺省下ls用来打印当前目录的清单。如果ls指定其他目录,那么就会显式指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件...
  • robinjwong
  • robinjwong
  • 2014年09月15日 16:14
  • 9854

linux运用shell脚本统计列出目录文件个数(学习笔记)

Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。 列出文件 ls -l 然后要统计文件有多...
  • lx_axiao
  • lx_axiao
  • 2017年04月09日 23:32
  • 893

[linux_shell]linux下设置ls命令显示文件、文件夹颜色

linux下设置ls命令显示文件、文件夹颜色: 1. LS_COLORS 用 dircolors -p  可以 看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等定义。 discolor...
  • robertzhouxh
  • robertzhouxh
  • 2013年07月04日 15:20
  • 1677

Linux ls命令详解

ls 命令可以说是linux下最常用的命令之一。 -a 列出目录下的所有文件,包括以 . 开头的隐含文件。(后有详解) -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的...
  • zhangliangzi
  • zhangliangzi
  • 2016年03月05日 08:27
  • 1193

三、Linux常用命令之文件目录篇(ls、cd、pwd、mkdir、touch、cp、mv、rm、rmdir)

(一)Linux文件及目录 1、Linux中,除了"/"以外,其他的所有符号都可以用来做文件的命名。。。 主要是因为:/ 在Linux中表示根目录(即Linux文件系统结构是一个倒树状结构,在最高级有...
  • u013896457
  • u013896457
  • 2014年03月03日 22:53
  • 4280

linux中ls命令:(显示指定目录里的文件及文件夹清单)

原文转载至:http://blog.sina.com.cn/s/blog_6b7bda7f0100lol1.html
  • fuxin0519
  • fuxin0519
  • 2014年06月27日 18:17
  • 3696

Linux / Mac 下 基本的 bash shell 命令详解(cd 、ls)

Linux / Mac 下 基本的 bash shell 命令遍历目录 cdcd destinationcd命令可以带单个参数destination,用以制定你想切换到的目录名。如果用户没有指定目标路...
  • LL845876425
  • LL845876425
  • 2016年10月14日 13:19
  • 1642
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell学习四十一天----列出文件ls和od命令
举报原因:
原因补充:

(最多只允许输入30个字)