Linux命令(一)——ls

Linux命令(一)——ls

GNU/Linux Shell是个交互式工具,它为用户提供了启动程序、管理文件系统上的文件以及管理运行在Linux系统上的进程的途径。Shell的核心是命令行提示符。命令行提示符是shell的交互部分,它允许你输入文本命令,之后将解释命令并在内核中执行。Shell包含了一组内置命令,可以使用这些命令完成复制文件、移动文件、重命名文件等。在Linux系统上,通常有好几种Linux Shell可用。当前Linux发行版默认的shell基本上都是bash shell(Bourne again shell)。

我使用的Ubuntu 12.04LTS使用的bash版本是

GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc

1 Shell的启动


GNU bash shell作为常规程序运行的,通常是在用户登录终端时启动,登录时系统启动的shell依赖于用户账户的配置。/etc/passwd存储了对于用户的bash启动位置。

root:x:0:0:root:/root:/bin/bash

可以看到root用户shell的位置在/bin/bash,字段分别表示用户名、用户密码(用户密码加密存储在其他文件)、系统UID、GID、用户全名、默认主目录、默认shell程序。

2 ls命令


ls命令的手册说明:

名称

ls – (list directory contents)

语法

ls [OPTION]... [FILE]...

说明

显示文件的信息

ls最基本的用法是显示当前目录下的文件和目录

$ ls

a.txt b.log c.c d_a

如果没有使用排序的参数,ls命令输出的列表是按照字母排序的(按列排序)。如果用户使用的支持彩色显示的终端,那么ls输出的文件按类型显示不同的颜色,具体颜色的配置在LS_COLORS变量中。使用echo $LS_COLORS可以查看每种文件类型的颜色配置。

3 ls命令选项


NOTE: 常用命令,不完全。

单字母

全字

描述

-a

--all

do not ignore entries starting with .

输出包括“.”打头的隐藏文件

-A

--almost-all

do not list implied . and ..

输出隐藏文件,不输出“.”和“..”文件

 

--author

with -l, print the author of each file

输出每个文件的作者

-b

--escape

print C-style escapes for nongraphic characters

输出不可打印字符的八进制值

 

--block-size=size

Scale sizes by SIZE before printing them.

按size字节大小的块来计算块数

-B

--ignore-backups

do not list implied entries ending with ~

不要列出名称中包含波浪线(~)的条目(~用于表示备份的副本)

-c

 

with -lt: sort by, and show, ctime (time of last modification of file status information)

with -l: show ctime and sort by name otherwise: sort by ctime, newest first

按最后一次修改时间排序

-C

 

list entries by columns

按列输出条目

 

--color=when

colorize the output. WHEN defaults to `always' or can be `never' or `auto'.

何时使用彩色(always/never/auto)

-d

--directory

list directory entries instead of contents, and do not derefer‐ence symbolic links

列出目录条目而非内容,并且不要跟踪符号链接

-F

--classify

append indicator (one of */=>@|) to entries,*表示可执行,/表示为目录

 

--file-type

likewise, except do not append ‘*’

与-F类似,但是不显示’*’

 

--format=WORD

across -x, commas -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C

将输出格式化为交叉、逗号、水平、长、单列、详细、垂直

-g

 

like -l, but do not list owner

输出除文件属主之外的所有信息

-G

--no-group

like -l, but don't print group names

在-l模式下,不显示组名

-h

--human-readable

with -l, print sizes in human readable format (e.g., 1K 234M 2G)

打印大小,K表示千字节,M表示兆字节,G表示吉字节

-i

--inode

print the index number of each file

显示每个文件的索引值

 

--ignore=PATTERN

do not list implied entries matching shell PATTERN,例“ls --ignore=”*.cpp”

不显示匹配PATTERN的项

-k

 

like --block-size=1K

作用等于“--block-size=1024”

-l

 

use a long listing format

按长列表输出格式显示

-L

--dereference

when showing file information for a symbolic link, show information for the file the link references rather than for the link itself

对于链接文件,显示原文件信息

-n

--numeric-uid-gid

like -l, but list numeric user and group IDs

显示uid和gid时显示数字而不是字符串

-o

 

like -l, but do not list group information

在长列表模式下不显示组名

-r

--reverse

reverse order while sorting

在输出文件和目录时,反转排序的顺序

-R

--recursive

list subdirectories recursively

递归的列出子目录内容

-s

--size

print the allocated size of each file, in blocks

输出每个文件的块大小

-S

--sort=size

sort by file size

按文件大小排序输出

-t

--sort=time

sort by modification time, newest first

按照文件的修改时间输出

-u

 

with -lt: sort by, and show, access time with -l: show access time and sort by name otherwise: sort by access time

输出文件的最后访问时间而非最后修改时间

-x

 

list entries by lines instead of by columns

按行而非列输出条目

-X

--sort=extension

sort alphabetically by entry extension

按文件拓展名排序输出

-1

 

List one file per line

一行显示一个文件信息

 

