Linux文件编辑、替换的常用命令

查看文件权限

# 进入指定目录
cd /test
# 查看文件夹内所有文件权限
ls -l
# 或者使用ll查看文件权限
ll

查看文件1权限
在这里插入图片描述

为某个文件赋权限

权限各字符在Linux中所代表的含义

在这里插入图片描述
参考上图:
在bin文件夹对应的第一个参数是d,d 在 Linux 中代表该文件是一个目录文件。

  • 在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

说明:
当为 d 则是目录;
当为 - 则是文件;
若是 l 则表示为链接文档(link file);
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

  • 接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。这三个权限的位置不会改变,如果没有权限,就会出现减号 - 。

其权限对应关系:
菜鸟教程截图 https://www.runoob.com/linux/linux-file-attr-permission.html

chgrp 和 chown

在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

# chgrp:更改文件属组 
# -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chgrp [-R] 属组名 文件名

# chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
# 举例: 将文件夹中test.log文件的拥有者改为test这个账号
chown test test.log
# 举例: 将test.log的拥有者与群组改回为root
chown root:root test.log

chmod

Linux文件属性有两种设置方法,一种是数字,一种是符号。
使用数字来代表各个权限,各权限的分数对照如下:

  • r:4
  • w:2
  • x:1
    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx— 分数则是:
  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0
    所以设定权限的变更时,该文件的权限数字就是 770。
# 变更权限指令
# xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
# -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
chmod [-R] xyz 文件或目录

# 举例: 为文件1赋所有权限
sudo chmod -R 777 /test/file1

在这里插入图片描述

符号类型改变文件权限

u, g, o 来代表三种身份的权限, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x。

命令角色动作可使用字符作用对象
chmodu+(加入)/-(除去)/=(设定)r、w、x文件或目录
chmodg+(加入)/-(除去)/=(设定)r、w、x文件或目录
chmodo+(加入)/-(除去)/=(设定)r、w、x文件或目录
chmoda+(加入)/-(除去)/=(设定))r、w、x文件或目录
# 举例 修改 test1 权限为-rwxr-xr--
chmod u=rwx,g=rx,o=r  test1  
# 举例 给所有用户赋读写权限,但不赋执行权限
chmod a-x test1

批量替换文件中的内容

vi/vim 替换(需打开文件)

  • vi/vim 中可以使用 冒号( : ) ➕ 小写字母( s )来替换字符串。
冒号( : ) ➕  小写字母( s )/well/good/g 替换当前行所有 well 为 good

直接替换文件中的字符串(不用打开文件,且可以批量替换多个文件)

perl命令替换,参数含义如下:

  • -a 自动分隔模式,用空格分隔$_并保存到@F中。相当于@F = split ”。分隔符可以使用-F参数指定
  • -F 指定-a的分隔符,可以使用正则表达式
  • -e 执行指定的脚本。
  • -i<扩展名> 原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份。
  • -l 对输入内容自动chomp,对输出内容自动添加换行
  • -n 自动循环,相当于 while(<>) { 脚本; }
  • -p 自动循环+自动输出,相当于 while(<>) { 脚本; print; }
# 用法示例:将所有C程序中的foo替换成bar,旧文件备份成.bak
perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c
# 将当前文件夹下lishan.txt和lishan.txt.bak中的“shan”都替换为“hua”
perl -p -i -e "s/shan/hua/g" ./lishan.txt ./lishan.txt.bak
# 将每个文件中出现的数值都加一
perl -i.bak -pe 's/(\d+)/ 1 + $1 /ge' file1 file2

sed 替换

sed命令下批量替换文件内容

# 语法: 
sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名

# 例如:我要把mahuinan替换 为huinanma,执行命令: 
sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www'
  • -i 表示inplace edit,就地修改文件
  • -r 表示搜索子目录
  • -l 表示输出匹配的文件名
  • s表示替换,d表示删除
# 示例 把当前目录下lishan.txt里的shan都替换为hua
sed -i "s/shan/hua/g"  lishan.txt
# 使用变量替换(使用双引号)
sed -e "s/$var1/$var2/g" filename

perl 语法

find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值