当前位置: 首页 > article >正文

【Linux】-学习笔记01

目录

一、Linux基础

1.计算机的组成

2.操作系统功能概述

1.功能

2.操作系统内核的功能

二、简单Linux操作

1.Linux组成

2.shell命令提示符

3.简单的命令操作

1.查看当前linux的发行版信息

2.查看内核版本 

3.查看shell的类型

4.查看当前默认的shell 

 5.查看网卡信息以及获取ip地址

6.切换目录

7.查看当前的工作目录--pwd

8.浏览目录内容--ls 

9.修改密码

三、Linux中执行命令

1.命令格式

2.查看命令帮助

1.--help

2.man

​编辑

3.info page

3.date命令

4.timedatectl命令

5.查看目录下的文件-ls

四、linux文件类型和根目录结构

1.查看文件类型

2.目录结构

3.路径以及工作目录

五、从命令行管理文件

1.命名规则:

2.硬连接

3.软连接

4.软硬连接的区别

5.创建目录(make directory)

1.格式

2.参数 

3.due

6.创建普通文件

1.touch

2.tree命令

7.创建大容量文件

8.删除文件

9.数据流和重定向

1.数据流

2.重定向操作符

 3.输出重定向案例

10.echo

11.tee命令读取数据输出到文件

1.作用

2.格式

3.参数

12.管道符:|

1.作用

2.格式

3.用法

4.编写命令计算字符串长度

13.vi/vim文本编辑器

1.简介

​编辑

2.概念

3.光标跳转按键

4.复制、粘贴、删除

5.编辑模式的快捷键

6.末行模式的快捷键

7.保存并退出

8.其他操作

9.vim文件的配置

六、文件内容显示

1.浏览普通文件

1.cat命令

2.tac命令

3.more 命令

4.less命令

5.head命令

6.tail命令

2.文件信息查看

1.file 命令

3.stat 命令

3.文件内容过滤显示—grep

1.作用:

2.格式

3./etc/passwd文件含义

4.切割显示-cut

1.作用

2.格式

3.举例

5.排序显示-sort

1.作用

2.格式

 3.参数

4.举例

6.去重显示-uniq

1.作用

2.格式

3.举例

7.文件中字符替换显示-tr

1.作用

2.格式

3.参数

4.举例


一、Linux基础

1.计算机的组成

控制器:是整个计算机的中枢神经,根据程序要求进行控制,协调计算机各部分工作及内存与外设
的访问等。
运算器:功能是对数据进行各种算术运算和逻辑运算。
存储器:功能是存储程序、数据和各种信号、命令等信息。
输入设备:输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息
输入到计算机。常见的输入设备有键盘、鼠标等。
输出设备:它把计算机计算后的信息输出出来。常用的输出设备有显示终端、打印机、绘图仪等。

2.操作系统功能概述

1.功能

        操作系统的主要工作是由操作系统内核实现的,操作系统内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用的接口(应用编程接口API,由操作系统实现提供的所有系统调用所构成的集合,是应用程序和系统之间的接口)呈现给用户。 

2.操作系统内核的功能

1.系统调用接口:程序员通过该接口与内核进行通信
2.进程管理:计算机可能同时有很多的工作在等待CPU运算处理,内核这个时候必须要能够控制这些工作,让CPU的资源做有效的分配才行。
3.内存管理:控制整个系统的内存管理,系统所有的程序代码与数据都必须要先存放在内核当中。通常内核会提供虚拟内存的功能,当内存不足时可以提供内存交换的功能。
4.文件系统管理 :例如数据的输入和输出等的工作,还有不同文件格式的支持等。
5.设备驱动:硬件的管理是内核的主要工作之一,设备的驱动程序就是内核管理着硬件的代码,设备的驱动程序可以使硬件准备好工作,时刻等待着程序的调用。好在目前都有所谓的“可加载模块”功能,可以将驱动程序编辑成模块,就不需要重新编译内核。

二、简单Linux操作

1.Linux组成

