linux--文件与目录管理

1.目录与路径

1.1 相对路径与绝对路径

对目录的操作需要知道目录的路径,路径分为相对路径和绝对路径:

  • 相对路径:路径不加/,表示相对于当前工作目录的路径
  • 绝对路径:从根目录(/)开始一直到当前目录

还存在一些特殊的目录:

特殊目录含义
.代表此层目录
..代表上一层目录
-代表前一个工作目录
~代表目前用户的家目录
~account代表该account的家目录

1.2 目录相关操作:cd,pwd,mkdir,rmdir

cd:变换目录

change directory的缩写。

用法:

[root@linux ~]# cd [相对路径或绝对路径]

pwd:显示目前所在的目录

print working directory缩写。

用法:

[root@linux ~]# pwd [-P]
参数:
-P :显示出确实的路径,而非使用连结 (link) 路径。

mkdir:创建新目录

make directory缩写。

用法:

[root@linux ~]# mkdir [-mp] 目录名称
参数:
-m :设定文件的权限
-p :建立多层级目录

实例:

$ mkdir -m 711 test1 #创建目录并设置目录的权限
$ mkdir -p test1/test2/test3 #创建多层目录

rmdir:删除一个空目录

只能删除空的目录,若其中有文件,需要用rm命令。

用法:

[root@linux ~]# rmdir [-p] 目录名称
参数:
-p :连同上层空的目录也一起删除

1.3 执行文件的路径变量:$PATH

系统会根据PATH的值去搜寻可执行文件。

[root@linux ~]# echo $PATH
/usr/local/bin:/usr/local/sbin…

2.文件与目录管理

2.1 文件与目录查看属性:ls

用法:

[root@linux ~]# ls [-adFhlRS] 目录名称
[root@linux ~]# ls [–full-time] 目录名称
参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来
-d :仅列出目录本身
-F :根据文件、目录等信息,给予附加数据结构,例如:
*:代表可执行文件; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案
-h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来
-l :以列表形式列出,包含文件的属性等等数据
-r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小
-R :连同子目录内容一起列出来
-S :以档案容量大小排序
-t :依时间排序
–full-time :以完整时间模式 (包含年、月、日、时、分) 输出

2.2 复制、移动、删除:cp,rm,mv

cp(复制)

用法:

[root@linux ~]# cp [-fipr] 来源文件(source) 目的文件(destination)
[root@linux ~]# cp [options] source1 source2 source3 … directory
参数:
-f :若有重复或其它疑问时,不会询问使用者,而强制复制
-i :若目的文件(destination)已经存在时,在覆盖时会先询问是否真的动作
-p :连同文件的属性一起复制过去,而非使用预设属性
-r :递归持续复制,用于目录的复制行为

rm(删除)

用法:

[root@linux ~]# rm [-fir] 档案或目录
参数:
-f :强制移除
-i :在删除前会询问使用者是否动作
-r :递归删除

mv(移动文件或目录,或更名)

用法:

[root@linux ~]# mv [-fi] source destination
[root@linux ~]# mv [options] source1 source2 source3 … directory
参数:
-f :强制直接移动而不询问
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

2.3 取得路径的文件名称和目录名称

$ basename /etc/sysconfig/network 
 network #取得最后的文件名 
$ dirname /etc/sysconfig/network 
 /etc/sysconfig #取得目录名

3.查看文件

命令描述
cat从第一行开始显示文件内容
tac从最后一行开始显示文件内容
nl显示文件内容带行号
more一页一页的显示内容
less与more类似,可以向前翻页
head只看头几行
tail只看最后几行
od以二进制的方式读取文件

3.1 直接查看文件:cat,tac,nl

cat(concatenate)

用法:

[root@linux ~]# cat [-EnTv] 文件
参数:
-E :将结尾的断行字符 $ 显示出来
-n :打印出行号
-T :将 [tab] 按键以 ^I 显示出来
-v :列出一些看不出来的特殊字符

3.2 翻页查看文件:more,less

more

在运行more时,可以执行以下指令:

