Linux常用命令

今天开始介绍Linux的常用命令,通过学习了解Shell命令的基本格式,可以掌握常用的Shell基础命令、命名历史、名称补全的方法,及联机帮助命令的使用方法;理解文件操作命令、目录及其操作的方法;熟练运用Linux常用命令完成对系统的基本操作。

全长近两万字,欢迎关注、点赞、收藏


本文足够严谨,非常适合学习与回顾Linux的常用命令


一、shell与shell命令

在 Linux 和 Unix 系统中,Shell 是一个命令解释器,它充当用户与操作系统内核之间的桥梁。用户通过 Shell 输入命令,Shell 解释这些命令并将其传递给操作系统内核执行。Shell 不仅可以执行单个命令,还可以执行复杂的脚本,实现自动化任务。(我们这里作有关shell的介绍,关于shell脚本的解释在这里放置就跑题了)

Shell 的类型

  1. Bourne Shell (sh):

    • 最早的 Unix Shell,由 Stephen Bourne 开发。
    • 简单且功能有限,但仍然是许多系统的默认 Shell。
  2. Bash (Bourne-Again Shell):

    • 最流行的 Shell,是 Bourne Shell 的改进版。
    • 默认安装在大多数 Linux 发行版中。
    • 支持命令补全、历史记录、别名等功能。
  3. Korn Shell (ksh):

    • 由 David Korn 开发,结合了 C Shell 和 Bourne Shell 的特点。
    • 功能强大,适用于复杂的脚本编写。
  4. C Shell (csh):

    • 语法类似于 C 语言,由 Bill Joy 开发。
    • 适合交互式使用,但在脚本编写方面不如 Bash 强大。
  5. Z Shell (zsh):

    • 一个功能非常强大的 Shell,兼容 Bash。
    • 支持自动补全、拼写校正、可配置的提示符等高级功能。

Shell 命令

Shell 命令可以分为两类:内置命令和外部命令。

  • 内置命令:由 Shell 本身提供,不需要调用外部程序。例如:

    • cd - 改变当前目录
    • echo - 输出文本
    • export - 设置环境变量
    • alias - 创建命令别名
    • source - 执行脚本文件
  • 外部命令:由独立的可执行文件提供,通常位于 /bin, /usr/bin, /usr/local/bin 等目录中。例如:

    • ls - 列出目录内容
    • grep - 在文件中搜索文本
    • find - 搜索文件
    • ps - 显示进程状态
    • top - 显示系统资源使用情况

二、简单命令 

who命令

who 命令是 Linux 和 Unix 系统中的一个实用工具,用于显示当前登录到系统的用户信息。这个命令可以提供多种有用的信息,包括用户名、登录终端、登录时间等。

基本用法

who

输出格式

运行 who 命令后,输出通常包含以下几列:

  • USER:用户名
  • LINE:登录的终端设备
  • TIME:登录时间
  • IDLE:空闲时间(可选)
  • PID:进程 ID(可选)
  • COMMENT:额外的注释信息(可选)
常用选项

who 命令支持多个选项,可以用来获取更多或更具体的信息:

  • -a 或 --all:显示所有信息,包括系统引导时间和当前运行级别。
  • -b 或 --boot:显示上次系统启动的时间。
  • -d 或 --dead:显示已死进程的进程表项。
  • -H 或 --heading:显示列标题。
  • -m 或 --message 或 --writeme:显示当前用户的登录信息。
  • -p 或 --process:显示活动进程的进程表项。
  • -q 或 --count:显示登录的用户名和总数。
  • -r 或 --runlevel:显示当前的运行级别。
  • -s 或 --short:显示默认的简短信息(默认行为)。
  • -t 或 --time:显示最后一次系统时钟更改的时间。
  • -u 或 --users:显示当前登录的用户及其空闲时间。
  • -T 或 --status:显示用户的状态(+ 表示可写,- 表示不可写)。
示例
  1. 显示所有信息

    who -a
  2. 显示上次系统启动的时间

    who -b
  3. 显示当前登录的用户及其空闲时间

    who -u
  4. 显示登录的用户名和总数

    who -q
  5. 显示当前用户的登录信息

    who -m
  6. 显示列标题

    who -H

who 命令是一个非常有用的工具,可以帮助系统管理员和普通用户了解当前系统中谁在登录以及他们的登录信息。通过使用不同的选项,可以获取更多详细的系统状态信息。

echo命令

echo 命令用于在终端或脚本中输出文本或变量内容。它是 Linux 和 Unix 系统中非常常用的一个命令。

基本用法

echo [选项] [字符串]
命令格式
  • 基本格式

    echo "Hello, World!"
  • 输出变量

    name="John Doe"
    echo "Hello, $name"

常用参数

  • -n:不输出换行符。
  • -e:启用转义字符解释。
示例
  1. 基本输出

    echo "Hello, World!"
  2. 输出变量

    name="John Doe"
    echo "Hello, $name"
  3. 不输出换行符

    echo -n "Hello, "
    echo "World!"
  4. 启用转义字符

    echo -e "Hello,\nWorld!"

