Linux常用命令-文件操作

news/2024/6/18 2:25:12 标签: linux, 服务器, 运维

在这里插入图片描述

文章目录

  • ls
    • 基本用法
    • 常用选项
    • 组合选项
    • 示例
    • 注意事项
  • cd
    • 基本用法
    • 示例
    • 注意事项
  • pwd
    • 基本用法
    • 示例
    • 选项
    • 总结
  • cp
    • 基本用法
    • 常见选项
    • 示例
    • 注意事项
  • rm
    • 基本用法
    • 常见选项
    • 示例
      • 删除单个文件:
      • 交互式删除文件:
      • 强制删除文件:
      • 递归删除目录:
      • 交互式递归删除:
      • 详细输出删除操作:
    • 注意事项
  • mkdir
    • 基本用法
    • 常见选项
    • 示例
    • 注意事项
  • rmdir
    • 基本用法
    • 常见选项
    • 示例
    • 注意事项
  • touch
    • 基本用法
    • 常见选项
    • 示例
    • 注意事项
  • find
    • 基本用法
    • 常见选项和表达式
    • 示例
    • 注意事项

ls

ls 是 Linux 中最常用的命令之一,主要用于列出目录中的文件和子目录。这个命令不仅可以显示名称,还可以显示文件和目录的详细信息,如权限、所有者、大小和最后修改日期。

基本用法

ls:列出当前目录中的文件和目录。
ls /path/to/directory:列出指定目录下的文件和目录。

常用选项

-l:以长列表格式显示详细信息(例如,文件权限、所有者、组、大小、最后修改时间和文件名)。
-a:显示所有文件和目录,包括以点(.)开头的隐藏文件。
-h:与 -l 一起使用时,以易读的格式显示文件大小(例如 KB、MB)。
-r:逆序显示(默认是按字母顺序)。
-t:根据文件的最后修改时间排序。
-S:按文件大小排序。
-R:递归列出所有子目录。
–color:以彩色显示输出,不同的颜色代表不同的文件类型和权限(大多数现代的 Linux 发行版默认启用彩色输出)。

组合选项

ls -la:列出所有文件(包括隐藏文件)以及详细信息。
ls -ltr:按时间逆序列出文件,最近修改的文件显示在最后。

示例

列出当前目录下的所有文件和目录:

ls -a

以长列表格式显示当前目录下的文件和目录详细信息:

ls -l

以长列表格式显示文件大小,包括隐藏文件,并使用易读格式:

ls -lah

列出指定目录 /etc 的文件,按文件大小排序:

ls -lS /etc

逆序显示当前目录下的文件,并按时间排序:

ls -lrt

递归列出当前目录及其所有子目录下的文件和目录:

ls -R

注意事项

默认情况下,ls 会省略以点(.)开头的隐藏文件和目录。如果要显示这些隐藏文件,请使用 -a 或 -A(后者不会显示 . 和 … 代表的当前目录和父目录)。
ls 命令的输出可以通过管道传递给其他命令,这在 shell 脚本和命令行工作流中非常有用。
在不同的发行版和环境中,ls 命令可能会有不同的别名,这些别名通常带有预定义的选项。例如,ll 可能是 ls -l 的别名。
总之,ls 是一个功能强大的命令,可用于以多种方式查看和排序文件系统中的文件和目录列表。通过熟练使用 ls 命令的不同选项和参数,你可以有效地浏览和管理 Linux 系统中的文件。

cd

cd(Change Directory)命令是一个用于在Linux和Unix-like操作系统的命令行中切换当前工作目录的命令。它是一个内建在大多数shell中的命令,不是一个独立的程序。使用 cd 命令可以移动到文件系统中的任何位置,是命令行用户日常工作的基本组成部分。

基本用法

cd [目录]:切换到指定的目录。
cd 或 cd ~:切换到当前用户的主目录。
cd -:切换到上一个工作目录。
cd …:移动到当前目录的上一级(父)目录。
cd /:切换到文件系统的根目录。