指令描述
空格键代表向下翻一页
enter代表向下翻一行
/字符串代表向下搜寻字符串
:f显示出文件名以及目前显示的行数
q退出more命令

less

在运行less时,可以执行以下指令:

指令描述
空格键代表向下翻一页
pagedown代表向下翻一页
pageup代表向上翻一页
/字符串代表向下搜寻字符串
?字符串代表向上搜寻字符串
n重复前一个搜寻(与/或?有关)
N反向的重复前一个搜寻(与/或?有关)
q退出less命令

3.3 截取查看文件:head,tail

head

用法:

#默认显示前10行
[root@linux ~]# head [-n number] 档案
参数:
-n :后面接数字,代表显示几行的意思

tail

用法:

[root@linux ~]# tail [-n number] 文件
参数:
-n :后面接数字,代表显示几行的意思

3.4 touch:修改文件时间或建立新文件

Linux下文件的三种时间:

  • mtime(modification time):文件内容变更的时间。
  • atime(access time):当文件被取用时,变更的时间。
  • ctime(status time):当文件状态变更时,变更时间(例如属性变化)。
#查看不同的时间,默认情况下ls显示的是mtime
$ ls -l /etc/main.config
$ ls -l --time=atime /etc/main.config
$ ls -l --time=ctime /etc/main.config

用法:

[root@linux ~]# touch [-acdmt] 文件
参数:
-a :仅修订 access time;
-c :仅修改时间,而不建立文件;
-d :后面可以接日期,也可以使用 --date=“日期或时间”
-m :仅修改 mtime ;
-t :后面可以接时间,格式为[YYMMDDhhmm]

实例:

#修改文件,将日期调整为两天前
$ touch -d "2 days ago" demo.txt
#将日期改为2021/7/5 9:01
$ touch 2107050901 demo.txt

4.文件与目录权限

4.1 文件预设权限:umask

umask就是指定目前用户在建立文件或目录时候属性默认值。

查看的方式:

[root@linux ~]# umask 
0022 
[root@linux ~]# umask -S 
u=rwx,g=rx,o=rx

umask有四组数字,第一组是用户特殊权限用的,一般取决于后面三组。
在预设权限的属性上,目录与文件时不一样的。文件一般是不会赋予可执行权限的。

  • 用户建立文件则预设没有可执行权限,最大为666分,预设属性为:-rw-rw-rw-
  • 用户创建目录,最大分为777分,预设属性为:drwxrwxrwx

umask指的是该默认值需要减掉的权限,r、w、x分为为4、2、1分,umask为022,user并没有拿掉属性,group和other被拿掉了w这个属性,所以当用户创建文件或目录是的权限如下:

  • 文件:(-rw-rw-rw-) => (-rw–r--r–)
  • 目录:(drwxrwxrwx) => (drwxr-x-r-x)

设置umask:

$ umask 002

4.2 文件隐藏属性:chattr,lsattr

chattr(设定文件隐藏属性)

用法:

[root@linux ~]# chattr [±=][ASacdistu] 文件或目录名称
参数:
+ :增加某一个特殊参数,其它原本存在参数则不动
- :移除某一个特殊参数,其它原本存在参数则不动
= :设定一定,且仅有后面接的参数
A :文件(或目录)的存取时间 atime (access) 将不可被修改
S :将数据同步写入磁盘当中
a :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root
才能设定这个属性。
c :会自动的将此档案压缩,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存
d :当 dump(备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)不具有 dump 功能
i :让一个文件不能被删除、改名
s :被完全的移除出这个硬盘空间
u :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中

实例:

chattr +i demo #这个文件不能被删除

lsattr(显示隐藏属性)

用法:

[root@linux ~]# lsattr [-aR] 文件或目录
参数:
-a :将隐藏文件的属性也秀出来
-R :连同子目录的数据也一并列出来

4.3 文件特殊属性:SUID/SGID/SBIT

SUID

有s和t权限,是为了让一般用户在执行某些程序时,能暂时拥有该程序拥有者的权限。