解释

  • -n:通常情况下,echo 命令会在输出的末尾自动添加一个换行符。使用 -n 选项可以防止这一点。
  • -e:允许在字符串中使用转义字符,如 \n(换行)、\t(制表符)等。

示例输出

  1. 基本输出

    $ echo "Hello, World!"
    Hello, World!
  2. 输出变量

    $ name="John Doe"
    $ echo "Hello, $name"
    Hello, John Doe
  3. 不输出换行符

    $ echo -n "Hello, "
    Hello, $ echo "World!"
    World!
  4. 启用转义字符

    $ echo -e "Hello,\nWorld!"
    Hello,
    World!

echo 命令非常简单但功能强大,主要用于在终端或脚本中输出文本和变量内容。通过使用 -n-e 选项,可以控制输出格式和内容。

data命令

date 命令在 Linux 和 Unix 系统中用于显示或设置系统日期和时间。这个命令非常有用,特别是在脚本中需要处理日期和时间时。

基本用法

date [选项] [+格式]
命令格式
  • 显示当前日期和时间

    date
  • 显示自定义格式的日期和时间

    date +"%Y-%m-%d %H:%M:%S"
  • 设置系统日期和时间(需要 root 权限):

    sudo date MMDDhhmm[[CC]YY][.ss]

常用参数(data [-option])

  • -d, --date=STRING:显示 STRING 中的日期和时间,而不是当前日期和时间。
  • -s, --set=STRING:设置系统日期和时间为 STRING 中的值。
  • -u, --utc, --universal:显示或设置协调世界时间(UTC)。
  • -r, --reference=FILE:显示 FILE 的最后修改时间。
  • -R, --rfc-2822:以 RFC 2822 格式显示日期和时间。

日期和时间格式说明符

  • %Y:四位数的年份(例如 2023)
  • %m:月份(01-12)
  • %d:日期(01-31)
  • %H:小时(00-23)
  • %M:分钟(00-59)
  • %S:秒(00-59)
  • %a:星期几的缩写(例如 Mon)
  • %A:星期几的全名(例如 Monday)
  • %b:月份的缩写(例如 Jan)
  • %B:月份的全名(例如 January)
  • %c:本地日期和时间表示(例如 Mon Oct 2 14:05:10 2023)
  • %x:本地日期表示(例如 10/02/23)
  • %X:本地时间表示(例如 14:05:10)
  • %Z:时区名称(例如 CST)

cal命令

cal 命令用于在终端中显示日历。它可以显示指定月份或整年的日历。

基本用法

cal [选项] [月份 [年份]]
命令格式
  • cal
  • 显示指定月份的日历

    cal 10 2023
  • 显示指定年份的全年日历

    cal 2023

常用参数

  • -m, --month=MONTH:显示指定月份的日历。
  • -y, --year=YEAR:显示指定年份的全年日历。
  • -3, --three-months:显示前一个月、当前月和下一个月的日历。
  • -1, --one-month:显示单个月份的日历(默认行为)。
  • -j, --julian:显示 Julian 日(一年中的第几天)。
  • -n, --noheadings:不显示月份和星期的头部信息。
  • -s, --sunday:将星期日作为一周的开始(默认是星期一)。

clear命令

clear 命令在 Linux 和 Unix 系统中用于清空终端屏幕,使终端窗口回到初始状态。这是一个非常简单但实用的命令,特别适合在终端中进行长时间操作时,清理屏幕以便更好地查看新的输出。

基本用法

clear
命令格式
  • 清空终端屏幕
    clear
示例
  1. 清空终端屏幕
    clear

示例输出

假设你在终端中执行了一些命令,屏幕上有大量输出。你可以使用 clear 命令来清空屏幕,回到初始状态。

$ ls
file1.txt  file2.txt  file3.txt
$ echo "Hello, World!"
Hello, World!
$ clear

执行 clear 命令后,终端屏幕会被清空,光标会回到屏幕的顶部

如下所示:

$ 

文件操作命令 

cat命令

cat 命令在 Linux 和 Unix 系统中用于显示文件内容、合并文件以及创建新的文件。它的名称来源于“concatenate”的缩写,意为连接或合并。

命令格式
cat [选项] [文件...]
命令功能
  • 查看文件内容:使用cat filename可以将指定文件的内容输出到终端上。

  • 连接文件cat file1 file2 > combined_file会将file1file2的内容连接起来,并将结果输出到combined_file中。

  • 创建文件:可以使用cat > filename来创建文件,然后输入文本,按Ctrl+D来保存并退出。

  • 显示文件:可以将cat与管道(|)结合使用,例如ls -l | cat会将ls -l的输出通过cat打印到终端上。

  • 追加内容到文件cat >> filename会将标准输入追加到文件filename的末尾。

  • 显示多个文件的内容cat file1 file2可以同时显示file1file2的内容。

  • 使用管道cat filename | commandcat命令的输出作为另一个命令的输入。

  • 查看文件的最后几行cat filename | tail -n 10显示文件filename的最后10行。

  • 制作镜像文件cat /dev/fd0 > OUTFILE可以用来制作软盘的镜像文件。相反地,如果想把镜像文件写到软盘,可以使用cat IMG_FILE > /dev/fd0

