Linux
终端快捷键
光标移动
快捷键 | 作用 |
---|---|
crtl+a | 移动到开头 |
crtl+e | 移动到结尾 |
alt+b | 向左移动一个单词 |
alt+f | 向右移动一个单词 |
crtl+b | 向左移动一个字符 |
crtl+f | 向右移动一个字符 |
esc+b | 向左移动一个单词 |
esc+f | 向右移动一个单词 |
ctrl+XX | 在上次光标和当前光标所在字符间跳转 |
esc+t | 交换光标位置钱的两个单词 |
删除
快捷键 | 作用 |
---|---|
ctrl+k | 删除光标后所有字符 |
ctrl+u | 删除光标前所有字符 |
ctrl+w | 删除光标前一个单词 |
ctrl+d | 删除光标所在字符(右侧) |
ctrl+h | 删除光标前字符(左侧) |
撤销
快捷键 | 作用 |
---|---|
ctrl+_ | 撤销操作 |
ctrl+y | 粘贴ctrl+u/k剪切的内容 |
ctrl+? | 撤销前一次输入 |
alt+r | 撤销前一次动作 |
替换
快捷键 | 作用 |
---|---|
ctrl+t | 将光标当前字符与前一个字符替换 |
历史命令编辑
快捷键 | 作用 |
---|---|
ctrl+p | 上一条历史命令 |
ctrl+n | 下一条历史命令 |
alt+> | 上一次执行的命令的最后一个单词 |
ctrl+r | 搜索历史命令 |
控制命令
快捷键 | 作用 |
---|---|
ctrl+l | 清除屏幕 |
ctrl+s | 锁住终端,阻止屏幕输出 |
ctrl+q | 解锁终端,允许屏幕输出 |
ctrl+c | 终止命令 |
ctrl+i | 补全,相当于tab |
ctrl+o | 重复执行命令 |
alt+<数字> | 操作的次数 |
ctrl+z | 挂起 |
!命令
快捷 | 作用 |
---|---|
!! | 执行上条命令 |
!-n | 执行前n条命令 |
shell中的 $ 用法
特殊符号 | 含义 |
---|---|
$# | 传给脚本的参数个数 |
$0 | shell脚本文件的名字 |
$1 | 传递给该shell脚本的第一个参数 |
$2 | 传递给该shell脚本的第二个参数 |
$@ | 传给脚本的所有参数的列表 |
$* | 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 |
$$ | 脚本运行的当前进程ID号,Shell本身的PID |
$? | 显示最后命令的退出状态,0表示没有错误,其他表示有错误 |
$! | Shell最后运行的后台Process的PID |
$- | 使用Set命令设定的Flag一览 |
$() | 相当于``,括号中放的是命令 |
${} | 括号中放的是变量。例如echo P A T H 取 P A T H 变 量 的 值 并 打 印 , 也 可 以 不 加 括 号 比 如 {PATH}取PATH变 量的值并打印,也可以不加括号比如PATH取PATH变量的值并打印,也可以不加括号比如PATH。 |
$1~n | 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 |
判断/比较
语法(用例)
if [ $SYSTEM = "Linux" ] ; then # 如果是linux话输出linux字符串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi # 判断结束,以fi结尾
字符串判断
语法 | 含义 |
---|---|
str1 = str2 | 当两个串有相同内容、长度时为真 |
str1 != str2 | 当串str1和str2不等时为真 |
-n str1 | 当串的长度大于0时为真(串非空) |
-z str1 | 当串的长度为0时为真(空串) |
str1 | 当串str1为非空时为真 |
数字的判断
语法 | 含义 |
---|---|
int1 -eq int2 | 两数相等为真 |
int1 -ne int2 | 两数不等为真 |
int1 -gt int2 | int1大于int2为真 |
int1 -ge int2 | int1大于等于int2为真 |
int1 -lt int2 | int1小于int2为真 |
int1 -le int2 | int1小于等于int2为真 |
文件相关的if判断条件语句
语法 | 含义 |
---|---|
-r file | 用户可读为真 |
-w file | 用户可写为真 |
-x file | 用户可执行为真 |
-f file | 文件为正规文件为真 |
-d file | 文件为目录为真 |
-c file | 文件为字符特殊文件为真 |
-b file | 文件为块特殊文件为真 |
-s file | 文件大小非0时为真 |
-t file | 当文件描述符(默认为1)指定的设备为终端时为真 |
复杂逻辑判断
语法 | 含义 |
---|---|
-a | 与 |
-o | 或 |
! | 非 |
[] 和 [[]] 的区别
if [[]] 要求括号里的表达式前后必须有一个空格,格式如 if [[ xxx ]]。 当 if [[]] 用于字符串常量或变量比较时,表达式本身的运算符,如 <、>、==、!= ,其前后可以不加空格; 但当 if [[]] 用于数值比较时,表达式本身的运算符前后必须加空格,否则会得到相反的结果。
如:
if [[ $1 != "start" && $1 != "stop" ]]
在if之后要用空格,[[ 之后要有一个空格,]]之前要有空格,不然会出错.
elif [[ $1 == "stop" ]]
双等号两边要有空格不然后会出错.
在shell中查看每条指令实际执行的结果
set +x
表示开始记录,set -x
表示停止记录。
例子:
set +x
name="test"
echo $name
set -x
实用小技巧
查找包含某个字符串的所有文件,可以用于后续的自动处理:
# 指令
grep -r "desktop\." | awk '{print $1}' | sed 's/://g' | uniq
# 用途
for script_name in `grep -r "desktop\." | awk '{print $1}' | sed 's/://g' | uniq`
do
echo y | edopkg pull $script_name
done
日志管理
dmesg
命令可以查看系统的整个启动日志
VIM
替换
语法为[addr]s/源字符串/目的字符串/[option]
, 全局替换:%s/源字符串/目的字符串/g
。
[addr]:表示检索范围,省略时表示当前行。如:1,20
:表示从第1行到20行;%
:表示整个文件,同1,$
;. ,$
:从当前行到文件尾;s
:表示替换操作 [option] :表示操作类型,g
表示全局替换;c
表示进行确认;p
表示替代结果逐行显示(Ctrl + L恢复屏幕);省略option时仅对每行第一个匹配串进行替换;如果在源字符串和目的字符串中出现特殊字符,需要用\
转义
基本的替换
:s/vivian/sky/
替换当前行第一个 vivian 为 sky :s/vivian/sky/g
替换当前行所有 vivian 为 sky :n,$s/vivian/sky/
替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky :n,$s/vivian/sky/g
替换第 n 行开始到最后一行中每一行所有 vivian 为 sky (n 为数字,若 n 为 .,表示从当前行开始到最后一行) :%s/vivian/sky/
(等同于 :g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky :%s/vivian/sky/g
(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符 :s#vivian/#sky/#
替换当前行第一个 vivian/ 为 sky/ :%s+/oradata/apras/+/user01/apras1+
(使用+ 来替换 / ): /oradata/apras/替换成/user01/apras1/
设置缩进
set autoindent
设置自动缩进 set shiftwidth=4
设置自动缩进空格数 set tabstop=4
设置一个tab等于多少个空格的宽度 set softtabstop=4
设置软制表符,软制表符表示在Insert模式的时候按退格键时退回缩进的长度,当使用expandtab 时特别有用。 set expandtab
将tab变成空格 :%retab!
将文件中现有的tab变成空格
鼠标功能
set mouse=a
启用鼠标功能 set mouse-=a
停用鼠标功能
鼠标模式:
- n:普通模式
- v:可视模式
- i:插入模式
- c:命令行模式
- h:在帮助文件里,以上所有模式
- a:以上所有模式
- r:跳过|lit-enter|提示
- A:在可视模式下自动选择
解决鼠标模式右键不能粘贴问题 用鼠标和可视模式复制/粘贴 ('mouse' 选项必须设置,见上):
- 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放左 键。这会启动可视模式并高亮选择区域。
- 按 "y" 抽出可视文本到无名寄存器里。
- 在要插入的位置上按鼠标左键。
- 按鼠标中键(滚轮)。