Linux文件与目录管理
1. 常见处理目录的指令
- cd: 变换目录
- pwd: 显示当前目录
- mkdir: 创建新目录
- rmdir: 删除空目录
pwd
pwd [-p] #-p表示显示实际位置(相对链接目录)
mkdir
mkdir [-mp]
#-m: 设置文件权限
#-p: 创建多级目录
创建多级目录
mkdir test1/test2 #error
#正确用法:加[-p]
mkdir -p test1/test2
创建权限为[rwx—-x—-x]的目录
mkdir -m 711 testdir
rmdir
#rmdir只能删除空目录,相对安全
rmdir [file/dir]
#如果要删除整个目录下所有文件 用“rm”命令后加[-r]选项进行递回
rm -r [directory]
2.环境变量$PATH
执行[xxxx]指令时(如ls),系统会按照PATH的设置去每个PATH定义的目录下搜寻文件名为xxxx(ls)的可执行文件
如果PATH定义的目录中含有多个同名可执行文件,则先执行优先搜寻到的同名指令
查看PATH定义的目录:
echo $PATH
#echo:显示、输出
#$:表示后面接的是变量
#PATH一定是大写
PATH变量的内容是由一堆目录组成,每个目录用“:”隔开。每个目录有顺序之分。
不同身份使用者默认的PATH不同,默认执行的指令也不同
因此很多时候需要切换为root用户才能执行某些指令
添加环境变量
以/root目录为例,让任何目录都可以执行/root下面的可执行文件,将/root加入PATH当中
PATh=“${
PATH}:/root”
#输出PATH查看是否添加成功
echo $PATH
3. 文件与目录的检视:ls
ls [-aAdfFhilnrRst] filename/dirt
ls [--color={
never,auto,always}] filename/dirt
ls [--full-time] filename
常用选项:
- -a : 列出包括隐藏文件的全部文件
- -d : 仅列出目录本身,不是列出目录内的文件数据
- -l : 列出文件属性、群组与权限等数据
- –color=never:不根据文件特性高亮
- –color=always:高亮
- –color=auto: 系统根据设置自动判断高亮
- –full-time:以完整时间输出
- –time={atime,ctime}:输出access时间或改变权限属性的时间(ctime)而非内容变更时间
4. 复制删除与移动
4.1 cp: 复制文件或目录
常用选项参数:
- -a : 相当于all的意思
- -i :若目标文件已存在,则询问是否覆盖
- -r :递回持续复制,用于目录
- -p :连同文件属性复制,而不使用默认属性(备份常用)
注意:
- 在不加任何选项情况下,复制后的文件的某些/权限会改变
- 加上
[-a]
可以将文件的所有特性一起复制 - 在默认的条件中,cp的源文件和目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。
[-r]
可以复制目录,但是文件与目录的全乡可能会被改变
4.2 rm:移除文件或目录
用法:
rm [-fir] file/dir
选项与参数:
- -f : force的意思,忽略不存在的文件,不会出现警告提示
- -i : 互动模式,删除前询问
- -r : 递回删除,常用删除目录
在指令前加上反斜线\
,可以忽略掉alias
的指定选项:
rm -r /tmp/etc
#直接rm -r dir 会一直提示是否删除目录中的子目录子文件 需要按y确认 为保护动作
\rm -r /tmp/etc # 会直接删除目录,谨慎使用
通常在Linux系统下,为防止文件被root误杀,很多发行版会默认加[-i]
选项。
4.3 mv:移动/更名文件与目录
用法:
mv [-fiu] source destination
#source: 源文件
#destination:目的文件
mv src1 src2 src3 ... directory
#如果有多个源文件或者目录,则最后一个目标文件一定是“目录”
#动作为将所有数据移动到该目录
选项与参数:
- -f : force强制,如果目标文件存在则直接覆盖
- -i : 若目标文件存在则询问是否覆盖
- -u :update更新,如果目标文件存在且source比较新才更新
5. 文件内容查阅
查阅文件内容的指令有:
- cat 由第一行显示内容
- tac由最后一行开始显示
- nl 带行号显示
- more 逐页显示
- less 逐页显示
- head 只看头几行
- tail 只看尾几行
- od 以二进制方式读取文件内容
5.1 直接查阅
直接查阅 可用cat / tac / nl
cat -n file #添加行号输出
cat -A file #完整输出包括特殊字符
tac file #cat的反向
nl [-bnw] file #带行号输出
5.2 翻页查阅
翻页查阅 可用more / less
more file
# 空格向下一页 回车向下一行
# /string 在显示内容向下搜索[string]
# :f 显示文件名和目前显示行数
# q 退出
# b 往回翻页
less file
# 可以用[pageup]和[pagedown]功能按键来翻页
# /string 向下搜string
# ?string 向上搜string
# n 重复前一个搜索 N 反向重复搜 相当于搜索时的下一个和上一个
# g 前进到这个数据的第一行 G 最后一行
5.3 数据提取
取出前几行和后几行 head / tail
head -n [num] file
# -n 后面接数字 显示前num行 不加-n默认显示10行
# -n 后面接-num时 不显示后num行
tail -n [num] file
# -n 同上 后面接+num时 不显示前num行
# -f 持续侦测文件 用在查看随时会有数据变动的文件上
head -n 20 file | tail -n 10 #输出11到20行
# 输出file的前20行,在此基础上输出后10行
# | 符号 表示前面的指令所输出的讯息,| 后面的指令继续使用
5.4 非纯文本文件:od
查阅非文本如可执行文件,可以用od
od [-t type] file
# -t 后可以加各种类型输出
- a :默认字符输出
- c :ASCII字符输出
- d f o x :十进制、浮点数、八进制、十六进制输出
od -t oCc file
# 八进制输出 与 ASCII 的对照表
5.5 创建新文件:touch
修改文件时间或者创建新文件可以使用 touch
文件的三个时间属性:
- modification time (mtime) : 文件数据内容修改时间
- status time (ctime) : 文件**状态(权限与属性)**改变时间
- access time (atime) :文件内容被取用时更新该时间,如使用cat读取文件
默认情况下,ls
指令显示的是文件的mtime
输出文件的时间信息,在上面的ls
的参数选项中有提到:
ls -l --time=[mtime,ctime,atime] file
touch
指令,用法:
touch [-acdmt] filename
选项参数:
- -a 仅修订
access time
- -c 仅修改文件时间,若文件不存在则创建新文件
- -d 后面接欲修订的日期, 也可以使用
--date="日期或时间"
- -m 仅修改
mtime
- -t 后面接欲修订的时间,格式为[YYYYMMDDhhmm]即[年月日时分]
常用在:创建空文件,将某个文件日期修改为目前(mtime与atime)
复制文件的时候没办法复制**
ctime
**属性
6. 默认权限与隐藏权限
6.1 文件默认权限:umask
指目前使用者在创建文件或目录时的权限默认值
查询方式:
umask #输出的后三个数字与一般权限相关,第一个数字与默认权限有关
umask -s #直接输出u=rwx,g=rwx,o=rwx...
umask
的分数指的是默认值需要减掉的权限分数!!!
因此,如果要取消r权限,则分数为4,w分数为2,x分数为1
设置默认权限:
umask 002 #表示默认不取消u和g的任何权限,取消o的w权限
文件默认属性:666
目录默认属性:777
若输入umask,输出的是0002,则create的文件权限为664[rw-rw-r–],目录权限是775[rwxrwxr-x]
root的umask默认是022
一般身份使用者的umask默认是002
6.2 文件隐藏属性
chattr
:设置文件隐藏属性
chattr [+-=] [ASacdistu] filename/dirname
属性设置常用
a
和i
,用于考虑系统安全,需要root权限a: 设置a后,文件只能增加数据,不能删除和修改数据
i : 设置 i 后,文件不能删除、改名、设置链接、写入或新增数据
lsattr
:显示文件隐藏属性
lsattr [-adR] filename/dirname
eg
touch testfile
lsattr testfile
sudo chattr +i testfile
rm testfile #报错
sudo chattr -i testfile
lsattr testfile
rm testfile #删除成功
6.3 文件特殊权限
待补充
7. 指令与文件的搜寻
7.1 指令文件名搜寻
- which 寻找可执行文件
7.2 文件文件名搜寻
- whereis 由一些特定目录中寻找文件文件名
- locate
- updatedb
- find