常用选项
  • -n, --number:显示所有输出行的行号。
  • -b, --number-nonblank:只对非空行编号。
  • -E, --show-ends:在每行的末尾显示 $ 符号。
  • -T, --show-tabs:将制表符显示为 ^I
  • -s, --squeeze-blank:压缩连续的空行,只显示一行空行。
  • -v, --show-nonprinting:显示非打印字符,除了换行符和制表符

cat命令可以查看,创建修改文件的内容。命令中使用>(大于符号)重定向用于创建一个新的文件,如果存在相同文件,则相同文件的内容会被覆盖,命令中使用>>(双大于符号)重定向用于给另外一个文件添加内容到文件的末尾,就是把内容往另外一个文件的文件尾部添加内容,不存在该文件也会创建一个文件在文件末尾添加内容。命令中使用<(小于符号)主要用于重定向输入,并把文件内容展示到屏幕上。 


more命令和less命令 

(首先明确一点,less命令是非常好用的命令)

moreless 是 Linux 和 Unix 系统中用于分页显示文件内容的命令。虽然它们的功能相似,但 lessmore 更加灵活和强大。下面分别介绍这两个命令的基本用法和主要特点。

more 命令

命令格式
more [选项] [文件...]
命令功能
  • 分页显示文件内容:将文件内容分页显示在终端上,方便用户逐页阅读。
  • 基本导航:支持基本的滚动和搜索功能。
常用选项
  • -d:提示用户在屏幕下方显示 [Press space to continue, 'q' to quit.],如果用户按错键,则会显示 [Press 'h' for instructions.]
  • -l:取消遇到特殊字符 ^L(换页字符)时暂停的功能。
  • -f:计算行数时,以实际的行数,而不是自动换行后的行数。
  • -p:不以卷动的方式显示每一页,而是先清除屏幕后再显示内容。
  • -c:与 -p 类似,不同的是先显示内容再清除其他旧资料。
  • -s:当遇到有连续两行以上的空白行时,压缩为一行。
  • -u:不显示下划线。
  • +n:从第 n 行开始显示文件内容。
  • +/pattern:在每个文件显示前搜索该字符串(pattern),然后从该字符串之后开始显示。
基本导航键
  • 空格键:向下滚动一屏。
  • Enter:向下滚动一行。
  • b:向上滚动一屏。
  • q:退出 more
  • h:显示帮助信息。

less 命令

命令格式
less [选项] [文件...]
命令功能
  • 分页显示文件内容:与 more 类似,但 less 支持更多的导航和搜索功能。
  • 双向导航:支持向前和向后滚动。
  • 搜索:支持向前和向后搜索。
  • 标记:可以标记感兴趣的位置并返回。
  • 实时监控:可以实时监控文件的变化。
常用选项
  • -b, --buffers:设置缓冲区大小,可以加快文件的加载速度。
  • -e, --quit-at-eof:当文件显示结束后,自动离开。
  • -f, --force:强迫打开特殊文件,例如外围设备代号、目录和二进制文件。
  • -g, --no-keypad:只标志最后搜索的关键词。
  • -i, --ignore-case:忽略搜索时的大小写。
  • -m, --long-prompt:显示类似 more 命令的百分比。
  • -N, --line-numbers:显示每行的行号。
  • -o, --log-file:将 less 输出的内容在指定文件中保存起来。
  • -Q, --quiet:不使用警告音。
  • -s, --squeeze-blank-lines:显示连续空行为一行。
  • -S, --chop-long-lines:行过长时将超出部分舍弃。
  • -x, --tabs:将 tab 键显示为规定的数字空格。
基本导航键
  • 空格键:向下滚动一屏。
  • b:向上滚动一屏。
  • PgDn:向下滚动一屏。
  • PgUp:向上滚动一屏。
  • Enter:向下滚动一行。
  • j:向下滚动一行。
  • k:向上滚动一行。
  • g:移动到文件开头。
  • G:移动到文件末尾。
  • /pattern:向前搜索 pattern
  • ?pattern:向后搜索 pattern
  • n:重复前一个搜索。
  • N:反向重复前一个搜索。
  • q:退出 less
  • h:显示帮助信息。

总结

  • more 命令

    • 特点:基本的分页显示功能,支持向前滚动和搜索。
    • 优点:简单易用。
    • 缺点:不支持向后滚动,功能相对有限。
  • less 命令

    • 特点:更强大的分页显示功能,支持双向滚动、搜索、标记和实时监控。
    • 优点:功能丰富,灵活性高。
    • 缺点:相对复杂,需要更多时间学习。

