欢迎光临
我们一直在努力

Linux操作系统初步

Linux系统学习笔记 2 

5.文件操作

grep – 搜索文件内容


功能说明:搜索文件内容,在文件中查找指定的字符序列(字符串)

执行权限:所有用户

基本语法:两种写法完全等价

                  grep [选项] 待查找的字符序列 文件路径

                 grep [选项] '待查找的字符序列' 文件路径

常用选项

选项 功能说明
-n  显示行号
-c 统计搜索到的行的数量(返回值数,不能跟-n配套使用)
-i 忽略大小写搜索(只要针对英文)a → a  +  A
-v 反向搜索,显示不包含匹配的行

-n 演示示例

-i 演示示例

-c 演示示例

正则表达式

           行首匹配(^)

功能:匹配以指定字符序列开头的行

语法:

grep -n '^字符序列' 文件路径

示例:

           行尾匹配($)

功能:匹配以指定字符结尾的行

语法:grep -n '字符序列$' 文件路径

示例:grep -n '[0-9]$' 文件路径  :匹配以[0-9]中任意数字结尾的行

find – 查找文件或目录


功能说明:查找文件或目录(递归查找),从磁盘查找,精确性高,性能较低

使用场景:适合在需要精确查找文件时使用,但由于是遍历磁盘,所以速度较慢

执行权限:所有用户

基本语法:find 检索路径 [选项] 参数

常用选项

选项 功能说明 参数格式
-name  按照名称查找(英文默认区分大小写) 文件名模式
-iname 按照名称查找 文件名模式
-size 按照文件大小查找 +/- 大小[单位]
-type 按照文件类型查找 d(目录),f(文件),l(链接)
-mtime 按照修改时间查找 +/- 天数

单位说明:

  • 默认单位:1单位 = 512字节(Byte/Char)
  •   K :1KB = 1024Byte
  •   M  :1MB = 1024KB
  •   G  :1GB = 1024MB

使用示例

#在当前路径下查找文件为01.txt的文件(忽略大小写)

find ./ -iname 01.txt

#从根路径开始,查找问价大小超过3M(3*1024*1024字节)的文件

find / -size +3M

#从根路径开始,产找文件大小不超过3个单位的文件

find / -size +3

#从根路径开始,查找大小不超过3M的文件

find / -size -3M

#从根路径开始,查找24小时内修改过的文件 1:1天

find / -mtime -1

#从根路径开始,匹配文件类型为目录

find ./ -type d

locate – 快速查找文件


功能说明:快速查找文件或目录,从数据库查找,准确性较低,性能高

特点:从文件系统数据库中查找,新创建的文件可能找不到(数据库未更新)

执行权限:所有用户

基本语法:locate – [选项] 文件或目录

常用选项

选项 功能说明
-c 统计文件个数,返回数字(grep 返回行数)
-i 忽略大小写

使用示例

#手动更新数据库(需要管理员权限)

sudo updatedb

#从数据库中查找文件(忽略大小写)

locate -i test.c

注意事项:

  • 默认情况下updatedb 每天自动更新一次
  • 向创建的文件需要手动更新数据库才能被locate找到

which – 查找指令位置


功能说明:快速检索指令的位置

执行权限:所有用户

基本语法:which 指令名

使用示例:

#快速查找ls 指令的位置

echo – 输出字符串


功能说明:将指定字符串输出到设备上,常用于将内容写入文件

执行权限:所有用户

基本语法:echo "字符串" > | >> 文件路径

使用示例:

| (管道)- 命令组合


功能说明:将前一个指令执行的结果作为后一个指令的条件

执行权限:所有用户

使用示例:

#显示以.txt结尾的文件的详细信息

#先通过 ls -l 列出所有文件

#再通过 grep '.txt' 列出以.txt 结尾的文件

ls -l | grep '.txt'

#统计文件中包含特定字符串的行数

cat file.txt | grep -c 'pattern'

#查看系统进程中包含的Java的进程

#先列出所有进程

#再检索出Java进程

ps aux | grep java

6.用户和用户组基础概念


基本概念

用户(user)

  • 计算机系统通过用户名和密码来识别用户身份
  • 每个用户都有唯一的用户ID(UID)
  • Linux系统中,新建用户后,必须设置密码才能使用
  • 密码输入时默认不可见,确保安全性

