Linxu上文件目录管理

Linux文件目录管理

1.Linux文件系统的架构

文件系统中主要目录的内容

目录内容
/bin构建最小系统所需要的命令(最常用的命令)
/boot内核与启动文件
/dev各种设备文件
/etc系统软件的启动和配置文件
/home用户的主目录
/libC编译器的库
/media可移动介质的安装点
/opt可选的应用软件包(很少使用)
/proc进程的映像
/root超级用户root的主目录
/sbin和系统操作有关的命令
/tmp临时文件存放点
/usr非系统的程序和命令
/var系统专用的数据和配置文件

2.建立文件和目录

建立目录

mkdir temp				# 新建目录
mkdir temp1 temp2		# 创建两个目录
mkdir ~/temp			# 用绝对路径创建目录
mkdir -p /temp/file		# 完整地建立子目录

建立空文件

touch hello.c			# 建立hello.c文件

文件已存在时,touch命令可以更新其建立日期和时间

image-20210704164843202

image-20210704164853330

touch命令在备份和整理文件时非常实用,可以让程序知道那些文件已经是备份或整理过了

3.文件的移动、复制和删除

3.1 移动和重命名:mv

$ mv hello.c bin/		# 把文件hello.c移动到bin目录下
$ mv photos/ desktop/	# 把目录photo移动到目录desktop
$ mv hello.c hello1.c	# 把文件hello.c重命名位hello1.c

-a选项将在移动重名文件时询问是否覆盖

-b选项则在文件重名时在同名文件后面加一个"~"符号

3.2 复制文件和目录:cp

$ cp file test/			# 把文件file复制到目录test下

同时,cp命令也是默认不询问覆盖的,可以使用-a-b选项解决覆盖问题

-r可以将子目录连同其中的文件一并复制,例如

$ cp -r test/ desktop/	# 把目录test和其中的子目录包括文件都复制到目录desktop下

3.3 删除目录和文件:rmdir 和 rm

rmdir命令用于删除空目录,如果目录有内容,则无法删除

rm命令用于删除目录和文件,例如

$ rm test			# 删除test文件
rm:是否删除 普通空文件“test”?("Y" or "N"?)

$ rm -r test		# 不询问默认回答Y
$ rm -f temp/		# 删除目录和目录下所有递归出来的子目录和文件

tips:谨慎使用-rf,因为该选项会不询问直接删除目录下所有文件

4.文件和目录权限

文件和目录有3种权限:读取(r),写入(w)和执行(x)

image-20210704215254815

image-20210704215322087

4.1 改变文件所有权:chown 和 chgrp

$ ls -l
-rw-rw-r--. 1 daniel daniel 0 7月   4 22:01 file
$ sudo chown daniel:root file	# 改变文件属主为daniel属组为root组
-rw-rw-r--. 1 daniel root 0 7月   4 22:01 file
$ sudo chown :daniel file		# 改变文件属组为daniel组
-rw-rw-r--. 1 daniel daniel 0 7月   4 22:01 file

chown提供了**-R**选项,该选项能够更改一个目录下所有文件的所有权

剩下的chgrp只能实现设置文件或目录的属组,同样也有**-R**选项

4.2 改变文件权限:chmod

chmod命令使用**“用户组 +/- 权限”**的表述方式来增加或删除相应的权限

$ chmod u+x file
$ chmod ugo-rwx file
# 其中 u代表用户(usr),g代表用户组(group),o代表其他人(other);
# +或-分别代表增加或删除权限,rwx也就是读权限、写权限和执行权限
$ chmod o=u file		# 另外一种写法,表示把u的权限赋给o

4.3 八进制表示权限

image-20210704222430181

$ chmod 777 file
$ ls -l
-rwxrwxrwx. 1 daniel daniel 0 7月   4 22:01 file

5.文件类型

5.1 查看文件类型

ls -l显示的第一个字符就是文件类型

image-20210704223026391

文件类型有以下几种:

image-20210704223107681

5.2 建立链接:ln

Linux中有两种链接,分别为:软连接和硬连接

软连接又称为符号连接,相当于Windows中的快捷方式,原文件被删除了,则连接文件也随之失效

# 为文件创建软连接文件
$ ln -s file mfile
$ ll
-rwxrwxrwx. 1 daniel daniel 0 7月   4 22:01 file
lrwxrwxrwx. 1 daniel daniel 4 7月   4 22:43 mfile -> file	# 文件类型为l(链接文件)

硬连接,相当于创建了一个新的文件,该文件相当于跟原文件指向了同一块内存区域的指针,因此,删除其中某一个并不会影响其他文件访问,若想删除整个文件,则必须删除所有有关的硬连接文件

# 为文件创建硬连接文件
$ ln file my_file
$ ll
-rw-rw-r--. 2 daniel daniel 0 7月   4 22:46 file			
-rw-rw-r--. 2 daniel daniel 0 7月   4 22:46 my_file		# 文件类型为-(普通文件)

实际工作中,一般都是使用符号连接(软连接),硬连接已经很少使用

6.输入输出重定向和管道

6.1 输出重定向

程序在默认情况下输出结果的地方被称为标准输出(stdout)。通常来说,标准输出总是指向显示器

image-20210704230620364

输出重定向符号:">",可以将输出到别的文件中,但会覆盖掉源文件的内容,如果想要追加内容而不覆盖,可以使用输出重定向符号**“>>”**,就会将新内容追加到原有文件内容末尾

6.2 输入重定向

和标准输出类似,程序默认情况下接收输入的地方被称为标准输入(stdin)。通常来说,标准输入总是指向键盘。

输入重定向:“<”或者“<<”,但是输入重定向不常被使用

6.3 管道:|

管道将一条命令的输出连接到另一条命令的输入,例如:

$ history | grep rm			# 查找history中和rm字符串匹配的有关的命令
   56  apropos system information
   57  apropos print system information
   65  rm fle 
   98  rm -r mfile
  101  rm -f mmfile 
  108  rm -f file
  110  rm -f mfile 
  123  rm file
  143  history | grep rm

image-20210704232217498
管道在某些场景下很有用,能写出很高效的shell命令,尽管这些命令看起来比较复杂,合理利用管道是提高工作效率的有效手段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值