例如道账号与密码的存放档案其实是 /etc/passwd 与 /etc/shadow 。 而 /etc/shadow 这个档案的权限是『-r--------』。且他的拥有者是 root 。但一般用户去更新自己的密码时,也可以存取这个密码文件。这就是s权限(-r-s–x--x)。s权限在user用户上,称为SUID。
SUID只可以用在二进制文件上,对于目录是无效的。

SGID

若s的权限在group上,就是SGID。SGID可以在目录和文件上设定。

  • 文件:如果SGID是设定在二进制文件上面,无论是使用者是谁,在执行该程序时,它的有效群组将会变成该程序的群组所有人。
  • 目录:如果SGID是设定在A目录上,则在A目录内所建立的文件或目录的group,将会是此A目录的group。

SBIT

只针对目录有效。

作用:在具有SBIT的目录下,用户若在该目录下具有w和x的权限,则当用户在该目录下建立文件或目录时,只要文件拥有者与root才有权力删除。

/tmp 本身的权限是(drwxrwxrwt), 在这样的权限内容下,任何人都可以在 /tmp 内
新增、修改文件,但仅有该文件/目录建立者与 root 能够删除自己的目录或文件。

权限设定

  • SUID为4
  • SGID为2
  • SBIT为1
[root@linux ~]# chmod 4755 test;ls -l test
-rwsr-xr-x
[root@linux ~]# chmod 6755 test;ls -l test
-rwsr-sr-x
[root@linux ~]# chmod 1755 test;ls -l test
-rwxr-xt-t
[root@linux ~]# chmod 7666 test;ls -l test
-rwSrwSrwT

4.4 文件类型:file

查看文件的类型。
用法:

file 文件名

5.文件的查找:which,whereis,locate,find

which(寻找可执行文件)

根据PATH变量中的路径,去搜寻可执行文件名。

用法:

[root@linux ~]# which [-a] command
参数:
-a :将所有可以找到的指令均列出

whereis(寻找特定文件)

用法:

[root@linux ~]# whereis 文件或目录名

Linux系统会将系统内的所有文件都记录在一个数据库文件里面,使用whereis或者locate时,都会以此数据库文件的内容为准。问题是找到的文件不一定是最新的,有可能是被已经删除的文件,因为数据库没有更新。

locate

用法:

locate filename

locate 寻找的数据是由已建立的数据库 /var/lib/slocate/ 里面的数据所搜寻到的,速度较快。对于新创建的数据可能搜索不到,因为数据库未更新。

find

用法:

[root@linux ~]# find [PATH] [option] [action]
参数:

  1. 与时间有关的参数:
    -atime n :n 为数字,意义为在 n 天之前被 access 过的文件
    -ctime n :n 为数字,意义为在 n 天之前被 change 过状态的文件
    -mtime n :n 为数字,意义为在 n 天之前被 modification 过的文件
    -newer file :file 为一个存在的文件,意思是说,只要文件比 file 还要新,就会被列出来
  1. 与使用者或群组名称有关的参数:
    -uid n :n 为数字,这个数字是使用者的账号 ID,亦即 UID
    -gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID
    -user name :name 为使用者账号名称
    -group name:name 为群组名称
  1. 与文件权限及名称有关的参数:
    -name filename:搜寻文件名称为 filename 的文件
    -size [±]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE有:
    c: 代表 byte, k: 代表 1024bytes
    -type TYPE :搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案 (f),装置档案 (b, c), 目录 (d),连结档 (l), socket (s),及 FIFO § 等属性。
    -perm mode :搜寻文件属性刚好等于mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755
  1. 额外可进行的动作:
    -exec command :command 为其它指令,-exec 后面可再接额外的指令来处理搜寻到
    的结果。
    -print :将结果打印到屏幕上,这个动作是预设动作

实例:

#将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
$ find / -mtime 0
#寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
$ find /etc -newer /etc/passwd
#搜寻 /home 底下属于 dmtsai 的文件 
$ find /home -user dmtsa
#找出名为 passwd 这个文件 
$ find / -name passwd
#搜寻文件属性为 f 的文件 
$ find /home -type f
#找出系统中,大于 1MB 的档案 
$ find / -size +1000k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值