Basic
Shortcut
Usage
- ctrl + a:移动到行首
- ctrl + b:左移一个字
- ctrl + c:杀死进程
- ctrl + d:删除光标处的字符 或者 退出(exit)或者登出(logout)
- ctrl + e:移动到行尾
- ctrl + f:右移一个字
- ctrl + g:退出历史搜索
- ctrl + h:删除光标前的字符
- ctrl + i:输入制表符(
Tab
) - ctrl + j:输入换行符(
Newline
) - ctrl + k:从光标处剪切到行尾
- ctrl + l:清除屏幕
- ctrl + m:输入确认符(
Enter
) - ctrl + n:后一个历史命令(推荐用箭头)
- ctrl + o:执行历史命令
- ctrl + p:前一个历史命令(推荐用箭头)
- ctrl + q:解冻屏幕
- ctrl + r:搜索历史命令
- ctrl + s:冻结屏幕
- ctrl + t:交换光标处和光标前的字(alt + t:交换光标处和光标前的词)
- ctrl + u:从光标前剪切到行首
- ctrl + v:粘贴(剪切板)到光标前 或者 进入原始字符输入模式
- ctrl + w:从光标前剪切到词首
- ctrl + x:在当前位置和行首之间切换
- ctrl + y:粘贴(寄存器)到光标前
- ctrl + z:切入后台(可用fg命令切回前台)
Edit
Basic
- 全选(Select All):
- 删除(Delete):backspace、delete
- 剪切(Cut):
- 复制(Copy):ctrl + shift + c
- 粘贴(Paste):ctrl + shift + v、ctrl + v
- 保存(Save):
ps:ctrl + a:移动到行首
ps:ctrl + e:移动到行尾
ps:ctrl + x:在当前位置和行首之间切换
ps:ctrl + c:杀死进程
ps:ctrl + z:切入后台(可用fg命令切回前台)
ps:ctrl + s:冻结屏幕
ps:ctrl + q:解冻屏幕
Skill
Delete
- 删除光标前的字符:ctrl + h(推荐用backspace)
- 删除光标处的字符:ctrl + d(推荐用delete)
ps:ctrl + d 还可以表示退出(exit)或者登出(logout)
ps:ctrl + l 表示清屏,而不是删除光标处的字符
Cut
- 从光标前剪切到行首:ctrl + u
- 从光标处剪切到行尾:ctrl + k
- 从光标前剪切到词首:ctrl + w
- 从光标处剪切到词尾:alt + d
ps:ctrl + u 在ubuntu中是删除整行
Paste
- 粘贴(剪切板)到光标前:ctrl + v
- 粘贴(寄存器)到光标前:ctrl + y
Transform
- 转大写(UpperCase):alt + u
- 转小写(LowerCase):alt + l
- 转标题(Capitalize):alt + c
u
:upper,l
:lower,c
:capital
Undo
撤销(Undo):
Redo
重做(Redo):
Move
Basic
- 常规性移动:mouse pointer(鼠标指针)、arrow(键盘箭头)
Skill
- 左移一个字符:arrow left、ctrl + b
- 右移一个字符:arrow right、ctrl + f
- 左移一个单词:ctrl + arrow left、alt + b
- 右移一个单词:ctrl + arrow right、alt + f
- 移动到行首:home、ctrl + a
- 移动到行尾:end、ctrl + e
b
:backward,f
:forward,a
:字母表首字母,e
:end
Select
Process
- 杀死进程:ctrl + c
- 切入后台:ctrl + z
- 切回前台:fg
Screen
- 清除屏幕:ctrl + l
- 冻结屏幕:ctrl + s
- 解冻屏幕:ctrl + q
History
- 搜索历史命令:ctrl + r
- 退出历史搜索:ctrl + g
- 执行历史命令:ctrl + o
- 前一个历史命令(推荐用箭头):ctrl + p
- 后一个历史命令(推荐用箭头):ctrl + n
Parameter
- 输入上一个命令的第一个参数:alt + 1 + .
- 输入上一个命令的第二个参数:alt + 2 + .
- 输入上一个命令的最后一个参数:alt + .
System
Cmd
方括号:表示可选参数
尖括号:表示必填参数
Help
Type
Query
History
Parameter
Find
文件查找:find locate
Search
文本搜索:grep sed awk
Shell
shell 切换
Ops
Login
ssh ssh-kengen ssh-copy-id
Logout
Exit
Env
Glob
Quote
引号的作用是将引号内的视为整体,并禁用 shell分割
和某些或者全部 shell扩展
ps:当变量的值中包含IFS(空格、制表符、换行符)时需要加双引号避免shell分割
- 单引号:单引号里面都视为普通字符
- 双引号:双引号里面除了美元符
($)
、反引号(`)、反斜线(\)
都视为普通字符
— 变量取值无引号时 —
1 | hello="hello world";for arg in $hello;do echo $arg;done |
等价于
1 | for arg in hello world;do echo $arg;done |
会输出
1 | hello |
— 变量取值有引号时 —
1 | hello="hello world";for arg in "$hello";do echo $arg;done |
等价于
1 | for arg in "hello world";do echo $arg;done |
会输出
1 | hello world |
Split
IFS(Input Field Separator):包含空格、制表符、换行符
Expand
- brace expansion(花括号扩展)
- tilde expansion(代字符号扩展)
- parameter expansion(参量扩展)
- variable expansion(变量扩展)
- command substitution(命令替换)
- arithmetic expansion(算术扩展)
- process substitution(过程替换)
- word splitting(词项分离)
- file name expansion(路径扩展)
Script
- shell脚本选项
- shell变量详解
- shell变量之美元符入门
- shell变量之美元符详解
- shell变量之$*与$@的区别
- shell变量之$_与!$的区别
- shell变量之双引号
- shell变量之花括号
- shell变量之缺省值
- shell变量之变量替换
- shell变量之模式替换
- shell变量之字符串替换
- shell变量之执行变量中的脚本
- shell数组详解
- shell函数详解
- shell算数操作入门
- shell算数操作详解
- shell比较操作入门
- shell比较操作详解
- shell逻辑操作入门
- shell逻辑操作详解
- shell循环操作入门
- shell循环操作详解
- shell各种括号的用法入门
- shell各种括号的用法详解
- shell括号之一个圆括号和两个圆括号的区别
- shell括号之一个方括号和两个方括号的区别
- shell组命令入门
- shell组命令详解
- shell输入操作详解
- shell输入折行详解
- shell输出之echo和制表符(Tab)
- shell输出之echo和换行符(Newline)
- shell输出之echo和单行输出
- shell输出之cat和多行输出
- shell输入和输出之多行结束符(EOF)入门
- shell输入和输出之多行结束符(EOF)详解
- shell获取脚本的所在目录
$*
和 $@
只在被双引号包起来的时候才会有差异(没有双引号时遇到IFS都会分割)
$*
:被双引号包起来时,视为单个整体,遇到IFS不会分割$@
:被双引号包起来时,视为多个子项,遇到IFS会分割
— 各种括号的用法 —
()
()
:命令组(在当前shell执行)或者数组(())
:算数运算(推荐)$()
:执行命令(在子shell执行)$(())
:取算数运算的结果
[]
[]
:等同于test
命令[[]]
:等同于test
命令(更好用)$[]
:算数运算(不推荐)$[[]]
:
{}
{}
:命令组(在子shell执行){{}}
:${}
:取变量的值${{}}
:{0..9}
:生成0到9的序列
Terminal
terminal window stty
terminal和shell的区别
- shell:能够解析和执行命令的程序
- terminal:支持输入和输出的终端软件,有窗口,关联了一个shell程序
File
Concept
Type
Path
Stat
文件名只是对inode的引用,删除文件名的本质是删除引用关系,删除文件名时如果inode没有其他引用时才会删除inode对应的文件
Link
Codec
- 制表符(\t):TAB ->
^I
- 回车符(\r):CR ->
^M
- 换行符(\n):LF ->
$
Command
File
Create
touch
Remove
rm
Write
cat with EOF
Read
View
more、less、cat、tac、head、tail
nl:显示文件的行号
od:可以以进制的形式显示文件
wc:统计文件的字节数、单词数、行数
Modify
vim、sed with i
Dir
Create
mkdir
Remove
rmdir
Change
cd
Ops
Local
List
ls
Tree
tree
Copy
cp
- 源头
- 文件:拷贝文件
- 目录:会根据参数
-r
决定是递归拷贝目录里的文件和目录
还是拷贝目录内容
- 目标
- 存在
- 目标是文件:会根据参数
-f
决定是覆盖还是拒绝 - 目标是目录:拷贝源头文件或者源头目录到目标目录里面
- 目标是文件:会根据参数
- 不存在
- 源头是文件:拷贝源头文件(新文件的路径为目标路径)
- 源头是目录:拷贝源头目录(新目录的路径为目标路径)
- 存在
ps:
cp
命令不受路径末尾的斜杠影响
Move
mv
- 源头
- 文件:移动文件
- 目录:会根据参数
-r
决定是递归移动目录的文件和目录
还是移动目录自身
- 目标
- 存在
- 目标是文件:会根据参数
-f
决定是覆盖还是拒绝 - 目标是目录:移动源头文件或者源头目录到目标目录里面
- 目标是文件:会根据参数
- 不存在
- 源头是文件:移动源头文件(新路径为目标路径)
- 源头是目录:移动源头目录(新路径为目标路径)
- 存在
ps:
mv
命令不受路径末尾的斜杠影响
ps:mv
命令源头和目标的上一级路径相同时相当于重命名(rename)操作
Rename
rename
Find
locate
find
find -type
find -newermt
Diff
diff -qr
diff -r 目录
diff -q 输出文件名
Remote
Scp
scp
Rsync
ps:
rsync
命令会受路径末尾的斜杠影响
rsync inotify
FTP
ftp sftp
Permission
chmod chown chattr
Text
Concept
Command
- 文本查找:grep、sed with p、awk with print
- 文本排序:sort
- 文本去重:uniq
- 文本截取:cut
- 文本替换:tr、sed、awk
grep
sed
awk
Process
Concept
Command
process thread pipe
process ps pstree
process pgrep pidof lsof
process kill killall pkill
process pstack
process strace ltrace
主要信号的产生情况(可用 kill -l
命令查看所有的信号)
- 关闭终端产生
SIGHUP
信号 ctrl + c
产生SIGINT
信号ctrl + d
产生EOF
信号kill -9
产生SIGKILL
信号(强杀信号)kill -15
产生SIGTERM
信号(终止信号)
ps 进程 线程
pipe xargs -I {} -0 -exec
Task
nohup &
fg bg jobs
nohup
:忽略挂断(hup)信号,直接关闭终端或者长时间无交互,导致连接断开时会产生挂断(hup)信号&
:忽略退出(exit)或者登出(logout)信号,使用ctrl + d
快捷键退出时,会产生退出(exit)或者登出(logout)信号
Resource
Concept
Command
- summary
- top:可以查看cpu负载、进程的cpu和mem占用
- vmstat:可以查看系统的cpu、mem、disk的使用情况
- pidstat:可以查看进程的cpu、mem、disk的使用情况
- cpu
- mpstat:可以查看系统的cpu的使用情况
- mem
- free:可以查看系统的mem的使用情况
- disk
- iostat:可以查看系统的disk的读写情况
- net
- netstat:可以查看系统的net的连接情况
ps:top可以使用更好的替代者htop或者nmon
Cpu
cpu /proc/cpuinfo
cpu mpstat top
Memory
mem /proc/meminfo
mem free top
Disk
disk df(disk free) du(disk usage) dd
disk iostat iotop
disk mount umount check
Network
net ping ifconfig ip route arp
net host hostid hostname nslookup dig etc/host etc/resolve
net netstat ifstat iftop
net telnet ssh
net tcpdump netcat(nc ncat)
Kernel
sysctl ulimit
User
Concept
Command
user pwd who whoami useradd userdel usergroup passwd su
Other
Tools
Package
yum
apt
Browser
Download
Compress
Date
1 | date -d '2007-01-01 00:00:00' +%s |
1 | date -d @1167580800 +"%Y-%m-%d %H:%M:%S" |
Time
Watch
Uname
Service
Task
crontab
Time
ntp