文中 --> 为开头的为命令行的输出.

涉及到的命令有,cat, tac, file, history, tree, more, less, tail, head, touch, cp, mv, rm,,tr,tee, wc, cut, sort, uniq

cat

cat – 连接文件(S),或标准输入,到标准输出。

#SYNOPSIS
cat [OPTION]... [FILE]...
## -A, --show-all 等价于 -vET
$
## -b, --number-nonblank 跟-n类似,只不过对于空白行不编号
$ cat -b /etc/passwd
-->  1    this is a test.
     2    onew
     3    tow.
## -e 等价于 -vE
$
## -E 显示结束符,显示$在每行的结尾
$ cat -E /etc/passwd
--> root:x:0:0:root:/root:/bin/bash$
    bin:x:1:1:bin:/bin:/sbin/nologin$
    daemon:x:2:2:daemon:/sbin:/sbin/nologin$
    adm:x:3:4:adm:/var/adm:/sbin/nologin$
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
    sync:x:5:0:sync:/sbin:/bin/sync$
## -n 显示行号
$ cat -n
-->  1    This is my new life.
     2
     3    one line.
     4    The other line.
## -s, --squeeze-blank 压制显现重复的空白行,连续的空白行输出一行
$ cat -s test
--> This is my new life.
    one line.
    The other line.
## -t 参考 -vT
$
## -T, --show-tabs TAB显示为^I
$ cat -T test
-->    This is my new life.
    one^I line.
    ^Itab line.
    The other line.
## -v, --show-nonprinting  显示非打印字符 use ^ and M- notation, except for LFD and TAB
$ cat -v test

tac

tac – 将每个指定文件按行倒置并写到标准输出。如果不指定文件,或文件为”-“,则从标准输入读取数据,不常用

#SYNOPSIS
tac [OPTION]... [FILE]...
## -b, --before 在行前而非行尾添加分隔标志
$
## -r, --regex 将分隔标志视作正则表达式来解析
$
## -s, --separator=字符串  使用指定字符串代替换行作为分隔标志
$

file

file – 检查文件的类型

#SYNOPSIS
file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
@@OPTIONS
## -b --brief 简短模式, 不输出文件名
$ file -b test
--> ASCII English text
## 待续...

history

history – 显示或操纵历史列表。

#SYNOPSIS
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
## -c 清空历史记录
$
## -a: 当缓冲区中的历史手动追加文件;
$
## n 数字,要列出最近的 n 笔命令列表
$ history 4
--> 849  history -n
    850  history
    851  history -n
    852  history 4
## -r 将 histfiles 的内容读到目前这个 shell 的 history 记忆中
$
## -w 将目前的 history 记忆内容写入 histfiles
$
## -d #: 删除历史中指定的命令
## 执行history列表中命令的方法
## 调用过去执行过的命令:
##         !#:调用历史中的第#条命令;
##         !!: 重复执行上一条命令
##         !string:调用历史中最近一个以string开头的命令;
## 调用过去执行过的命令的最后一个参数:
##         !$:
##         ESC, .
##         Alt+.

tree

tree – 命令以树形结构显示文件目录结构

