[书签]初学者重击:21条有用的命令

该材料(我们今天发布的翻译)适用于那些希望掌握Linux命令行的人。 有效使用此工具的能力可以节省大量时间。 特别是,它将涉及Bash shell和21个有用的命令。 我们还将讨论如何使用命令标志和Bash别名来加快长指令的输入。



另请在我们的博客上阅读有关bash脚本的一系列出版物

条款


在学习如何使用Linux命令行时,您可能会遇到许多对导航有用的概念。 其中有些有时会造成混淆,例如“ Linux”和“ Unix”,或“命令外壳”和“终端”。 让我们谈谈这些和其他重要术语。

Unix是由Bell Labs在1970年代开发的流行操作系统。 她的密码是私人的。

Linux是最流行的类Unix操作系统。 今天,它已在包括计算机在内的各种设备上使用。

终端或终端仿真器是提供对操作系统访问的程序。 您可以同时打开多个终端窗口。

Shell是一个程序,它允许您将以特殊语言编写的命令发送到操作系统。

Bash代表Bourne Again Shell。 这是用于与操作系统交互的最常见的外壳语言。 另外,macOS使用默认的Bash shell。

命令行界面(CLI)是人与计算机之间的一种交互方式,当用户使用该接口从键盘输入命令,并且计算机执行这些命令时,会以文本形式为用户显示消息。 基本上,CLI用于获取有关某些实体(例如文件)的最新信息,并用于处理文件。 命令行界面应区别于主要由鼠标使用的图形用户界面(GUI)。 命令行界面通常简称为命令行。

脚本是一个小程序,其中包含一系列shell命令。 脚本被写入文件,您可以重复使用它们。 编写脚本时,可以使用变量,条件构造,循环,函数和其他功能。

现在我们已经考虑了重要的术语,我想指出的是,在这里我将使用术语“ Bash”,“ shell”和“命令行”可互换使用,以及“目录”和“文件夹”的概念。

我们将在此处使用的标准是标准输入(标准输入, stdin ),标准输出(标准输出, stdout )和标准错误输出(标准错误, stderr )。

如果在下面给出的命令示例中,您遇到了my_whatever类的my_whatever -这意味着该片段需要用您的东西替换。 例如,文件名。

现在,在继续分析致力于本材料的团队之前,让我们看一下他们的名单和简短描述。

21 Bash团队


information获取信息


  • man :显示该命令的用户手册(帮助)。
  • pwd :显示有关工作目录的信息。
  • ls :显示目录的内容。
  • ps :允许您查看有关正在运行的进程的信息。

▍文件系统操作


  • cd :更改工作目录。
  • touch :创建一个文件。
  • mkdir :创建目录。
  • cp :复制文件。
  • mv :移动或删除文件。
  • ln :链接创建。

▍I / O重定向和流水线


  • <stdin重定向。
  • >stdout重定向。
  • | :使用管道将一个命令的输出重定向到另一个命令的输入。

files读取文件


  • head :读取文件的开头。
  • tail :读取文件末尾。
  • cat :读取文件并在屏幕上显示其内容或连接文件。

▍删除文件,停止进程


  • rm :删除文件。
  • kill :停止进程。

▍搜索


  • grep :搜索信息。
  • ag :高级搜索团队。

▍存档


  • tar :创建并使用档案。

让我们更详细地讨论这些命令。

团队详情


首先,让我们处理其结果以stdout形式显示的团队。 通常,这些结果显示在终端窗口中。

information获取信息


man command_name :命令手册的输出,即参考信息。

pwd :显示当前工作目录的路径。 使用命令行时,用户经常需要准确地找到他在系统上的位置。

ls :显示目录内容。 此命令也经常使用。

ls -a :输出隐藏文件。 ls-a标志在此处应用。 使用标志有助于自定义团队行为。

ls -l :显示详细的文件信息。

请注意,标志可以合并。 例如,像这样: ls -al

ps :查看正在运行的进程。

ps -e :显示有关所有正在运行的进程的信息,而不仅仅是与当前用户外壳程序有关的信息。 此命令通常以这种形式使用。

▍文件系统操作


cd my_directory :将工作目录更改为my_directory 。 要在目录树中上my_directory一个级别,请使用相对路径../作为my_directory


