Shell命令操作Linux文件系统

Shell命令操作Linux文件系统

文件夹介绍

Linux文件系统是计算机操作系统中的一个关键组成部分,它用于管理和组织计算机上的数据和信息。先到根目录,然后打印当前目录下文件:

bash 复制代码
cd / ; ls


  有一些比较常用的文件夹介绍如下:

/bin------包含常见Linux 用户命令,比如 ls、sort、date和l chmod。
  /home------包含分配给每个带有登录账号的普通用户的目录(root用户是一个例外,使用/root作为主目录)。
  /lib------包含/bin和/sbin目录中的应用程序启动系统所需的共享库。
  /mnt------在该目录被标准的/media目录取代之前,/mnt目录是许多设备常见的挂载点。一些可启动的Linux系统仍使用该目录来挂载硬盘分区和远程文件系统。此外很多人也在使用该目录来临时挂载那些不需要永久挂载的本地或者远程文件系统。
  /root---表示root用户的主目录。出于安全原因,该主目录没有位于/home目录之下。/sbin------包含管理命令和守护进程。
  /tmp------包含应用程序使用的临时文件。
  /usr------包含用户文档、游戏、图形文件(X11)、库(lib)以及其他不需要在启动过程中使用的命令和文件。/usr目录中的文件在安装完毕后就不可更改(从理论上讲,/usr可以以只读的方式挂载)。

文件夹常规命令

1. cd (Change Directory): cd命令用于改变当前工作目录。通过提供目标目录的路径作为参数,可以切换到其他目录。

2. pwd (Print Working Directory): pwd命令用于显示当前工作目录的完整路径。执行pwd后,会显示当前所在的目录路径。

3. ls (List): ls命令用于列出当前目录中的文件和子目录。默认情况下,它会列出当前目录的内容。可以使用不同的选项来控制列出的详细信息和排序方式。

4. mkdir (Make Directory): mkdir命令用于创建新的目录。可以指定要创建的目录的名称作为参数。

5. chmod (Change Mode): chmod命令用于更改文件或目录的权限。它允许控制哪些用户可以执行文件、读取文件或写入文件。chmod命令通常与权限模式(如755或644)一起使用,以确定权限设置。

虽然我们平时一个人的Linux平台用不到权限控制,但是一旦涉及多人场景、公司场景,权限控制就很必要了,chmod命令要认真学习。具体见下一节

文件夹权限控制⭐

首先在任意目录下输入:

bash 复制代码
ll


  输出如图,一共有7列:

· 文件类型和权限列(File Type and Permissions): 显示文件的类型和访问权限。通常包括像 -rw-r--r--drwxr-xr-x 这样的字符,其中第一个字符表示文件类型,后面的九个字符分为三组,每组三个字符代表文件的访问权限。例如,-rw-r--r-- 表示一个普通文件,它的权限设置是允许所有者读写,但只允许其他用户只读。

· 硬链接数列(Hard Links): 这一列表示与该文件或目录关联的硬链接数量。硬链接是指多个文件名指向相同的数据块的情况。通常,普通文件的硬链接数为1,目录的硬链接数至少为2(因为每个目录至少有两个链接:一个指向自身,一个指向上级目录)。

· 所有者列(Owner): 显示文件或目录的所有者的用户名。

· 所属组列(Group): 显示文件或目录所属的用户组的名称。

· 文件大小列(File Size): 显示文件或目录的大小,通常以字节为单位。对于目录,大小通常是目录中所有文件和子目录的总和。

· 修改时间或创建时间列(Modification Time or Creation Time): 显示文件或目录的最后修改时间。

· 文件名或目录名列(File Name or Directory Name): 这一列显示了文件或目录的名称。

文件类型和权限

文件类型:

1. 普通文件(Regular File): 普通文件包含文本、二进制数据或程序代码等信息。在文件类型表示中,以 - 开头。例如,-rw-r--r-- 表示一个普通文件。

2. 目录(Directory): 目录是用于组织和存储文件和其他目录的特殊文件类型。在文件类型表示中,以 d 开头。例如,drwxr-xr-x 表示一个目录。

3. 符号链接(Symbolic Link): 符号链接是指向其他文件或目录的引用。它们是一种特殊类型的文件,用于创建文件和目录之间的链接。在文件类型表示中,以 l 开头。例如,lrwxrwxrwx 表示一个符号链接。

4. 设备文件(Device File): 设备文件用于与计算机硬件设备通信。有字符设备文件和块设备文件两种类型。字符设备文件用于处理字符流数据,块设备文件用于处理数据块。在文件类型表示中,字符设备文件以 c 开头,块设备文件 b 开头。

