[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 |
|
ls(list directories)
默认情况下,ls
命令会显示当前目录下的所有文件和子目录,但你也可以指定想要查看的路径。
1 |
|
例如,要查看/home/pete
目录下的内容,可以输入:
1 |
|
ls
是一个非常实用的工具,它不仅列出了文件和目录,还能展示关于它们的详细信息。
需要注意的是,并非所有文件都直接可见。以.
开头的文件名被视为隐藏文件。然而,你可以通过添加-a
标志(代表“all”)来查看这些隐藏文件:
1 |
|
另一个有用的选项是-l
(代表“long”),它以长格式展示文件的详细列表。这包括从左到右依次为:文件权限、链接数、所有者名称、所属群组、文件大小、最后修改时间戳以及文件或目录名称。
1 |
|
示例输出如下:
命令通常包含一些标志(也称为参数或选项),用以增加其功能。如上所述,我们可以将-a
和-l
结合使用,无论是-la
还是-al
,顺序并不重要,两者都会生效。
touch
使用touch
命令,可以创建新的空文件。
1 |
|
此外,touch
命令还可以用于更新现有文件或目录的时间戳。
file
在Linux中,文件名不需要反映文件的实际内容。你可以创建一个名为funny.gif
的文件,但实际上它并不是一个GIF格式的文件。
为了确定一个文件的真实类型,可以使用file
命令。这个命令会显示文件内容的描述。
1 |
|
通过这种方式,可以准确地了解文件的实际类型,避免因为文件名的误导而产生混淆。
cat
cat
命令,它是“concatenate”的缩写。此命令不仅可以显示文件内容,还能合并多个文件并展示它们的输出。
1 |
|
请注意,cat
命令不适用于查看大型文件,它主要针对简短的内容。
less
当查看的内容超出简单的输出范围时,less
比more
更为适用。文本以分页方式显示,允许用户逐页浏览文件内容。
使用less
查看文件内容时,可以通过多种键盘命令在文件内进行导航:
1 |
|
以下是在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
使用通配符批量复制:通配符允许基于模式匹配选择文件,增加了搜索的灵活性。常见通配符包括:
*
:代表任意长度的字符。?
:代表单一字符。[]
:代表方括号内的任意字符。
例如,复制当前目录下所有
.jpg
文件到Pictures
目录:1
$ cp *.jpg /home/pete/Pictures
递归复制:使用
-r
标志可以递归地复制文件和目录。这对于需要将整个目录及其内容一并复制的情况非常有用。例如,将Pumpkin
目录下的所有内容复制到Documents
目录:1
$ cp -r Pumpkin/ /home/pete/Documents
注意,在向已有同名文件的目录中复制文件时,若不希望意外覆盖原文件,可以使用-i
标志,它会在覆盖前提示确认:
1 |
|
mv(move)
mv
命令用于移动文件或重命名文件,其标志和功能与cp
命令相似。
重命名文件:使用
mv
命令可以将文件重命名。例如,将oldfile
重命名为newfile
:1
$ mv oldfile newfile
移动文件:也可以使用
mv
命令将文件移动到不同的目录。例如,将file2
移动到/home/pete/Documents
目录下:1
$ mv file2 /home/pete/Documents
移动多个文件:一次移动多个文件到指定目录。例如,将
file_1
和file_2
移动到somedirectory
目录下:1
$ mv file_1 file_2 /somedirectory
重命名目录:同样适用于目录的重命名。例如,将
directory1
重命名为directory2
:1
$ mv directory1 directory2
注意,当目标目录中已存在同名文件或目录时,mv
命令会覆盖它们。为了避免误操作,可以使用-i
标志在覆盖前进行提示:
1 |
|
此外,若希望在覆盖文件时创建备份,可以使用-b
标志,这样旧版本的文件将会被自动重命名为带有波浪号(~)后缀的形式:
1 |
|
这种机制确保了数据的安全性,即使在执行可能覆盖现有文件的操作时也能保留原始文件的副本。
mkdir
mkdir
命令(Make Directory)在不存在时创建一个目录。可以同时创建多个目录。
1 |
|
使用-p
选项(父目录标志),还可以一次性创建子目录结构。这对于创建深层嵌套的目录尤其有用,因为-p
选项会自动创建所有必要的父目录。
1 |
|
上述命令将创建books
目录(如果它尚不存在),然后在其中创建hemingway
子目录,并最终在hemingway
目录中创建favorites
子目录。此方法确保了即使指定路径中的某些目录已存在,也不会引发错误,使得目录创建过程更加流畅和高效。
rm
rm
(remove)命令用于删除文件和目录。
基础的文件删除操作如下所示:
1 |
|
在使用rm
命令时需格外小心,因为一旦文件被删除,它们将不可恢复。因此,操作时务必谨慎。
系统为防止误删重要文件,已内置了一些安全措施。例如,写保护的文件在删除前会提示确认;同样地,写保护的目录也不会轻易被移除。
如果确实需要强制删除文件,可以使用以下带有-f
(force)选项的命令,它会忽略写保护,不提示用户直接删除文件(只要拥有相应的权限):
1 |
|
使用-i
选项可使删除过程更加安全,因为它会在删除每个文件前提示确认:
1 |
|
要删除一个包含文件或子目录的目录,则需要添加-r
(recursive)标志以递归方式删除目录及其内容:
1 |
|
另外,对于空目录,可以使用rmdir
命令进行删除:
1 |
|
请注意,rmdir
仅能删除空目录,若目录中包含任何文件或其他子目录,则必须使用rm -r
命令进行删除。这些方法确保了文件系统的整洁与管理的有效性。
find
在系统中管理大量文件时,查找特定文件可能会变得有些棘手。为此,可以使用find
命令来简化这一过程。
要查找一个名为puppies.jpg
的文件,可以使用如下命令:
1 |
|
此命令允许指定要搜索的目录(在此例中为/home
),以及正在寻找的文件名(puppies.jpg
)。
此外,还可以通过指定文件类型来精确查找目标。例如,若要查找名为MyFolder
的目录,可以使用以下命令:
1 |
|
这里,我们通过设置-type
选项为d
来指明正在寻找的是一个目录,并继续按名称MyFolder
进行搜索。
值得注意的是,find
命令不仅会在指定目录中查找,还会递归地检查该目录下的所有子目录。
help
Linux系统内置了一些优秀的工具,可以帮助用户了解如何使用命令或检查命令可用的标志选项。其中一个工具是help
,这是一个内置在bash中的命令,为其他bash命令(如echo
、logout
、pwd
等)提供帮助信息。
例如,要获取echo
命令的帮助,可以输入:
1 |
|
这将提供关于echo
命令的描述以及可以使用的选项。对于其他的可执行程序,通常会有一个称为--help
的选项或其他类似选项来提供帮助信息。
但是,请注意,并非所有开发者发布的可执行文件都会遵循这一约定。尽管如此,尝试使用--help
仍然是查找程序帮助信息的最佳方式。例如:
1 |
|
man
在Linux中,许多程序配有详细的文档,方便用户查阅。这些文档被称为手册页(man pages),通过man
命令可以访问关于某个命令的手册。
例如,要查看ls
命令的手册,可以输入:
1 |
|
手册页是默认集成到大多数Linux操作系统中的文档,提供了关于命令及其他系统方面的详细说明。
whatis
如果对某个命令的功能感到不确定,可以使用whatis
命令来获取帮助。whatis
命令提供了关于命令行程序的简短描述。
例如,要查看cat
命令的相关描述,可以输入:
1 |
|
该描述源自每个命令的手册页。执行上述命令后,您将看到一段简洁的描述,介绍cat
命令的作用。
alias
要为命令创建别名,只需指定一个别名并将其设置为相应的命令即可。
例如,创建一个名为foobar
的别名用于执行ls -la
命令:
1 |
|
现在,可以直接输入foobar
来执行ls -la
命令。注意,使用上述方法创建的别名在系统重启后不会保存,因此如果希望别名持久化,需要将它们添加到以下文件中:
1 |
|
或类似的配置文件中,以确保重启后别名依然有效。
若要删除别名,可以使用unalias
命令:
1 |
|