示例

切换到相对路径的目录:

cd Documents

这会将当前工作目录切换到用户主目录下的 Documents 子目录。

切换到绝对路径的目录:

cd /usr/local/bin

这会将当前工作目录切换到文件系统中的 /usr/local/bin 目录。

返回到主目录:

cd

或者

cd ~

两个命令都会把用户的当前工作目录切换到他们的主目录。

使用 … 返回到上级目录:

cd ..

这会把当前工作目录上移一级。

使用 …/… 返回到上上级目录:

cd ../..

这会把当前工作目录上移两级。

切换到上一个工作目录:

cd -

这会将当前工作目录切换回刚才使用 cd 命令离开的目录。

注意事项

当使用 cd 命令时,如果指定的目录不存在或者没有足够的权限去访问它,你会得到一个错误消息。
在使用 cd 命令时,可以使用环境变量,例如 cd $HOME 会切换到用户的主目录。
在许多情况下,你可以使用 Tab 键进行自动补全,这样可以快速输入目录名并防止拼写错误。
cd 并不改变新的shell实例的工作目录,它只在当前shell会话中有效。如果你希望在新的shell会话或脚本中改变工作目录,你需要在那个shell实例或脚本内部执行 cd 命令。
cd 命令虽然简单,但它是日常操作中使用频率非常高的命令之一。熟练使用 cd 命令对于提高在命令行中工作的效率至关重要。

pwd

pwd(Print Working Directory)命令是一个常用且基本的Linux命令行工具,它用来打印当前工作目录的完整路径。它是大多数Shell程序的内建命令,包括Bash、sh和其他常见的Shell。

当你在终端中浏览文件系统时,pwd 命令可以帮助你清晰地了解你当前所在的位置。

基本用法

命令的语法非常简单:

pwd

当执行这个命令时,它会输出你目前所在目录的绝对路径。绝对路径意味着从根目录 / 开始直到当前位置的完整路径。

示例

如果你在用户的主目录中(通常是 /home/username),执行 pwd 会返回:

/home/username

选项

pwd 命令的选项非常有限,因为它的功能就是单一的。两个最常用的选项是:

-P:显示物理路径,即不包含任何符号链接(symbolic links)。如果你的当前工作目录包含通过符号链接进入的路径,使用 -P 选项将会显示实际的物理路径,而非含有链接的路径。
-L:显示逻辑路径,即可以包含符号链接。这是 pwd 命令的默认行为,通常不需要显式指定 -L 选项。
注意事项
对于大多数用户来说,简单地键入 pwd 就足够了,因为默认行为通常就是他们所期望的。
当你使用 cd 命令切换目录时,pwd 命令非常有用,它可以帮助你验证你是否已经切换到了正确的目录。
在写脚本时,pwd 命令经常被用来确定脚本当前的执行位置,这样可以确保文件路径的正确性。

总结

pwd 命令非常简单却非常有用,它提供了一种快速方法来查看或确认你在文件系统中的确切位置。在处理文件和目录时,这是一个关键的信息,特别是在复杂的目录结构和长期的终端会话中。

cp

cp 命令在 Linux 和 Unix-like 系统中用于复制文件和目录。这个命令可以在同一个目录中复制文件,也可以将文件复制到不同的目录。此外,它支持多种选项,允许用户根据需要定制复制操作。

基本用法

复制文件到另一个目录:

cp source_file destination_file

如果 destination_file 已经存在,它会被 source_file 的内容覆盖。如果 destination_file 不存在,它会被创建。

复制文件到另一个目录并保持原有名称:

cp source_file /path/to/destination/directory/

这会将 source_file 复制到指定的目录中,并保持文件名称不变。

复制目录及其所有内容:

cp -r source_directory /path/to/destination_directory/

-r 选项告诉 cp 命令递归地复制目录,包括其内部的所有文件和子目录。

常见选项

