目录与路径
- 绝对路径:由根目录写起
- 相对路径:相对于当前工作目录的路径
ps:写Shell脚本时,务必使用绝对路径
- 特殊目录
符号 | 描述 |
---|---|
. | 代表该层目录 |
两个点 | 代表上一层目录 |
- | 代表前一个工作目录 |
~ | 代表目前使用者身份所在的家目录 |
~{account} | 代表{account}这个使用者的家目录 |
- 处理目录的命令
命令 | 描述 |
---|---|
cd | 切换目录 |
pwd | 显示当前目录 |
mkdir | 创建一个新目录 |
rmdir | 删除一个空目录 |
1. pwd -P ,显示真正的路径,不显示链接文件的路径
2. mkdir -m,直接设置文件的权限,不使用默认权限(umask),ex: mkdir -m 775 test
3. mkdir -p , 递归创建所需目录, ex: mkdir -p /usr/local/test1/test2/test3
4. rmdir -p, 连同上层空的目录也一起删除,rmdir只能删除空目录
- 环境变量 PATH
- 不同身份用户默认的PATH不同,默认随意执行的命令也不同
- 使用绝对路径或相对路径直接指定某个命令的文件名来执行,比查找PATH更准确
- 本目录(.)最好不要放到PATH中
文件与目录管理
cp -a|-p , 可将文件的所有特性一起复制
cp -u 源文件 目标文件,当源文件与目标文件有差异时,才进行复制
basename 文件路径,获取该路径中的文件名
dirname 文件路径,获取该路径中的目录名
文件内容查看
命令 | 描述 |
---|---|
cat | 由第一行开始显示文件内容 |
tac | 从最后一行开始显示 |
nl | 显示时,同时输出行号 |
more | 一页一页显示文件内容 |
less | 与more相似,但可往前翻页 |
head | 只看前几页 |
tail | 只看后几行 |
od | 二进制方式读取文件内容 |
-
tail -n +num , ex : tail -n +100 只显示100行以后的
-
head -n -num , ex : head -n -100 ,代表列出前面所有的行数,但不显示最后100行
-
显示10到20行:
head -n 20 {文件名} | tail -n 10
-
文件记录的时间参数
- 修改时间(modification time):当该文件的内容数据(指文件的内容,并非文件属性和权限)变更时,更新该时间
- 状态时间 (status time):当该文件的状态(例如权限和属性)改变时,更新该时间
- 读取时间(access time):当该文件的内容被读取(当文件被读取一次,就会更改一次),更新该时间
- 修改文件时间或创建新文件:touch
- 修改时间
touch -a {文件},仅自定义读取时间
touch -c ,进修改文件时间,文件不存在不建新文件
touch -d ,其后可接自定义的日期
touch -m , 仅修改 modification time
touch -t , 其后可接自定义的时间
文件与目录的默认权限和隐藏权限
- umask:指定当前用户在建立文件或目录时的权限默认值
- umask 的数字 指的是该默认值需要减掉的权限
- 文件隐藏属性
- chattr命令只能在ext2、ext3、ext4的linux传统文件系统上完整生效,xfs只支持部分属性
- xfs系统中支持,
chattr [+-=] [AadiS] {文件或目录}
- 【+】:增加某个特殊参数
- 【-】:删除某个特殊参数
- 【=】:直接设置参数
- A :在设定了该参数的文件或目录进行存取时,存取时间不会被修改
- a :设定了该参数的文件只能增加数据,不能删除和修改数据,只有root可设置该属性
- d :设定了该参数的文件或目录不会被dump 备份
- i :可让一个文件不能被删除、改名、设置链接、无法写入或新增数据,只有root才能设置该属性
- S:当进行任何问价你修改,该修改都会同步写入磁盘中
- lsattr:显示文件隐藏属性,
lsattr [-adR]
- -a :将隐藏文件的属性显示
- -d :若后接目录,仅列出目录本身的属性
- -R: 连同子目录的数据也一并列出来
- 文件特殊权限
-
Set UID
-
当s出现在文件拥有者的可执行权限位置上时,SUID的限制与功能:
1.SUID权限仅对二进制程序有效,不能用在shell脚本上,对于目录无效 2.执行者对该文件需具有可执行权限 3.本权限仅在执行该程序的过程中有效 4.执行者将具有该程序拥有者的权限
-
-
Set GID
-
当s 出现在文件用户组的可执行权限位置上,SGID可针对文件或目录设置,
-
针对文件来说,SGID的功能:
1. SGID对二进制程序有用 2. 程序执行者需对该程序具有可执行权限 3. 执行者在执行过程中将会获得该程序用户组的支持
-
针对目录来说,SGID的功能:
1. 用户若对该目录具备 r、x权限,则可进入该目录 2. 用户在该目录下的有效用户组将变为该目录的用户组 3. 用途:若用户在该目录下具备w权限,则在该目录下创建的新文件的用户组与该目录的用户组一致
-
-
Sticky Bit
-
仅对目录有效,SBIT对目录的功能:
1. 当用户对该目录具备w、x权限,即具有写入的权限 2. 当用户在该目录下创建新文件或目录,仅自己和root可删除该文件 3. 用户仅可删除、更名、移动自己的文件,不能改动其他人的
-
-
SUID/SGID/SBIT权限设置
在之前的三个权限数字前再加一个数字,4:SUID,2:SGID,1:SBIT
或者符号法设置,u+s :SUID, g+s : SGID,o+t :SBIT
命令和文件的查找
-
脚本文件的查找
which [-a] command -a : 将所有由PATH目录中可找到的命令均列出
该命令时根据PATH 所规范的路径,查找执行文件的文件名,which 后跟的是完整的文件名
-
文件的查找
一般先用whereis或locate检查,若找不到,才用find.
whereis由一些特定的目录中查找文件
locate利用数据库查找文件1. whereis 【-bmsu】 文件或目录名 -b : 只找二进制文件 -m: 只找在说明文件manual路径下的文件 -s : 只找source文件 -u : 查找不在上述三项目中的其他特殊文件
2. locate / updatedb -i : 忽略大小写 -c : 仅计算找出的文件数量,不输出文件名 -l : 后接数字,仅输出几行 -S:输出locate所使用的数据库文件的相关信息 -r :后接正则表达式 2.1 可输入文件的部分名称来进行检索 2.2 更新数据库中文件 updatedb: 根据/etc/updatedb.conf的设置查找硬盘中的文件,并更新/var/lib/mlocate内的数据库文件 locate:根据/var/lib/mlocate内的数据库记录,找出用户所输入关键词的文件名
3. find [PATH] [option] [action] 3.1 与时间相关的选项参数 -mtime n : n天前的一天内的修改过的文件 【前第n天本身那天】 -mtime +n : n天前 ,不含n本身,被改过的文件【从前第n天的n天,不包含n那天】 -mtime -n: n天内 ,含n本身,被改过的文件【从前第n天到现在】 -newer {file} : 列出比file 更新的文件 3.2 与使用者或用户组名称相关的选项参数 -uid n : 查找用户id 为 n的 拥有的文件 -gid n :用户组id -user name: 使用者名 -group name : 用户组名 -nouser: 查找文件的拥有者不在/etc/passwd -nogroup:查找文件的拥有组不在/etc/passwd 3.3 与文件权限及名称有关的选项参数: -name {filename}: 查找文件名为{filename}的文件 -siez [+-] {size} : 查比{size} 大(+)或小(-)的文件 -type {type} : 查文件类型,类型有(正规文件【f】,设备文件【b,c】,目录【d】,链接文件【l】,socket【s】,FIFO【p】) -perm {mode} : 查找文件权限等于{mode}的文件,mode值举例:-rwsr-xr-x 4755 -perm {-mode}:全部包含{mode}的权限,找出来的权限大于等于{mode} -perm {/mode}:包含任一{mode}的权限,找出来的文件权限小于等于{mode},但至少有相同权限 3.4 额外选项参数: -exec {command}: 其后可接额外命令处理查找的结果 范例: find / -perm /7000 -exec ls -l {} \; {} :表示find找到的结果 从 -exec 到 \; 中间是 额外操作 即 ls -l {} ; 使用了 反斜杠 \进行了转义