说明
此博文为《跟阿铭学Linux》的读书笔记
(部分)基本命令
- history
shell builtin CMD
查看当前用户的历史命令, 用户登出系统后上次登入系统所进行的操作会被写入 ~/.bash_history 文件中, 写入数量与 HISTSIZE 和 HISTFILESIZE 有关
- alias & unalias
shell builtin CMD
定义/取消命令别名, 用法为 alias [-p] [name[=value] ...]
和 unalias [-a] [name ...]
alias
或者 alias -p
都是打印当前环境下设置的命令别名
alias name=value [...]
用来定义一个或多个命令别名, 注意带空格的命令使用 单引号 或者 双引号 包裹, 不要使用 反引号 来定义!!!
unalias
用来取消命令别名, -a
参数可以取消所有别名
注意: -a
会把配置文件中预设的别名一并取消, 当然这是暂时的, 下次配置文件载入时还会重新生效
- jobs & bg & fg
shell builtin CMD
作业控制命令
对于持续执行的命令, 使用 Ctrl + Z 可以将它暂停, 此时使用 jobs [jobspec]
可以查看所有/某条 job
jobspec 为 jobs
命令显示的第一列中的数字, 在 jobs
/bg
/fg
命令使用时可以使用 n 或者 %n 来表示, jobspec 前面的 +/- 中的 + 表示默认操作任务
fg [jobspec]
将默认/某条 job 调至前台执行, bg [jobspec]
将默认/某条 job 放至后台执行
在其它不仅仅针对 jobs 进行操作的命令中, 比如 kill
中, 要对 job 进行操作, 必须使用 %n
- env
env
可以列出预设的全部系统变量, 比如 HOSTNAME/SHELL/HISTSIZE/MAIL/PATH/PWD etc.
- set
shell builtin CMD
set
列出的除了 env
包含的信息外, 还会打印用户自定义的信息, 比如一些 alias
- split
用来切割文档, 用法为 split [OPTION]... [INPUT [PREFIX]]
OPTION
-b, --byte=SIZE
指定每个分割档的字节数
-l, --lines=NUMBER
指定每个分割档的行数
–additional-suffix=SUFFIX
指定后缀
INPUT
不指定或者使用 ‘-’ , 则读取 STDIN
PREFIX
分割后的文件名为 PREFIXaa, PREFIXab …
如果不指定PREFIX, 那么默认使用 ‘x’
- tr
用来对字符进行替换或删除, 用法为 tr [OPTION]... SET1 [SET2]
OPTION
-d, --delete
删除 SET1
它会将 SET1 完全删除, 区分大小写, SET1 可以包含多个字符
只能接收 SET1 , 无法加 SET2 参数
-s, --squeeze-repeats
字符去重
把 SET1 中的每个字符进行压缩, 即多个重复字符压缩为 1 个
可以接 SET2 , 接 SET2 的话会压缩完之后进行替换操作
SET2 的长度随意, 但是仅有不长于 SET1 部分会生效
SET1 和 SET2 的匹配规则是相同位置的字符做替换, 若 SET2 中缺失则以 SET2 最后一个字符为准
- tee
类似重定向 ‘>’ , 但它重定向的同时, 还会进行 STDOUT , 用法为 tee [OPTION]... [FILE]...
tee 可以不接任何参数, 但是这么做没有任何意义
可以接 ‘-’ , 这样会在屏幕打印两次 STDOUT
OPTION
一般使用时不带参数
-a, --append
向文件附加, 而不是覆盖写入
-i, --ignore-interrupts
忽略中断信号
- sort
排序文件, 用法为 sort [OPTION]... [FILE]...
或者 sort [OPTION]... --files0-from=F
OPTION
-t, --field-separator=SEP
指定分隔符, 命令默认使用的是空白作为分隔
-u, --unique
去重
MAN PAGE 里提及它与 -c 连用是 check for strict ordering
我又看了下 -c , 它是用来检查哪一行开始乱序的
目前试验结果表示 -uc 和 -c 输出没啥差别
-n, --numeric-sort
数字排序
把字符也当做数字来比较, 不同的 LANG 下可能排序结果会不同
比如 LANG=C 时, 数字字母排序为 0 1 2 3 4 … A B C D … Z a b c d … z
LANG=zh_CN 时, 排序为 0 1 2 3 4 … a A b B … z Z
-r, --reverse
反向排序
默认是小到大, 使用后大到小
-k, --key=KEYDEF
指定比较列, -k3,5 表示第三列到第五列顺序比较
注意这是连续的一个范围, 而不是比较第三和第五列
个人理解: 如果需要不连续的几个列作比较, 使用 -kn1 -kn2 …
–files0-from=F
这个应该是从文件读取所需排序的文件列表
- wc
字符统计, 用法为 wc [OPTION]... [FILE]...
或者 wc [OPTION]... --files0-from=F
OPTION
-c, --bytes
统计字节数
-l, --lines
统计行数
-w, --words
统计单词数
-m, --chars
统计字符数
- uniq
删除重复行, 用法为 uniq [OPTION]... [INPUT [OUTPUT]]
它更多时候与 sort 配合使用
OPTION
-c, --count
同时输出重复行的重复次数
- cut
从输入中截取部分字段, 用法为 cut OPTION... [FILE]...
OPTION
-d, --delimiter=DELIM
指定分隔符, 默认以 TAB 为分隔
可以使用 ‘DELIM’ 方式来指定, 正常情况下不加也是可以的, 单引号/双引号用来指定如 空格 等特殊的空格符
-c, --characters=LIST
选出指定字符
-f, --fields=LIST
选出指定列
LIST
一个或多个范围
形如 1, 3-5, 7, 10
即 N, N-, N-M, -M 几种表示方式, 用 ‘,’ 将它们关联
(部分)特殊字符
- !!
执行上条命令
- !n
执行第n条历史命令
- !COMMAND_PART
执行最近一条头部匹配 COMMAND_PART 的命令
- * 和 ?
通配符, ‘*’ 匹配零个或任意多个字符, ‘?’ 匹配一个字符
- >、>>、<
输出/输入重定向, 这个在之前的博文中有详细说过
- |
管道符, 用来将前道命令的 STDOUT 作为后道命令的 STDIN
- $
变量引用符
$$ 表示当前 shell 的 pid
$? 表示上一条命令执行的返回值, 若正常执行一般是 0
- \
转义符
注释符
- ;、&&、||
命令连接符
- []
表示字符范围, 比如 [0-9] 表示 0~9 十个数字中的任意一个
- ~
表示用户家目录
- &
后台执行符