全文4108字,预计学习时间8分钟以上大家有没有注意到,电影里那个超级烦人的黑客,只要输入几行指令,盯着黑底绿字的屏幕空,就能轻松渗透最安全的银行系统,抢劫银行
全文4108字,预计学习时间8分钟以上
大家有没有注意到,电影里那个超级烦人的黑客,只要输入几行指令,盯着黑底绿字的屏幕空,就能轻松渗透最安全的银行系统,抢劫银行账户?这个人是如何只需几个按键就能畅通无阻地获取所有密码并控制所有隐藏摄像头的?很难说电影人是怎么做到这种效果的,这是违背原则的!但也许这就是他们的目的:通过镜头告诉观众“命令行”有多强大!
很多时候,由于初学者太习惯使用图形用户界面,很容易忽略命令行界面的功能。当用户需要将大约10万个文件复制到一个文件夹中时,使用鼠标就可以完成,但是如果需要对这些文件进行重命名或者按照扩展名进行排序怎么办?因为GUI是不可编程的,所以使用“命令行”操作是不可行的。但是,通过键入几行代码,这个操作可以很快完成。
对于不同的开发者来说,Unix shell是一个非常强大的工具。本文旨在介绍UNIX操作系统的基础知识。
一种多用户的计算机操作系统
除了WINDOWS,今天大多数操作系统都是建立在UNIX上的。包括Linux发行版,macOS,iOS,Android等。看一眼UNIX操作系统的谱系就足以凸显UNIX的重要性,这也是它在业界被如此广泛采用的原因。事实上,许多数据和计算系统的后端,包括像脸书和谷歌这样的行业巨头,都广泛使用UNIX。
UNIX族谱 图片来源:WIkipediaUNIX家谱图片来源:维基百科
壳
Shell是在计算机上运行程序的命令行界面。在用户提示符下键入一串命令,shell为用户运行程序,然后显示输出。用户可以直接输入命令,也可以从称为shell脚本或shell程序的文件中读取命令。
外壳类型
UNIX系统通常提供多种shell类型。以下是常见的壳类型:
本文只关注Bash Shell,不详细介绍其他类型。但是,也鼓励您阅读和尝试其他shell类型,尤其是zsh shell,因为zsh将在苹果最新的Mac操作系统Catalina中取代bash shell。所以现在知道了真好。
末端的
终端是用来与shell交互的程序,是Shell与运行在其中的其他命令行程序的交互接口。类似于网页浏览器,是网站的界面。以下是典型的Mac终端的外观:
典型MAC终端示例图
Mac和Linux都有各自版本的终端。Windows也有一个内置的命令shell,但它是基于MS-DOS命令行而不是UNIX。那么接下来,请看如何在Windows上安装shell和终端程序,并使其运行与Mac和Linux上的相同。
在Windows系统中安装
Windows系统Linux子程序
WSL是Windows 10发布的新版Linux兼容系统,允许开发者直接在Windows上运行GNU/Linux环境——包括大部分命令行工具、实用程序和应用——无需修改和虚拟机开销。
Gitbash命令
本文将使用Git Bash命令。下载后会得到一个终端窗口,如下图所示。
WindowsGit Bash示例图WindowsGit Bash示例图
终端探索
无论何时打开终端窗口,您都会看到上次登录凭证和Shell提示符。一旦shell准备好接受输入,就会出现一个Shell提示符。根据发布版本的不同,显示可能略有不同,但在大多数情况下,显示为用户名@机器名后跟$符号。
如果您不想显示以上信息,您可以使用PS1来自定义shell提示符。
现在终端在提示符下只显示$了。但这只是暂时的。一旦终端被关闭,它将被重置为其原始设置。
初级课程
要开始使用Bash,请尝试以下简单的命令:
Echo:返回您在shell提示符下键入的内容,类似于Python中的打印。
日期:显示当前时间和日期。
Cal:显示当月的日历。
清除终端:按住Ctrl-L或delete清除终端。
Bash命令的基本知识
Bash命令是Bash可以独立执行的最小代码单元。这些命令告诉Bash需要做什么。Bash通常接收来自用户的单个命令,并在命令执行后将其返回给用户。
工作目录
Pwd命令(打印工作目录)
PWD是打印工作目录的缩写。它的作用是显示当前工作目录,即shell当前正在查看的目录,也是shell命令查找数据文件的默认位置。
目录类似于文件夹,但是在Shell中,它被称为目录。UNIX文件层次结构是树状的。要访问特定的文件夹或文件,您需要通过树结构中的一些特定路径。路径需要用斜杠(/)字符分隔上述结构的每个节点。
文件位置/文件导航
Ls和cd等命令用于定位和管理文件。
限位开关(Limit Switch)
是Ls list的缩写,它的作用是列出目录的内容。通常从主目录查看。这意味着如果你自己运行Ls,当前目录的内容会一直显示。根据我的经验,是/Users/parul。
shell和GUI界面中主目录显示图示例。以及shell和GUI界面中主目录显示图的示例。
因素
当与Ls命令一起使用时,参数和选项会打开一些特殊的功能。
ls & lt文件夹& gt:查看特定文件夹的内容。
Ls-a:用于列出文件夹中所有隐藏的文件。
Ls-l:显示一个更长更详细的文件列表。Ls -l也可以与目录名一起使用,以列出指定的目录文件。
Ls ~:波浪号()是表示主目录的快捷方式。所以无论进入哪个目录,ls~都会一直列出主目录。
通配符
Shell还支持文件名与模式匹配,这由星号(*)表示。用通配符替换给定模式中的其他字符。例如,如果*。txt,通配符被列出,所有文件的。将列出txtextension。接下来,试着列出所有的。演示文件夹中的py文件:
Cd命令
Cd是Change Directory的缩写,它的作用是将active directory更改到指定的路径。进入目录后,可以使用ls命令查看目录的内容。以下是使用此命令的一些方法:
cd & lt目录& gt:将当前目录更改为所需目录。导航到演示目录中的测试目录,并使用Ls命令查看内容。注意,分号(;)在同一行键入两个命令。
激光唱片..:返回到父目录。
CD:返回主目录。
管理文件
一些命令可以从shell中移动、删除、创建和复制文件。
Mkdir命令
Mkdir是make directory的缩写,用于创建新的目录或文件夹。
Mv命令
Mv是Move的缩写。它的功能是将一个或多个文件或目录从一个地方移动到另一个地方。用户需要指定要移动的内容,即源和要移动的位置,即目的地。
在Demo文件夹中创建一个名为PythonFiles的新目录,使用上面的两个命令来移动所有。py文件放入演示文件夹中。
触摸命令
Touch命令用于创建一个新的空白色文件,还用于更改现有文件和目录的时间戳。以下是如何在Demo文件夹中创建名为foo.txt的文件的示例。
Rm命令
Rm是remove的缩写,它的作用是删除文件或目录。默认情况下不会删除目录,但是如果在目录中作为rm-r *使用,那么该目录下的所有目录文件都会被删除。接下来,请删除您之前创建的foo.txt文件。
Rmdir命令
Rmdir是remove directory的缩写,用于从文件系统中删除空目录。先删除前段时间创建的PythonFiles文件夹。
注意:/标记父目录
查看文件
查看文件是Shell的另一个有用的功能。有些命令可以帮助用户查看操作文件的内容。
Cat命令
Cat concatenate是CAT Concatenate的缩写,用于读取文件并输出其内容。Cat命令可以读取任意数量的文件,因此它被命名为concatenate。演示文件夹中有一些文本文件。现在使用cat命令查看它们的内容。
要查看多个文件,请在cat命令后键入文件名:
$ cat Names.txt fruits.txt
更少的命令
Cat命令在屏幕上显示文件的内容。当文件很少时,使用cat命令是没问题的,但是当文件太大时,就会产生问题。从下面的例子可以看出,这个命令快速弹出了终端的所有内容,但是它无法理解文件的所有内容。幸运的是,名为less的命令允许您一次查看一个屏幕的内容。
$ less babynames.txt
以下是使用less命令的示例
空格键:转到下一个屏幕
b:转到上一个屏幕
/:搜索特定的单词
问:辞职
管道和过滤器管道和过滤器
管道运算符“|”(竖线)是一种将一个命令的输出作为另一个命令的输入发送的方法。
命令1 |命令2
当命令将其输出发送到管道时,输出的接收者是另一个命令,而不是文件。下图显示了wc命令如何计算cat命令显示的文件内容。
在某种程度上,wc是一个接收输入并以某种方式转换它们的命令。这些命令称为过滤器,放在Unix管道之后。
过滤器过滤器
接下来,看看一些常见的过滤器命令。我们将使用一个名为babynames.txt的文件,其中包含大约1000个婴儿的名字,以及一个包含少量水果名字的fruits.txt文件。
Grep(全称:global regular expression print)用给定的字符串搜索一行,或者在指定的输入流中找到一个模式。以下命令将读取所有文件并输出包含单词“Tom”的所有行。
但这是一个庞大的列表,我们无法理解所有的数据只是在终端爆炸。接下来请看如何使用管道运算符来理解。
Wc是字数的缩写。它读取文件列表并生成以下一个或多个统计数据:换行计数、字数计数和字节数。将上述grep命令的输出输入到wc,计算包含单词“Tom”的行数。
排序筛选器按字母顺序或数字顺序对行进行排序。
cat命令首先读取文件fruits.txt的内容,然后对其进行排序。
q代表uniq,它提供输入流中特殊行的数量。
值得注意的是,uniq无法检测重复条目,除非它们彼此相邻。因此,您需要在使用sort命令之前对文件进行排序。或者,也可以使用sort -u代替uniq。
因为可以在一个管道中放置多个命令,所以管道对于执行一些复杂的任务非常方便。
留言关注
我们一起分享AI学习和开发的干货。
欢迎关注全平台AI挂自媒体“核心阅读”
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/134480.html