#SYNOPSIS
tree  [-adfghilnopqrstuvxACDFNS]  [-L  level  [-R]]  [-H  baseHREF]  [-T  title]  [-o  filename]
      [--nolinks] [-P pattern] [-I pattern]
      [--inodes] [--device] [--noreport] [--dirsfirst] [--version] [--help] [--filelimit #] [directory ...]
## -a 列出所有文件,默认情况下,不显示隐藏文件,还有当前目录(.)和上级目录(..)
$
## -d 仅列出文件夹
$ tree -d /tmp
--> ├── Desktop
    ├── Documents
    ├── Downloads
    ├── Music
    ├── Pictures
    ├── Public
    ├── Templates
    └── Videos
## -f 在每个文件或目录之前,显示完整的相对路径名称。
$ tree -f
--> .
    ├── ./a123b
    ├── ./a3b
    ├── ./aab
    ├── ./ab
    ├── ./aMb
    ├── ./x
    │   ├── ./x/m
    │   └── ./x/n
    └── ./y
        ├── ./y/m
        └── ./y/n
## -i   不以阶梯状列出文件或目录名称。
$ tree -fi
--> .
    ./a123b
    ./a3b
    ./aab
    ./ab
    ./aMb
    ./x
    ./x/m
    ./x/n
    ./y
    ./y/m
    ./y/n
## -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
$ ls -l
--> -rw-r--r-- 1 root root    0 Nov 23 15:18 a123b
    -rw-r--r-- 1 root root    0 Nov 23 15:18 a3b
    -rw-r--r-- 1 root root    0 Nov 23 15:18 aab
    -rw-r--r-- 1 root root    0 Nov 23 15:18 ab
    -rw-r--r-- 1 root root    0 Nov 23 15:18 aMb
    lrwxrwxrwx 1 root root    7 Nov 24 13:42 ls -> /bin/ls
    lrwxrwxrwx 1 root root    3 Nov 24 13:43 lx -> ./x
    drwxr-xr-x 4 root root 4096 Nov 24 13:44 x
    drwxr-xr-x 4 root root 4096 Nov 23 14:40 y
$ tree -l
--> .
    ├── a123b
    ├── a3b
    ├── aab
    ├── ab
    ├── aMb
    ├── ls -> /bin/ls
    ├── lx -> ./x
    │   ├── m
    │   └── n
    ├── x
    │   ├── m
    │   └── n
    └── y
        ├── m
        └── n
## -P pattern 支持正则表达式过滤
$ tree -p ?
--> x
    ├── [drwxr-xr-x]  m
    └── [drwxr-xr-x]  n
    y
    ├── [drwxr-xr-x]  m
    └── [drwxr-xr-x]  n
## -I 不列出匹配到的.
$
## -s 打印出每个文件的大小(byte)
$
## -h 打印出每个文件的大小,可读的(K,M,G,T,P,E)
$
## -u 打印每一个文件的属主
$
## -g 打印每一个文件的属组
$
## -D 打印每一个文件的最后一次修改时间
$
## -L 1显示几层目录
$
## --dirsfirst 文件夹显示在前面
$



more

more – 类似 cat ,不过会以一页一页的显示方便使用者逐页阅读

#SYNOPSIS
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...]
## -d 有退出提示
$
## Space: 向后一屏;
## Enter: 向后一行;
## b: 向前一屏;

less

less – 支持前后翻屏

#SYNOPSIS
#
#    /字符串:向下搜索“字符串”的功能
#    ?字符串:向上搜索“字符串”的功能
#    n:重复前一个搜索(与 / 或 ? 有关)
#    N:反向重复前一个搜索(与 / 或 ? 有关)
#    b  向后翻一页
#    d  向后翻半页
#    h  显示帮助界面
#    Q  退出less 命令
#    u  向前滚动半页
#    y,k  向前滚动一行
#    空格键 滚动一页
#    回车键,j 滚动一行
#    [pagedown]: 向下翻动一页
#    [pageup]:   向上翻动一页
#


tail

tail – 输出文件的最后一部分到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件

#SYNOPSIS
tail [OPTION]... FILE
## -n # 显示#行,默认是10行
$ tail -n 4 /etc/passwd
--> pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    centos:x:500:500::/home/centos:/bin/bash
## -f follow 可用来监控日志
$

head – 输出文件的前一部分

#SYNOPSIS
head [OPTION]... [FILE]...
## -n 显示文件的前多少行,默认是10行
$ head -n 4 /etc/passwd
--> root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
## 其他选项不常用,略过.

touch

touch – 改变文件时间戳的工具

#SYNOPSIS
touch [OPTION]... FILE...
## 什么参数也不加,更新atime,mtime,ctime
##            -m: 只更新mtime
##             -a: 只更新atime
##             -t STAMP: [[CC]YY]MMDDhhmm[.ss] 此处只会更改atime,mtime,(ctime更新为当前时间,而不是指定的时间).
##            -c: 不创建空文件
$ touch -t 201403031122.33 test
--> File: 'test'
      Size: 61            Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 262146      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2014-03-03 11:22:33.000000000 +0800
    Modify: 2014-03-03 11:22:33.000000000 +0800
    Change: 2015-08-24 21:22:51.350499033 +0800(此处为系统当前的时间)

cp

cp – 复制文件或文件夹

#SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST:
    SRC是文件:
        如果DEST不存在:新建目标文件,并将SRC复制到目标文件;
        如果DEST存在:
            如果DEST是文件:用SRC的内容覆盖至DEST文件中;
            如果DEST是目录:在DEST目录中新一个与原文件同名的文件,将将SRC内容复制到新建的同名的目标文件中;