1.Linux内核:内核是系统的核心,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。
2.文件系统: 文件存放在磁盘等存储设备上的组织方法。Linux能支持多种目前浒的文件系统,如
ext4、FAT、VFAT、ISO9660、NFS、SMB等。
3.Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
4.应用程序:包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。
5.Linux的操作界面常称为Shell,Shell是操作系统提供给用户使用的界面(图形、字符),它提供了用户与内核进行交互操作的一种接口。当用户发出指令(命令或鼠标操作),先将这些指令发送给
Shell,由Shell将用户的指令翻译后传送给内核,再由内核来控制硬件的工作。然后内核将硬件的工作情况发送给Shell,并由Shell返回硬件的工作信息和情况。
6.Shell的分类:
        图形界面的Shell :KDE、GNOME
        字符界面的Shell:bash等

2.shell命令提示符

[root@localhost ~]#
root :当前登录的账户名,root为管理员
localhost:主机名,默认为localhost
~ :该位置表示当前工作目录,~表示/root(普通账户 ~ :/home/普通账户名)
提示符标志:#或$ ,表示账户身份,#表示root,$表示普通账户

3.简单的命令操作

1.查看当前linux的发行版信息

2.查看内核版本 

5 - 内核版本.
14 - 主修订版本.
0-427 - 次要修订版本.
13.1 - 补丁版本.
x86_64 - 适用平台

3.查看shell的类型

4.查看当前默认的shell 

 5.查看网卡信息以及获取ip地址

6.切换目录

绝对路径(以/开始的路径)
相对路径(以当前工作目录开始的路径)

[root@server ~]# cd /
[root@server /]# cd /root
[root@server ~]# cd /home
[root@server home]# cd ~
[root@server ~]# cd /etc
[root@server etc]# cd ..
[root@server /]# cd .

7.查看当前的工作目录--pwd

[root@server ~]# pwd
[root@server ~]# su - fox
[centos@server ~]$ pwd
/home/centos
# 注意:windows和linux系统的目录路径表示的不同

8.浏览目录内容--ls 

查看根目录下的内容 

9.修改密码

[root@server /]# passwd
更改用户 root 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server /]# passwd fox
更改用户 fox 的密码 。
新的密码:
无效的密码: 密码未通过字典检查 - 太简单或太有规律
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server /]# passwd -d fox # 清除fox账户密码
清除用户的密码 fox。
passwd: 操作成功

三、Linux中执行命令

1.命令格式

内置命令:由shell程序自带的命令
外部命令:有独立的可执行程序文件,文件名即命令名

主命令 参数 操作对象
# 注意:
下面是对于命令的语法的一些符号的说明:
[] :表示的是可选
...: 表示的可以存在多个参数
|:表示是可选的
<>:必填
{}:表示作为一个整体存在的

注意:
终止当前的命令:按【Ctrl+C】键可中断正在执行的命令
两种补全:
补全命令:输入命令关键字的前几个字符后,按Tab键,可实现命令自动补全
补全文件名和目录名:输入文件的前几个字符后,按tab键可自动补全

2.查看命令帮助

1.--help

2.man

相关的操作解释 

按键作用
空格键PaGe down 向下翻一页
PaGe upb 向上翻一页
home直接前往首页
end直接前往尾页
/从上至下搜索某个关键词,如“/linux”
?从下至上搜索某个关键词,如“?linux”
n定位到下一个搜索到的关键词
N定位到上一个搜索到的关键词
q退出帮助文档

man手册

区段1:用户指令,查看命令的帮助
区段2:系统调用,查看可被内核调用的函数的帮助
区段3:程序库调用,查看函数和函数库的帮助
区段4:设备,查看特殊文件的帮助(主要是/dev目录下的文件)
区段5:文件格式,查看配置文件的帮助
区段6:游戏,查看游戏的帮助
区段7:杂项,惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
区段8:系统指令,查看系统管理员可用的命令的帮助
区段9:内核内部指令,查看内核相关文件的帮助
使用如下命令可以知道某个命令在man的哪个区段有相关帮助文档:
[root@server ~]# whatis man
man (7) - macros to format man pages
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
[root@server ~]# man -f man
man (7) - macros to format man pages
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
[root@server ~]# man 1 man   
[root@server ~]# man 7 man