head命令和tail命令 

headtail 是 Linux 和 Unix 系统中用于显示文件内容的命令,分别用于显示文件的开头部分和结尾部分。这两个命令在处理日志文件、查看文件内容时非常有用。下面分别介绍 headtail 命令的基本用法和主要特点。

head 命令

命令格式
head [选项] [文件...]
命令功能
  • 显示文件的开头部分:默认情况下,head 命令显示文件的前 10 行内容。
常用选项
  • -n, --lines=[-]NUM:显示文件的前 NUM 行。如果 NUM 前有负号(-),则显示除最后 NUM 行之外的所有行。
  • -c, --bytes=[-]NUM:显示文件的前 NUM 个字节。如果 NUM 前有负号(-),则显示除最后 NUM 个字节之外的所有字节。
  • -q, --quiet, --silent:不显示文件名。
  • -v, --verbose:始终显示文件名。
  • -z, --zero-terminated:以空字符(NUL)而不是换行符终止每行。
示例
  1. 显示文件的前 10 行

    head filename
  2. 显示文件的前 5 行

    head -n 5 filename
  3. 显示文件的前 100 个字节

    head -c 100 filename
  4. 显示除最后 5 行之外的所有行

    head -n -5 filename
  5. 显示多个文件的前 10 行

    head file1 file2 file3

tail 命令(示例部分可以直接类比head命令)

命令格式
tail [选项] [文件...]
命令功能
  • 显示文件的结尾部分:默认情况下,tail 命令显示文件的最后 10 行内容。
常用选项
  • -n, --lines=[+]NUM:显示文件的最后 NUM 行。如果 NUM 前有加号(+),则显示从第 NUM 行开始的所有行。
  • -c, --bytes=[+]NUM:显示文件的最后 NUM 个字节。如果 NUM 前有加号(+),则显示从第 NUM 个字节开始的所有字节。
  • -f, --follow=[name|descriptor]:持续显示文件的新内容,通常用于监控日志文件。
  • -q, --quiet, --silent:不显示文件名。
  • -v, --verbose:始终显示文件名。
  • -s, --sleep-interval=SECONDS:与 -f 选项一起使用,指定每次检查文件更新的间隔时间。

 touch命令

touch 命令是 Linux/Unix 系统中一个非常基础且实用的命令,主要用于更新文件的时间戳或创建新的空文件。这个命令在日常的文件管理和维护工作中非常有用,尤其是在需要确保文件具有最新时间戳或创建临时文件的场景中。下面详细介绍一下 touch 命令的用法及其选项。

touch 命令基本功能

touch 命令主要有两个核心功能:

  1. 更新已存在文件的时间戳:当文件已经存在时,touch 命令可以将该文件的访问时间(atime)和修改时间(mtime)更新为当前系统时间,同时保持文件内容不变。这对于需要定期更新文件时间戳以满足某些程序或服务的要求非常有用。
  2. 创建新的空文件:如果指定的文件不存在,touch 命令将会创建一个新的空文件。这是创建临时文件或初始化日志文件的一种简便方法。
命令格式
touch [选项] [文件...]
常用选项
  • -a:仅更新文件的访问时间(atime)。
  • -m:仅更新文件的修改时间(mtime)。
  • -c, --no-create:如果文件不存在,则不创建新文件。
  • -t STAMP:将文件的时间戳设置为指定的时间,格式为 [[CC]YY]MMDDhhmm[.ss]
  • -d, --date=STRING:将文件的时间戳设置为由字符串 STRING 指定的时间,支持多种时间格式。
  • -r, --reference=FILE:将文件的时间戳设置为与 FILE 文件相同。
  • --help:显示帮助信息。
  • --version:显示版本信息。
示例
  1. 创建新文件

    touch newfile.txt

    如果 newfile.txt 不存在,将创建一个名为 newfile.txt 的空文件。

  2. 更新文件的时间戳

    touch existingfile.txt

    如果 existingfile.txt 已经存在,将更新其访问时间和修改时间为当前系统时间。

  3. 设置文件的时间戳为指定时间

    touch -t 202301011200 existingfile.txt

    existingfile.txt 的时间戳设置为 2023 年 1 月 1 日 12:00。

  4. 仅更新文件的访问时间

    touch -a existingfile.txt

    仅更新 existingfile.txt 的访问时间。

  5. 仅更新文件的修改时间

    touch -m existingfile.txt

    仅更新 existingfile.txt 的修改时间。

  6. 使用另一个文件的时间戳

    touch -r referencefile.txt targetfile.txt

    targetfile.txt 的时间戳设置为与 referencefile.txt 相同。

  7. 创建多个文件

    touch file1.txt file2.txt file3.txt

    同时创建 file1.txtfile2.txtfile3.txt 三个空文件。

  8. 创建带有编号的文件

    touch file{1..5}.txt

    创建 file1.txtfile5.txt 五个文件。

