Linux文件与目录管理

相对路径与绝对路径

  • 相对路径:是相对与当前所在路径而言,即当前路径不同,指向绝对路径一样的文件与目录时相对路径也是不同的。
  • 几个特殊的相对路径
  1. .:当前路径;
  2. ..:当前路径的上级路径;
  3. ~:当前登录用户的home路径,root的home路径为/root,一般用户的home路径在/home下;
  4. ~[账号名]:账号名对应的home路径;
  5. -:前一个工作目录;
  6. 根目录下也存在.和…目录,跟目录的上层…与根目录.是同一个目录。
  • 绝对路径:即以/表示的路径都为绝对路径,一般若果要写shell脚本,通常都用绝对路径。

目录文件的相关操作

  • 打印当前工作目录:pwd
#pwd [-LP] (print work directory,打印当前工作目录),L逻辑路径,P物理路径
pwd
  • 切换工作目录:cd
#cd (change directory,切换工作目录)
#切换到上级目录
cd ..
#切换到当前用户的home目录
cd ~
#切换到上一个工作目录
cd -
#切换到/opt
cd /opt
#切换到当前工作目录的上级目录下的cumt目录
cd ../cumt
  • 新建目录:mkdir
    在这里插入图片描述
#mkdir [-mpvZ] (make directory,新建目录),m指定目录权限,p一次创建多级目录
mkdir test1
mkdir -p test2/test3/test4
mkdir -m 744 test5
  • 删除空目录:rmdir
    在这里插入图片描述
#rmdir [-pv] (remove directory,删除空目录),p连同父目录一起删除
rmdir test1
rmdir -p test2/test3/test4

删除目录需要一层一层的删除才行,并且被删除的目录里面不能存在其他目录或文件,如果需要在目录下的所有东西都删除则可使用 rm -f test。

  • 查看目录下面的内容:ls
    在这里插入图片描述
#ls [-aAdfFhilnrRSt] [--color={never,auto,always}] [--full-time] (list,列出目录下内容)
#-a:全部文件,包括隐藏文件与.和..
#-A:全部文件,包括隐藏文件,不包括.和..
#-d:仅列出目录本身
#-f:直接列出结果而不排序
#-F:根据文件目录等信息,给予附加数据结构
#-h:将文件容量已人类易读的方式列出
#-i:列出inode号码
#-l:详细信息,包括文件的属性与权限
#-n:列出uid与gid,而非用户与用户组的名称
#-r:将排序结果反向显示
#-R:连同子目录一起列出
#-S:以文件大小排序
#-t:根据时间排序,而不是以文件名
#--color=never:不要依据文件特性给予颜色
#--color=auto:让系统依据设置判断是否给予颜色
#--color=always:显示颜色
#--full-time:以完整的时间模式显示
#由于-l使用的比较多,ll相当于ls -l
  • 复制文件:cp,除了文件复制,还可以建立链接文件,比对两个文件的新旧以更新,以及复制整个目录
    在这里插入图片描述
#cp [-adfilprsu] (copy,复制文件或目录)
#-a:相当于-dr --preserve=all 的意思
#-d:若源文件为链接文件,则复制链接文件属性而非文件本身
#-f:为强制的意思,若目标文存在则删除后再复制
#-i:若目标文件存在,在覆盖时会先询问操作的进行
#-l:进行硬链接的链接文件爱你建立,而非复制文件爱你本身
#-p:连同文件的属性(权限、用户、时间)一起复制,而非使用默认属性
#-r:递归复制,用于目录的复制的操作
#-s:复制为符号链接文件
#-u:更新的意思,当目标文件比源文件旧时更新或目标文件不存在时复制
#--perserve=all:除了-p的权限相关参数外,还加入SELinux的属性,links、xattr等也复制过去
#如果源文件有两个以上,则最后一个目标文件一定是目录
  • 删除文件或目录:rm
    在这里插入图片描述
#rm [-fiIrR] (remove,删除文件或目录),
#-f:强制删除,文件不存在时不报错
#-i:以询问的方式进行操作(每次删除都询问)
#-I:以询问的方式进行操作(只询问一次)
#-r:递归删除常用于目录的删除
#-R:递归删除常用于目录的删除
rm -r test1
rm -i test2
rm -fr test3

为了防止文件被root误删,很多Linux发行版本都已经默认加入了-i这个选项。

  • 移动、重命名文件或目录:mv
#mv [-fiu] (move,移动、重命名文件或目录)
#-f:若目标文件存在则强制覆盖不会询问
#-i:若目标文件存在则询问是否覆盖
#-u:若目标文件存在且源文件比目标文件新时则更新
#rename也可以进行文件的重命名操作
  • 获取路径的文件名与路径名
