Linux常用命令速查

# vim 命令模式快捷键,区分大小写

快捷键 含义
/abc 向下查找
?abc 向上查找
n 下一个结果
yy 复制
4yy 向下复制四行
p 粘贴
u 撤销上一步操作
0 到行首
$ 到行尾
g 到文本开头
G 到文本结尾
H 到屏幕顶部
M 到屏幕中间
L 到屏幕结尾
dd 删除光标所在行
D 删除光标到行尾的文字
ctrl + v 可视块模式. 可视块中上下左右选择文本, d键进行删除,大写I进入编辑模式, 两下ESC生成多行代码

vim的swp文件可以用vim -r 将swp文件中的内容恢复到原文件中

# 重定符号

符号 含义
> 覆盖输出
>> 追加输出
< 输入, 把内容传入某个命令。 cat < text
<< cat > test.txt << EOF ; cat > test.txt负责创建文件, << EOF负责开启输入

# cat 参数

cat -n abc.go
1

tac 命令可以逆序查看

# uniq 去重复

cat test.txt | uniq -c  #统计去重复后每行出现的次数
1

# WC 统计文件

wc -l test.txt # 统计文件行数
1

# ln 软连接

# cut 分割命令

参数 含义
-c cut -c abc.txt
-d Cut -d ":" -f 2-5 abc.txt

# find

参数 含义
-ok rm {} 找到文件后执行ok后面的命令,{}代表找到的文件
-type 指定搜索的文件类型
-maxdepth 3 指定搜索的文件夹层级
-atime 2 指定访问时间范围。还有modifytime。updatetime
-size 指定文件大小

# xargs 管道命令

xargs命令是给其他命令传递参数参数的一个过滤器, 也是组合多个命令的一个工具。

他把一个数据流分割成一组数据,以方便过滤器和命令进行处理。

简单说就是吧其他命令给他的参数传递给后边的命令。

参数 含义
-d 为输入的数据指定一个分割符,默认分割符是空格
-i -i {} 用{}代替传递过来的数据 find . -name "*.txt" | xargs -i mv {} ./temp/ ;这个命令是指讲find找到的txt文件通过xargs传递给mv命令
-I -I 可以用一个变量名接受传递过来的数据 find . -name "*.txt" | xargs -I strfile mv strfile ./ ;这个命令是将find找到的文件通过strfile变量接受, 然后交给mv命令执行

# tar 打包命令

参数 含义
-z 使用gzip, 不使用gzip只会打包不会压缩
-c 打包。tar -cf test.tar /opt/abc/
-x 解包
-v 显示过程
-f 指定文件
-t 显示tar中内容

# shred 彻底删除文件,不可恢复


shred -u abc.go # 向文件中覆盖写入随机数据
1
2

# 用户管理

命令 描述
useradd --help 新建用户
passwd 修改密码
groupadd
id

不要su切换用户, 他不会切换环境变量,要使用su - 切换

# sudo 越权执行命令

普通用户要使用sudo还需要root用户通过visudo给普通用户增加sudo权限

# chown 修改文件所属

 chown uname abc.go
 chown :gname abc.go
 chown uname:gname abc.go
 chown -R #递归修改 
1
2
3
4

# umask 文件权限掩码

linux中默认新建文件的最大权限是666,新建文件夹的权限是777。

umask用来防止文件、文件夹创建时权限过大。

新文件创建时,最初的权限有文件权限掩码决定。

umask 命令查看当前权限掩码

新建文件的默认权限计算公式:

最大权限 - umask = 新文件权限
	666
 -022
	644
1
2
3
4

umask可以在/etc/profile中修改

# chattr 修改文件读写权限

chattr用于修改文件的扩展属性,比chmod的rwx权限更底层。

chattr +a /tmp/abc.txt

chattr -a /tmp/abc.txt

  • a:只能向文件中添加数据,不能删除
  • A:不允许修改最后访问时间
  • i: 文件不能被删除,重命名,修改内容。

lsattr命令查看文件的扩展属性

# 通配符

符号 字符
* 0-n个字符
匹配有且只有一个字符
[abcd] 匹配abcd中任意一个字符
[a-z] 匹配a-z之间任意一个字符,可以写a-z,A-Z,1-9
[!abcd]或【^abcd】 取反

# 特殊引号

符号 含义
单引号 引号中文字不经处理直接输出
双引号 引号中如果有特殊符号,变量表达式会被执行解析后再输出
没有引号 如果双引号中内容连续就可以省略双引号, 但如果有特殊字符,空格,变量还是需要加上引号
反引号 用于引用命令的结果。等同于$(命令),如echo date

# 输入输出

  • 标准输入符 < 或 << ;文件描述符是 0
  • 标准输出符 > 或 >> ;文件描述符是 1
  • 错误输出符 > 或 >> ;文件描述符是 2 2> 2>>

特殊重定向与合并重定向

java -jar app.jar > /dev/null 2>&1 # 把命令的标准输出和错误输出都写入到/dev/null中 
1

# 正则

正则表达式作用于每一行数据。

# 普通正则
符号 含义
^ 用在最左侧,^body: 表示以某个单词开头
$ 用在最右侧,head$. 表示以某个单词结尾
. 匹配有且只有一个字符, (或者说任意字符)
\ 转义字符
* 匹配前一个字符连续出现0次或多次
.* 组合符,匹配所有内容
^.* 组合符,匹配任意多个字符开头的内容
.*$ 组合符,匹配任意多个字符结尾的内容
[abc] 匹配集合内任意一个字符。 [a-z]
[^ abc] [abc]的取反
# 扩展正则
符号 含义
+ 前一个字符出现 1 次或多次
[./]+ 括号内字符出现 1 次或多次
前一个字符出现 0 次或 1 次
逻辑运算。 或
() 分组,括号内的表达式为一个整体 () | ()
grep -E "g(oo|la)d"
grep -E "(l..e).*\1"
a{n,m} 前一个字符出现最少n 次,最多 m 次。a {n,}. a{,m}. a{n}