高级用法

  1. 避免创建新文件

    touch -c nonexistantfile.txt

    如果 nonexistantfile.txt 不存在,则不会创建新文件。

  2. 使用自定义时间格式

    touch -d "2023-01-01 12:00:00" existingfile.txt

    existingfile.txt 的时间戳设置为 2023 年 1 月 1 日 12:00:00。

注意事项

  • 权限问题:在更新文件的时间戳或创建新文件时,需要确保有足够的权限。如果目标文件属于其他用户或受权限限制,可能会遇到权限不足的问题。
  • 符号链接:默认情况下,touch 命令会更新符号链接的目标文件的时间戳,而不是符号链接本身。如果需要更新符号链接的时间戳,可以使用 -h 选项。

cp命令 

cp 命令是 Linux 和 Unix 系统中用于复制文件和目录的基本命令。它功能强大且灵活,可以处理从简单文件复制到复杂目录结构的复制任务。下面详细介绍 cp 命令的基本用法、常用选项和一些高级用法。

cp 命令基本功能

cp 命令的主要功能是将一个或多个源文件或目录复制到指定的目标文件或目录。它可以用于备份文件、复制目录结构、更新文件等。

命令格式
cp [选项] 源文件/目录 目标文件/目录
常用选项
  • -a, --archive:递归地复制目录,并保留文件属性(类似于 -dpR 选项的组合)。
  • -d, --no-dereference:当复制符号链接时,保留符号链接,而不是复制链接的目标文件。
  • -f, --force:强行复制文件或目录,不论目标文件或目录是否已存在。
  • -i, --interactive:覆盖既有文件之前先询问用户。
  • -l, --link:对源文件建立硬链接,而非复制文件。
  • -p, --preserve:保留源文件或目录的属性(如权限、所有者和时间戳)。
  • -r, -R, --recursive:递归地复制目录及其内容。
  • -u, --update:仅在源文件比目标文件新或目标文件不存在时进行复制。
  • -v, --verbose:显示详细的复制过程。
  • -n, --no-clobber:不覆盖已存在的文件。
  • -s, --symbolic-link:创建符号链接而不是复制文件。
  • --sparse=WHEN:控制稀疏文件的处理方式。
示例
  1. 复制单个文件

    cp source.txt destination.txt

    source.txt 复制为 destination.txt

  2. 将文件复制到目录中

    cp source.txt /path/to/directory/

    source.txt 复制到 /path/to/directory/ 目录中。

  3. 递归复制整个目录

    cp -r source_directory target_directory

    source_directory 及其所有内容复制到 target_directory 中。

  4. 交互式复制并保留属性

    cp -ip source.txt destination.txt

    交互式地复制 source.txtdestination.txt,并保留文件属性。

  5. 强制覆盖已有文件

    cp -f source.txt existing_file.txt

    强制覆盖 existing_file.txt

  6. 复制并重命名文件

    cp source.txt new_name.txt

    source.txt 复制为 new_name.txt

  7. 同时复制多个文件到一个目录

    cp file1.txt file2.txt /path/to/directory/

    file1.txtfile2.txt 复制到 /path/to/directory/ 目录中。

  8. 使用通配符批量复制文件

    cp *.txt target_directory/

    将当前目录下的所有 .txt 文件复制到 target_directory 目录内。

  9. 仅当源文件较目标文件新时复制

    cp -u source.txt destination.txt

    仅当 source.txtdestination.txt 新时才进行复制。

  10. 创建文件的软链接

    cp -s source.txt link.txt

    创建 source.txt 的软链接 link.txt

  11. 创建文件的硬链接

    cp -l source.txt hardlink.txt

    创建 source.txt 的硬链接 hardlink.txt

高级用法

  1. 复制稀疏文件

    cp --sparse=always sparse_file destination_file

    确保复制的文件保持稀疏格式。

  2. 避免覆盖已存在的文件

    cp -n source.txt existing_file.txt

    如果 existing_file.txt 已经存在,则不会被覆盖。

  3. 保留文件属性进行复制

    cp -p source.txt destination.txt

    复制 source.txtdestination.txt,并保留文件的权限、所有者和时间戳等属性。

  4. 显示详细的复制过程

    cp -v file1.txt file2.txt

    显示详细的复制过程,包括复制的文件名和目录名。

注意事项

  • 权限问题:在复制文件或目录时,需要确保有足够的权限。如果目标文件或目录属于其他用户或受权限限制,可能会遇到权限不足的问题。
  • 跨设备复制cp 命令无法用于跨设备(如不同磁盘分区、网络共享)的文件或目录移动,如果需要进行这样的操作,请使用 mv 命令。
  • 符号链接:默认情况下,cp 命令会复制符号链接的目标文件,而不是符号链接本身。如果需要复制符号链接,可以使用 -d 选项。

mv命令 

mv 命令的主要功能是将一个或多个源文件或目录移动到指定的目标文件或目录,或者将文件重命名。它可以用于文件管理、备份和目录结构调整等场景。