3.info page

info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。
但是与man page不同的是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页
面来撰写, 并且在各个页面中还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。
不过你要查询的目标数据的说明文件必须要以info的格式来写成才能够使用info的特殊功能(例如超
链接)。 而这个支持info命令的文件默认是放置在/usr/share/info/这个目录当中的。

3.date命令

格式

date -参数 +显示日期时间格式参数

相关操作 

参数作用
%Y完整年份(例如:2020)
%m月份(1~12)
%d本月中的第几天
%H小时(00~23)
%M分钟(00~59)
%j今年中的第几天
%X相当于%H:%M:%S

4.timedatectl命令

timedatectl命令用于设置系统的时间

格式:

timedatectl [OPTIONS...] COMMAND ...
参数作用
status显示状态信息
list-timezones显示状态信息
set-timezone列出已知时区
set-time设置系统时间

查看日历

5.查看目录下的文件-ls

格式:

ls -参数 操作对象
参数功能
-l以长格形式显示文件和目录的详细信息,ls命令默认只显示名称的短格式。
-d显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息。
-c按文件的修改时间排序后,予以显示。
-h以更人性化的方式显示出目录或文件的大小,默认的大小单位为字节,使用-h选项后将显示为
K、M等单位。此选项需要和-l选项结合使用才能体现出结果。
-R以递归的方式显示指定目录及其子目录中的所有内容。
-a显示所有子目录和文件的信息,包括名称以“.”开头的隐藏目录和隐藏文件。
-A与-a选项的作用类似,但不显示表示当前目录的“.”和表示父目录的“..”。
-i显示文件索引节点号(inode)。一个索引节点代表一个文件,在linux中保存在磁盘分区中
的文件都给它分配一个编号,称为索引节点号inode。
-s按照文件大小排序

四、linux文件类型和根目录结构

1.查看文件类型