超级用户(root)

  • 系统内置的最高权限用户
  • 拥有对系统的安全掌控
  • 默认存在,但首次使用需要设置密码
  • 可以执行任何命令,修改任何文件

用户组(Group)

  • 将多个用户归类管理的机制
  • 每个用户组有唯一的组ID
  • 便于批量设置文件权限
  • 每个用户至少属于一个组,可属于多个附属组

用户类型


超级用户(root)

  • 用户名:root
  • UID:0
  • 拥有最高权限

普通用户(user)

  • 安装系统时创建的用户(如 st )
  • 由超级用户创建的用户(如 Lucy mike等等)
  • UID范围:1000-65535
  • 权限受限制,需要sudo 获取临时权限

7.用户管理


超级用户密码设置

修改root用户密码:

sudo passwd root

#输入密码不可见,正常安全机制

用户切换

普通用户→root用户

#方式1:使用 sodo -i (推荐:不需要root密码,适合从登录账户st 直接切入)

#方式2:使用 su root (需要root密码)

root 用户→ 普通用户

#方式:su 用户名

查看当前用户:

whoami

用户创建


执行权限:root 用户

基本语法:sudo useradd [选项] 用户名

常用选项

选项 功能
-d 指定用户目录(创建的同时,再该用户/home下创建一个文件夹)
-m 自动创建用户
-g 指定用户组
-G 指定附属用户组

创建用户示例:

用户创建后自动完成的操作

1.在 /etc/passwd 文件中添加用户信息

2.在 /etc/shadow 文件中添加密码信息

3.创建用户主目录(如/home/lucy)

4.创建同名的用户组(如Lucy组)

用户密码管理


设置用户密码:

sudo passwd 用户名

选项说明:

  • -l :锁定用户账号
  • -u :解锁用户账号
  • -d :删除用户密码(不建议)
  • -e :强制用户下次登录修改密码

演示示例:

用户信息查看


查看用户所属组:

   groups 用户名

查看所有用户信息:

#查看用户基本信息

cat /etc/passwd (或者tail -5 /etc/passwd)

#查看用户密码信息(加密)

sodo cat /etc/shadow 

用户修改


基本语法:

sudo usermod [选项] 用户名

常用选项

  • -c :修改用户备注信息
  • -g :修改主用户组
  • -G:修改附属用户组

示例:

#修改Lucy的主组为root

sudo usermod -g root lucy

#修改mike的主组为Lucy,附属组为st 

sudo usermod -g lucy -G st lucy

#修改用户登陆名(从oldname修改为newname)

sudo usermod -l newname oldname

用户删除


基本语法:

sudo userdel [选项] 用户名

常用选项:

  • -f :强制删除,即使用户以登录
  • -r :同时删除用户主目录及相关文件

演示示例:

#仅删除用户账户 bob ,保留主目录/home/bob

sudo userdel bob

#强制删除用户账户 bob ,同时删除主目录/home/bob

sudo userdel -fr bob

8.用户组管理


创建组

基本语法:

sudo groupadd [选项] 组名

选项说明:

  • -g :指定组id

示例:

#创建工作组work

sudo groupadd work

组信息查看


查看所有用户组:

#方法1:查看用户组

cat /etc.group(或者tail -n /etc/group)

#方法2:查看组密码信息

sudo cat /etc/gshadow

#方法3:查看待定组信息

grep '组名' /etc/group

getent group 组名

组修改


基本语法:sudo groupmod [选项] 组名

常用选项:

  • -g :修改组ID
  • -n:修改组名

示例:

#修改组名为newgroup

sudo groupmod -n newgroup oldgroup

组删除


基本语法:

#删除workgroup组

sudo groupdel workgroup

注意:不能删除用户的主组,需要先修改用户的主组

9.权限管理


权限基础概念


权限类型:

  • -r :读权限:查看文件内容(cat,tail head等),列出目录内容(ls)
  • w :写权限:修改文件内容(touch vim等),创建删除目录(mkdir,rmdir,rm等)
  • x :执行权限:执行文件(./文件名),进入目录(cd等)

权限对应表:

权限类型 权限数字 操作文件 操作目录
r:读 4 cat、more 、less、head、tail、grep等 ls(查看目录内容)
w:写 2 >(覆盖写入)、>>(追加写入)、touch、rm、vim mkdir、rm、rmdir,mv(重命名)
x :执行 1 ./文件名 cd(进入目录),cp(拷贝),mv(移动)
– :无权限 0 无操作 无操作