命令格式
mv [选项] 源文件/目录 目标文件/目录
常用选项
  • -b, --backup[=CONTROL]:在覆盖目标文件之前,为其创建一个备份。CONTROL 可以是 nonenumberedexistingsimple 等。
  • -f, --force:强行移动文件或目录,不论目标文件或目录是否已存在。
  • -i, --interactive:覆盖既有文件之前先询问用户。
  • -n, --no-clobber:不覆盖已存在的文件。
  • -u, --update:仅在源文件比目标文件新或目标文件不存在时才进行移动。
  • -v, --verbose:显示详细的移动过程。
  • -t, --target-directory=DIRECTORY:指定目标目录,适用于移动多个源文件到一个目录的情况。
示例
  1. 重命名文件

    mv oldname.txt newname.txt

    oldname.txt 重命名为 newname.txt

  2. 将文件移动到目录中

    mv file.txt /path/to/directory/

    file.txt 移动到 /path/to/directory/ 目录中。

  3. 将多个文件移动到目录中

    mv file1.txt file2.txt /path/to/directory/

    file1.txtfile2.txt 移动到 /path/to/directory/ 目录中。

  4. 交互式移动并保留属性

    mv -i file.txt /path/to/directory/

    交互式地移动 file.txt/path/to/directory/,如果目标文件已存在,会提示用户是否覆盖。

  5. 强制覆盖已有文件

    mv -f file.txt existing_file.txt

    强制覆盖 existing_file.txt

  6. 仅当源文件较目标文件新时移动

    mv -u file.txt destination.txt

    仅当 file.txtdestination.txt 新时才进行移动。

  7. 移动并重命名文件

    mv file.txt /path/to/directory/newname.txt

    file.txt 移动到 /path/to/directory/ 并重命名为 newname.txt

  8. 使用通配符批量移动文件

    mv *.txt /path/to/directory/

    将当前目录下的所有 .txt 文件移动到 /path/to/directory/ 目录内。

  9. 移动目录

    mv source_directory /path/to/target_directory/

    source_directory 移动到 /path/to/target_directory/ 目录中。

  10. 移动多个目录到一个目标目录

    mv dir1 dir2 /path/to/target_directory/

    dir1dir2 移动到 /path/to/target_directory/ 目录中。

  11. 创建备份文件

    mv -b file.txt /path/to/directory/

    file.txt 移动到 /path/to/directory/,如果目标文件已存在,会创建一个备份文件。

  12. 显示详细的移动过程

    mv -v file1.txt file2.txt /path/to/directory/

    显示详细的移动过程,包括移动的文件名和目录名。

高级用法

  1. 使用 --target-directory 选项

    mv -t /path/to/target_directory/ file1.txt file2.txt

    file1.txtfile2.txt 移动到 /path/to/target_directory/ 目录中,这种方式在移动多个文件时特别方便。

  2. 避免覆盖已存在的文件

    mv -n file.txt existing_file.txt

    如果 existing_file.txt 已经存在,则不会被覆盖。

  3. 跨文件系统移动

    mv -v /mnt/source/file.txt /mnt/destination/

    跨文件系统移动文件时,mv 会先将文件复制到目标位置,然后删除源文件。这对于移动大文件或目录时需要注意,因为它可能需要额外的磁盘空间。

注意事项

  • 权限问题:在移动文件或目录时,需要确保有足够的权限。如果目标文件或目录属于其他用户或受权限限制,可能会遇到权限不足的问题。
  • 符号链接:默认情况下,mv 命令会移动符号链接的目标文件,而不是符号链接本身。如果需要移动符号链接,可以使用 -T 选项。
  • 备份文件:使用 -b 选项时,备份文件的默认后缀是 ~,可以通过 --backup=CONTROL 选项指定不同的备份策略。

mv 命令用于移动文件和目录以及重命名文件。通过灵活运用 mv 命令的各种选项,可以高效地完成文件管理任务。


rm命令

rm命令是Linux中用于删除文件或目录的常用命令。由于该命令会永久删除文件,因此在使用时需要格外小心。这里将介绍rm命令的基本用法和一些重要的选项。

rm命令的基本语法

rm [options] name

其中,name可以是一个或多个文件或目录的名称。options是命令选项,用于修改命令的行为。

常用选项
  • -i:在删除文件或目录之前,系统会提示用户确认是否删除。

  • -f:强制删除文件或目录,即使文件属性为只读,也不会提示用户确认。

  • -r:递归删除,用于删除目录及其包含的所有内容,包括所有子目录和文件。

使用示例

删除单个文件时,可以直接使用rm命令,例如:

rm test.txt

如果要删除目录及其内容,需要使用-r选项:

rm -r homework

删除当前目录下的所有文件和目录,可以使用:

rm -r *

或者使用-rf选项来强制删除,不会有任何提示:

rm -rf *

注意事项

由于rm命令删除的文件无法恢复,所以在使用时必须非常谨慎。在删除重要文件或目录之前,应该确认是否有备份。如果不确定,可以使用-i选项来逐一确认,以避免意外删除。


