From 6655bfc22f3aa3c0cc37880b0d259e426559ca9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=80=A9=E5=80=A9?= <2294221913@qq.com> Date: Thu, 23 May 2024 19:42:57 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=9C=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...72\347\241\200\345\221\275\344\273\244.md" | 301 ++++++++++++++ ...34\346\226\207\344\273\266\345\244\271.md" | 93 ----- ...66\345\244\271\347\256\241\347\220\206.md" | 0 ...07\344\273\266\347\256\241\347\220\206.md" | 366 ++++++++++++++++++ 4 files changed, 667 insertions(+), 93 deletions(-) create mode 100644 "41 \351\231\210\345\200\251\345\200\251/20240520_Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" delete mode 100644 "41 \351\231\210\345\200\251\345\200\251/20240520_\344\275\277\347\224\250\345\221\275\344\273\244\346\223\215\344\275\234\346\226\207\344\273\266\345\244\271.md" rename "41 \351\231\210\345\200\251\345\200\251/20240521_\346\226\207\344\273\266\347\256\241\347\220\206.md" => "41 \351\231\210\345\200\251\345\200\251/20240521_\346\226\207\344\273\266&\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206.md" (100%) create mode 100644 "41 \351\231\210\345\200\251\345\200\251/20240522_\346\226\207\344\273\266\347\256\241\347\220\206.md" diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240520_Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" "b/41 \351\231\210\345\200\251\345\200\251/20240520_Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" new file mode 100644 index 0000000..2e74997 --- /dev/null +++ "b/41 \351\231\210\345\200\251\345\200\251/20240520_Linux\345\237\272\347\241\200\345\221\275\344\273\244.md" @@ -0,0 +1,301 @@ +## Debian Linux 目录结构简介 + +Debian Linux采用了典型的Linux文件系统结构,以下是其主要目录结构: + +```csharp +/ # 这是文件系统的起点。所有的目录和文件都从这里开始。 +├── bin # 常规执行程序的存放位置,普通用户 +├── boot # 包含引导加载程序和内核文件 +├── dev # 包含设备文件 +├── etc # 存放系统配置文件 +├── home # 普通用户的家目录所在地 +├── lib # 存放系统库文件 +├── media # 用于挂载可移动介质的挂载点 +├── mnt # 用于手动挂载临时文件系统的挂载点 mount +├── opt # 可选的第三方软件包的安装目录 +├── proc # 虚拟文件系统,提供有关系统和运行进程的信息 +├── root # root用户的家目录 +├── run # 运行时临时文件目录 +├── sbin # 存放系统管理员需要的系统管理命令 +├── srv # 存放服务的数据目录 +├── sys # 包含虚拟文件系统,如文件系统相关的信息和统计数据 +├── tmp # 临时文件目录 a +├── usr # 包含大部分用户安装的程序和文件 +├── var # 包含经常变化的文件,如日志文件、缓存文件等 +└── lost+found# 文件系统检查程序将损坏的文件片段放置在此处 +``` + +现在我们来逐一解释每个目录的作用,并给出相应的示例。 + +# Linux文件系统目录结构 + +## / + +`/` 目录是Linux文件系统的根目录,包含了整个文件系统的基础结构。 + +### /bin + +`/bin` 目录是“binary”的缩写,存放着系统启动时需要的最基本的命令。这些命令通常是所有用户都需要的,因此放在这个目录下。它包含一些最常用的命令,如 `ls`、`cp`、`mv` 等,用于列出目录内容、复制文件、移动文件等常见操作。程序的成品目录。===》源码--》编译得到二进制的成品 + +#### 示例 + +```bash +/bin/ls # 列出当前目录内容 +/bin/cp # 复制文件 +/bin/mv # 移动文件 +``` + +------ + +### /boot + +`/boot` 目录包含了引导加载程序以及内核文件。在系统启动时,计算机首先加载引导加载程序,然后引导加载程序再加载内核文件,从而启动操作系统。 + +#### 示例 + +```bash +/boot/grub/ # 存放 GRUB 引导加载程序相关文件 +/boot/vmlinuz-5.10.0-10-amd64 # Linux 内核文件 +``` + +### /dev + +`/dev` 目录包含了设备文件,这些文件用于与系统中的硬件设备进行通信。在Linux中,一切皆文件,因此硬件设备也被抽象为文件的形式存在于 `/dev` 目录中。 + +#### 示例 + +```bash +/dev/sda # 硬盘设备文件 +/dev/ttyUSB0 # USB 串行设备文件 +``` + +### /etc + +`/etc` 目录存放系统的配置文件。这些配置文件包括各种应用程序、服务以及系统本身的配置信息,如网络配置、软件包管理器配置等。 + +#### 示例 + +```bash +/etc/network/interfaces # 网络接口配置文件 +/etc/apt/sources.list # APT 软件源配置文件 +/etc/nginx/nginx.conf # nginx软件配置文件 +/etc/ssh/sshd_config # sshd服务端配置文件 +``` + +### /home + +`/home` 用户的家目录,每个用户都有一个以其用户名命名的目录。每个用户都有一个独立的家目录,用于存放其个人文件和设置。 + +#### 示例 + +```bash +/home/user1/ # 用户1的家目录 +/home/user2/ # 用户2的家目录 +``` + +### /lib + +`/lib` 目录存放着系统所需的共享库文件,这些库文件为系统运行时所必需的。在系统启动过程中,引导加载程序会加载这些共享库,以便其他程序能够正常运行。 + +#### 示例 + +```bash +/lib/x86_64-linux-gnu/libc.so.6 # C标准库 +/lib/x86_64-linux-gnu/libm.so.6 # 数学库 +``` + +### /media + +`/media` 目录是用于挂载可移动介质的挂载点。当插入可移动介质(如USB闪存驱动器、光盘等)时,系统会将其挂载到此目录下,用户可以通过该目录访问其内容。 + +#### 示例 + +```bash +/media/usb/ # 挂载 USB 闪存驱动器 +/media/cdrom/ # 挂载光盘 +``` + +### /mnt + +`/mnt` 目录是用于手动挂载临时文件系统的挂载点。通常情况下,可移动介质等临时挂载的文件系统会被挂载到 `/media` 目录下,而 `/mnt` 目录则用于手动挂载其他临时文件系统,如远程文件系统等。 + +#### 示例 + +```bash +/mnt/remote_fs/ # 手动挂载远程文件系统 +``` + +### /opt + +`/opt` 目录是可选的第三方软件包的安装目录。一些软件包可能选择将其安装到 `/opt` 目录下,而不是 `/usr` 目录下,以便更好地管理。 + +#### 示例 + +```bash +/opt/google/chrome/ # Google Chrome 浏览器安装目录 +``` + +### /proc + +`/proc` 目录是一个虚拟文件系统,它提供了有关系统和运行进程的信息。在 `/proc` 目录下,每个运行的进程都有一个对应的子目录,其中包含了有关该进程的详细信息。 + +#### 示例 + +```bash +/proc/cpuinfo # CPU 信息 +/proc/meminfo # 内存信息 +``` + +### /root + +`/root` 目录是root用户的家目录。与普通用户的家目录类似,root用户也有一个独立的家目录,用于存放其个人文件和设置。 + +#### 示例 + +```bash +/root/ # root 用户的家目录 +``` + +### /run + +`/run` 目录是一个运行时临时文件目录,用于存放系统启动过程中产生的临时文件以及运行时需要的其他临时文件。 + +#### 示例 + +```bash +/run/user/1000/ # 用户1000的运行时临时文件目录 +``` + +### /sbin + +`/sbin` 目录存放着系统管理员需要的系统管理命令。与 `/bin` 目录类似,但 `/sbin` 目录中的命令通常只能由系统管理员或具有管理员权限的用户执行。 + +#### 示例 + +```bash +/sbin/reboot # 重启系统命令 +/sbin/ifconfig # 配置网络接口命令 +``` + +### /srv + +`/srv` 目录存放着服务的数据目录。一些服务可能会将其数据文件存放在 `/srv` 目录下,以便更好地管理和组织。 + +#### 示例 + +```bash +/srv/www/ # Web 服务器数据目录 +``` + +### /sys + +`/sys` 目录包含了一个虚拟文件系统,用于提供关于系统硬件设备的信息以及与这些设备的交互接口。与 `/proc` 目录类似,但 `/sys` 目录提供的信息更加详细和底层。 + +#### 示例 + +```bash +/sys/class/net/eth0/ # 网络接口 eth0 的相关信息 +``` + +### /tmp + +`/tmp` 目录是一个临时文件目录,用于存放临时文件。该目录中的文件通常在系统重启后会被删除,因此适合存放一些临时性的数据。 + +#### 示例 + +```bash +/tmp/tmpfile.txt # 临时文件 +``` + +### /usr + +`/usr` 目录包含了大部分用户安装的程序和文件。该目录下包含了各种应用程序、库文件、帮助文档等,是系统中最常用的目录之一。 + +#### 示例 + +```bash +/usr/bin/ # 用户可执行文件目录 +/usr/lib/ # 库文件目录 +/usr/share/doc/ # 文档目录 +``` + +### /var + +`/var` 目录包含了经常变化的文件,如日志文件、缓存文件、临时文件等。这些文件通常是由系统或运行中的服务产生的,因此需要定期清理和管理。 + +#### 示例 + +```bash +/var/log/syslog # 系统日志文件 +/var/cache/apt/archives/ # APT 软件包缓存目录 +``` + +------ + +### /lost+found + +- 当文件系统被fsck(文件系统一致性检查工具)修复时,找到的孤立的文件片段会被存放在这里。 + +总的来说,Debian Linux的目录结构与通用的Linux文件系统目录结构基本相同,但可能会有一些特定于Debian的细微差异。 + +**例如:** + +```bash +/etc/apt/ # Debian软件包管理工具APT的配置文件目录。 +/var/log/ # Debian系统的日志文件目录。 +/var/cache/apt/ # APT软件包缓存目录。 +/usr/share/doc/ # Debian安装的软件包的文档目录。 +``` + + + +##### 作业 + +- 新建用户,密码设置,username(用户名) + + 1. 新增用户 **adduser** username + 2. 设置用户密码 **passwd** username + 3. 删除用户 **deluser** username +- 在刚建的用户中登录,操作如下 + +1. 使用命令在自己的家目录中递归的建立文件夹:国家/省份/市级/县(区)/镇(街道)/村(小区)/姓名 + + - 创建文件夹 + **mkdir -p** 国家/省份/市级/县(区)/镇(街道) + - 中文出错的:$'国家' + - 删除文件夹 + rm -rf 国家 删除递归文件夹,无需再示意提醒 + +2. 在姓名中建立一个自己学号+姓名的txt文件,并在此文件中写一篇日记 + + - 创建文件 + **touch 文件名.txt** + + - 编辑文件 + vim 文件名.txt + i 进入编辑 + esc :wq! 退出编辑,保存文件并退出 + +3. 将国家这个文件夹打包,同时会解压 + + - 打包 **tar -cvf 打包名 打包文件(可多个)** + - 解包 **tar -xvf 解包名** + + - 压缩 **gzip 压缩包名.gz 压缩文件名** + + - 解压 **gunzip -r 压缩包名.gz** + + - 一起使用 + + - **tar -czvf 打包并压缩** + - **tar -xzvf 解压并解包** + + - **&&**:可以连接多个命令的执行 + + - 将这个压缩包下载到本地电脑中(不得使用shell中自带的下载功能) + + - **scp 用户名@地址:要下载的文件夹路径 本地目标地址** + + - sftp 也可以实现 + - lls是查看本地文件,ls是所在查看服务器文件 + - get是下载,put是上传 \ No newline at end of file diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240520_\344\275\277\347\224\250\345\221\275\344\273\244\346\223\215\344\275\234\346\226\207\344\273\266\345\244\271.md" "b/41 \351\231\210\345\200\251\345\200\251/20240520_\344\275\277\347\224\250\345\221\275\344\273\244\346\223\215\344\275\234\346\226\207\344\273\266\345\244\271.md" deleted file mode 100644 index d929c30..0000000 --- "a/41 \351\231\210\345\200\251\345\200\251/20240520_\344\275\277\347\224\250\345\221\275\344\273\244\346\223\215\344\275\234\346\226\207\344\273\266\345\244\271.md" +++ /dev/null @@ -1,93 +0,0 @@ -### Linux目录结构 - -- /:根目录 -- /bin:普通用户常规执行程序的存放位置 -- /sbin:超级管理员常规执行程序的存放位置 -- /boot:包含引导加载文件和内核文件(尽量不动) -- /dev:包含设备文件 -- /etc:存放系统配置文件 -- /home:普通家目录 -- /root:超级管理员家目录 -- /proc:虚拟文件系统,运行进程的信息 -- /var:经常变化的文件 -- /tmp:包含临时文件,重启就没了 - -### Linux原则 - -- 严格区分大小写以及权限之分 -- 一切根源是/ -- 命令的空格不要遗漏或忘记 -- 命令格式: - -``` -命令名称 [命令选项] [命令参数] -``` - -### Linux命令 - -- echo命令 - - ``` - echo ['字符串'/`字符串`] [$变量] - // echo "你好" - ``` - -- 文件夹: - - - 创建 mkdir - - 复制 cp - - 删除 rm - - 移动 mv - - 切换 cd - - 显示当前目录 pwd - -##### 作业 - -- 新建用户,密码设置,username(用户名) - - 1. 新增用户 **adduser** username - 2. 设置用户密码 **passwd** username - 3. 删除用户 **deluser** username -- 在刚建的用户中登录,操作如下 - -1. 使用命令在自己的家目录中递归的建立文件夹:国家/省份/市级/县(区)/镇(街道)/村(小区)/姓名 - - - 创建文件夹 - **mkdir -p** 国家/省份/市级/县(区)/镇(街道) - - 中文出错的:$'国家' - - 删除文件夹 - rm -rf 国家 删除递归文件夹,无需再示意提醒 - -2. 在姓名中建立一个自己学号+姓名的txt文件,并在此文件中写一篇日记 - - - 创建文件 - **touch 文件名.txt** - - - 编辑文件 - vim 文件名.txt - i 进入编辑 - esc :wq! 退出编辑,保存文件并退出 - -3. 将国家这个文件夹打包,同时会解压 - - - 打包 **tar -cvf 打包名 打包文件(可多个)** - - 解包 **tar -xvf 解包名** - - - 压缩 **gzip 压缩包名.gz 压缩文件名** - - - 解压 **gunzip -r 压缩包名.gz** - - - 一起使用 - - - **tar -czvf 打包并压缩** - - **tar -xzvf 解压并解包** - - - **&&**:可以连接多个命令的执行 - - - 将这个压缩包下载到本地电脑中(不得使用shell中自带的下载功能) - - - **scp 用户名@地址:要下载的文件夹路径 本地目标地址** - - - sftp 也可以实现 - - lls是查看本地文件,ls是所在查看服务器文件 - - get是下载,put是上传 \ No newline at end of file diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240521_\346\226\207\344\273\266\347\256\241\347\220\206.md" "b/41 \351\231\210\345\200\251\345\200\251/20240521_\346\226\207\344\273\266&\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206.md" similarity index 100% rename from "41 \351\231\210\345\200\251\345\200\251/20240521_\346\226\207\344\273\266\347\256\241\347\220\206.md" rename to "41 \351\231\210\345\200\251\345\200\251/20240521_\346\226\207\344\273\266&\346\226\207\344\273\266\345\244\271\347\256\241\347\220\206.md" diff --git "a/41 \351\231\210\345\200\251\345\200\251/20240522_\346\226\207\344\273\266\347\256\241\347\220\206.md" "b/41 \351\231\210\345\200\251\345\200\251/20240522_\346\226\207\344\273\266\347\256\241\347\220\206.md" new file mode 100644 index 0000000..7faa352 --- /dev/null +++ "b/41 \351\231\210\345\200\251\345\200\251/20240522_\346\226\207\344\273\266\347\256\241\347\220\206.md" @@ -0,0 +1,366 @@ +在Linux系统中,你可以使用以下命令对文件夹和文件进行管理: + +1. **ls**:列出目录内容。 + + ```bash + ls #列出当前目录下的文件和目录 + ls 文件夹A #列出指定目录文件夹A下的文件和目录 + ls -d 文件夹A # 列出文件夹A本身的信息,而不是其它下面的目录和内容 + ls -a # all 列出当前目录下的所有文件和目录,包括隐藏文件/目录 + ls -l #以长格式列出当前目录下的文件和目录,包括权限、所有者、组、大小、创建日期等信息 + ls -h # 以易读的方式列出当前目录下的文件和目录,将文件大小以KB、MB\GB等单位表示 + ls -t # t->time 根据修改时间排序列出当前目录下的文件和目录 .默认是大到小 + ls -r # r -> reverse 反向排序列出当前目录下的文件和目录 + ls -S # S -> Size 根据文件大小排序列出当前目录下的文件和目录 + ls -R # 递归列出当前目录及其子目录下的所有文件和目录 + ls --color # --color(英文全拼:colorize 给着色 ) + # 以不同颜色区分不同类型的文件,例如蓝色表示目录、绿色表示可执行文件等。 + + ## 扩展如何修改环境变量 家目录下的自己的文件下,使用ls -a 显示所有文件,即可看到.bashrc这个环境变量的配置文件。将# alias ll='ls -l' 前的#号删除,并保存文件。最后要生效,就要退出帐号一次,再登录,即可使用ll来代替ls -l + alias la='ls -a' + alias l='ls -CF' + + ``` + +​ + +2. **cd**:改变当前目录。 + + - 进入某个目录:`cd 目录名` + - 返回上二级目录:`cd ../../` + - 返回家目录:`cd ~` 或者 `cd ` (啥也不跟): /home/用户名 + - 返回上次所在目录:`cd -` + +3. **pwd**:显示当前工作目录的绝对路径。 + + ```bash + pwd # 显示当前工作目录的绝对路径 + dir1 = $(pwd) # 将当前工作目录路径保存到变量中(在Shell脚本中常用) + echo $dir1 + ``` + + + +4. **mkdir**:创建新目录。 + + - 示例:`mkdir 目录名` + + ```bash + #场景:在当前位置创建一个新的目录 + mkdir 目录名 # 创建一个新目录 + + mkdir 路径/目录名 # 在指定路径下创建目录 + + #场景:在创建目录的同时,如果父目录不存在,则一并创建父目录。 + mkdir -p 父目录/新目录 # 创建多个目录,包括父目录(如果不存在) + # 通常在写脚本的时候,为避免已存在,或不存在某目录后续命令无法继续执行,在mkdir的时候,会加-p选项 + + #场景:创建一个具有特定权限的目录,可以用于设置目录的读写执行权限。 + mkdir -m 权限模式 目录名 # 创建具有特定权限的目录 + # mkdir -m 777 mydir + #场景:需要一个文件夹 + mkdir -p /tmp/新目录 # 创建临时目录,不长期保留,与用户文件隔离,避免暴露用户 + ``` + + + +5. **rmdir**:删除空目录。 + + - 示例:`rmdir 目录名` ,只能删除空的目录 + +6. **rm**:删除文件或目录。 + + ```bash + # ------------------- 删除文件 ------------------- + rm -i 文件名 # 删除指定的文件,删除前会询问是否删除(y 确认,n 取消)。 + rm -f 文件名 # 强制删除指定的文件,不会进行询问。 + rm -f a.txt b.txt # 同时删除多个文件:可以在命令中添加多个文件名,用空格分隔,如 。 + # mkdir,touch等操作也支持一次性操作多个目标。都是用空格隔开 + rm -f a* # 删除所有以 a 开头的文件 ;删除以特定字符或模式开头的文件:使用通配符* 。 + rm -f .* # 删除隐藏文件:使用 .*,如 (但请注意,这可能会删除当前目录下的所有隐藏文件,包括 . 和 ..,所以请谨慎使用)。 + ## 扩展 + mv example.txt .example.txt # 隐藏文件 + mv mydir .mydir # 隐藏目录 + # ------------------- 删除目录 ------------------- + rmdir 目录名 # 仅删除空的目录。 + rm -r 目录名 # 递归地删除目录及其子目录和文件,删除前会询问是否删除。 + rm -rf 目录名 # 递归地强制删除目录及其子目录和文件,不会进行询问。 + rm -rfv 目录名 # 除了递归强制删除外,还会显示删除的详细步骤。 + rm -d 目录名 # 只删除空目录(与 rmdir 命令类似)。 + ``` + + + +7. **cp**:复制文件或目录。 + + - 复制文件:`cp 源文件 目标文件` + - 复制文件到目录: cp 源文件 目标目录 + - 复制目录:`cp -r 源目录 目标目录` + + `cp` 是 Linux 和 Unix 系统中用于复制文件或目录的命令。以下是 `cp` 命令的一些常见用法: + + 1. **复制单个文件**: + + + ```bash +cp source_file destination_file + ``` + + 例如,将 `example.txt` 复制到 `new_example.txt`: + + + ```bash +cp example.txt new_example.txt + ``` + + 2. **复制文件到目录**: + + + ```bash +cp source_file destination_directory/ + ``` + + 例如,将 `example.txt` 复制到 `target_dir` 目录: + + + ```bash +cp example.txt target_dir/ + ``` + + 3. **递归复制目录**: + 使用 `-r` 或 `-R` 选项可以递归地复制目录及其内容。 + + + ```bash +cp -r source_directory destination_directory/ + ``` + + 例如,将 `source_dir` 目录及其内容复制到 `target_dir`: + + + ```bash +cp -r source_dir target_dir/ + ``` + + 4. **交互式复制**: + 使用 `-i` 选项,在覆盖已存在的文件前会提示用户确认。 + + + ```bash +cp -i source_file destination_file + ``` + + 5. **保留文件属性**: + 使用 `-p` 选项可以保留原文件的属性(如时间戳、权限等)。 + + + ```bash +cp -p source_file destination_file + ``` + + 6. **显示复制进度**: + 使用 `-v` 选项可以显示详细的复制进度信息。 + + + ```bash +cp -v source_file destination_file + ``` + + 7. **仅当源文件较新时复制**: + 使用 `-u` 选项可以仅当源文件比目标文件新时才进行复制。 + + + ```bash +cp -u source_file destination_file + ``` + + 8. **强制复制**: + 使用 `-f` 或 `--force` 选项可以强制复制,即使目标文件已存在也不提示,直接覆盖。 + + + ```bash +cp -f source_file destination_file + ``` + + 9. **批量复制文件**: + 可以使用通配符(如 `*`)来批量复制文件。 + + + ```bash +cp *.txt destination_directory/ + ``` + + 这将复制当前目录下所有 `.txt` 结尾的文件到 `destination_directory` 目录。 + + 这只是 `cp` 命令的一些基本用法,实际上它还有许多其他选项和功能。你可以通过运行 `man cp` 或 `cp --help` 来查看完整的命令手册和选项列表。 + +8. **mv**:移动文件或目录,也可用于重命名文件或目录。 + + - 移动文件或目录:`mv 源目录/文件 目标目录` + - 重命名文件或目录:`mv 原文件名 新文件名` + + 在 Linux 中,`mv` 命令用于移动文件或目录,或者对它们进行重命名。以下是 `mv` 命令的一些常见用法: + + 1. **移动文件或目录**: + + + * 将文件从一个目录移动到另一个目录: + ```bash + mv source_file destination_directory/ + ``` + * 移动目录:与移动文件类似,但目录的末尾不应有斜杠(/),除非目标位置是一个已经存在的目录。 + ```bash + mv source_directory destination_directory/ + ``` + 注意:如果目标目录不存在,`mv` 命令会将其视为要重命名的文件名,这可能会导致意外的结果。 + + 2. **重命名文件或目录**: + + + * 重命名文件: + ```bash + mv old_name.txt new_name.txt + ``` + * 重命名目录: + ```bash + mv old_directory_name new_directory_name + ``` + + 3. **移动并重命名文件**: + + + * 你可以在一次操作中既移动又重命名文件。 + ```bash + mv source_directory/old_name.txt destination_directory/new_name.txt + ``` + + 4. **使用通配符移动多个文件**: + + + * 你可以使用通配符(如 `*`)来匹配多个文件,并将它们移动到目标目录。 + ```bash + mv *.txt destination_directory/ + ``` + 这将移动当前目录下所有 `.txt` 结尾的文件到 `destination_directory` 目录。 + + 5. **交互式操作**: + + + * 使用 `-i` 选项,`mv` 命令会在移动或重命名文件前进行确认,以避免意外覆盖文件。 + ```bash + mv -i source_file destination_file + ``` + 当目标位置已经存在同名文件时,系统会提示你是否要覆盖。 + + 6. **显示详细信息**: + + + * 使用 `-v` 选项,`mv` 命令会显示详细的操作信息,包括移动或重命名的文件名。 + ```bash + mv -v source_file destination_file + ``` + + 7. **覆盖文件前先备份**: + + * 使用 `-b` 选项,`mv` 命令会在覆盖文件之前对其进行备份。 + + + ```bash +mv -b source_file destination_file + ``` + + 请注意,`mv` 命令的使用可能因不同的 Linux 发行版或 shell 环境而略有差异。但上述用法在大多数情况下都是通用的。如果你需要更详细的信息或特定选项的解释,可以使用 `man mv` 命令来查看 `mv` 命令的手册页。 + +9. **touch**:创建空文件或者更改文件访问和修改时间。 + + - 示例:`touch 文件名` + +10. **chmod**:修改文件或目录权限。 + +- 示例:`chmod 权限值 文件名` + +1. **chown**:改变文件或目录的所有者。 + +- 示例:`chown 用户名 文件名` + +1. **chgrp**:改变文件或目录的所属组。 + +- 示例:`chgrp 组名 文件名` + +这些是常用的Linux文件夹和文件管理相关操作命令,通过它们你可以进行各种文件和目录的管理 + +##### 作业 + +假设您刚刚登录到一个Linux系统,并位于您的家目录(`~`)下。您需要完成以下一系列复杂的操作来组织和清理您的文件和目录。请按照顺序执行,并给出相应的命令。 + +1. **创建测试文件**:在家目录下创建三个文本文件,分别命名为`.hidden.txt`(隐藏文件)、`visible1.txt`和`visible2.txt`。 + + ``` + mkdir .hidden.txt visible1.txt xisible2.txt -p + ``` + +2. **列出文件和目录**:列出家目录(`~`)下的所有文件和目录,包括隐藏文件,并查看其详细权限和属性。 + + ``` + ls -la + ``` + +3. **创建工作区**:创建一个新的目录`work_area`,并在其中创建三个子目录:`project_a`、`project_b`和`docs`。 + + ``` + mkdir work_area -p && cd work_area && mkdir project_a project_b docs + ``` + +4. **移动文本文件**:将家目录下的所有`.txt`文件移动到`work_area/docs`目录中,并确保这些文件在移动后仍然是隐藏的(如果它们是隐藏的)。 + + ``` + cd ~ + mv *.txt .*.txt work_area/docs + ``` + +5. **创建新文件**:在`work_area/project_a`目录下创建一个新的文本文件`notes.txt`,并添加一些内容(例如:`echo "Initial notes for project A" > work_area/project_a/notes.txt`)。 + + ```js + cd work_area/project_a + touch notes.txt + echo -e "Initial notes for project A" > notes.txt(目标文件位置) //echo重定向 + ``` + +6. **复制目录**:递归地复制`work_area/project_a`目录到`work_area/project_b`,并命名为`project_a_backup`。 + + ``` + cp -r project_a project_b && cd project_b && mv project_a project_a_backup + ``` + +7. **列出文件并按大小排序**:列出`work_area/docs`目录下的所有文件,并按文件大小降序排列。 + + ``` + ls -laS work_area/docs + ``` + +8. **删除所有文件**:删除`work_area/docs`目录下所有文件。 + + ``` + rm ./* ./.* + ``` + +9. **删除目录**:假设您不再需要`work_area/project_b`目录及其所有内容,请递归地强制删除它。 + + ``` + rm -rf projrct_b + ``` + +10. **清理空目录**:清理`work_area`目录,删除其中所有的空目录(注意:不要删除非空的目录)。 + + ``` + rmdir work_area/* + ``` + +11. **创建别名**:回到您的家目录,并创建一个别名`llh`,该别名能够列出当前目录下文件和目录的长格式列表,并以人类可读的格式显示文件大小(类似于`ls -lh`命令)。 + + ``` + vim .bashrc + alias llh='ls -lhS' + ``` + + \ No newline at end of file -- Gitee