-i:交互模式,在覆盖文件之前提示用户确认。
-b:在覆盖现有文件之前,为其创建一个备份。
-u:仅当源文件比目标文件新,或者目标文件不存在时,才复制文件。
-v:详细模式,复制时显示有关文件的信息。
-a:归档模式,尽可能以原样复制目录,包括链接、文件权限等。
–preserve=:保留指定的属性,如权限、时间戳等。例如,–preserve=mode,ownership。

示例

交互式复制文件:如果担心误覆盖重要文件,可以使用 -i 选项:

cp -i source_file destination_file

备份已存在的目标文件:在覆盖文件之前自动创建一个备份:

cp -b source_file destination_file

递归复制目录:复制整个目录及其内容到新位置:

cp -r /path/to/source_directory /path/to/destination_directory

详细输出:在复制文件时显示详细信息:

cp -v source_file destination_file

仅复制更新的文件:只有当源文件比目标文件更新时才执行复制:

cp -u source_file destination_file

注意事项

使用 cp 命令时,特别是在使用 -r 选项复制目录时,务必小心路径。错误的路径可能导致数据丢失。
为防止意外覆盖文件,可以习惯性地使用 -i 选项。
在脚本中使用 cp 时,考虑使用 -v 选项以记录哪些文件被复制,或使用 -u 选项以确保只复制已更新的文件。
cp 命令是 Linux 和 Unix 用户日常工作中不可或缺的工具,熟练使用它有助于提高文件管理的效率和准确性。

rm

rm(remove)命令在Linux和Unix-like操作系统中用于删除文件或目录。它是一个非常强大的工具,因为在Linux中,删除的文件通常不会被放入回收站或垃圾箱,而是被永久删除,所以使用时需要特别小心。

基本用法

删除文件:

rm filename

这个命令会删除当前目录中的文件 filename。如果文件不存在,rm 会输出一个错误消息。

删除多个文件:

rm file1 file2 file3

这会删除 file1、file2 和 file3。

删除目录和其中的所有内容:

rm -r directoryname

-r(或-R)选项告诉rm递归地删除目录和该目录中的所有内容,包括所有文件和子目录。

常见选项

-f:强制删除,忽略不存在的文件,不会显示任何提示。
-i:交互式删除,在删除每个文件之前都会提示用户确认。
-v:详细模式,显示删除操作的详细信息。
–no-preserve-root:允许删除根目录 /(非常危险,通常不推荐使用)。
–preserve-root:防止递归删除根目录(默认行为)。

示例

删除单个文件:

rm myfile.txt

这会删除当前目录中名为 myfile.txt 的文件。

交互式删除文件:

rm -i myfile.txt

这会在删除 myfile.txt 前提示用户确认。

强制删除文件:

rm -f myfile.txt

即使 myfile.txt 不存在,也不会显示错误消息。

递归删除目录:

rm -r mydirectory

这会删除 mydirectory 及其内部的所有文件和子目录。

交互式递归删除:

rm -ri mydirectory

这将在删除 mydirectory 中的每个文件和子目录之前提示用户确认。

详细输出删除操作:

rm -rv mydirectory

这将在删除 mydirectory 及其内容时显示详细信息。

注意事项

rm 命令不会将文件移动到回收站,所以一旦删除了文件或目录,通常很难恢复。
在使用带有 -r 选项的 rm 命令时要非常小心,尤其是当以root用户执行时。错误的命令可能导致系统或重要数据的丢失。
在默认情况下,rm 会保护根目录不被递归删除。应该始终保留这种默认行为。
在脚本中使用 rm 时,考虑使用 -i 或 -f 以避免潜在的危险操作。
对于那些想要在删除之前确认的情形,可以使用 -i 选项进行交互式删除。
总的来说,rm 是一个非常有用但潜在危险的命令。在使用它之前,始终要确保你了解它的影响,并且检查你的命令至少两次,以避免错误地删除了重要文件。