#basename:获取文件名
#dirname:获取目录名
basename /home/cumt/test1/test2/test3
test3

dirname /home/cumt/test1/test2/test3
/home/cumt/test1/test2
  • 文件内容查看
  1. cat:由第一行看是显示文件内容
  2. tac:从最后一行开始显示内容
  3. nl:显示的时候,同时输出行号
  4. more:一页一页地显示文件内容
  5. less:与more类似但是比more更好的是可以向前翻页
  6. head:只看前面几行
  7. tail:只看后面几行
  8. od:以二进制的方式读取文件爱你内容
#cat [-AbEnTv] (concatenate)
#-A:相当于-vET的整合选项
#-b:列出行号,仅针对非空白行做行号显示,空白行不标行号
#-E:将结尾的换行符$显示出来
#-n:打印行号,连同空白行
#-T:将tab按键以^I显示出来
#-v:列出一些看不见的特殊符号
cat -n test1
#tac与cat功能类似,将内容从最后一行看是显示,tac正好是cat的反写
tac -b test1
#nl [-bnw] 
#-b:指定行号指定的方式,主要有两种(a:表示不论是否空行都显示行号;t:如果为空行,则不显示行号)
#-n:列出行号表示的方法,主要有三种(ln:行号在屏幕左方显示;rn:行号在栏位的最右方显示,且不加0;rz:行号在栏位的最右方显示,且加0)
#-w:行号栏位的占用的字符数
#more 如果文件内容超过整个屏幕的显示范围时,内容将分页显示,屏幕的最后一行显示目前内容的百分比,而且可以输入一些命令
#空格键:向下翻页
#Enter:向下翻页
#/字符串:在显示的内容当中向下查找该字符串
#:f:立即显示出文件名以及目前显示的行数
#q:离开more
#b或ctrl+b:向上翻页,不过这个操作只对文件有用
more /etc/passwd
#less:一页一页的翻动文件内容,可以向前也可以向后
#空格键:向下翻页
#pagdown:向下翻页
#pageup:向上翻页
#/字符串:向下查找字符串
#?字符串:向上查找字符串
#n:重复前一个查找
#N:反向的重复前一个查找
#g:前进到这个数据的第一行
#G:前进到这个数据的最后一行
#q:离开less
less /etc/group
#head [-n number] (查看文件的头几行内容)
#-n:后面接数字,代表显示几行内容,如果不加则默认显示10行,如果number为负数则表示显示从文件末尾开始除去number行后的内容
head -n 100 /etc/group
#tail [-f] [-n nunber] (查看文件的后几行内容)如果不加则默认显示10行,如果number为正数则表示显示从文件头开始除去number行后的内容
#-n:后面接数字,代表显示几行内容
#-f:持续刷新显示后面所接的文件的内容
tail -f -n 200 /var/logs/logfile.log

head -n 20 /etc/man_db.conf | tail -n 10
#取/etc/man_db.conf的第11行到20行内容,这两个命令中间有个管道(|)符号存在,表示前面命令输出的信息通过管道交由后续的命令继续使用
cat -n /etc/man_db.conf | head -n 20 | tail -n 10
#od [-t type](读取二进制文件内容)
od -t c /usr/bin/passwd
  • 修改文件时间或是创建新文件:touch
  1. 修改时间(modification time,mtime):当该文件的内容数据被更改时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性或权限。
  2. 状态时间(status time,ctime):当该文件的状态改变时就会更新这个时间,例如权限与属性变更。
  3. 读取时间(access time, atime):当文件的内容被读取了就会更新这个读取时间,例如使用cat去读取/etc/man_db.conf就会更新该文件爱你的atime。
#touch [-acdmt] 文件
#-a:仅自定义access time
#-c:仅修改文件的时间,若该文件不存在则不建立新文件
#-d:后面可以接自定义的日期而不是目前的日期,也可以使用--date="日期或时间"
#-m:仅修改mtime
#-t:后面可以接自定义的时间而不是目前的时间,格式为[YYYYMMDDhhmm]
  • chattr修改文件或目录的隐藏属性(只有在ext2\ext3\ext4才能完整的支持)
