目录
- Linux基础学习3
- cat 显示文本
- less 分屏显示文本
- more 分页显示文件
- head 显示文件的前面的内容
- tail 显示文件的后面的内容
- cut 切割
- paste 合并
- wc 用来对文本进行统计
- sort 排序
- uniq合并相同的行
- diff 对比文件
- chown 用来修改所有者和组
- chgrp 修改文件的属组
- 权限
- 修改权限
- 设定特殊权限
- vi/vim
- find
- xargs
- grep
- 正则表达式元字符
- 压缩
Linux基础学习3
cat 显示文本
-E 显示结尾的$符
-n 对显示的每一行进行编号
-b 对非空行进行编号
-s 对连续的空行进行压缩
###cat (默认)正序显示
### tac 倒序显示
less 分屏显示文本
向下翻一屏 空格
向下翻一行 回车
q 退出
/ 文本 搜索文本
n 向下查找 N向上查找
less 是man命令的默认分页器
more 分页显示文件
默认情况下显示读取的百分比
读取完成自动退出
q 退出
-d 显示翻屏和退出的提示
head 显示文件的前面的内容
默认显示前10行
-# 显示前#行
-n # 显示前#行
-c # 显示前#个字符
tail 显示文件的后面的内容
默认显示后10行
-# 显示后#行
-n # 显示后#行
-c # 显示后#个字符,换行符也是一个字符
cut 切割
cut OPTION... [FILE]...
-c 按照字符切割
tail passwd |cut -c2-5
-d 指定切割符,默认是tab
-f # 显示第#个字段
#,#,# 显示离散的多个
#-# 表示连续的
1-5,7 可以结合使用
tail passwd |cut -d: -f1-5,7
tail passwd |cut -d: -f1-5
tail passwd |cut -d: -f1,3,5
paste 合并
默认是相同行合并到一起,默认是tab键
-d 执行间隔符
-s 将所有的行按照列来显示
paste a.txt b.txt
paste -d: a.txt b.txt
paste -s a.txt b.txt
wc 用来对文本进行统计
[root@localhost test]#wc b.txt
4 5 20 b.txt
行数 单词数 字节数 文件名
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
-m 只显示字符数
-L 显示文件中最长行的长度
sort 排序
Usage: sort [OPTION]... [FILE]...
or: sort [OPTION]... --files0-from=F
默认是按照字母排序
-r 倒序
-R 随机排序
-n 按照数字排序
-f 忽略大小写
-t 指定分隔符
-k # 指定按照第#个字段进行排序
sort -t: -k3 passwd
sort -nt: -k3 passwd
uniq合并相同的行
- 相邻
- 完全一样
-c 显示相同的行出现的次数
-d 只显示重复的行
-u 显示从没有重复过的行
cut -d" " -f4 d|sort |uniq -c
pv page
uv user
diff 对比文件
[root@localhost test]#echo "123" >> f
[root@localhost test]#diff d f
11a12
> 123
[root@localhost test]#echo "1234" >> d
[root@localhost test]#diff d f
12c12
< 1234
---
> 123
chown 用来修改所有者和组
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
or: chown [OPTION]... --reference=RFILE FILE...
chown wu c 修改属主
chown wu:wu c 修改属主和属组
chown root.root c
chown :wu c 直接属组
chown -R wu test 递归修改
chown --reference=c d
chgrp 修改文件的属组
Usage: chgrp [OPTION]... GROUP FILE...
or: chgrp [OPTION]... --reference=RFILE FILE...
权限
9位表示权限
3组
3位表示一组
\--- --- ---
- 文件权限可以读以下定义
- 属主 u
- 属组 g
- 其他 o
- 全部 a
- 每个文件的权限
- r 读
- w 写
- x 执行
- 对于文件来说
- r 可以使用文本查看工具来查看里面的内容
- w 可以修改文本的内容
- x 执行可以直接./file
- 对于目录来说
- r 可以使用ls等文件查看的命令查看
- w 可以创建文件,也可以删除
- x 可以cd进入
- 数字表示
--x
001 1
-w-
010 2
r--
100 4
rw-
110 6
rwx
111 7
r-x
101 5
-wx
011 3
修改权限
- 可以直接修改某一类用户的权限
chmod u+x c 增加
chmod u-x c 删除
chmod u=r c 直接赋值
shabang ---》 解释器
- 可以直接使用数字表示
- 可以基于某个文件来修改
设定特殊权限
chattr +i 不能删除、不能修改、不能变更
lsattr 查看属性
chattr +a 只能追加数据
vi/vim
打开文件
vim [option] .... file....
+# 直接定位到第#行
+/pattern 打开文件后,直接定位到第一个匹配到patter的地方
-b 以二进制方式打开文件
-d file1 file2 对比打开多个文件
-m file 只读方式打开文件
-e 直接以末行模式打开
模式
- 命令模式:可以光标,可以粘贴、复制文本,默认
- 插入模式或者编辑模式:可以修改文本
- 末行模式(扩展命令模式):保存、退出等等
- esc 退出当前的模式
模式之间切换
- 命令模式- 插入模式
- i 光标所在处插入
- I 在当前光标所在的行的行首插入
- a 光标所在位置的后面插入
- A 在当前光标所在的行尾插入
- o 在当前光标所在的行的下一行(新开)插入
- O 在当前光标所在的行的上一行(新开一行)插入
- 插入模式- 命令模式
- esc
- 命令模式 -- 末行模式
- :
- 末行模式 -- 命令模式
- esc esc
- esc enter
关闭文件
- 末行模式
- :w 保存
- :q 退出
- :wq 保存并退出
- :q! 强制退出
- :wq!强制保存退出
- :x 保存并退出
- 命令模式
- ZZ 保存退出
- ZQ 不保存退出
扩展命令行模式
- 按":" 来进入
- w 写入
- q 退出
- wq 保存并退出
- q! 强制退出
- x 保存并退出
- r file 读入文件
- w file 另存为
- !command 直接执行命令
- r!command 直接把命令的结果写到文件中
命令模式跳转
- 字符之间跳转
- l 向右
- h 向左
- j 向下
- k 向上
- 单词间跳转
- w 下一次的单词的词首
- e 当前词的词尾或者下一个单词的词尾
- b 当前词的词首或者上一词的词首
- \# command 直接跳转#个单词
- 页面间跳转
- H 页首
- L 页尾
- M 页中
- zt 将光标所在行移动到屏幕的顶端
- zb 将光标所在行移动到屏幕的底部
- zz 将光标所在行移动到屏幕的中间
- 行首行尾之间跳转
- ^ 跳转到当前光标所在行的第一个非空字符
- 0(数字) 跳转到行首
- $ 跳转到行尾
- 行间移动
- #G 跳转到第#行
- 在命令扩展模式下,直接:# 跳转到对应的行
- G 直接到最后一行
- gg 跳转到第一行
- 1G 跳转到第一行
- 段落之间跳转(空行)
- { 上一段
- } 下一段
- 翻屏
- ctrl+f 向文件尾部翻一屏
- ctrl+b 向文件首部翻一屏
- ctrl+d 向文件尾部翻半屏
- ctrl+u 向文件首部翻半屏
命令模式编辑
- 字符编辑
- x 删除光标所在处的字符
- #x 删除#个字符
- xp 将光标所在处的字符和后面的字符互换位置
- ~ 将光标所在的位置大小写互换
- J 删除当前行的换行符
- 替换
- r 替换当前光标所在处的字符
- R 进入替换模式
- 删除
- d 删除,需要跟字符跳转结合
- d$ 删除到行尾,删除当前位置
- d0 删除到行首,当前位置不删除
- d^ 删除到非空字符
- dw 删除一个单词
- de 向后删除一个单词
- db 向前删除一个单词
- dd 删除正行
- \# dd 删除#行
- dG 删除到结尾
- dgg 删除到开头
- D 相当于d$
- 复制
- y,也可以跟字符跳转结合
- y$
- y0
- y^
- yw
- ye
- yb
- yy 一正行
- #yy 复制#行
- yG 复制到结尾
- ygg 复制到开头
- Y 复制整行
- 粘贴
- p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面
- P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面
- 改变,删除以后并将模式切换成插入模式
- c 可以跟光标的跳转做结合
- c$
- c0
- c^
- cw
- ce
- cb
- #command
- cc 删除正行并插入
- C 相当于c$
- #[i|I|a|A|o|O]string esc 将string粘贴#次
- 搜索
- /pattern 从当前光标往下搜索
- ?pattern 从当前光标往上搜索
- n 同命令相同的方向
- N 同命令相反的方向
- 撤销
- u 撤销最近的修改
- \# u 撤销最近的#次修改
- ctrl +r 撤销之前的撤销动作
- \. 重复最后一次操作
- #. 最后一次操作重复执行#次
命令扩展模式
地址定界
:start,end
\# 具体到第#行
#,# 第#行到第#行
\#,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3
. 表示当前光标所在的行
$ 表示最后一行
$-1 表示倒数第二行
% 表示全文
/pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方
#,/pat/ 从第#行开始,到第一次被pat匹配到的地方
/pat/,$ 从第一次被pat匹配到的到结尾
可以使用的命令
- d
- y
- w file 重新另存为文件
- r file 将文件的内容写到匹配到的下一行
查找并替换
- 要使用地址定界来进行查找
- s 在扩展命令模式下使用为替换
- 格式: s/要查找的内容/要替换的内容/装饰器
- 要查找的内容可以使用正则
- 替换的内容不能为正则
- 可以为分组:%s/\(nfs.*\)/#\1/
- \1表示第一个分组内的内容
- \2
- \3
- & 可以代表前面匹配到的内容
- 装饰器
- i 忽略大小写
- g 表示全部替换
- gc 每一次替换之前都要询问是否替换
- 分隔符还可以使用
- @
- #
可视化
- v 面向字符
- V 面向行的
- ctrl +v 面向块
- 可以结合所有的跳转键进行结合
- 对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等
打开多个文件
vim file1 file2 file3
:next 下一个
:prev 上一个
:first 第一个
:last 最后一个
:qall 退出全部
:wall 保存全部
:wqall 保存并退出全部
:xall 保存并退出全部
使用多个窗口
vim -o 水平分隔
vim -O 垂直分隔
切换ctrl+w 加上上下左右箭头
单文件切割
ctrl+w,s 水平切割
ctrl+w,v 垂直切割
ctrl+w,q 取消相邻的窗口
ctrl+w,o 取消全部窗口
vim工作特性
配置文件
- 全局有效:/etc/vimrc
- 对当前用户有效: ~/.vimrc
- 行号:set nu 取消 set nonu
- 忽略大小写(搜索) set ic 取消set noic
- 自动缩进(同上一行) set ai 取消set noai
- 设置高亮显示(搜索到的内容) set hls 取消set nohls
- 语法高亮 syntax on 取消 syntax off
- 文件格式
- windows格式 set fileformat=dos
- unix set fileformat=unix
- 添加标识线: set cul 取消标识线 set nocul
- 获取帮助: set all
- 获取帮助信息:
- :help
- :help topic
- vimtutor
find
是linux里面的一个实时查找工具,通过制定路径完成文件查找
find [options] ..... [查找路径] [查找条件] [处理动作]
查找路径:查找的位置,默认是当前文件夹
查找条件:制定查找的标准,文件名、大小、类型、日期等等
处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上
查找条件
- 根据文件名查找
- -name 指定名称,可以使用正则
- -iname 忽略大小写
- -links n 引用次数为n的文件
- -regex 后面跟完整路径,而不是文件名, 必须整个路径完全匹配
- 制定搜索的层级
- -maxdepth level 最大的搜索深度,指定的目录为第1层
- -mindepth level 最小的搜索深度,包括level层
- 根据属主、属组来查找
- -user username 查找属主为username的文件
- -group groupname 查找属组为groupname的文件
- -uid id 查找属主为id的文件
- -gid id 查找属组为id的文件
- -nouser 查找没有属主的文件
- -nogroup 查找没有属组的文件
- 根据文件类型 -type
- d 目录
- f 文件
- l 符号链接
- s 套接字
- b 块设备
- c 字符设备
- p 管道文件
- 空文件或者空目录
- -empty
- 条件
- 与 -a
- 或 -o
- 非 -not
- 摩根定律
- 非(A或者B) 非A 且非B
- 非(A且B)非A或非B
- 排除目录
- -path
[root@localhost test]#find /etc -name *_config
/etc/ssh/ssh_config
/etc/ssh/sshd_config
[root@localhost test]#find /etc -path /etc/ssh -name *_config
- 按照大小来查找
- -size # (#-1,#] 不包括#-1,包括#
- -size -# [0,#-1] 包括#-1
- -size +# (#,......)
- 按照时间来查找
- -atime # [#,#+1)
- -atime -# (0,#)
- -atime +# [#+1,....]
- 查找7天以后的文件 find -atime +7
- -mtime
- -ctime
- 以分钟为单位
- -amin
- -mmin
- -cmin
处理动作
- -print 默认的处理动作,显示在屏幕上
- -ls 类似于ls -l 显示长格式
- -delete 删除查找到的文件
- -fls file 将查找的结果以长格式保存到文件中
- -ok command {} \; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否要执行
- -exec command {} \; 对查到的每一个文件执行command命令,不需要确认,一次性交给后面命令处理
xargs
- 有的命令不支持管道
- 命令参数过长
- xargs 将管道前面的内容一条一条的交给后面命令处理
- 一般会跟find使用
grep
- Linux 三客 grep awk sed
- grep [option] "模式" file
- option
--color=auto 对匹配到的行添加颜色
-v 取反
-i 不区分大小写
-n 查找的内容增加行号
-c 打印匹配到的行数
-o 只显示匹配到的文字
-q 静默模式
-A # after 向下显示#行
-B # before 向上显示#行
—C # context 上下分别显示#行
-e 或者 grep -e 'user' -e 'root' passwd
-E 扩展正则表达式
-F 不使用正则表达式
-r 递归
-w 匹配整个单词
正则表达式元字符
字符匹配
- . 任意单个字符
- [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]
- [^] 取反
- [:upper:] 大写字母
- [:lower:] 小写字母
- [:alnum:] 字母和数字
- [:alpha:] 大小写字母
- [:digit:] 数字
- [:black:] 空白
- [:punct:] 标点符号
匹配次数
- * 表示任意次数
- .* 任意字符任意次数
- ? 表示0或者1次
- \+ 至少一次
- \{n\} 表示n次
- \{m,n\} 最少m次,最多n次
- \{n,\} 至少n次
- \{,n\} 至多n次
位置锚定
- ^ 开头
- $结尾
- ^$ 空行
grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显示不以#开头并且不是空行
分组
grep "\(c\|C\)at" a
- 向后引用
- \1 前面第一个括号出现的内容匹配完成之后再后面在出现一次
- \2
扩展正则表达式
- 与正则表达式的区别是不需要转义
压缩
gzip
- 压缩文件
gzip [option]... file
-c 将压缩结果输出到屏幕,保留原来的文件
gzip -c passwd > passwd.gz
-1-9 指定压缩比,默认9
-d 解压
zcat 不解压的情况下查看压缩比内的内容
gunzip 解压
bzip2
- bzip [option] file
直接压缩
bunzip2 解压
-k 保留原来的文件
-d 解压
-1-9 指定压缩比
bzcat 不解压的情况下查看压缩包的内容
xz
- xz [option] file
unxz 解压
-k 保留原来的文件
-d 解压
-1-9 指定压缩比
xzcat 不解压直接查看
zip
zip [option] zipfile 要压缩的文件
zip -r network.zip /etc/sysconfig/network-scripts
unzip network.zip
tar
归档工具
归档
tar cpvf etc.tar /etc
c 创建
v 显示过程
f 指定归档文件
p 把原来的属性也带过来
tar -r -f etc.tar /etc 追加
tar -t -f etc.tar 查看归档文件内的内容
tar xf etc.tar 解压文件
tar xf etc.tar -C
-z 使用gzip压缩
-j 使用bzip2压缩
-J 使用xz压缩
--exclude 排除文件
split
split -b 指定大小 文件(只能为文件) 切割以后的名字
-d 指定后缀为数字
-a 指定后缀几位
cat 切割后的文件 > 新文件
作 者: 郭楷丰
出 处: https://www.cnblogs.com/guokaifeng/
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【推荐】一下。您的鼓励是博主的最大动力!
自 勉:生活,需要追求;梦想,需要坚持;生命,需要珍惜;但人生的路上,更需要坚强。
带着感恩的心启程,学会爱,爱父母,爱自己,爱朋友,爱他人。