mkdir

mkdir(make directory)命令在 Linux 和类 Unix 操作系统中用于创建一个或多个新的目录。它是一个非常基本和常用的命令,适用于文件系统组织和管理。

基本用法

创建一个新目录:

mkdir directory_name

这个命令会在当前工作目录中创建一个名为 directory_name 的新目录。

创建多个新目录:

mkdir dir1 dir2 dir3

这将在当前工作目录中同时创建三个名为 dir1、dir2 和 dir3 的新目录。

常见选项

-m 或 --mode:设置目录的权限。可以在创建目录的时候设置权限(使用类似于 chmod 的权限设置方式)。
-p 或 --parents:创建多级目录。如果父目录不存在,mkdir 会自动创建它们。
-v 或 --verbose:详细模式。在创建新目录时,命令会显示一条消息告知用户已创建的目录。

示例

创建一个新目录:

mkdir my_new_directory

这会在当前位置创建一个名为 my_new_directory 的目录。

创建具有指定权限的目录:

mkdir -m 755 secure_directory

这将创建一个名为 secure_directory 的目录,并设置权限为 755(所有者有读、写、执行权限,而组和其他用户只有读和执行权限)。

创建多级目录:

mkdir -p parent_dir/child_dir/grandchild_dir

这将创建一个目录路径 parent_dir/child_dir/grandchild_dir。如果 parent_dir 和 child_dir 不存在,mkdir 会连同它们一起创建。

创建多个目录并显示详细信息:

mkdir -v dir1 dir2 dir3

这将创建 dir1、dir2 和 dir3,并显示关于每个创建的目录的信息。

注意事项

在使用 mkdir 命令时,如果指定的目录已经存在,命令会失败并显示一条错误消息。
mkdir 不会覆盖已存在的目录。如果你希望修改现有目录的权限,请使用 chmod 命令。
使用 -p 选项可以确保整个目录路径都被创建,即使其中一些中间目录还不存在。这在编写脚本时特别有用,因为它可以防止因尝试创建已存在的目录而导致的错误。
当使用 -m 或 --mode 选项时,你可以使用与 chmod 命令相同的权限符号或数值。
mkdir 命令通常配合其他命令(如 cd, ls, rmdir 等)一起使用来管理文件系统的结构。掌握 mkdir 命令是进行有效文件系统管理的基础。

rmdir

rmdir(remove directory)命令在Linux和Unix-like系统中用于删除空的目录。与rm -r不同,rmdir只能删除空目录,如果目录中包含文件或其他目录,则会失败。这可以防止意外删除目录中的内容。

基本用法

删除一个空目录:

rmdir directory_name

此命令将尝试删除名为 directory_name 的空目录。如果目录非空,命令将失败并显示错误消息。

常见选项

-p 或 --parents:递归删除目录树。如果父目录变为空(在子目录被删除后),则一并删除父目录。即,rmdir -p 将删除目录以及其任何已变为空的祖先目录。
–ignore-fail-on-non-empty:忽略非空目录导致的删除失败。通常,如果尝试删除一个非空目录,rmdir 会失败。此选项将允许命令完成,但会忽略由于目录不为空而无法删除的情况。

示例

删除空目录:

rmdir my_empty_directory

如果 my_empty_directory 是空的,它将被删除。如果它包含文件或子目录,则命令将失败。

递归删除多个空目录:

rmdir -p parent_dir/child_dir/grandchild_dir

这将尝试删除 grandchild_dir、child_dir 和 parent_dir。如果 grandchild_dir 是空的且其中一个父目录在其子目录被删除后变为空,则将一并删除该父目录。

注意事项