权限对象:

  • u :user,文件所有者
  • g :group ,文件所属组
  • o:other,其他用户

权限表示方法:

权限组合 数字表示 含义说明
rwx 7=4+2+1 读,写,执行权限
rw- 6=4+2+0 读,写权限
w-x 5=4+0+1 读,执行权限

设置所有者和权限

设置所有者和所属组

演示示例:

#修改文件所有者为Lucy

sudo chown lucy /home/work/demo01.c

#修改文件所属组为workgroup   :组名

sudo chown :workgroup /home/work/demo01.c

#上面两行可以缩写为一行

sudo chown lucy:workgroup /home/work/demo01.c

#递归修改目录及其内容,此时/home/work以及其子目录中所有文件所有者都是Lucy,所有组都是workgroup

设置权限

演示示例:

#授权:设置所有者对于demo01.c的访问权限

  • sudo chmod 750 /home/st/demo01.c
  • sudo chmod -r 750 /home/work :递归修改目录权限(当前目录及其子目录权限一致)

10.vim编辑器


vim安装与卸载

在线安装

#更新软件源

sudo apt-get update

#安装vim,其他软件安装同理,将程序名换一下

sudo apt-get install vim

卸载vim

#卸载vim,其他软件同理,将程序,名换一下即可

sudo apt-get remove

#彻底删除(包括配置文件)

sudo apt-get purge vim

vim的启动与退出

启动vim

  • vim
  • vim 文件路径
  • vim 文件路径 + :打开文件定位到最后一行(适合打开配置文件)
  • vim 文件路径 +行号 :打开文件定位到指定行

退出vim

1.先按esc键确保进入命令模式

2.进入末行模式(shift + :)

3.选择退出方式

  • :q   #不保存仅退出
  • :wq    #保存并退出
  • :q!     #强制退出不保存(丢弃所有修改)
  • :wq!  #保存并退出(适用于只读文件)
  • 😡     #保存并退出
  • ZZ #命令模式下直接保存并退出(无需进入末行模式)

vim工作模式

命令模式  :按键esc 进入

输入模式  :按键i/a/o 进入

末行模式 :按键shift+:进入

vim常用指令操作

删除操作

快捷键 功能描述 模式
x 删除当前光标所在处一个字符 命令模式
nx 删除当前光标所在处n个字符,如6x 命令模式
dd 删除当前光标所在行 命令模式
ndd 删除当前光标后面共n 行,如3dd 命令模式
:n1,n2d 删除第n1,到n2行,如:1,12d 末行模式

拷贝操作

①可视模式复制:

1.按esc 确保进入命令模式

2.按 v 进入可视模式

3.使用方向键 ↑↓  选中文本

4.按 Y 完成拷贝 

5.使用 P 进行粘贴

②行复制

快捷键 功能描述 模式
yy 复制当前行 命令模式
nyy 复制当前行及以后连续n行,如5yy 命令模式
:n1,n2 copy dn 复制n1~n2行粘贴到dn行之后,如:3,14 copy 2 , 末行模式

粘贴操作:

快捷键 功能描述 使用场景 模式
p 粘贴在当前行下方(整行)或光标之后(字符) 配置yy,nyy,可能模式复制 命令模式

撤销操作:

 

快捷键 功能描述 模式
u 撤销上一步操作 命令模式
Ctrl + R 对撤销进行还原 命令模式

查找操作

①基本查找

命令 功能描述 查找方向 模式
/string 查找字符串"string" 从当前位置匹配后,匹配每一行第一个查找的数据 末行模式

②查找控制

快捷键 功能描述 模式
n 继续查找下一个匹配项 命令模式

替换操作

语法::[范围] s/查找字符串/替换字符串/[标志] 

范围说明:

  • % :全文搜索
  • n1,n2:第n1-n2行
  • . :当前行
  • $ :最后一行

标志说明:

  • g :全局替换(匹配行中所有匹配项)
  • i :忽略大下写

演示示例:

#将全文每行第一个 int 替换为 void

:%s /int/void

#将全文所有 int 替换 void 

:%s /int/void/g

Linux 基础操作至此完

赞(0)
未经允许不得转载:171主机测评 » Linux操作系统初步
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址