文中 -->
为开头的为命令行的输出.
涉及到的命令有,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
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: 忽略大小写;