本文内容精简、整理、摘抄、有感于《鸟哥的Linux私房菜 - 基础篇第四版》第十章 • 认识与学习BASH。
history
。用户bash指令使用记录文件:~/.bash_history
tab
alias
快捷键 | 说明 |
---|---|
backspace | 向前删除指令 |
ctrl + u | 向前删除全部指令 |
del | 向后删除指令 |
ctrl + k | 向后删除全部指令 |
ctrl + a 或 home | 移动到指令串最前面 |
ctrl + e 或 end | 移动到指令串最末尾 |
a=b
(不能以数字开头,等号两边不能有空格),那么可以使用echo
指令取出值b:echo $a
,这种设定仅对本次登录有效;$HOME
、$PATH
等,可用env
、set
或export
命令查找已定义的变量;echo $$
echo $?
(正常回传为0)unset a
;命令 | 说明 |
---|---|
alias | 设定别名 |
unalias | 取消设定别名 |
history | 查看历史命令。!number,执行第n个指令;!command,往前模糊搜索匹配的指令并执行;!!,执行上一个指令,相当于↑ + Enter |
ctrl + u | 提示符命令输入下可快速删除整行 |
ctrl + s | 暂停屏幕的输出 |
ctrl + q | 恢复屏幕的输出 |
bash特殊符号 | 说明 |
---|---|
# | 批注符号:注释 |
\ | 跳脱符号:将特殊字符或通配符还原成一般字符 |
| | 管线:连接两个管线命令 |
; | 分隔多个连续性命令 |
~ | 当前用户的家目录 |
$ | 取用变量前导符 |
& | 工作控制:将指令设为后台工作 |
/ | 目录间的分隔符 |
! | 逻辑运算符:非,not |
>, >> | 数据流输出重导向,前者是覆盖追加,后者是累记追加 |
<, << | 数据流输入重导向 |
'xxx' | 单引号确保了当前引用的肯定为字符串 |
"xxx" | 双引号仍具有变量置换功能(如$可保留相关变量引用) |
`xxx` | 可执行的指令,亦可使用$() |
() | 中间为子shell的起始和结束 |
{} | 中间为命令区块的结合 |
cmd1 && cmd2 | cmd2仅在cmd1正确执行的情况下执行 |
cmd1 || cmd2 | cmd2仅在cmd1执行错误的情况下执行 |
<
或 <<
>
或 >>
2>
或 2>>
/dev/null
cut [-dfc]
,将输入讯息的某一段切出来 (不适合处理多空格或无规则的数据)
d
后接指定分隔符,与-f
一起使用f
分段后,这个代表第几段(以1开始,同时取出多段以,
分隔),echo $PATH | cut -d ":" -f 4,5,6
c
以字符为单位取出行的固定字符区间,后接区间范围,如10-
表示取出第10个字符到最后,export | cut -c 12-
grep [-acinv] [--color=auto] '搜寻字符串' filename
a
将binary文件转成text文件后再搜索c
计算出现次数i
忽略大小写n
输出行号v
反向选择未搜索匹配到的sort [-fbMnrtuk] [file or stdin]
f
忽略大小写b
忽略前面的空格M
按月份排序n
按数字排序r
反向排序u
去重,相同数据仅出现一行t
指定分隔符k
按指定区间排序,cat /etc/passwd | sort -t ':' -k 3
wc [-lwm]
,数据统计
l
统计行w
统计英文单字m
统计字符uniq [-c]
,去重,c
代表统计次数tee [-a] file
,用于同时将数据流分送到文件和屏幕,而类似>
和>>
只能输送到文件,-a
参数代表追加tr [-ds]
,用于将删除或替换某一讯息中的文字
d
后接某一字符用于删除s
后接被替换的字符和待取代的字符col [-xb]
,将tab
键转换成对等的空格键join -[til2] file1 file2
,处理两个文字的数据paste [-d] file1 file2
,以tab
键分隔将两文件的对应每一行合并成一行,-d
参数可以指定分隔符expand [-t] file
,将空格键转换成对等的tab
键,-t
参数可以指定一个tab
键代表多少个字符split -[bl] file [PREFIX]
,-b
参数后接分区文件大小,可指定b,k,m,g等;-l
参数为以行数进行分区;PREFIX
指定分区文件名前缀xargs -[0epn] command
,产生某个指令的参数减号-
可用于连接一些特殊的stdin和stdout,像这个文件压缩和解压缩的示例:tar -cvf - /home | tar -xvf - -C /tmp/home
。前面的-
用于将stdout传到后面,而后面那个-
则用于接收stdout,这样就可以免去要生成file的流程