命令行快捷键

快捷键作用
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

命令大部分有各自的含义,而命令选项基本上都是互相参考,具有类似的含义。

关于命令行参数 「-」和「--」有一个讨论open in new window

查看进程内加载的环境变量
# 也可以去 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 {} \;