命令行快捷键
快捷键 | 作用 |
---|---|
tab | 命令或路径补全 |
ctrl + a | 光标回到命令行首 |
ctrl + e | 光标回到命令行尾 |
ctrl + ← | 光标向左移动一个单词 |
ctrl + → | 光标向右移动一个单词 |
ctrl + insert | 复制命令行内容 |
shift + insert | 粘贴命令行内容 |
ctrl + k | 剪切(删除)光标处到行尾的字符 |
ctrl + u | 剪切(删除)光标处到行首的字符 |
ctrl + w | 剪切(删除)光标前的一个单词 |
ctrl + y | 粘贴 ctrl + u,ctrl + k, ctrl + w 删除的文本 |
ctrl + c | 中断终端正在执行的任务或者删除整行 |
ctrl + d | 退出当前 shell 命令行 |
ctrl + r | 搜索命令行历史命令 |
ctrl + g | 从执行 ctrl + r 的搜索历史命令模式退出 |
Esc + . | 获取上一条命令的最后部分(空格分隔),常用来获取 cat、ls 后的路径 |
ctrl + l | 等同于 clear |
ctrl + s | 锁定终端,使之无法输入内容 |
ctrl + q | 解锁执行 ctrl + s 的锁定状态 |
ctrl + z | 暂停执行在终端运行的任务 |
!! | 执行上一条命令 |
!pw | 执行最近以 pw 开头的命令 |
!pw:p | 仅打印最近 pw 开头的命令,不执行 |
Linux 中命令繁多,记住所有的命令实在是太过困难,使用 man
命令或 --help
查看详细的使用说明来得更为快捷。以 ls
示例:
man ls # ls - list directory contents
ls --help
命令大部分有各自的含义,而命令选项基本上都是互相参考,具有类似的含义。
关于命令行参数 「-」和「--」有一个讨论。
查看进程内加载的环境变量
# 也可以去 cd /proc 目录下, 查看进程内存中加载的东西
ps eww -p XXXXX(进程号)
查看进程树找到服务器进程
ps auwxf
查看进程启动路径
cd /proc/xxx(进程号)
ls -all
# cwd对应的是启动路径
磁盘,文件,目录相关操作
vim操作
#normal模式下 g表示全局, x表示查找的内容, y表示替换后的内容
:%s/x/y/g
#normal模式下
0 # 光标移到行首(数字0)
$ # 光标移至行尾
shift + g # 跳到文件最后
gg # 跳到文件头
# 显示行号
:set nu
# 去除行号
:set nonu
# 检索
/xxx(检索内容) # 从头检索, 按n查找下一个
?xxx(检索内容) # 从尾部检索
打开只读文件,修改后需要保存时(不用切换用户即可保存的方式)
# 在normal模式下
:w !sudo tee %
查看磁盘, 文件目录基本信息
# 查看磁盘挂载情况
mount
# 查看磁盘分区信息
df
# 查看目录及子目录大小
du -H -h
# 查看当前目录下各个文件, 文件夹占了多少空间, 不会递归
du -sh *
压缩命令
tar czvf xxx.tar 压缩目录
zip -r xxx.zip 压缩目录
解压缩命令
tar zxvf xxx.tar
# 解压到指定文件夹
tar zxvf xxx.tar -C /xxx/yyy/
unzip xxx.zip
变更文件所属用户, 用户组
chown eagleye.eagleye xxx.log
cp, scp, mkdir
#复制
cp xxx.log
# 复制并强制覆盖同名文件
cp -f xxx.log
# 复制文件夹
cp -r xxx(源文件夹) yyy(目标文件夹)
# 远程复制
scp -P ssh端口 username@10.10.10.101:/home/username/xxx /home/xxx
# 级联创建目录
mkdir -p /xxx/yyy/zzz
# 批量创建文件夹, 会在test,main下都创建java, resources文件夹
mkdir -p src/{test,main}/{java,resources}
比较两个文件
diff -u 1.txt 2.txt
检索相关
grep
# 反向匹配, 查找不包含xxx的内容
grep -v xxx
# 排除所有空行
grep -v '^/pre>
# 返回结果 2,则说明第二行是空行
grep -n “^$” 111.txt
# 查询以abc开头的行
grep -n “^abc” 111.txt
# 同时列出该词语出现在文章的第几行
grep 'xxx' -n xxx.log
# 计算一下该字串出现的次数
grep 'xxx' -c xxx.log
# 比对的时候,不计较大小写的不同
grep 'xxx' -i xxx.log
find检索命令
# 在目录下找后缀是.mysql的文件
find /home/eagleye -name '*.mysql' -print
# 会从 /usr 目录开始往下找,找最近3天之内存取过的文件。
find /usr -atime 3 –print
# 会从 /usr 目录开始往下找,找最近5天之内修改过的文件。
find /usr -ctime 5 –print
# 会从 /doc 目录开始往下找,找jacky 的、文件名开头是 j的文件。
find /doc -user jacky -name 'j*' –print
# 会从 /doc 目录开始往下找,找寻文件名是 ja 开头或者 ma开头的文件。
find /doc \( -name 'ja*' -o- -name 'ma*' \) –print
# 会从 /doc 目录开始往下找,找到凡是文件名结尾为 bak的文件,把它删除掉。-exec 选项是执行的意思,rm 是删除命令,{ } 表示文件名,“\;”是规定的命令结尾。
find /doc -name '*bak' -exec rm {} \;