[Linux]Command Line

Command Line

1 The shell

Shell基本上是一个程序,它接收来自键盘的命令并发送给操作系统去执行。

几乎所有的Linux发行版都会默认使用bash shell。还有其他可用的shell,如ksh、zsh、tsch等。

2 Linux 命令

pwd(print working directory)

在Linux中,所有的一切都被视为文件。每一个文件都是以层次目录树的形式组织的。文件系统中的第一个目录被称为根目录。根目录包含许多文件夹和文件,你可以存储更多的文件夹和文件等。

查看当前所在的位置,可以使用pwd命令,它会显示所在的目录,注意路径是从根目录开始的。

cd(change directory)

有两种方式可以指定路径:绝对路径和相对路径。

绝对路径:这是从根目录开始的路径。根目录是起点,通常用一个斜杠表示。每当看到路径以/开头,就意味着是从根目录开始的。

相对路径:这是根据当前在文件系统中的位置而定的路径。

一些快捷方式:

1
2
3
4
.  # 当前目录 
.. # 上级目录
~ # 主目录
- # 之前的目录
SHELL

ls(list directories)

默认情况下,ls命令会显示当前目录下的所有文件和子目录,但你也可以指定想要查看的路径。

1
$ ls
BASH

例如,要查看/home/pete目录下的内容,可以输入:

1
$ ls /home/pete
BASH

ls是一个非常实用的工具,它不仅列出了文件和目录,还能展示关于它们的详细信息。

需要注意的是,并非所有文件都直接可见。以.开头的文件名被视为隐藏文件。然而,你可以通过添加-a标志(代表“all”)来查看这些隐藏文件:

1
$ ls -a
BASH

另一个有用的选项是-l(代表“long”),它以长格式展示文件的详细列表。这包括从左到右依次为:文件权限、链接数、所有者名称、所属群组、文件大小、最后修改时间戳以及文件或目录名称。

1
$ ls -l
BASH

示例输出如下:

命令通常包含一些标志(也称为参数或选项),用以增加其功能。如上所述,我们可以将-a-l结合使用,无论是-la还是-al,顺序并不重要,两者都会生效。

touch

使用touch命令,可以创建新的空文件。

1
$ touch mysuperduperfile
BASH

此外,touch命令还可以用于更新现有文件或目录的时间戳。

file

在Linux中,文件名不需要反映文件的实际内容。你可以创建一个名为funny.gif的文件,但实际上它并不是一个GIF格式的文件。

为了确定一个文件的真实类型,可以使用file命令。这个命令会显示文件内容的描述。

1
$ file banana.jpg
BASH

通过这种方式,可以准确地了解文件的实际类型,避免因为文件名的误导而产生混淆。

cat

cat命令,它是“concatenate”的缩写。此命令不仅可以显示文件内容,还能合并多个文件并展示它们的输出。

1
$ cat dogfile birdfile
BASH

请注意,cat命令不适用于查看大型文件,它主要针对简短的内容。

less

当查看的内容超出简单的输出范围时,lessmore更为适用。文本以分页方式显示,允许用户逐页浏览文件内容。

使用less查看文件内容时,可以通过多种键盘命令在文件内进行导航:

1
$ less /home/pete/Documents/text1
BASH

以下是在less中导航的操作指令:

  • q:退出less返回shell。
  • 方向键上下、Page Up、Page Down:通过箭头或翻页键进行上下滚动。
  • g:移至文本文件开头。
  • G:移至文本文件末尾。
  • /搜索词:可在文档内查找特定文本,输入斜杠后紧跟想要查找的词语。
  • h:若需要关于如何使用less的帮助,可以在less中调用帮助信息。

history

在Shell中,有一个之前执行命令的历史记录,可以用来查找并重新运行之前的命令,而无需再次手动输入。

  • 查看命令历史:通过history命令查看已执行的命令列表。
  • 重复上一个命令:只需按向上箭头键即可浏览并选择之前的命令执行。
  • 快速执行最后一条命令:使用!!来快速执行最近一次执行的命令。例如,如果之前执行了cat file1,现在想再次执行,只需输入!!即可。

另一个快捷方式是使用Ctrl+R进行反向搜索。当按下Ctrl+R后开始输入命令的部分内容,它会显示匹配项,并可以通过再次按下Ctrl+R来循环浏览这些匹配项。找到目标命令后,按Enter键即可执行。

cp(copy)

  • 复制单个文件:使用cp命令将文件从一个位置复制到另一个位置。例如,要将mycoolfile复制到/home/pete/Documents/cooldocs目录下:

    1
    $ cp mycoolfile /home/pete/Documents/cooldocs
    BASH
  • 使用通配符批量复制:通配符允许基于模式匹配选择文件,增加了搜索的灵活性。常见通配符包括:

    • *:代表任意长度的字符。
    • ?:代表单一字符。
    • []:代表方括号内的任意字符。

    例如,复制当前目录下所有.jpg文件到Pictures目录:

    1
    $ cp *.jpg /home/pete/Pictures
    BASH
  • 递归复制:使用-r标志可以递归地复制文件和目录。这对于需要将整个目录及其内容一并复制的情况非常有用。例如,将Pumpkin目录下的所有内容复制到Documents目录:

    1
    $ cp -r Pumpkin/ /home/pete/Documents
    BASH

注意,在向已有同名文件的目录中复制文件时,若不希望意外覆盖原文件,可以使用-i标志,它会在覆盖前提示确认:

1
$ cp -i mycoolfile /home/pete/Pictures
BASH

mv(move)