CD指令

touch my_file :在指定路径下创建my_file

mkdir my_directory :在指定路径下创建my_directory文件夹。

mv my_file target_directory :将my_file文件移动到my_file文件夹。 指定目标目录时,必须使用其绝对路径(而不是../类的结构)。

mv命令还可用于重命名文件或文件夹。 例如,它可能看起来像这样:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
:创建mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
的副本并将其放在target_directory文件夹中。

ln -s my_source_file my_target_file :创建到my_source_file的符号链接my_source_file 。 如果更改链接,原始文件也将更改。

如果删除文件my_source_file ,则my_target_file将保留。 ln命令的-s标志允许您创建目录链接。

现在让我们谈谈I / O重定向和管道。

▍I / O重定向和流水线


my_command < my_file :用文件my_command < my_file替换标准输入文件( stdin )的描述符。 如果该命令希望从键盘输入一些数据,并且该数据预先存储在文件中,则此功能很有用。

my_command > my_file :将命令结果(即通常进入stdout并显示在屏幕上的结果)重定向到my_file文件。 如果文件my_file不存在,则会创建它。 如果文件存在,则将其覆盖。

例如,执行ls > my_folder_contents.txt ,将创建一个文本文件,其中包含当前工作目录中内容的列表。

如果代替符号>使用构造>> ,则只要有一个文件将命令的输出重定向到该文件,该文件就不会被覆盖。 数据将添加到此文件的末尾。

现在看一下流水线数据。


一个命令的输出将馈送到另一命令的输入。 就像将一个管道连接到另一个管道一样

first_command | second_command first_command | second_command :管道符号, | ,用于将一个小组的结果发送给另一小组。 位于所描述结构左侧的命令发送到stdout的事实落入stdin命令的stdin位于管道符号的右侧。

在Linux中,几乎可以使用任何正确组成的命令来组织流水线数据。 人们常说Linux中的一切都是流水线。

使用传送带符号,可以将多个命令链接在一起。 看起来像这样:

 first_command | second_command | third_command 


可以将多个团队的输送机与管道进行比较

请注意,当命令位于|的左侧时|stdout打印某些内容,它立即打印出的内容将作为第二条命令的stdin可用。 也就是说,事实证明,使用管道,我们正在处理命令的并行执行。 有时,这可能会导致意外的结果。 可以在这里找到有关此内容的详细信息。

现在让我们讨论从文件中读取数据并将其显示在屏幕上。

files读取文件


head my_file :从文件的开头读取行并显示它们。 使用此命令作为管道的元素,您不仅可以读取文件的内容,还可以读取命令输出到stdin的内容。

tail my_file :从文件末尾读取行。 此命令也可以在管道中使用。


头在前面,尾巴在后面

如果您正在使用pandas库处理数据,那么headtail命令应该为您所熟悉。 如果不是这种情况,请查看上图,您将轻松记住它们。

让我们看看其他读取文件的方式,并讨论cat

cat要么在屏幕上显示文件的内容,要么串联多个文件。 这取决于调用时将多少文件传递给此命令。


猫队

cat my_one_file.txt :将一个命令传输到此命令时,它将在stdout显示它。

如果给她两个或更多文件,则她的行为会有所不同。

cat my_file1.txt my_file2.txt :已接收到多个文件作为输入,此命令将其内容串联起来并显示stdout发生的情况。

如果串联文件的结果需要另存为新文件,则可以使用>运算符:

 cat my_file1.txt my_file2.txt > my_new_file.txt 

现在让我们谈谈如何删除文件和停止进程。

▍删除文件,停止进程


rm my_file :删除my_file文件。

rm -r my_folder :删除my_folder文件夹及其包含的所有文件和文件夹。 -r标志指示该命令将在递归模式下工作。

为防止系统在每次删除文件或文件夹的操作中要求确认,请使用-f标志。

kill 012345 :停止指定的运行进程,使其有时间正确关闭。

kill -9 012345 :强制终止指定的运行进程。 形式为-s SIGKILL标志的含义与标志-9相同。

▍搜索


您可以使用不同的命令来搜索数据。 特别是grepagack 。 我们从grep开始介绍这些命令。 这是一个经过时间考验,可靠的团队,但是,它比其他人慢并且不喜欢它们,使用起来很方便。