目录及其操作命令

在 Linux 和 Unix 系统中,文件和目录管理是日常操作的重要部分。以下是一些常用的命令及其基本功能和用法的概述,包括 cdpwdlsls -Fmkdirrmdir 命令。

cd 命令

功能cd 命令用于更改当前工作目录。

语法

cd [目录路径]

基本用法

  • cd /path/to/directory:切换到指定的绝对路径目录。
  • cd relative/path/to/directory:切换到相对于当前目录的路径。
  • cd ~:切换到当前用户的主目录。
  • cd ..:切换到当前目录的上一级目录。
  • cd -:切换到上一个工作目录。
  • cd:不带参数时,默认切换到当前用户的主目录。

pwd 命令

功能pwd 命令用于显示当前工作目录的绝对路径。

语法

pwd [选项]

常用选项

  • -L:显示逻辑路径,即包含符号链接的路径(默认行为)。
  • -P:显示物理路径,即不包含符号链接的实际路径。

ls 命令

功能ls 命令用于列出目录内容。

语法

ls [选项] [目录或文件]

常用选项

  • -a:显示所有文件,包括以 . 开头的隐藏文件。
  • -d:显示目录本身的信息,而不是目录内容。
  • -l:以长格式显示文件和目录信息,包括权限、链接数、所有者、组、大小、修改日期和时间等。
  • -h:以人类可读的格式显示文件大小(例如 KB、MB、GB)。
  • -R:递归地列出所有子目录的内容。
  • -t:按修改时间排序,最新的文件或目录排在前面。
  • -S:按文件大小排序,最大的文件或目录排在前面。
  • -r:反转排序顺序。
  • -i:显示文件的 inode 编号。

ls -F 命令

功能ls -F 命令用于在列出的文件名称后加一符号,以区分不同类型的文件。

语法

ls -F [目录或文件]

符号说明

  • /:表示目录。
  • *:表示可执行文件。
  • @:表示符号链接。
  • =:表示套接字。
  • |:表示命名管道。

mkdir 命令

功能mkdir 命令用于创建新目录。

语法

mkdir [选项] 目录

常用选项

  • -p:递归创建目录,如果父目录不存在,会自动创建。
  • -m:设置新目录的权限(八进制数字表示)。
  • -v:显示创建目录的详细信息。

rmdir 命令

功能rmdir 命令用于删除空目录。

语法

rmdir [选项] 目录

常用选项

  • -p:递归删除目录,如果父目录变为空目录,也会被删除。
  • -v:显示删除目录的详细信息。

历史命令、别名命令 

在 Linux 和 Unix 系统中,history 命令和 alias 命令都是非常有用的工具,可以帮助用户更高效地管理和执行命令。下面分别介绍这两个命令的功能和用法。

history 命令

功能history 命令用于显示和管理命令历史记录。它允许用户查看之前执行过的命令,并可以重新执行这些命令。

语法

history [选项] [数量]

常用选项

  • -c:清除命令历史记录。
  • -d <偏移量>:删除指定位置的命令。
  • -a:将新的命令添加到历史文件中。
  • -n:从历史文件中读取新的命令。
  • -r:从历史文件中读取所有命令。
  • -w:将当前历史列表写入历史文件。
  • -p:执行历史扩展。
  • -s:将指定的命令添加到历史列表中。

示例

  • history:显示所有的命令历史记录。
  • history 10:显示最近的 10 条命令。
  • history -c:清除所有命令历史记录。
  • history -d 5:删除第 5 条命令。

调用命令历史的方法

  1、重复前一个命令,有4种方法

  • 使用方向键↑选中命令,按↑↓调整,并回车执行
  • 输入!! 并回车执行
  • 输入!-1 并回车执行
  • 按Ctrl + p,调出命令,并回车执行

  2、 !:0 执行前一条命令(去除参数)

  3、 Ctrl + n显示当前历史中的下一条!命令,但不执行

  4、 Ctrl + j执行当前命令

  5、 !n 执行history命令输出对应序号为n的命令

  6、 !-n执行history历史中倒数第n个命令

  7、 !string 重复前一个以“string”字符串开头的命令

  8、 !?string 重复前一个包含string字符串的命令

  9、 !string:p   仅打印命令历史,而不执行

10、 !$:p 打印输出!$(上一条命令的最后一个参数)的内容

11、 !*:p 打印输出!*(上一条命令的所有参数)的内容

12、 ^string 删除上一条命令中的第一个string

13、 ^string1^string2将上一条命令中的第一个string1替换为string2

14、 !:gs/string1/srting2 将上一条命令中所有的string1都替换为string2

15、使用方向键↑↓键来上下浏览从前输入的命令

