查看文件权限
# 进入指定目录
cd /test
# 查看文件夹内所有文件权限
ls -l
# 或者使用ll查看文件权限
ll
为某个文件赋权限
权限各字符在Linux中所代表的含义
参考上图:
在bin文件夹对应的第一个参数是d,d 在 Linux 中代表该文件是一个目录文件。
- 在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
说明:
当为 d 则是目录;
当为 - 则是文件;
若是 l 则表示为链接文档(link file);
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
- 接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。这三个权限的位置不会改变,如果没有权限,就会出现减号 - 。
其权限对应关系:
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。
命令 | 角色 | 动作 | 可使用字符 | 作用对象 |
---|---|---|---|---|
chmod | u | +(加入)/-(除去)/=(设定) | r、w、x | 文件或目录 |
chmod | g | +(加入)/-(除去)/=(设定) | r、w、x | 文件或目录 |
chmod | o | +(加入)/-(除去)/=(设定) | r、w、x | 文件或目录 |
chmod | a | +(加入)/-(除去)/=(设定)) | 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命令替换,参数含义如下:文章来源:https://www.toymoban.com/news/detail-775231.html
- -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命令下批量替换文件内容文章来源地址https://www.toymoban.com/news/detail-775231.html
# 语法:
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'
到了这里,关于Linux文件编辑、替换的常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!