1. 命令替换
把命令中某个子命令替换为其执行结果
$()
echo "The current directory is $(pwd)."
touch ./file$(date +%H-%M-%S).txt
``
echo "The current directory is `pwd`"
echo 'The current directory is `pwd`'
bash支持的引号
`` 反引号,命令替换
"" 双引号,可以实现变量替换
'' 强引用,不完成变量替换
2. 交互式命令模式
命令模式 | 执行操作命令 |
插入模式 | 输入内容 |
末行模式 | 做一些操作 保存退出 导入文本 |
1) 命令模式
删除:
d 进入删除状态
d 删除当前行
$ 删除光标所在字符到行尾,包含光所在字符
^ 删除光标所在字符到行首,不包含光标所在字符
gg 删除光标所在行到文档首部
G 删除光标所在行到文档尾部
w 删除光标所在字符往后一个单词,,而是同类字符
x 在命令行按字符进行往右删除
s 删除光标所在处的字符并进入插入模式
r 替换光标所在处的字符
光标的跳转:
$ 跳转到行尾
^ 跳转到行首
gg 跳转到文档首行行首
G 跳转到文档末行行首
line_num G 跳转到 line_num 数字行号的行首
w 按单词往右跳转
h 光标往左移动
j 光标往下移动
k 光标往上移动
l 光标往右移动
其他指令:
u 撤销之前的操作 1 2 3 3 2 1
Ctrl + r 重做 1 2 3 3 2 2 3
line_count yy 复制光标所在行之后的 line_count 数量的行
yy 表示复制当前行
p 表示粘贴复制的行
line_count cc 剪切光标所在行之后的 line_count 数量的行
cc 表示剪切当前行 直接进入插入模式
p 表示粘贴剪切的行
2) 末行模式
:w
:q
:wq
:w filename
:q! 强制退出不保存
:set nu 显示行号
:set nonu 取消显示行号
:r /dir1/dir2/filename 表示读取指定文件的内容到当前文件
:line_num 表示直接跳转到指定行行首
3) 查找替换
:%s/被替换内容/替换后的内容 表示查找当前文件中所有的 被替换内容 替换成 替换后的内容,但是每行匹配到的只替换第一个匹配到的
:%s/被替换内容/替换后的内容/g 表示替换所有被匹配到的关键字 g 表示全局
:%s/被替换的关键字//g 表示删除匹配到的所有关键字
查找字符串:
/关键字 表示在文档中查找关键字
n 在所有匹配到的关键字之间往后循环切换
N 在所有匹配到的关键字之间往前循环切换
?关键字 表示在文档中查找关键字
n 在所有匹配到的关键字之间往前循环切换
N 在所有匹配到的关键字之间往后循环切换
3. 文本排序
sort 默认根据字符在ASCII码中的升序排序
-n 按数值排序
-r reverse,逆序排
-t 指定字段分隔符
-k key,指定字段进行排序
-u unique,去重
-f 排序时忽略字符大小写
uniq 等同于sort -u,报告重复的行,注意,重复的行必须相邻
-d 只显示重复的行
-D 显示所有重复的行
-c 显示重复行重复的次数
4. 文本统计
wc word count,显示顺序为 行-单词数-字节数
-w 单词
-c 字节
-l(小写字母l) 行
-m 字符
-L 最长的一行有多少宽度
shell特性
1、命令行编辑
Ctrl+a 跳到命令行行首
Ctrl+e 跳到命令行行尾
Ctrl+d 向后删除,类似delete
Ctrl+u 删除光标至行首的内容
Ctrl+k 删除光标至行尾的内容
Ctrl+左右箭头, 在模拟终端中支持按单词跳转
Ctrl+l 清屏,等同于clear
Ctrl+c 取消执行当前命令
2、命令历史
history 命令历史管理
命令历史文件为~/.bash_history
命令历史大小由环境变量HISTSIZE来指定,默认为1000
变量配置文件为/etc/profile
-c 清空整个命令历史
-d 删除指定命令历史
-w 将缓冲区中的命令历史保存到命令历史文件
使用技巧
!n 执行命令历史中第n条命令
!-n 执行命令历史中倒数第n个命令
!! 执行上一条命令
!KEY 执行最近一次以指定KEY开头的命令
!$ 引用上一个命令中最后一个参数
ESC+. 同上,多次按还可以切换
ALT+. 同上,在远程终端无效?
3、自动补全
命令补全
在PATH环境变量下搜索补全要输入的命令
路径补全
在输入的字符开始的路径下补全
选项补全
在输入命令之后,可以自动补全选项