目录操作
# 1. 切换目录(cd)
cd
(change directory)命令用于在 Linux 文件系统中切换当前工作目录。
cd / # 切换到根目录
cd /bin # 切换到根目录下的 bin 目录
cd ../ # 切换到上一级目录,等同于 cd ..
cd ~ # 切换到当前用户的 home 目录
cd - # 切换回上次所在的目录
cd xx # 切换到当前目录下的名为 xx 的子目录,如果目录不存在将报错
cd /xxx/xx/x # 使用完整路径切换到指定目录,过程中可以使用 tab 键快速补全路径
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2. 查看目录(ls,ll)
ls
命令用于列出目录内容,包括文件和其他目录。
ls # 查看当前目录下的所有文件和目录
ls -a # 查看包括隐藏文件在内的所有文件和目录
ls -l # 以列表形式查看,显示文件和目录的详细信息
ls /bin # 查看 /bin 目录下的所有文件和目录
1
2
3
4
2
3
4
ls -a
:显示所有文件和目录,包括以点(.
)开始的隐藏文件。ls -l
:以列表格式显示文件和目录的详细信息,如权限、链接数、所有者、文件大小和最后修改时间等。ls /bin
:列出指定目录(如/bin
)中的所有文件和目录。
在很多 Linux 发行版中,ll
是 ls -l
的别名,用于快速以列表形式查看当前目录内容。
理解硬链接
- 硬链接的创建:当创建文件时,文件系统会自动创建一个链接数为 1 的硬链接。使用
ln 源文件 目标文件
命令可以创建额外的硬链接。这不会复制文件内容,而是在文件系统中为同一文件内容创建另一个访问点(即另一个文件名)。 - 链接数:文件的链接数表示有多少个硬链接指向该文件。每增加一个硬链接,链接数就增加一;每删除一个硬链接,链接数就减少一。
- 文件的删除:删除硬链接并不会立即删除文件本身,只有当一个文件的链接数减少到 0 时,文件的内容才会被真正删除,因为这意味着没有任何硬链接指向该文件了。
# 3. 创建目录(mkdir)
mkdir
(make directory)命令用于创建新的目录
mkdir tools # 在当前目录下创建一个名为 tools 的目录
mkdir /bin/tools # 在指定目录(/bin)下创建一个名为 tools 的目录
mkdir -p /bin/tools # 使用 -p 选项创建多级目录,若父目录不存在则会自动创建
1
2
3
2
3
mkdir tools
:创建当前工作目录下的一个名为tools
的新目录。mkdir /bin/tools
:尝试在/bin
目录下创建tools
目录。这通常需要 root 权限,因为/bin
目录属于系统目录。mkdir -p /bin/tools
:-p
(parents)选项允许连续创建多个目录。如果父目录/bin
存在,就在其下创建tools
;如果不存在,就先创建/bin
,再在其下创建tools
# 4. 查看目录结构(tree)
tree
命令以树状图的形式显示目录和文件结构,便于直观了解目录的构成。
tree
1
- 注意:
tree
命令可能不是预装在所有 Linux 发行版上的,如果系统提示找不到tree
命令,需要先安装它。例如,在基于 RPM 的系统中,可以使用yum install -y tree
(或在基于 Debian 的系统中使用apt-get install tree
)来安装。
# 5. 删除目录与文件(rm)
rm
(remove)命令用于删除文件和目录。
rm 文件名 # 删除指定的文件
rm -f 文件名 # 使用 -f (force)选项强制删除文件,不进行询问
rm -r 文件夹名 # 使用 -r (recursive)选项递归删除指定目录及其中的所有内容
rm -rf 文件夹名 # 同时使用 -r 和 -f 选项递归且强制删除目录和文件,不进行询问
rm -rf * # 删除当前目录下的所有文件和目录
rm -rf /* # 【极度危险】删除根目录下的所有文件,相当于系统级的格式化,通常会造成系统不可用
1
2
3
4
5
6
2
3
4
5
6
rm -f 文件名
:-f
选项用于强制删除,不会询问用户是否确认删除。rm -r 文件夹名
:-r
选项使rm
命令能递归删除目录及其下的所有文件和子目录。rm -rf 文件夹名
:组合-r
和-f
选项可以无提示地递归删除文件和目录,这在自动化脚本中非常有用。rm -rf \*
:删除当前工作目录下的所有文件和目录,请谨慎使用,确保你在正确的目录下执行此命令。rm -rf /\*
:这个命令会尝试删除系统的每个文件和目录,非常危险,可能会导致系统不可恢复的损坏。
# 6. 移动目录或重命名(mv)
mv
命令用于移动文件或目录,也可以用来重命名文件或目录。
# 6.1 重命名文件或目录
mv 旧文件名 新文件名 # 重命名文件或目录
1
mv 旧文件名 新文件名
:将文件或目录从旧名称改为新名称。如果新文件名位于不同目录下,则相当于移动文件。
# 6.2 移动文件或目录
mv /源目录/目标文件或目录 /目标目录 # 将文件或目录移动到另一个位置
1
mv 当前目录名 新目录名
:在当前目录内重命名目录。mv /usr/tmp/tool /opt
:将/usr/tmp
目录下的tool
目录移动到/opt
目录下。mv /usr/tmp/tool/* /opt/
:将tool
目录下的所有文件和子目录移动到/opt
目录下。
# 7. 拷贝目录(cp)
cp
命令用于复制文件或目录。
# 7.1 复制文件
cp 源文件 目标文件或目录 # 复制文件到指定位置
1
cp hello.txt a/
:将hello.txt
文件复制到目录a
下。
# 7.2 递归复制目录
cp -r /usr/tmp/tool /opt # 递归复制目录到指定位置
1
cp -r /usr/tmp/tool /opt
:递归复制/usr/tmp/tool
目录及其所有子目录和文件到/opt
目录下。
# 7.3 强制覆盖不提示
cp -rf /home/a /b/ # 强制覆盖,不提示
\cp -r /home/a /b/ # 使用 \ 来忽略任何别名,强制执行原始的 cp 命令
1
2
2
cp -r /home/a /b/
:将/home/a
目录递归复制到/b/
目录下,如果目标目录存在同名文件或目录,将会提示是否覆盖。- 为了强制覆盖而不进行提示,可以在
cp
命令前加-f
选项或在命令前添加\
来忽略别名(如果cp
被配置为别名,如alias cp='cp -i'
):
# 8. 搜索目录或文件(find)
find
命令非常强大,可以从指定的起始路径递归遍历所有子目录,根据给定的搜索条件找到文件或目录。
# 8.1 基础搜索
find 起始路径 -name "搜索模式"
1
查找特定名称的文件或目录:
find /bin -name 'a*' # 在 /bin 目录及其子目录下查找所有以 'a' 开头的文件或目录
1
使用通配符:
*
代表任意数量的字符。test*
匹配任何以 "test" 开头的内容。*test
匹配任何以 "test" 结尾的内容。test
匹配任何包含 "test" 的内容。
# 8.2 根据文件大小搜索
find
命令还可以根据文件大小来搜索文件,这对于清理磁盘空间或查找大文件非常有用。
find / -size -10k # 查找小于 10KB 的文件
find / -size +100M # 查找大于 100MB 的文件
find / -size +1G # 查找大于 1GB 的文件
1
2
3
2
3
-size -10k
:查找小于 10KB 的文件。-size +100M
:查找大于 100MB 的文件。-size +1G
:查找大于 1GB 的文件。
# 9. 查看当前目录(pwd)
pwd
(print working directory)命令用于显示当前工作目录的绝对路径。
pwd # 显示当前工作目录的绝对路径
1
- 使用
pwd
命令可以立即知道你当前所在的目录,这在进行多个操作或脚本编写时非常有用,特别是当你在终端中深入多层目录时。 - 在 Linux 系统中,绝对路径以根目录
/
开头,这与 Windows 系统的盘符概念不同。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08