【Linux学习笔记】3. Linux文件与目录管理

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 :连同文件属性复制,而不使用默认属性(备份常用)

注意

  1. 在不加任何选项情况下,复制后的文件的某些/权限会改变
  2. 加上[-a]可以将文件的所有特性一起复制
  3. 在默认的条件中,cp的源文件和目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。
  4. [-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

属性设置常用ai,用于考虑系统安全,需要root权限

a: 设置a后,文件只能增加数据,不能删除和修改数据

i : 设置 i 后,文件不能删除、改名、设置链接、写入或新增数据

lsattr:显示文件隐藏属性

lsattr [-adR] filename/dirname

eg

image-20210926012413007

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

猜你喜欢

转载自blog.csdn.net/weixin_45636061/article/details/121460981