From 31c12a94d8134e6120a270ddfdb0b71637ff4c35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E7=8E=89=E7=8E=B2?= <3370142780@qq.com> Date: Sat, 25 May 2024 10:26:52 +0800 Subject: [PATCH] =?UTF-8?q?Linux=E5=9F=BA=E7=A1=805?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\347\241\200\345\221\275\344\273\2443).md" | 296 ++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 "29\351\203\221\347\216\211\347\216\262/05(Linux\345\237\272\347\241\200\345\221\275\344\273\2443).md" diff --git "a/29\351\203\221\347\216\211\347\216\262/05(Linux\345\237\272\347\241\200\345\221\275\344\273\2443).md" "b/29\351\203\221\347\216\211\347\216\262/05(Linux\345\237\272\347\241\200\345\221\275\344\273\2443).md" new file mode 100644 index 0000000..6e177e4 --- /dev/null +++ "b/29\351\203\221\347\216\211\347\216\262/05(Linux\345\237\272\347\241\200\345\221\275\344\273\2443).md" @@ -0,0 +1,296 @@ +Linux基础5 + +## 1.pwd:显示当前工作目录的绝对路径。 + +pwd # 显示当前工作目录的绝对路径 +dir1 = $(pwd) # 将当前工作目录路径保存到变量中(在Shell脚本中常用) +echo $dir1 + +## 2. **mv**:move 移动文件或目录,也可用于重命名文件或目录。 + + - 移动文件或目录:`mv 源目录/文件 目标目录` ,相当于剪切 + - 重命名文件或目录:`mv 原文件名 新文件名` + + 在 Linux 中,`mv` 命令用于移动文件或目录,或者对它们进行重命名。以下是 `mv` 命令的一些常见用法: + +原则: 目标不存在,一定重命名 + +1. 当是移动时,只能是文件移到目录 +2. 如何分辩是移动还是重命名 + 1. 源文件 - 目标文件 :mv a.txt b.txt + 1. 目标已经存在:源文件替换了目标文件 + 2. 目标不存在:直接将源文件改名为目标文件 + 2. 源文件 -目标目录、:mv a.txt dir1 + 1. 目标存在:将源文件移到目标目录里 + 2. 目标不存在:将源文件改为目标名 + 3. 源目录 - 目标目录 + 1. 目标已存在:将源移到目标里 + 2. 已经不存在:源目录改为目标目录名 + 4. 8种场景 + 1. 文件到文件: + 1. 目标存在 + + 2. 目标不存在 + + 2. 文件到目录 + 1. 目标存在 + + 2. 目标不存在 + + 3. 目录到目录 + 1. 目标存在 + + 2. 目标不存在 + + 4. 目录到文件 + 1. 目标存在 + 2. 目标不存在 + +# 重命名文件: +mv 旧文件名 新文件名 + +# 重命名目录 +mv 旧目录名 新目录名 + +#注意,如果新文件名已存在,就会被覆盖,如果新目录名已经存在,就变成了移动 + + 3. **移动并重命名:** + + +```bash +# 移动一个文件到新目录,并重命名这个文件。 +mv 1.txt /tmp/2.txt # 移动当前目录下的1.txt到/tmp目录,并重命名为2.txt + +# 移动了一个目录到另一个目录下,并重命名 +mv aDir /tmp/bDir # 将当前目录下的aDir目录移动到/tmp目录下,将改名为bDir +``` + +```bash +# 移动多个文件 参数大于等于3个时: +- mv # 跟了3个参数以上时,最后一个默认是目录 +``` + + +```bash +# 同时移动多个文件到指定目标 +mv 1.txt 2.txt /tmp # 将1.txt和2.txt 移动到/tmp目录下 +# 同时移动多个目录到指定目录下 +mv aaa bbb /tmp # 将aaa和bbb 移动到/tmp目录下 + +# 使用通配符(如 `*`)来匹配多个文件或目录,并将它们移动到目标目录。 +mv *.txt /tmp # 移动当前目录下所有.txt结尾的文件和目录到/tmp目录下 +mv a* /tmp # 移动当前目录下,所有a开头的文件和目录到 /tmp目录下 +mv * /tmp # 移动当前目录下的,所有文件和目录到/tmp目录下 +``` + + 5. **交互式操作**: + + +```bash +# 使用 `-i` 选项,`mv` 命令会在移动或重命名文件前进行确认,以避免意外覆盖文件。 +mv -i 1.txt 2.txt # 当2.txt文件已经存在时,系统会提示你是否要覆盖。y 确认,n 取消 +``` + + 6. **显示详细信息**: + + +```bash +# 使用 `-v` 选项,`mv` 命令会显示详细的操作信息,包括移动或重命名的文件名。 +mv -v 1.txt 2.txt # 重命名1.txt为2.txt并显示详情 +renamed '1.txt' -> '2.txt' # 显示详细 + +``` + + 7. **覆盖文件前先备份**: + + * 使用 `-b` 选项,`mv` 命令会在覆盖文件之前对其进行备份。 + + + ```bash +mv -b 1.txt 2.txt # 如果2.txt已存在,就先备份2.txt为2.txt~,再次1.txt改成为2.txt + ``` + + + ## 9. **touch**:`touch` 命令主要用于创建新文件和更新文件时间戳。 + + ```bash +#1. 创建一个空文件 +touch filename #如果 filename 不存在,touch 会创建一个新的空文件。 + +#2. 更新文件的时间戳 +touch filename +#如果 filename 已经存在,touch 会更新该文件的访问和修改时间为当前时间。 + +#3.创建多个空文件 +touch file1 file2 file3 #touch 可以同时创建多个空文件 + ``` + + + +10. **chmod**:修改文件或目录权限。 + +- 示例:`chmod 权限值 文件名` + +1. **chown**:改变文件或目录的所有者。 + +- 示例:`chown 用户名 文件名` + +1. **chgrp**:改变文件或目录的所属组。 + +- 示例:`chgrp 组名 文件名` + +这些是常用的Linux文件夹和文件管理相关操作命令,通过它们你可以进行各种文件和目录的管理 + +## 10.常见的文件属性: + +### 1. 权限(Permissions) + +权限决定了文件或目录的访问级别。每个文件或目录都有三组权限,分别针对文件拥有者(user)、所属组(group)和其他人(others)。权限可以通过 `ls -l` 命令查看。 + +- **读(r)**:4 +- **写(w)**:2 +- **执行(x)**:1 + +权限组合用三个八进制数字表示,例如 `755` 表示 `rwxr-xr-x`。 + +### 2. 所有权(Ownership) + +每个文件或目录都有一个所有者和一个所属组。所有权信息可以通过 `ls -l` 命令查看。 + +- **用户(User)**:文件的拥有者。 +- **组(Group)**:文件所属的组。 + +可以使用 `chown` 命令更改文件的所有权: + +```bash +chown user:group filename +``` + +### 3. 时间戳(Timestamps) + +每个文件或目录有三个时间戳,分别记录不同的时间信息,可以通过 `ls -l` 或 `stat` 命令查看。 + +- **访问时间(atime)**:最后一次读取文件内容的时间。 +- **修改时间(mtime)**:最后一次修改文件内容的时间。 +- **状态改变时间(ctime)**:最后一次改变文件元数据(如权限或所有权)的时间。 + +### 4. 文件类型(File Type) + +文件类型决定了文件的用途和行为,可以通过 `ls -l` 命令查看第一个字符来识别。 + +- **普通文件(-)**:普通数据文件。 +- **目录(d)**:包含其他文件和目录的文件。 +- **符号链接(l)**:指向另一个文件的链接。 +- **字符设备文件(c)**:用于与设备通信的文件,按字符流读取数据。 +- **块设备文件(b)**:用于与设备通信的文件,按块读取数据。 +- **套接字文件(s)**:用于网络通信的文件。 +- **命名管道(p)**:用于进程间通信的文件。 + +### 5. 文件大小(Size) + +文件大小以字节为单位,表示文件内容的实际存储空间,可以通过 `ls -l` 命令查看。 + +### 6. 链接数(Links) + +链接数表示硬链接的数量,即指向同一个文件内容的不同文件名数量。可以通过 `ls -l` 命令查看链接数。 + + + +## 11.查找文件和目录 + +### 1. `find` 命令 + +`find` 是一个功能非常强大的查找工具,可以递归地搜索目录及其子目录中的文件和目录。它支持多种搜索条件,如名称、大小、修改时间等。 + +```bash +find /path -name "filename" # 按名称查找文件 +find /path -type d -name "dirname" # 按名称查找目录 +find /path -type f -name "*.txt" # 查找所有 .txt 文件 +find /path -type f -size +1M # 查找大于 1MB 的文件 +find /path -type f -mtime -7 # 查找最近7天内修改过的文件 +find /path -type f -exec command {} \; # 查找文件并对其执行命令 +``` + +示例: + +```bash +find /home/user -name "document.txt" # 在 /home/user 目录及其子目录中查找名为 document.txt 的文件 +find /var/log -type f -name "*.log" -mtime -1 # 查找 /var/log 目录中最近一天内修改过的 .log 文件 +``` + +### 2. `locate` 命令 (第三方软件需要安装) + +`locate` 命令通过预建的数据库快速查找文件和目录。它的速度比 `find` 更快,但需要定期更新数据库(通常通过 `updatedb` 命令)。 + +#### 基本用法 + +```bash +locate filename # 查找文件名中包含 "filename" 的所有文件 +locate "*.txt" # 查找所有 .txt 文件 +``` + +### 3. `which` 命令 + +`which` 命令查找可执行文件的位置。它在用户的 `PATH` 环境变量中搜索命令。 + +#### 基本用法 + +```bash +which command # 查找命令的路径 +# 例子 +which ls # 查找 ls 命令的路径 +``` + +### 4. `whereis` 命令 + +`whereis` 命令查找可执行文件、源代码文件和手册页的位置。 + +#### 基本用法 + +```bash +whereis command # 查找命令的可执行文件、源代码文件和手册页 +#例子 +whereis ls # 查找 ls 命令的可执行文件、源代码文件和手册页 +``` + +### 5. `type` 命令 + +`type` 命令显示命令的类型,例如是否是内置命令、别名或可执行文件。 + +```bash +type ls # 显示 ls 命令的类型 +``` + +### 6. `grep` 命令 + +`grep` 命令用于在文件内容中搜索匹配的字符串。虽然它通常用于搜索文件内容,但也可以结合其他命令一起使用来查找文件。 + +```bash +grep "pattern" filename # 在文件中搜索字符串 +grep -r "pattern" /path # 递归地在目录中搜索字符串 +# 示例: +grep "error" /var/log/syslog # 在 /var/log/syslog 文件中搜索包含 "error" 的行 +grep -r "TODO" /home/user/projects # 在 /home/user/projects 目录及其子目录中搜索包含 "TODO" 的文件 + +``` + +### 7. `find` 与 `grep` 结合使用 + +通过结合 `find` 和 `grep` 命令,可以更加灵活地查找文件及其内容。 + +```bash +find /path -type f -name "*.txt" -exec grep "pattern" {} + # 查找包含特定字符串的所有 .txt 文件 +``` + +### 8. `stat` 命令 + +`stat` 命令用于显示文件或文件系统的详细信息,包括大小、权限、修改时间等。 + +#### 基本用法 + +```bash +stat filename # 显示文件的详细信息 +# 示例: +stat document.txt # 显示 document.txt 文件的详细信息 +``` + -- Gitee