mv命令用于移动文件或重命名文件,其标志和功能与cp命令相似。

  • 重命名文件:使用mv命令可以将文件重命名。例如,将oldfile重命名为newfile

    1
    $ mv oldfile newfile
    BASH
  • 移动文件:也可以使用mv命令将文件移动到不同的目录。例如,将file2移动到/home/pete/Documents目录下:

    1
    $ mv file2 /home/pete/Documents
    BASH
  • 移动多个文件:一次移动多个文件到指定目录。例如,将file_1file_2移动到somedirectory目录下:

    1
    $ mv file_1 file_2 /somedirectory
    BASH
  • 重命名目录:同样适用于目录的重命名。例如,将directory1重命名为directory2

    1
    $ mv directory1 directory2
    BASH

注意,当目标目录中已存在同名文件或目录时,mv命令会覆盖它们。为了避免误操作,可以使用-i标志在覆盖前进行提示:

1
$ mv -i directory1 directory2
BASH

此外,若希望在覆盖文件时创建备份,可以使用-b标志,这样旧版本的文件将会被自动重命名为带有波浪号(~)后缀的形式:

1
$ mv -b directory1 directory2
BASH

这种机制确保了数据的安全性,即使在执行可能覆盖现有文件的操作时也能保留原始文件的副本。

mkdir

mkdir命令(Make Directory)在不存在时创建一个目录。可以同时创建多个目录。

1
$ mkdir books paintings
BASH

使用-p选项(父目录标志),还可以一次性创建子目录结构。这对于创建深层嵌套的目录尤其有用,因为-p选项会自动创建所有必要的父目录。

1
$ mkdir -p books/hemingway/favorites
BASH

上述命令将创建books目录(如果它尚不存在),然后在其中创建hemingway子目录,并最终在hemingway目录中创建favorites子目录。此方法确保了即使指定路径中的某些目录已存在,也不会引发错误,使得目录创建过程更加流畅和高效。

rm

rm(remove)命令用于删除文件和目录。

基础的文件删除操作如下所示:

1
$ rm file1
BASH

在使用rm命令时需格外小心,因为一旦文件被删除,它们将不可恢复。因此,操作时务必谨慎。

系统为防止误删重要文件,已内置了一些安全措施。例如,写保护的文件在删除前会提示确认;同样地,写保护的目录也不会轻易被移除。

如果确实需要强制删除文件,可以使用以下带有-f(force)选项的命令,它会忽略写保护,不提示用户直接删除文件(只要拥有相应的权限):

1
$ rm -f file1
BASH

使用-i选项可使删除过程更加安全,因为它会在删除每个文件前提示确认:

1
$ rm -i file
BASH

要删除一个包含文件或子目录的目录,则需要添加-r(recursive)标志以递归方式删除目录及其内容:

1
$ rm -r directory
BASH

另外,对于空目录,可以使用rmdir命令进行删除:

1
$ rmdir directory
BASH

请注意,rmdir仅能删除空目录,若目录中包含任何文件或其他子目录,则必须使用rm -r命令进行删除。这些方法确保了文件系统的整洁与管理的有效性。

find

在系统中管理大量文件时,查找特定文件可能会变得有些棘手。为此,可以使用find命令来简化这一过程。

要查找一个名为puppies.jpg的文件,可以使用如下命令:

1
$ find /home -name puppies.jpg
BASH

此命令允许指定要搜索的目录(在此例中为/home),以及正在寻找的文件名(puppies.jpg)。

此外,还可以通过指定文件类型来精确查找目标。例如,若要查找名为MyFolder的目录,可以使用以下命令:

1
$ find /home -type d -name MyFolder
BASH

这里,我们通过设置-type选项为d来指明正在寻找的是一个目录,并继续按名称MyFolder进行搜索。

值得注意的是,find命令不仅会在指定目录中查找,还会递归地检查该目录下的所有子目录。

help

Linux系统内置了一些优秀的工具,可以帮助用户了解如何使用命令或检查命令可用的标志选项。其中一个工具是help,这是一个内置在bash中的命令,为其他bash命令(如echologoutpwd等)提供帮助信息。

例如,要获取echo命令的帮助,可以输入:

1
$ help echo
BASH

这将提供关于echo命令的描述以及可以使用的选项。对于其他的可执行程序,通常会有一个称为--help的选项或其他类似选项来提供帮助信息。

但是,请注意,并非所有开发者发布的可执行文件都会遵循这一约定。尽管如此,尝试使用--help仍然是查找程序帮助信息的最佳方式。例如:

1
$ echo --help
BASH

man

在Linux中,许多程序配有详细的文档,方便用户查阅。这些文档被称为手册页(man pages),通过man命令可以访问关于某个命令的手册。

例如,要查看ls命令的手册,可以输入:

1
$ man ls
BASH

手册页是默认集成到大多数Linux操作系统中的文档,提供了关于命令及其他系统方面的详细说明。

whatis

如果对某个命令的功能感到不确定,可以使用whatis命令来获取帮助。whatis命令提供了关于命令行程序的简短描述。

例如,要查看cat命令的相关描述,可以输入:

1
$ whatis cat
BASH

该描述源自每个命令的手册页。执行上述命令后,您将看到一段简洁的描述,介绍cat命令的作用。

alias

要为命令创建别名,只需指定一个别名并将其设置为相应的命令即可。

例如,创建一个名为foobar的别名用于执行ls -la命令:

1
$ alias foobar='ls -la'
BASH

现在,可以直接输入foobar来执行ls -la命令。注意,使用上述方法创建的别名在系统重启后不会保存,因此如果希望别名持久化,需要将它们添加到以下文件中:

1
~/.bashrc
BASH

或类似的配置文件中,以确保重启后别名依然有效。

若要删除别名,可以使用unalias命令:

1
$ unalias foobar
BASH

[Linux]Command Line
https://erlsrnby04.github.io/2025/03/18/Linux-Command-Line/
作者
ErlsrnBy04
发布于
2025年3月18日
许可协议