#chattr [+-=] [ASacdistu] 文件或目录名称
#+:增加某一特殊参数
#-:删除某一特殊参数
#=:直接设置参数
#A:设置这个参数,atime将不会被修改
#S:当你进行任何文件的修改,修改会同步写入磁盘
#a:设置这个参数后,文件将只能增加数据,而不能删除也不能修改数据
#c:设置这个参数,自动将此文件压缩,读取时自动解压
#d:当dump程序执行时,设置这个参数可使该文件不会被dump备份
#i:设置这个参数,不能删除文件、修改名字、设置链接、不能写入数据
#s:设置这个参数,若文件被删除则别完全的从硬盘删除,无法恢复
#u:设置这个参数,若文件被删除则数据内容其实还存在磁盘中,可以使用来恢复该文件 
  • lsattr查看文件或目录的隐藏属性
#lsattr [-adR] 文件或目录
#-a:将隐藏文件的属性也显示出来
#-d:如果接的是目录,则仅显示目录本身
#-R:连同子目录的数据也也一起显示出来
lsattr /home/cumt
  • 文件的默认权限:umask就是指定目前用户在建立文件或目录时候的权限默认值。新建文件默认是没有可执行权限(x)的。
  1. 查看umask
#umas结果有四组,第一组是特殊权限用的,后面三组分别对应user、group和other,其值代表没有的权限值。
umask

umask -S

在这里插入图片描述

  1. 设置umask
umask 022
  • 文件的特殊权限SUID、SGID、SBIT
    1.当s这个标志出现在文件拥有者的x权限上时则称为Set UID。 SUID的限制与功能:
    SUID权限仅对二进制程序有效
    执行者对于该程序需要具有x的可执行权限
    本权限仅在执行该程序的过程中有效
    执行者将具有该程序拥有者(owner)的权限
    SUID对于目录是无效的
    2.当s标志出现在用户组的x权限上时则称为Set GID。SGID的功能
    SGID可以用来设置文件和目录
    SGID对于二进制程序有用
    程序的执行者对于该程序来说需要具备x的权限
    执行者在执行的过程中将会获得该程序用户组的支持
    3.Sticky Bit目前只针对目录有效。SBIT的作用
    当用户对于此目录具有w、x权限,即具有写入的权限
    当用户在该目录下建立的文件或目录时只有自己与root才有权力删除该文件或目录
    4.SUID\SGID\SBIT的设置
    4和u+s为SUID
    2和g+s为SGID
    1和o+t为SBIT
    例如:
    chmod 4755 filename
    chmod u=rwxs,g=r-s,o=r-x

    • 查看文件类型:file
#file filename
file filename
  • 脚本文件的查找:which
#which [-a] command
#-a:列出PATH中可以找到的所有命令,而非第一个被找到的命令
which -a ls
  • 文件的查找:find、whereis、locate
    在这里插入图片描述
#find [PATH] [option] [action] 查找速度慢且影响硬盘性能
#与时间有关的参数:共有-atime,-atime,-ctime
#	-mtime n:n为数字,意义为在n天之前(一天之内)的被修改过内容的文件
#	-mtime +n:列出在n天之前(不含n天本身)被修改过内容的文件
#	-mtime -n:列出在n天之后(含n天本身)被修改过内容的文件爱你
#-uid n:查找使用者id为n的文件或目录
#-gid n:查找用户组id为n的文件或目录
#-user name:查找owner为name的文件或目录
#-group namme:查找用户组为name的文件或目录
#-nouser:查找的文件的拥有者不在/etc/passwd中
#-nogroup:查找的文件的用户组不在/etc/group中
#name filename:查找文件名为filename的文件
#size [+-]SIZE:查找比SIZE还有大(+)或还要小(-)的文件,这个SIZE的规格有c:Bytes,k:1024Bytes
#-type TYPE:查找文件的类型,类型主要有:f:一般正规文件,b,c:设备文件,d:目录,l:链接文件,s:socket,p:FIFO
#-perm -mode:查找文件属性为mode的文件
#-perm /mode:查找文件属性包含任一mode的权限的文件
#-exec command:command为其他命令,也可以再接额外的命令来处理查找到的结果
#-print:将结果打印到屏幕上,这是默认操作


#whereis [-lbmsu] 文件或目录(相对find来说速度快,主要是因为whereis只查几个特定的目录)
#-l:列出whereis会去查询的几个主要目录
#-b:只找二进制格式的文件
#-m:只找在说明文件manual路径下的文件
#-s:只找source源文件
#-u:只找不在上述3个项目当中的其他特殊文件
whereis ifconfig

#locate [-iclSr] keyword(速度块是因为基于数据库查找,而非扫描硬盘 )
#-i:忽略大小写的差异
#-c:不输出文件名,仅输出找到的文件数量
#-l:仅输出几行的意思,例如输出五行则是-l 5
#-S:输出locale所使用的数据库文件的相关信息
#-r:后面可接正则表达式的显示方式
locate passwd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值