16、Crtl + r来在命令历史中搜索命令

    进入(reverse-i-search)`':模式

17、 Crtl + g 从历史搜索模式退出

18、 重新调用前一个命令中最后一个参数,3种方法

  !$

  Esc . (点击Esc键后松开,然后点击.键)

   Alt+. (按住Alt键的同时点击.键),在一些终端软件中屏蔽了Alt功能键,需要开启alt

alias 命令

功能alias 命令用于创建命令的别名,使得用户可以通过简短的命令来执行复杂的命令或命令组合。

语法

alias [别名]=[命令]

常用选项

  • alias:显示所有已定义的别名。
  • unalias [别名]:删除指定的别名。

示例

  • alias ll='ls -l':创建一个别名 ll,执行 ls -l 命令。
  • alias cdd='cd /path/to/directory':创建一个别名 cdd,切换到指定的目录。
  • unalias ll:删除别名 ll

高级用法

自动加载别名

可以将常用的别名定义写入用户的 shell 配置文件中,例如 .bashrc.zshrc,这样每次打开终端时,这些别名就会自动生效。

示例: 编辑 .bashrc 文件,添加以下内容:

alias ll='ls -l'
alias cdd='cd /path/to/directory'
alias grep='grep --color=auto'

保存文件后,运行 source ~/.bashrc 使配置生效。

使用别名管理复杂命令

别名不仅可以简化常用的简单命令,还可以用于管理复杂的命令组合。

示例

alias backup='rsync -avz --delete /source/directory/ /destination/directory/'

这个别名 backup 用于执行一个复杂的 rsync 命令,备份指定的目录。

常见问题与解决方案

  1. 别名不生效

    • 确保别名定义已经写入正确的配置文件(如 .bashrc)。
    • 运行 source ~/.bashrc 使配置文件生效。
    • 检查是否有拼写错误。
  2. 清除命令历史

    • 使用 history -c 清除当前会话的历史记录。
    • 使用 > ~/.bash_history 清除历史文件中的记录。
  3. 恢复删除的命令

    • 如果不小心删除了某个命令,可以使用 history -r 从历史文件中重新加载命令。

 联机帮助命令

内建命令与外部命令

内建命令
  • 定义:内建命令是 shell 稼的一部,写在 shell 的源码中。这些命令在 shell 加载时就已经驻留在内存中,因此执行速度非常快。
  • 特点
    • 不需要创建子进程来执行。
    • 通常用于对 shell 进行管理和控制,例如 cdexithistory 等。
    • 可以使用 type 命令来检查一个命令是否是内建命令。

示例

$ type cd
cd is a shell builtin
外部命令
  • 定义:外部命令是独立的可执行文件,通常位于 /bin/usr/bin/sbin/usr/sbin 等目录中。这些命令在需要时才会被加载到内存中,因此执行速度相对较慢。
  • 特点
    • 需要创建子进程来执行。
    • 功能通常比较强大,例如 lsgrepfind 等。
    • 可以使用 type 命令来检查一个命令是否是外部命令。

示例

$ type ls
ls is /usr/bin/ls

常用的联机帮助命令

help 命令
  • 功能help 命令用于查看 shell 内建命令的帮助信息。
  • 语法
    help [命令]
  • 示例
    • help:显示所有内建命令的帮助信息。
    • help cd:显示 cd 命令的帮助信息。

示例

$ help cd
cd: cd [-L|[-P [-e]]] [dir]
    Change the current directory to DIR.  The default DIR is $HOME.
    ...
man 命令
  • 功能man 命令用于查看命令的手册页,包含命令的详细说明、用法、参数、示例等信息。
  • 语法
    man [选项] 命令
  • 常用选项
    • -a:显示所有手册页,而不是只显示第一处找到的。
    • -f:只显示命令的功能而不显示详细的说明文件。
    • -k:搜索手册页的关键词。
    • -P:指定显示手册所使用的分页程序。
    • -S:指定查找手册页的章节列表。
  • 示例
    • man ls:显示 ls 命令的手册页。
    • man -a ls:显示所有 ls 命令的手册页。
    • man -k grep:搜索包含 grep 关键词的手册页。

示例

$ man ls
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.
       ...
info 命令
  • 功能info 命令用于查看命令的详细信息,通常比 man 命令提供的信息更丰富,更适合阅读和导航。
  • 语法
    info [选项] 命令
  • 示例
    • info ls:显示 ls 命令的详细信息。
    • info info:显示 info 命令的详细信息。

示例

$ info ls
File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Prev: Working context,  Up: Directory listing

10.1 `ls': List directory contents
===============================

`ls' lists the files in the working directory:

     $ ls
     Makefile  notes  todo

By default, directories are listed as single entries, not recursively.  To see
all the files in all the directories, use `-R':

     $ ls -R
     .:
     dir  file

     ./dir:
     subfile

The output shows that the working directory contains two files and a
subdirectory, `dir'.  The subdirectory in turn contains one file, `subfile'.

...

都看到这里了,你的关注与点赞是我最大的动力!!! 记得收藏哦

Linux常用命令_第1张图片

 

你可能感兴趣的:(Linux常用命令)