您的位置:首页 > 大数据 > 人工智能

Command-cat, tac, file, history, tree,tee…

2015-08-25 10:25 459 查看
文中
-->
为开头的为命令行的输出.涉及到的命令有,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]

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

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: 忽略大小写;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mv head tail rm cat tee