文件操作
文件及目录
- 相关命令
命令 | 说明 |
---|---|
touch | 创建文件,可以一次性创建多个文件 |
rm | 删除文件或目录(需要加-r选项) |
cp | 拷贝文件或目录(需要加-r选项) |
mv | 移动文件或目录 |
mkdir | 创建目录 |
rmdir | 删除目录,只能是空目录 |
- 选项说明
- -f:表示强制,默认删除操作是给予提示,添加此选项就不再提示
- *:表示模糊匹配任意
- -r:删除或拷贝目录时的递归操作
- -p:创建目录时,需要创建中间目录,例:mkdir -p 1/2/3
文件流操作(sed)
-
格式
sed [选项/参数] 指令 文件
-n:结合p一起使用
-i:修改原文件,默认只会将内容显示到缓冲区 -
指令
a:新增
d:删除
p:结合-n一起使用,用来显示一行
c:取代
s:替换指定的内容 -
实例
sed '1a xxxxxx' 1.txt #在第1行的下面添加内容‘xxxxx’,不会改变原文件
sed -i '1a xxxxx' 1.txt #在第1行的下面添加内容‘xxxxx’,直接改变原文件
sed '1,3a xxxxx' 1.txt #在第1行到第3行的下面添加内容‘xxxxx’,不会改变原文件
sed -i '2d' 1.txt #删除第2行的内容
sed '2,$d' 1.txt #删除从第2行到末尾的所有内容
sed -n '2p' 1.txt #显示第2行的内容
sed -n '2,$p' 1.txt #显示从第2行到末尾的内容
sed '1c XXX' 1.txt #用XXX取代第一行的内容
sed '1,3c XXX' 1.txt #用XXX整体取代1-3行的内容
sed 's/潘玮柏/pwb/g' 1.txt #用'pwb'全局替换‘潘玮柏’
sed '4,5s/潘玮柏/pwb/g' 1.txt #用'pwb'替换4-5行的‘潘玮柏’
查看文件
- 相关命令
命令 | 说明 |
---|---|
cat | 从上到下,顺序显示全部内容 |
tac | 从下到上,逆序显示全部内容 |
head | 显示开头的几行,默认10行,使用‘-n’,n表示要显示的行数,例:head -3 1.txt |
tail | 显示末尾的几行,用法同head |
nl | 功能同cat,额外显示行号 |
wc | 统计显示,行数 | 单词数 | 字节数 | 文件名 |
more | 一点一点显示内容 |
less | 一点一点显示内容 |
- more和less使用说明
- 显示一屏就会停止
- q退出查看
- 空格下翻一页
- 回车下翻一行
- more查看完毕时会自动退出,而less不会
- less比more多了上下按键单行的查看
- 通常更多的情况是结合管道,如:ls -l /etc | more,将输出的结果作为more的参数
用户和用户组
- 相关命令
命令 | 说明 |
---|---|
whoami | 查看当前登录用户 |
useradd | 添加用户,会在/home目录创建一个与用户名相同的文件夹 |
userdel | 删除用户 |
su [-] | 切换到指定用户,默认root。带’-‘会将shell环境也进行切换 |
sudo | 以指定用户(默认root)执行命令,但是并不会切换用户,如:sudo 命令 |
passwd | 设置指定用户密码,默认设置root用户,只有root用户才有权限 |
groupadd | 添加用户组 |
groupdel | 删除用户组 |
gpasswd | 向群组添加/删除指定用户,如:gpasswd -a/-d test hello |
chown | 修改文件拥有者[及所属组],如:chown test[:test] 1.txt |
chgrp | 修改文件所属组,如:chgrp root 1.txt |
chsh | 修改用户的shell,chsh test -s /sbin/nologin |
- 特殊文件
-
/etc/passwd,改文件存放了系统中所有的用户信息,一行表示一个用户,具体解释:
用户名:密码:用户ID:用户组ID:描述:家目录:shell
-
/etc/group,改文件存放了系统中所有的用户组信息,一行表示一个用户组,具体解释:
群组名:口令:组ID:组员 #口令处的x或空白都表示没有密码
-
/ect/shadow,用户密码文件,依附于/etc/passwd,但是并不是由该文件生成。
- 使用说明
用户以及用户组ID通常要大于500,小于500的系统已占用
- 创建用户时
- 禁止登陆:useradd test -s /sbin/nologin
- 指定UID:useradd test -u 600
- 指定家目录:useradd test -d /xxx/yyy
- 修改用户shell,chsh test -s /sbin/nologin
- 用户身份标识:普通用户$,超级用户#
- 修改所有者时加’-R’,会进行递归操作
- 在使用用户名和用户组的地方通常可以使用UID和GID替代
文件权限
说明:linux的权限有所有者、所属组、其它的概念
权限:所有文件都涉及,可读(r)、可写(w)、可执行(x),-表示没有对应权限
原理:在ls -l查看的结果集中,第一项表示权限,分为3组,分别对应所有者、所属组、其它
修改文件权限,使用命令chmod,格式:
chmod [身份] [修改] [权限]
选项 | 说明 |
---|---|
身份 | |
u | 用有者 |
g | 所属组 |
o | 其它 |
a | 所有 |
修改 | |
+ | 添加 |
- | 去掉 |
= | 设置 |
权限 | |
r | 可读 |
w | 可写 |
x | 可执行 |
- chmod使用说明:-R表示递归操作
-
本质:使用一组(3位)八进制的数来表示权限(421),如:0755,详解如下:
转换为二进制:0755 => 111 101 101
对应三个身份: 拥有者 所属组 其它
每一组都有权限: 可读、可写、可执行
权限描述:拥有者可读可写可执行,所属组可读可执行,其它可读可执行 简写:
chmod 0755 1.txt
掩码(umask)
作用:限定了新建文件的默认权限,实际的权限与掩码相反(普通文件减去可执行权限)
命令:umask [value],查看或设置掩码,不加value表示查看
-
实例分析
掩码为:0022 => 000 010 010
新建目录权限: 111 101 101
新建文件权限: 110 100 100,因为文件没有必要默认就有可执行的权限 -
命令的修改是临时的,修改配置文件才能永久生效
全局配置:/etc/profile
单个用户:~/.profile 或者 ~/.bash_profile,优先级高于全局配置
特殊属性
有时候root都无法修改一个文件,多半是添加了特殊权限,可以使用lsattr查看,使用chattr修改,其中最重要的一个权限是保护权限,就是不能更改(immutable),方式误删除
-
使用实例
lsattr:查看特殊属性
chattr:修改特殊属性,+表示添加,-表示去掉,i表示不可更改
chattr -i file
chattr +i file
链接文件
命令:ln
作用:创建一个文件或目录的链接
格式:
ln [-s] 原文件 新名称
-
说明:使用ls -l查看时,文件类型为’l’的就是软链接
硬链接:创建链接时不加-s参数,相当于一个文件有几个名字,极少用到
1.链接文件的用户级组信息不变
2.不能给目录添加
3.不能跨文件系统
软链接:创建链接时添加-s参数,一个文件保存了另一个文件的路径,类似于windows的快捷方式
1.软链接文件的用户及组信息为当前用户及组
2.可以给目录添加
3.可以跨文件系统