rmdir 仅用于删除空目录。如果你需要删除包含文件的目录,请使用 rm -r 命令。
在默认情况下,如果目录不为空,rmdir 命令会失败。这是一个安全特性,可以防止不小心删除目录中的内容。
使用 rmdir 删除目录时,不会有任何确认提示,所以在运行命令之前需要确保目录是空的。
在脚本中使用 rmdir 前,通常需要先检查目录是否为空,或者使用其他命令(例如 find 命令)清空目录。
在某些情况下,尽管目录看似空,实际上可能包含了隐藏文件(以.开头的文件)。在这些情况下,你需要先删除这些隐藏文件或使用 rm -r 命令。
rmdir 命令在进行文件系统整理时很有帮助,尤其在你确信想要删除的目录必须是空的时候。通过它的保护性质,它可以在某些程度上防止数据丢失。

touch

touch 命令是在Linux和Unix-like系统中用来创建空文件或者改变现有文件的时间戳的工具。它的主要作用是:

创建一个新的空文件。
更新一个已存在文件的访问时间(atime)、修改时间(mtime)。

基本用法

创建一个新文件:

touch filename

如果 filename 指定的文件不存在,touch 会创建一个空的新文件。如果文件已存在,它的访问和修改时间会被更新为当前时间。

更改文件时间戳:
只要运行 touch 命令并指定一个已存在的文件名,该文件的时间戳就会被更新。

常见选项

-a:仅更改文件的访问时间。
-m:仅更改文件的修改时间。
-c 或 --no-create:不创建任何文件;如果指定的文件不存在,touch 不会创建新文件。主要用于仅想更新已存在文件的场景。
-t:使用特定的时间而非当前时间。格式应为 [YYYYMMDDhhmm]。
-r:使用另一个文件的时间戳来更新指定文件的时间戳。

示例

创建一个新文件:

touch newfile.txt

如果 newfile.txt 不存在,这条命令会创建一个名为 newfile.txt 的空文件。

更新现有文件的时间戳:

touch existingfile.txt

这条命令会将 existingfile.txt 的访问和修改时间更新为当前时间。

仅更新文件的访问时间:

touch -a file.txt

这条命令会更新 file.txt 的访问时间而不改变修改时间。

使用特定的时间而非当前时间:

touch -t 202101010800 newfile.txt

这条命令会创建(或更新) newfile.txt,使其时间戳对应于2021年1月1日8点。

使用另一个文件的时间戳更新文件:

touch -r reference.txt target.txt

这会将 target.txt 的时间戳更新为和 reference.txt 一样的时间。

注意事项

touch 不是用来编辑文件内容的;它只用于快速创建空文件或者更改文件的时间戳。
在某些脚本编程、文件管理任务中,更新文件的时间戳可能非常有用,比如用于触发基于时间的自动脚本执行。
使用 -t 选项指定的时间格式必须严格遵守 [YYYYMMDDhhmm] 的格式,否则命令会失败。
touch 命令因其简单和多功能性而在日常使用中非常方便,无论是在脚本编程还是在文件管理任务中。

find

find 命令是 Linux 和 Unix-like 系统中一个非常强大的工具,用于在文件系统中搜索符合指定条件的文件和目录。find 可以根据各种属性如文件名、文件类型、大小、权限、修改时间等来查找文件,并能够对搜索结果执行指定的命令。

基本用法

find [路径…] [表达式]
[路径…] 是 find 开始搜索的路径,例如 . 表示当前目录,/ 表示根目录。
[表达式] 定义了搜索的标准和在找到匹配的文件后要执行的动作。

常见选项和表达式

-name:根据文件名搜索。
-iname:和 -name 类似,但搜索是大小写不敏感的。
-type:根据文件类型搜索。常见的类型包括 f(普通文件)、d(目录)等。
-size:根据文件大小搜索。
-perm:根据文件权限搜索。
-user:根据文件的所有者搜索。
-group:根据文件的组所有者搜索。
-mtime, -atime, -ctime:根据文件的最后修改时间、访问时间或状态更改时间搜索。
-exec:对匹配的文件执行指定的命令。

示例

在当前目录及子目录中搜索文件名为 “myfile.txt” 的文件:

find . -name myfile.txt