Grep命令

grep my_regex my_file :在my_file搜索my_regex 。 找到匹配项后,将为每个匹配项返回整个字符串。 默认情况下, my_regex视为正则表达式。

grep -i my_regex my_file :搜索不区分大小写。

grep -v my_regex my_file :返回不包含my_regex所有行。 -v标志意味着反转;它类似于NOT运算符,在许多编程语言中都可以使用。

grep -c my_regex my_file :返回有关文件中找到的搜索模式匹配数的信息。

grep -R my_regex my_folder :对位于给定文件夹及其中的文件夹中的所有文件执行递归搜索。

现在让我们谈谈ag团队。 她后来出现了grep ,她更快,和她一起工作更方便。


银队

ag my_regex my_file :返回有关行号以及行本身的信息,其中与my_regex匹配。

ag -i my_regex my_file :搜索不区分大小写。

ag命令自动处理.gitignore文件,并从输出中排除在此文件中列出的文件夹或文件中找到的内容。 非常方便。

ag my_regex my_file -- skip-vcs-ignores :在搜索过程中不考虑自动版本控制系统文件的内容(如.gitignore )。

另外,为了告诉ag命令要从搜索中排除哪些文件路径,您可以创建一个.agignore文件。

在本节的开头,我们提到了ack命令。 ackag命令非常相似;可以说它们是99%可互换的。 但是, ag命令速度更快,因此我专门对其进行了描述。

现在让我们谈谈使用存档。

▍存档


tar my_source_directory :将my_source_directory文件夹中的文件合并为一个tarball文件。 此类文件使用方便,可以将大量文件传输给某人。


Tar命令

通过此命令创建的tarball文件是扩展名为.tar文件(Tape ARchive)。 “ tape”一词隐藏在命令名称中以及由它创建的文件名称的扩展名中,表明该命令存在了多长时间。

tar -cf my_file.tar my_source_directory :使用my_source_directory文件夹的内容创建一个名为my_file.tar的tarball文件。 -c标志代表“创建”, -f标志代表“文件”。

要提取.tar文件中的文件,请使用带有-x (“提取”,提取)和-f (“ file”,文件)标记的tar命令。

tar -xf my_file.tar :将文件从my_file.tar tar -xf my_file.tar到当前工作目录中。

现在让我们谈谈如何压缩和解压缩.tar文件。

tar -cfz my_file.tar.gz my_source_directory :此处,使用-z标志(“ zip”压缩算法)指示应使用gzip (GNU zip)来压缩文件。 存储此类文件时,文件压缩可节省磁盘空间。 例如,如果计划将文件传输给其他用户,则有助于更快地下载此类文件。

您可以通过在命令中添加-z标志来解压缩.tar文件的内容来解压缩.tar.gz文件。 看起来像这样:

tar -xfz my_file.tar.gz
应当注意, tar命令具有更多有用的标志。

重击别名


Bash别名(也称为别名或缩写)旨在创建命令或其序列的缩写名称,使用它们代替普通命令可以加快工作速度。 python setup.py sdist bdist_wheel ,如果您有一个别名bu ,在其后隐藏了python setup.py sdist bdist_wheel ,则只需使用该别名即可调用此命令。

要创建这样的别名,只需将以下命令添加到~/.bash_profile文件中:

 alias bu="python setup.py sdist bdist_wheel" 

如果您的系统没有~/.bash_profile文件,则可以使用touch命令自己创建它。 创建别名后,请重新启动终端,然后即可使用该别名。 在这种情况下,两个字符的输入将替换该命令的三个以上字符的输入,该命令旨在构建 Python软件包。

~/.bash_profile您可以为任何常用命令添加别名。

▍结果


在本文中,我们研究了21个流行的Bash团队,并讨论了为团队创建别名的问题。 如果您对此主题感兴趣, 这里是 Bash系列出版物。 在这里您可以找到这些出版物的pdf版本。 此外,如果您想学习Bash,请记住,与研究任何其他软件系统一样,练习很重要。

亲爱的读者们! 您将在本文讨论的命令中添加哪些对初学者有用的命令?

另请在我们的博客上阅读有关bash脚本的一系列出版物

Source: https://habr.com/ru/post/zh-CN445270/


All Articles