#可以看到不仅显示了普通文件,还显示了. .. .hide文件
$ ls -a
.  ..  a.txt  b.log  c.c  d_a  .hide  man_ls.txt
#没有显示. ..文件,显示了.hide文件
$ ls -A
a.    txt  b.log  c.c  d_a  .hide  man_ls.txt
#增加了一列,显示文件的作者
$ ls -l --author
total 12
-rw-rw-r-- 1 user user user    0 May 11 21:30 abdta.test
-rw-rw-r-- 1 user user user    0 May 11 19:52 a.txt
-rw-rw-r-- 1 user user user    0 May 11 19:52 b.log
-rw-rw-r-- 1 user user user    0 May 11 19:52 c.c
drwxrwxr-x 2 user user user 4096 May 11 19:53 d_a
-rw-rw-r-- 1 user user user 7985 May 11 19:59 man_ls.txt
#长信息分别为文件类型,比如目录(d)、文件(-)、字符型文件(c)、快文件(b)
#文件的权限
#文件的硬链接数
#文件属主用户名
#文件的大小(字节为单位)
#文件的上次修改时间
#文件名或目录名
$ ls -l
total 12
-rw-rw-r-- 1 user user    0 May 11 21:30 abdta.test
-rw-rw-r-- 1 user user    0 May 11 19:52 a.txt
-rw-rw-r-- 1 user user    0 May 11 19:52 b.log
-rw-rw-r-- 1 user user    0 May 11 19:52 c.c
drwxrwxr-x 2 user user 4096 May 11 19:53 d_a
-rw-rw-r-- 1 user user 7985 May 11 19:59 man_ls.txt
#使用1024字节作为显示文件大小的单位
$ ls -l --block-size=1024
total 12
-rw-rw-r-- 1 user user 0 May 11 21:30 abdta.test
-rw-rw-r-- 1 user user 0 May 11 19:52 a.txt
-rw-rw-r-- 1 user user 0 May 11 19:52 b.log
-rw-rw-r-- 1 user user 0 May 11 19:52 c.c
drwxrwxr-x 2 user user 4 May 11 19:53 d_a
-rw-rw-r-- 1 user user 8 May 11 19:59 man_ls.txt
#目录名后有/,可执行文件名后有*
$ ls -F
abdta.test  a.txt  b.log  c.c  d_a/  d.sh*  man_ls.txt
#目录名后有/,但可执行文件名后没有*
$ ls --file-type
abdta.test  a.txt  b.log  c.c  d_a/  d.sh  man_ls.txt
#格式化输出,输出项之间用”,”隔开
$ ls --format=commas
abdta.test, a.txt, b.log, c.c, d_a, d.sh, man_ls.txt
#长格式输出,但是不显示属主名、组名,而且文件大小以k\m\g单位输出
$ ls -lgGh
total 12K
-rw-rw-r-- 1    0 May 11 21:30 abdta.test
-rw-rw-r-- 1    0 May 11 19:52 a.txt
-rw-rw-r-- 1    0 May 11 19:52 b.log
-rw-rw-r-- 1    0 May 11 19:52 c.c
drwxrwxr-x 2 4.0K May 11 19:53 d_a
-rwxrw-r-- 1    0 May 11 21:39 d.sh
-rw-rw-r-- 1 7.8K May 11 19:59 man_ls.txt
#使用--hide=PATTERN,可以隐藏匹配PATTERN的输出项
$ ls --hide="a*"
b.log  c.c  d_a  d.sh  man_ls.txt
#使用--ignore=PATTERN有同样的效果,但是当使用-a选项时,--hide会失效。
ls --ignore="a*" -a
.  ..  b.log  c.c  d_a  d.sh  .hide  man_ls.txt

#ls -il,长信息中显示inode信息。
$ ls -il
total 12
4591222 -rw-rw-r-- 1 user user    0 May 11 21:30 abdta.test
4591214 -rw-rw-r-- 1 user user    0 May 11 19:52 a.txt
4591215 -rw-rw-r-- 1 user user    0 May 11 19:52 b.log
4591216 -rw-rw-r-- 1 user user    0 May 11 19:52 c.c
4591219 drwxrwxr-x 2 user user 4096 May 11 19:53 d_a
4591223 -rwxrw-r-- 1 user user    0 May 11 21:39 d.sh
4591220 -rw-rw-r-- 1 user user 7985 May 11 19:59 man_ls.txt

#递归显示子目录的内容
$ ls -R
.:
abdta.test  a.txt  b.log  c.c  d_a  d.sh  man_ls.txt

./d_a:
d_a.test

#-X选项,按文件拓展名排序输出
$ ls -X
d_a  c.c  b.log  d.sh  abdta.test  a.txt  man_ls.txt

4 过滤输出列表


默认情况下,ls会列出所有文件,可使用--hide或--ignore忽略特定的文件,类似的也可以过滤输出特定的文件。ls命令支持在命令行下定义过滤器,可以使用过滤器来决定应该在输出中显示哪些文件和目录。

使用文件名全名可以显示单个文件的信息。

$ ls -l abdta.test 
-rw-rw-r-- 1 liweimcc liweimcc 0 May 11 21:30 abdta.test

使用通配符进行过滤,使用?表示一个字符,*表示多个或零个字符。

$ ls -l a?dta.test
-rw-rw-r-- 1 liweimcc liweimcc 0 May 11 21:30 abdta.test
$ ls -l a*
-rw-rw-r-- 1 liweimcc liweimcc 0 May 11 21:30 abdta.test
-rw-rw-r-- 1 liweimcc liweimcc 0 May 11 19:52 a.txt
posted @ 2014-05-11 23:11  JoeyWang  阅读(573)  评论(0编辑  收藏  举报