[root@localhost ~]# ll /usr/bin/ls
-rwxr-xr-x. 1 root root 143368 Apr 27 2020 /usr/bin/ls
[root@localhost ~]# ll -d /home
drwxr-xr-x. 3 root root 20 Apr 16 14:46 /home
[root@localhost ~]# ll /dev/tty
crw-rw-rw-. 1 root tty 5, 0 Jun 9 11:48 /dev/tty
[root@localhost ~]# ll /dev/sr0
brw-rw----. 1 root cdrom 11, 0 Jun 9 11:48 /dev/sr0
[root@localhost ~]# ll /dev/nvme0n1
brw-rw----. 1 root disk 259, 0 Jun 9 11:48 /dev/nvme0n1
[root@localhost ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5 Aug 5 2020 /usr/bin/yum -> dnf-3

2.目录结构

3.路径以及工作目录

路径
用“路径”来表示某个文件(或目录)在目录结构中所处的位置。顾名思义,路径是指从树型目录中的某个目录层次到达某一文件或子目录的一条线路,路径由以“/”为分隔符的多个目录名构成。
路径可分为:
- 绝对路径:是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式
-相对路径:是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。、

五、从命令行管理文件

1.命名规则:

1.不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的

2.文件名不能超过255个字符

3.区分大小写file File FILE fIle root Root ROOT rOOt ROOT

4.目录也是文件,在同一路径下,两个不同类型文件不能同名

2.硬连接

 建立硬连接

硬连接建立后,删除源文件后数据依然可以访问,只有硬连接为0时,数据无法访问。

[root@server ~]# echo "hello" > k1.txt
[root@server ~]# cat k1.txt
hello
[root@server ~]# stat k1.txt
文件:k1.txt
大小:6 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:16802639 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
[root@server ~]# ln k1.txt k2.txt # 建立硬连接
[root@server ~]# cat k2.txt
hello
[root@server ~]# stat k1.txt
文件:k1.txt
大小:6 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:16802639 硬链接:2 # 硬连接数变更
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
[root@server ~]# rm -f k1.txt # 删除文件,相当于删除一个硬连接
[root@server ~]# cat k2.txt
hello

3.软连接

软连接是一种符号连接,类似于windows的“快捷方式”,仅包含所连接的路径名

[root@server ~]# echo "china" > h1.txt # 新建文件
[root@server ~]# ln -s h1.txt h2.txt # 创建软连接,指向h2.txt
[root@server ~]# ll h2.txt
lrwxrwxrwx. 1 root root 6 12月 13 18:52 h2.txt -> h1.txt # 查看连接关系
[root@server ~]# stat h1.txt
文件:h1.txt
大小:6 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:2777696 硬链接:1 # 硬连接还是1,没有变化
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0

软连接只是一种指向关系,删除源文件则数据不可访问

[root@server ~]# echo "china" > d1.txt
[root@server ~]# ln -s d1.txt d2.txt
[root@server ~]# ll d2.txt
lrwxrwxrwx. 1 root root 6 12月 13 19:00 d2.txt -> d1.txt
[root@server ~]# cat d2.txt
china
[root@server ~]# rm -f d1.txt
[root@server ~]# cat d2.txt # 连接失效
cat: d2.txt: 没有那个文件或目录

4.软硬连接的区别

1.软连接的指向关系可以查看,硬连接不可以查看
2.连接数不同,软连接数不会增加
3.文件大小不同,硬连接文件大小与源文件一样
4.软连接不受任何文件系统的影响,任何用户都可以创建指向目录的软连接

5.创建目录(make directory)

1.格式

mkdir [-p] [/路径/]目录名

2.参数 

-p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
-v 显示创建目录的详细过程

[root@server ~]# mkdir t1
[root@server ~]# mkdir t2 t3 t4 # 批量一次性新建
[root@server ~]# mkdir -p n1/n2/n3 # 新建递归目录

3.due

作用:统计目录及文件的空间占用情况,查看某个目录中的各级子目录所占用的磁盘空间数。
命令格式: du [参数] [目录名]
参数:

选项功能
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。
-s只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。
-h以K,M,G为单位显示磁盘使用情况,以提高信息的可读性。

6.创建普通文件

1.touch

1.如果文件已存在,更新文件的三个时间, stat 可以查看文件的详细信息

 2.如果文件不存在,则表示创建文件

[root@server ~]# touch p1.txt
[root@server ~]# touch p2.txt p3.txt p4.txt
[root@server ~]# touch {p5,p6,p7}.txt
[root@server ~]# touch {1,2}{3,4}
[root@server ~]# touch abc{1..100}

2.tree命令

格式:

tree -参数 路径

参数:

-a : 所有文件包含显示隐藏文件
-f : 列出文件的完整路径内容
-d :只显示目录
-L : 设置显示最大深度,如:tree -f -L 2

7.创建大容量文件

格式:

dd if=来源 of=新文件名 count=数据块个数 bs=块容量

if=/dev/zero zero空数据设备文件,可以向其它文件中填充无数个数据0
of=新文件名,一般给出存储路径
count=:新文件由几个数据块组成
bs=:一个数据块容量 

例:制作100MB空数据文件 

[root@server ~]# dd if=/dev/zero of=/root/z1 count=2 bs=50M

制作2G文件

[root@server ~]# dd if=/dev/zero of=/z2 count=1 bs=2GB

制作光盘镜像

[root@server ~]# dd if=/dev/sr0 of=/RHEL8.5.iso

8.删除文件

格式:

rm -参数 文件名

删除文件: rm 文件名
删除目录:rm -r 目录名
强制删除不确认:rm -f 文件名

9.数据流和重定向

1.数据流

标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入
标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏
幕上
标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令
执行失败后,所回传的错误信息会输出到屏幕上
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将
这两条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,
而分别传送所用的特殊字符如下所示:
标准输入(stdin):代码为0
标准输出(stdout):代码为1
标准错误输出(stderr):代码为2

2.重定向操作符

概念:
重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。
重定向操作符本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。
符号:
输出重定向操作符: >    >>
输入重定向操作符: <    <<

用法:

命令 >文件 或 命令 1>文件 : 将命令执行后的结果不在默认的屏幕上显示,而是以覆盖的方式写入到指定
文件中,若指定的文件不存在,则自动创建该文件
命令 2>文件 : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件
中,若指定的文件不存在,则自动创建该文件
命令 2>/dev/null : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件(黑
洞)中,即将输出的错误信息丢弃掉
命令 &>文件 命令 >&文件 : 将命令执行后的正确输出信息和错误信息不在默认的屏幕上显示,而是以覆
盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件
命令 >>文件 : 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定
的文件不存在,则自动创建该文件
命令 <文件 : 使命令从指定的文件中读取数据作为输入
命令 <<结束标识字符串 : 在命令行读取数据作为输入,直到遇到指定的结束标识字符串

 3.输出重定向案例

1.输出重定向(覆盖)

[root@server ~]# date 1> date.txt

2.输出重定向(追加)

[root@server ~]# date >> date.txt

 3.错误输出重定向

[root@server ~]# ls /home/ /aaa >list.txt
ls: 无法访问/aaa: 没有那个文件或目录
[root@server ~]# ls /home/ /aaa >list.txt 2>error.txt # 重定向到不同的位置

 4.正确和错误都输入到相同位置

[root@server ~]# ls /home/ /aaa &>list.txt # 混合输出

5.重定向到空设备/dev/null

[root@server ~]# ls /home/ /aaa >list.txt 2>/dev/null # 将产生的输出丢掉

10.echo

向终端设备上输出字符串或变量提取后的值

echo "字符串"
echo "$量"

例: 

[root@server ~]# echo "hello world"
[root@server ~]# str1="hello world"
[root@server ~]# echo "$str1"
hello world
[root@server ~]# num=1024
[root@server ~]# echo "$num"
1024
[root@server ~]# echo $SHELL
/bin/bash

 将标准输出重定向到文件

11.tee命令读取数据输出到文件

1.作用

读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想
在屏幕上看到内容)
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件。