5. 管道文件(Named Pipe): 管道文件用于进程间通信,允许一个进程将数据传输给另一个进程。在文件类型表示中,以 p 开头。

6. 套接字文件(Socket): 套接字文件用于网络通信,允许进程通过网络连接进行通信。在文件类型表示中,以 s 开头。

权限:

文件和目录的权限决定了哪些用户可以执行以下操作:

  • 读取(Read): 允许用户查看文件的内容或目录的列表。
  • 写入(Write): 允许用户修改文件的内容或目录的结构。
  • 执行(Execute): 对于文件,允许用户执行其中包含的程序;对于目录,允许用户访问其中的内容。

权限表示为一组三个字符,分别表示文件所有者的权限、所属用户组的权限和其他用户的权限。每个权限可以用以下字符表示:

  • r(Read): 表示读取权限。
  • w(Write): 表示写入权限。
  • x(Execute): 表示执行权限。

例如,-rw-r--r-- 表示文件的权限设置为允许所有者读写,但只允许其他用户只读。

使用 chmod 命令可以更改文件和目录的权限设置,以控制对它们的访问和操作。权限设置是Linux和Unix系统中的安全重要组成部分,它确保只有经过授权的用户能够访问和修改文件和目录。

修改文件权限

要修改文件或目录的权限,需要使用 chmod 命令。 chmod 命令允许添加或删除文件的读取(read)、写入(write)和执行(execute)权限,以及设置文件的所有者、所属用户组和其他用户的权限。

1. 基本 chmod 语法:

bash 复制代码
chmod [选项] 权限设置 文件或目录

2. 权限设置格式:

  • 使用数字表示权限:例如,chmod 755 myfile.txt 表示将文件 "myfile.txt" 的权限设置为所有者可读写执行,所属用户组和其他用户只有读和执行权限。
  • 使用符号表示权限:例如,chmod u+r myfile.txt 表示为文件 "myfile.txt" 添加所有者的读取权限。

设置权限有2种方式。第一种,r=4、w=2、x=1,那么7指的就是rwx,4指的是r--,3指的是-wx。第二种,通过u、g、o、a四种权限标识符结合+、-、=三种权限操作符,进行增加、删除、修改权限。

3. 常见选项:

  • -R:递归地修改目录及其内容的权限。
  • -v:显示每个文件权限修改的详细信息。

4. 权限标识符:

  • u:文件所有者。
  • g:所属用户组。
  • o:其他用户。
  • a:所有用户(等同于 ugo)。

5. 权限操作符:

  • +:添加权限。
  • -:删除权限。
  • =:设置权限。

下面举个例子展示 chmod 命令的用法,首先go.sh的权限是drwxr-xr-x

  • 删除其他用户的执行权限:
bash 复制代码
chmod o-x go.sh
  • 添加写权限给用户组:
bash 复制代码
chmod g+w go.sh
  • 使用数字模式将文件 "go.sh" 设置为可执行权限:
bash 复制代码
chmod 755 go.sh

移动、复制、删除文件夹

移动文件夹(重命名文件夹): 使用 mv 命令来移动文件夹或重命名。如果提供新的目标路径,会移动文件夹到新位置。如果把新的名称作为目标路径,会重命名文件夹。例如,要把文件夹 "myfolder" 移动到新位置或重命名为 "newfolder",可以执行命令:

bash 复制代码
mv myfolder newfolder

复制文件夹: 使用 cp 命令复制文件夹及其内容。要复制文件夹 "myfolder" 到新位置 "backup",可以执行命令:

bash 复制代码
cp -r myfolder backup

-r 选项表示递归地复制文件夹及其内容。如果想保留原始文件夹不变并复制其内容到新位置,可以省略 -r 选项。

删除文件夹: 使用 rm 命令删除文件夹及其内容。要删除文件夹 "myfolder",可以执行命令:

bash 复制代码
rm -r myfolder

-r 选项表示递归删除文件夹及其内容。要小心使用 rm 命令,因为它会永久删除文件夹及其内容。确保在执行删除操作之前确认我们的删除操作。

相关推荐
yufei-coder1 小时前
掌握 C# 中的 LINQ(语言集成查询)
windows·vscode·c#·visual studio
韩楚风3 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学3 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO3 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu74 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我4 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、4 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程4 小时前
Linux中环境变量
linux
我是哈哈hh4 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
郭二哈4 小时前
C++——模板进阶、继承
java·服务器·c++