cp SRC... DEST:
    如果DEST不存在:
        是错误的;
    如果DEST存在:
        如果DEST是文件:错误;
        如果DEST是目录:
常用选项:
    -r, -R: 递归复制;
    -d: 不跟踪符号链接;
    --preserve[=ATTR_LIST]:
        mode, ownership, timestamps
        context, links, xattr, all
    -a: -dR --preseve=all
    -i: interactive
    -f: force
    -v: 显示过程
## 下面演示加 -d 与不加的区别, 加-d会把符号链接复制过来,不加-d直接拷贝实际路径
$ ll ls
--> lrwxrwxrwx 1 root root 7 Aug 24 21:42 ls -> /bin/ls
$ cp ls{,_bak}
--> lrwxrwxrwx 1 root root      7 Aug 24 21:42 ls -> /bin/ls
    -rwxr-xr-x 1 root root 117024 Aug 24 22:33 ls_bak
$ cp -d ls{,_bak_a}
--> lrwxrwxrwx 1 root root      7 Aug 24 21:42 ls -> /bin/ls
    -rwxr-xr-x 1 root root 117024 Aug 24 22:33 ls_bak
    lrwxrwxrwx 1 root root      7 Aug 24 22:35 ls_bak_a -> /bin/ls

mv

mv – 移动或重命名文件

#SYNOPSIS
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
## -i 交互的方式
## -f 强制移动

rm

rm – 删除文件和目录,默认情况下,它是不会删除目录的.

#SYNOPSIS
rm [OPTION]... FILE...
## -r -R 递归删除
## -f 强制删除
## -i 交互式删除

tr

tr – 转换,压缩,删除字符从标准输入,并输出到标准输出.

#SYNOPSIS
tr [OPTION]... SET1 [SET2]
## -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII. 没明白?
$
## -d, --delete 删除字符串1中所有输入字符。
$ echo "aaaabbccvc" | tr -d "a"
--> bbccvc
## -s, --squeeze-repeats 删除所有连续重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
$ echo "aaaabbccvc" | tr -s '[a-z]'
--> abcvc
## -t, --truncate-set1 将set1的字符依次替换成set2中的字符,如果set1的长度超过了set2的长度,则超出的部分不做转换.
$ echo 'This is your new life.' | tr -t 'your' 'my'
--> This is myur new life.
## 区别-t
$ echo 'This is your new life.' | tr 'your' 'my'
--> This is myyy new life.

tee

tee – 读取标准输入的数据,并将其内容输x到标准输出或文件。

#SYNOPSIS
tee [OPTION]... [FILE]...
## 不加任何参数是覆盖
## -a, --append 追加到给定文件的末尾,并非覆盖
$ echo 'new line' | tee -a a b #把newline追加到a文件,b文件.
## -i, --ignore-interrupts 忽略中断信号。
$

wc

wc – 统计指定文件中的字节数、字数、行数,并将统计结果显示输出

#SYNOPSIS
wc [OPTION]... [FILE]...
wc [OPTION]... --files0-from=F
## -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
$
## -l 统计行数
$
## -c 统计字节数。
$
## -m 统计字符数。这个标志不能与 -c 标志一起使用。
$
## -L 打印最长行的长度。

cut

cut – 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一.

#SYNOPSIS
cut OPTION... [FILE]...
## -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
## -c :以字符为单位进行分割。
## -d :自定义分隔符,默认为制表符。
## -f :与-d一起使用,指定显示哪个区域。
    #:
    #-#:1-3
    #,#: 1,3,7

sort

sort – 排序指定文件中的行.

#SYNOPSIS
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
## -b: 忽略每行前面开始出的空格字符。
## -c: 检查文件是否已经按照顺序排序。
## -r: 逆序
## -f: 忽略字符大小写
## -u: 排序后去重
## -t CHAR: 指明分隔符
## -k #: 字段,选择那个区间进行排序
## -n: 表示以数值大小排序
## -o <输出文件> 将排序后的结果存入指定的文件。

uniq

uniq – 报告或删除文件中重复的行。

#SYNOPSIS
uniq [OPTION]... [INPUT [OUTPUT]]
## -c: 显示每行重复的次数;
## -d: 只显示重复过的行;
## -u: 只显示不曾重复的行;
## -i: 忽略大小写;