在 /home 目录中搜索所用者为 “john” 的文件:

find /home -user john

在 /var/log 目录中搜索修改时间在7天以内的文件:

find /var/log -mtime -7

搜索当前目录及子目录中所有的 JPEG 文件并删除它们:

find . -type f -name "*.jpg" -exec rm {} \;

在 /etc 目录中搜索大小超过1MB的文件:

find /etc -type f -size +1M

搜索根目录中所有的目录并列出它们:

find / -type d -exec ls -ld {} \;

注意事项

在使用 -exec 时,符号 {} 代表当前匹配的文件名,; 表示 -exec 命令的结束。
使用 -exec 时要特别小心,因为你可能会执行修改或删除操作。
find 默认会递归地搜索所有的子目录。使用 -maxdepth 选项可以限制搜索的深度。
使用 find 能够匹配复杂的条件,也可以通过逻辑运算符(例如 -and、-or、-not)结合多个条件。
find 命令非常灵活且功能强大,只要熟悉其各种选项和用法,就能构建出复杂的查询来执行高度定制的操作。对于文件管理和一些自动化的shell脚本,find 是一个不可或缺的工具。


http://www.niftyadmin.cn/n/5456376.html

相关文章

【unity2D游戏开发】第四章节:完善游戏地形瓦片地图——《AVG-太空之战》

在上一章节中我们简单的创建了一个高低地形图,下面我们就来对游戏地图进行完善,比如:加上湖泊,河流,地下密室等场景等。 在进行地图完善之前我们先来解决两个问题。第一个问题:如何移动相机来观察我们创建…

有奖招募:CloudQuery V2.10.0 产品体验官

就在昨天 CloudQuery(简称“CQ”) 社区发布了 2.10.0 版本,此次发版可谓是诚意满满,我们除了对现有功能做了优化外,还结合社区用户的建议进行了功能新增。其中,备受瞩目的「SQL 审核」功能也在此版本中进行…

支小蜜校园防霸凌系统的具体功能是什么?

在当今社会,校园霸凌问题日益严重,成为影响学生健康成长的一大隐患。为了应对这一问题,许多学校开始引入校园防霸凌系统。这一系统以其独特的功能,为校园安全提供了有力保障,为学生的健康成长创造了良好环境。 校园防…

2024.3.21|华北水利水电大学江淮校区ACM社团训练赛

2024.3.21|华北水利水电大学江淮校区ACM社团训练赛 1.数字拆解 2.矩阵修改 3.因子数 4.回文数 5.中位数 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴…

C++多重继承与虚继承

多重继承的原理 多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。 多重继承的派生类继承了所有父类的属性。 在面向对象的编程中,多重继承意味着一个类可以从多个父类继承属性和方法。 就像你有一杯混合果汁,它是由多种水果榨取…

敏捷BI看永洪科技,连续六届BI商业智能第一名

敏捷性对BI商业智能的重要性不言而喻。在一个快速变化的商业环境中,企业需要敏锐的洞察力和及时的反应能力来应对不断涌现的挑战和机遇。敏捷BI的核心理念是在保持质量的前提下,以快速、灵活、创新的方式获取、分析和利用数据,为企业决策提供…

Spring使用(一)注解

Spring使用 资源 Spring 框架内部使用 Resource 接口作为所有资源的抽象和访问接口,在上一篇文章的示例代码中的配置文件是通过ClassPathResource 进行封装的,ClassPathResource 是 Resource 的一个特定类型的实现,代表的是位于 classpath …

ARM_dsp_math函数使用

使用说明 下载地址: https://github.com/ARM-software/CMSIS-DSP/tree/main 准备工作: 添加全局宏:USE_HAL_DRIVER,STM32F427xx,__CC_ARM,__TARGET_FPU_VFP,__FPU_PRESENT,ARM_MATH_CM4注释或者删除stm32f427xx.h中关于的__FPU_PRESENT定义 --没操作也成…