欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux基础学习3

程序员文章站 2022-10-26 08:10:12
Linux基础学习3 [TOC] cat 显示文本 less 分屏显示文本 more 分页显示文件 head 显示文件的前面的内容 tail 显示文件的后面的内容 cut 切割 paste 合并 wc 用来对文本进行统计 sort 排序 uniq合并相同的行 相邻 完全一样 diff 对比文件 ch ......

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 三