2.格式

tee 参数 文件名

3.参数

-a或--append,附加到现有文件的后面,而非覆盖它
-i或--ignore-interrupts  忽略中断信号
--help  在线帮助

例:按ctrl+d可以结束输入

可以通过tee -a 来追加到文件中,而非覆盖

12.管道符:|

1.作用

管道符号,是unix一个很强大的功能,符号为一条竖线:"|",用于两个命令或者多个命令相连接,
将管道符左边命令的输出作为管道符右边命令的输入。

2.格式

命令A | 命令2 | 命令3 ……

3.用法

例1:

例2: 

例3:

4.编写命令计算字符串长度

# 法1:
[root@server ~]# time for i in {1..10000};do str1=`seq -s "nihao" 100`;echo
${#str1} &> /dev/null;done
real 0m21.439s
user 0m2.649s
sys 0m17.714s
# time计算耗时
# for 循环10000次
# seq生成nihao1、nihao2……nihao100
# 法2:通过管道符调用awk实现
[root@server ~]# time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo
"${str1}" | awk '{print length($0)}' &> /dev/null;done
real 0m55.732s
user 0m13.067s
sys 0m43.360s

结论:方法1所耗时最少,效率最高,方法2中结合了管道符的使用,耗时最多,效率最低,由于
linux中的shell是由C语言开发的,因此它底层命令效率是最高的,而方法1中用的是linux内置命
令,内置的操作;方法2通过管道符,这涉及到类似二次加工,效率肯定也就低了

13.vi/vim文本编辑器

1.简介

在Linux系统中一切都是文件,配置一个服务就是使用文本编辑器修改配置文件的参数
所有的Unix 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在;
很多个别软件的编辑接口都会主动调用 vi,如:crontab, visudo 等指令
Vim的发布最早可以追溯到1991年,英文全称为:“Vi IMproved”,也就是对vi编辑器的提升版本,
最大的特点是以字体颜色辨别语法的正确性,方便程序设计,编辑速度快

2.概念

1.命令模式:也成为了阅读模式,可以控制光标移动,对文本进行查看、删除、复制粘贴等操作(默
认)
2.编辑模式:也称为插入模式,可以对文本进行编辑
3.末行模式:保存、退出、设置编辑环境
4.进入的顺序
        (1)刚打开文件后进入的为命令模式(默认)

        (2)命令模式点击“i”键进入输入模式,点击Esc返回命令模式

        (3)命令模式中点击冒号进入末行模式,点击Esc返回

        (4)输入模式与末行模式不可以相互进入

3.光标跳转按键

功能按键
光标按单个字符移动↑、↓、←、→
光标按照单词向后跳转w
光标按照单词向前跳转b
光标跳转至行首^
光标跳转至行尾$
文档首行第一个字符gg
文档最后一行第一个字符G
跳转到指定行行号gg 或者 行号G

4.复制、粘贴、删除

功能按键
删除光标所在行dd
删除从光标处开始的n行数字dd
删除光标前至行首字符d^
删除光标及之后的所有字符d$
复制光标所在行yy
复制从光标处开始的n行数字yy
将缓冲区的内容粘贴到光标所在行的下一行p(小写)
将缓冲区的内容粘贴到光标所在行的上一行P(大写)
撤销操作u

5.编辑模式的快捷键

功能按键
在光标前插入i
在光标所在行行首第一个非空字符前插入I(大写字母i)
在光标后插入a
在光标所在行末尾插入A
在光标所在行上一行插入O(大写字母)
在光标所在行下一行插入o(小写字母)
删除光标所在字符并进入插入模式s(小写字母)
删除当前行并进入插入模式S(大写字母)

6.末行模式的快捷键

按: 或者/ 可从命令模式切换到末行模式
按esc键可从末行模式切换到命令模式。

功能按键
从上而下查找字符串“word”(可按n键定位到下一个匹配的的字符串)/word
将当前行中查找到的第一个字符“old”替换为“new”:s /old/new
将当前行中查找到的所有字符“old”替换为“new”:s /old/new/g
在行号“n1,n2”范围内替换所有的字符串“old”为“new”:n1,n2 s/old/new/g
将整个文件内的字符串“old”替换为“new”:% s/old/new/g

7.保存并退出

功能按键
退出vi/vim编辑器,未对文件做任何编辑操作才可退出:q
不保存文档内容,强制退出vi/vim编辑器:q!
保存文件:w
将文件另存为/dir/file:w /dir/file
保存文件内容并退出vi/vim编辑器:wq 或者 ZZ
强制保存并退出:wq!

8.其他操作

功能按键
在当前文件中读入其他文件内容:r /dir/file
查找含有"word"的行并删除:g/word/d
显示行号:set nu
关闭行号显示:set nonu
删除n1-n2行内容:n1,n2 d
复制n1-n2行到第n行后面:n1,n2 co n

9.vim文件的配置

[root@server ~]# vim /etc/vimrc 或者 vim ~/.vimrc
set hlsearch "高亮度反白
set backspace=2 "可随时用退格键删除
set autoindent "自动缩排
set tabstop=4 "缩进
set softtabstop=4 softtabstop是“逢4空格进1制表符”,前提是你tabstop=4
set shiftwidth=4 自动缩进空格长度
set mouse=a "使用鼠标
set selection=exclusive
set selectmode=mouse,key
set ruler "可显示最后一行的状态
set showmode "左下角那一行的状态
set nu "可以在每一行的最前面显示行号啦!
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示

六、文件内容显示

1.浏览普通文件

1.cat命令

作用:

查看文件内容,适合数据量较少

格式:

cat -参数 文件名

参数:

-n:显示行号,加上
-b:文件中所有非空行增加行号,编号从1开始

示例:

[root@server ~]# cat /etc/passwd
[root@server ~]# cat -n /etc/passwd

将显示结果重定向输出到另一个文件中

合并文件:

[root@node1 ~]# touch t1.txt t2.txt t3.txt
[root@node1 ~]# echo "hello" > t1.txt
[root@node1 ~]# echo "world" > t2.txt
[root@node1 ~]# cat t1.txt t2.txt > t3.txt
[root@node1 ~]# cat t3.txt
hello
world

2.tac命令

作用:

        倒叙访问文件内容
格式:

        tac 参数 文件名
例如:

         tac /etc/passwd

3.more 命令

作用:

        翻页查看文件内容,适合内容较多的文件查看
格式:

        more 文件名
注意:使用回车则一行一行查看,使用空格则整页查看,点击q键退出查看

[root@server ~]# more -sp /etc/passwd # -sp 减少空白行,先清屏后输出

4.less命令

作用:

        同more命令
格式:

        less 文件名
注意:

        可以使用上下键进行浏览,点击q退出浏览

5.head命令

作用:

         查看文档前n行的内容
格式:

        head -数字 文件名
例:

[root@server ~]# head /etc/passwd # 默认查看文档前10行内容
[root@server ~]# head -5 /etc/passwd

6.tail命令

作用:

        查看文档后n行内容
格式:

        tail -参数 文件名
参数
        -数字:查看倒数行数
        -f:动态刷新, 实时显示日志文件并且能动态更新
例:

[root@server ~]# tail /etc/passwd # 默认查看文档后10行内容
[root@server ~]# tail -1 /etc/passwd
[root@server ~]# tail -f /var/log/messages # 监视日志
[root@server ~]# head -6 /etc/passwd | tail -1 # 查看第6行

2.文件信息查看

1.file 命令

作用:

        查看文件类型
格式:

        file      -参数      文件名
文件类型:
        ASCII file :ASCII文本字符文件
        empty:空文件
        block special :块设备文件
        character special :字符设备文件
        diretory:目录

3.stat 命令

作用:

        显示文件属性信息
格式:

        stat 文件名
注意:

        一般通过该命令查看大小、Inode、硬链接、软连接

3.文件内容过滤显示—grep

1.作用:

在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用

2.格式

grep -参数 查找条件 文件名

参数 

选项说明
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择——仅列出没有“关键词”的行
-A-A 2 搜索时显示匹配到的那一行以及下2行
-B-B 2 搜索时显示匹配到的那一行以及上2行
-C-C 2 搜索时显示匹配到的那一行以及上下2行

3./etc/passwd文件含义

作用:
记录用户账户信息:共分为7段,使用冒号分割

含义:
文件内容意义:账户名:密码代号x:UID:GID:注释:家目录:SHELL
第7列/sbin/nologin:不允许登录 

详细用法:

# 在passwd中检索包含root的行信息
[root@server ~]# grep -n “root” /etc/passwd
# 在passwd检索不能登录的信息
[root@server ~]# grep -n "/sbin/nologin" /etc/passwd
# 在passwd中检索可以登录的账户信息
[root@server ~]# grep -nv "/sbin/nologin" /etc/passwd (反向)
# 检索包含“halt”的行及下3行信息
[root@server ~]# grep -nA3 "halt" /etc/passwd
# 检索包含“sshd”的行及上5行信息
[root@server ~]# grep -nB5 “sshd” /etc/passwd
# 检索包含“ftp”的行及上下2行
[root@server ~]# grep -nC2 “ftp” /etc/passwd
# 检索不能登录的账户个数
[root@server ~]# grep -c “/sbin/nologin” /etc/passwd
# 相当于 grep -n “/sbin/nologin” /etc/passwd | wc -l
# 检索包含大小写字母d的行信息
[root@server ~]# grep -ni "d" /etc/passwd

 使用特殊符号匹配:

匹配模式说明
grep h文件名查找文件里有字符h的行
grep ^[q]文件名匹配以q开始的行
grep ^[qf]文件名匹配以q或者f开头的行
grep ^[ ^qf ]文件名不匹配以q或者f开头的行
grep ^[0-9]文件名匹配以数字开头的行
grep q$文件名匹配以q结束的行
grep ^$过滤空白行
grep -r h ./*如果要明确搜索当前目录中的子目录有h的行
grep -d s kip h ./*忽略当前目录下的子目录下的普通文件
[root@server ~]# grep ^a /etc/passwd
[root@server ~]# grep -n “^root” /etc/passwd
[root@server ~]# grep -n "^#" /etc/sos/sos.conf
[root@server ~]# grep -n [0-9]$ /etc/sos/sos.conf
[root@server ~]# grep -n ^$ /etc/sos/sos.conf

4.切割显示-cut

1.作用

cut命令用于按列提取文本内容

2.格式

cut -d "分隔符" -f列数字 文件名

3.举例

/etc/passwd文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的,如: 

 基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可,但如果按列搜索,
不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。 

提取内核版本号

[root@server ~]# uname -a | cut -d " " -f3

提取IP地址

[root@server ~]# ip a | grep ens160 | grep inet | cut -d "/" -f1 | cut -d " " -f6
# 注意空格

例:提取mac地址

[root@server ~]# ip a | grep link/ether | cut -d " " -f6

5.排序显示-sort

1.作用

sort命令用于对文本内容进行排序显示

2.格式

sort -参数 文件名

 3.参数

选项作用
-f忽略大小写
-b忽略缩进与空格
-n以数值型排序
-r反向排序
-u去除重复行
-t指定间隔符
-k设置字段范围

4.举例

sort命令执行后默认会按照字母顺序进行排序

[root@server ~]# cat fruit.txt
banana
pear
apple
orange
[root@server ~]# sort fruit.txt
apple
banana
orange
pear
[root@server ~]# cat /etc/passwd | cut -d : -f1 | sort # 取出所有账户名

6.去重显示-uniq

1.作用

uniq命令用于去除文本中连续的重复行

2.格式

uniq -参数 文件名

3.举例

[root@server ~]# cat uq1.txt
Welcome to openlab.com
Welcome to openlab.com
Welcome to openlab.com
Welcome to openlab.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course
[root@kongd ~]# uniq uq1.txt
Welcome to openlab.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course

7.文件中字符替换显示-tr

1.作用

tr 指令从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出

2.格式

tr -参数 替换内容 新内容

3.参数

-c :反选设定字符,符合 “替换内容” 的部份不做处理,不符合的剩余部份才进行转换
-d :删除指令字符
-s :缩减连续重复的字符成指定的单个字符

4.举例

小写字母全部转换成大写字母

[root@server ~]# cat /etc/passwd | tr a-z A-Z

提取IP地址

[root@server ~]# ip a | grep ens160 | grep inet | cut -d / -f1 | tr -s ' ' | cut
-d ' ' -f3

                                                                                                                                未完待续。。。


http://www.kler.cn/news/364121.html

相关文章:

  • ORA-12170: TNS:Connect timeout occurred
  • 利用数据库过滤和元数据提取提升多跳查询的RAG性能
  • Qt 断开信号槽的方式
  • 记一次js泄露pass获取核心业务
  • 【Redis】数据结构(下)
  • 医院信息化与智能化系统(6)
  • A survey of loss functions for semantic segmentation——论文笔记
  • TCP 攻击为何在 DDoS 攻击中如此常见
  • SQL注入-联合查询
  • 通知服务刷新本地缓存的实现方案
  • sql-labs靶场第二十一关测试报告
  • 【ChatGPT】如何通过实例提升 ChatGPT 的回答质量
  • 技术成神之路:设计模式(二十三)解释器模式
  • 介绍 TensorFlow 的基本概念和使用场景(AI生成仅供参考)
  • 读数据工程之道:设计和构建健壮的数据系统19数据存储系统 (下)
  • 基于neo4j的疫情信息管理系统
  • 【WebSocket实战】——创建项目初始架构
  • Linux 设备树在 i.MX6U 上的应用与详解
  • 基于 Python 的自然语言处理系列(43):Question Answering
  • 架构设计(17)大数据框架Hadoop与基础架构CDH
  • 又是一年 1024
  • Python酷库之旅-第三方库Pandas(167)
  • 鸿蒙原生 证书 打包到真机
  • 使用docker-compose部署一个springboot项目(包含Postgres\redis\Mongo\Nginx等环境)
  • STL标准容器库
  • 【华为HCIP实战课程十七】OSPF的4类及5类LSA详解,网络工程师