网站建设期任务及总结,响应式网站 app,wordpress重装主题,做标书经验分享网站目的#xff1a;了解脚本和不同类型的 Linux shell。
任务1#xff1a;Introduction to Linux Shells#xff08;Linux Shell 简介#xff09;
作为操作系统的常规用户#xff0c;我们都广泛使用图形用户界面 #xff08;GUI#xff09; 来执行大多数操作。只需点击几…目的了解脚本和不同类型的 Linux shell。
任务1Introduction to Linux ShellsLinux Shell 简介
作为操作系统的常规用户我们都广泛使用图形用户界面 GUI 来执行大多数操作。只需点击几下不同的选项您的任务就完成了。但是您可以通过在操作系统的 CLI 中编写命令而不是使用 GUI 来执行几乎所有任务。shell 为您在 CLI 中编写的命令提供了一些很棒的功能。这种与 OS 交互的方式更高效且对资源更友好。
假设您在一家餐厅您的食物有两种选择。第一种选择是从菜单中点餐服务员会上菜。第二种选择是在厨房里自己做你想要的菜。就 Linux 系统而言这里的厨房就是操作系统使用 OS 的 GUI 就像从菜单点菜一样服务员会为你端上来。但是使用 CLI 意味着您必须去厨房 OS 并烹饪您想要的食物。在此示例中Shell 将通过为您提供一些食谱建议来帮助您烹饪所需的菜肴。使用 CLI 在 Linux 系统中执行操作可在执行任务时为您提供更多功能和控制。
您可能在电影中看到过黑客场景这些场景显示了执行许多命令的酷终端。这是因为大多数 Linux 用户更喜欢通过使用 shell 在 CLI 上编写命令来执行操作而不是使用 GUI。这个房间将教我们如何与 Linux shell 交互。我们还将探索 Linux 中可用的不同 shell并最后编写一些 shell 脚本。 学习目标
了解与 Linux shell 的交互使用基本的 shell 命令探索可用的 Linux shell 类型编写一些 shell 脚本
会议室先决条件
Linux的基础模块 任务2How To Interact With a Shell?如何与 shell 交互
我们为这个房间准备了一台机器。 首先让我们通过按下下面给出的 Start Machine 按钮来启动虚拟机。本机将以分屏视图启动。 启动机器 如果 VM 不可见请使用页面顶部的蓝色 Show Split View 按钮。计算机将在 GUI 中打开。您还可以使用下面的 SSH 凭据通过 Attackbox 或您自己的 VPN 连接计算机连接计算机 计算机在分屏视图中打开后您将准备好 shell 提示符 接受命令。 大多数 Linux 发行版使用 Bash Bourne Again Shell 作为其 default shell 的 shell 中。但是当您打开 终端依赖于您的 Linux 发行版。
注意在接下来的任务中我们将讨论 不同类型的shell。
您可能已经探索了本房间的先决条件中提到的 Linux 基础模块中的基本 Linux 命令。让我们 简要讨论我们在 shell 中使用的一些最重要的 Shell。
与 shell 交互时您必须位于 想要执行操作。默认情况下当您在大多数 Linux 发行版您将位于主目录中。要查看当前工作目录可以执行 它代表打印工作目录如下面的终端所示pwd 在上述命令的结果中您可以看到您当前的 working directory 为/home/user
但是您也可以更改目录。为此您可以使用 Change Directory 的缩写如下面的终端所示cd 使用操作系统的 GUI 时您可以看到目录的内容 在屏幕上。但是在使用 shell 时要查看 目录中您必须输入以下命令 如果要读取文件的内容可以键入 following 命令cat grep 命令是 Linux 用户中非常流行的命令。这个强大的命令可以搜索文件中的任何单词或模式。假设您想在一个大文件中搜索特定条目。您可以将 grep 命令与这些条目的模式一起使用这将为您提取它们。它还可以帮助您在大文件中搜索特定关键字。
以下终端向我们展示了如何使用 grep 命令在大文本文件中搜索单词 “THM”。输出显示包含此单词的文本文件的特定行。 任务3Types of Linux ShellsLinux Shell 的类型
与 Windows 操作系统中的命令提示符和 PowerShell 一样Linux 具有不同的 可用的 shell 类型每种类型都有自己的功能和 特性。
多个 shell 安装在不同的 Linux 发行版中。自 查看您正在使用的 shell键入以下命令
echo $SHELL
这里必须大写shell 您还可以列出 Linux 操作系统中的可用 shell。该文件包含 Linux 系统上所有已安装的 shell。您可以通过在终端中键入来列出 Linux 操作系统中的可用 shell
/etc/shellscat /etc/shells 要在这些 shell 之间切换您可以键入 shell 名称即 出现在您的操作系统上它将为您打开如下所示 如果要永久更改默认 shell可以使用命令。这将使此 shell 成为终端的默认 shell。
chsh -s /usr/bin/zsh
Linux shell 有多种类型。我们将讨论其中的一些 及其功能。 Bourne Again Shell
Bourne Again Shell Bash 是大多数 Linux 发行版的默认 shell。当您打开终端时bash 会让您 enter 命令。在 bash 之前一些 shell 如 sh、ksh 和 csh具有 不同的功能。Bash 是这些的增强替代品 shell 的 shell 中从所有这些 shell 中借用了 shell 的功能。这意味着它具有 这些旧shell的许多特征及其一些独特的 能力。列出了 bash 提供的一些关键功能 下面
Bash 是一种广泛使用的 shell具有脚本功能。它提供了一个 Tab 键补全功能这意味着如果你在 在完成命令的过程中您可以按键盘上的 Tab 键。它会 根据可能的匹配项自动完成命令或为您提供 完成它的多个建议。Bash 会保留一个历史文件并记录您的所有命令。您可以使用 向上和向下箭头键使用前面的命令而无需键入 他们又来了。您还可以键入以显示您之前的所有 命令。history
友好的交互式 Shell
Friendly Interactive Shell Fish 在大多数 Linux 发行版中也不是默认的。顾名思义它更侧重于 比其他 shell 用户友好。提供的一些关键功能 按鱼分类如下
它提供了一种非常简单的语法对于初学者来说是可行的 用户。与 bash 不同它对您编写的命令具有自动拼写更正功能。您可以使用一些很酷的主题来自定义命令提示符 鱼。fish 的语法高亮功能会给 fish 的不同部分着色 命令这可以提高 命令。它还可以帮助我们发现具有独特颜色的错误。Fish 还提供脚本、Tab 键补全和命令历史记录 功能类似于此任务中提到的 shell。
Z Shell
默认情况下大多数 Linux 发行版中不安装 Z Shell Zsh。它被认为是一种现代 shell它结合了 一些以前 shell 的功能。一些主要功能 由 ZSH 提供下面列出了
Zsh 提供高级 Tab 键自动补全功能并且还能够编写 脚本。就像 fish 一样它还为命令提供自动拼写更正。它提供广泛的定制这可能会使其比其他定制慢 壳。它还提供 Tab 键补全、命令历史记录功能和 其他几个功能。
不过我个人感觉就bash用到多一点其他使用情况并不多。 特征bashfishZSH全名Bash 的完整形式是 Bourne Again Shell。Fish 的完整形式是 Friendly Interactive Shell。Zsh 的完整形式是 Z Shell。脚本它提供广泛兼容的脚本和广泛的文档 可用。与其他两个相比它的脚本功能有限 壳。它提供了出色的脚本水平结合了传统的 具有一些额外功能的 Bash shell 的功能。Tab 键补全它具有基本的 Tab 键补全功能。它通过根据以下因素提供建议来提供高级 Tab 键自动补全 您之前的命令。它的 Tab 键补全功能可以通过使用 插件。定制基本级别的自定义。它通过交互式工具提供了一些很好的定制。通过 oh-my-zsh 框架进行高级定制。用户友好性它不太用户友好但是一种传统且广泛使用的 shell 的 shell 中它的用户非常熟悉和熟悉它。它是最用户友好的 shell。通过适当的定制它可以是高度用户友好的。语法高亮显示语法高亮功能在此 shell 中不可用。语法高亮是此 shell 中内置的。语法高亮可以通过引入 一些插件。
选择最佳 Linux shell 取决于您的使用情况及其 特征。此任务中讨论的 shell 是众多 shell 中的一部分 Linux 中可用的不同 shell。您可以比较 这些不同的 shell 并根据您的任务选择最好的一个。 任务4Shell Scripting and ComponentsShell 脚本和组件
shell 脚本只不过是一组命令。假设一个重复的 任务要求您使用 shell 输入多个命令。而不是 在每一次重复该任务时一个接一个地输入它们这可能会 花更多的时间你可以把它们组合成一个脚本。执行 所有这些命令您将只执行脚本而所有 命令。前面提到的所有 shell 任务具有脚本功能。脚本帮助我们自动执行任务。 在学习如何编写脚本之前我们需要知道即使 Linux shell 具有脚本功能但这并不意味着您 只能使用 shell 制作脚本。脚本可以用各种方式完成 编程语言。然而这个房间的范围是 Cover 使用 shell 编写脚本。
第一步是打开终端并选择一个 shell。我们走吧 使用 bash shell这是大多数 shell 中默认且广泛使用的 shell 分布。
与我们在 shell 中键入的其他命令不同我们首先需要 使用脚本的任何文本编辑器创建文件。该文件必须是 以 extension 命名这是 bash 脚本的默认扩展。 以下终端显示脚本文件的创建.sh
每个脚本都应该从 shebang 开始。Shebang 是 在脚本开头添加的一些字符从 with 后跟执行时要使用的解释器的名称 剧本。当我们在 bash 中编写脚本时让我们将其定义为 Shebang 的翻译。#! 我们现在都准备好编写我们的第一个脚本了。有一些 脚本的基本构建块共同构成了高效的 脚本。让我们学习并利用这些脚本结构来编写一个 编写脚本。 要执行脚本我们首先需要确保脚本具有 执行权限。要向脚本授予这些权限我们可以 在我们的终端中键入以下命令 现在脚本具有执行权限之前使用 用于执行它的脚本名称。我们使用 before the script 来运行而不是直接键入脚本名称因为 shell 会告诉 shell 执行当前目录中存在的文件。如果未在脚本名称之前定义则 shell 将在 PATH 环境变量包含除当前目录之外的所有目录中搜索脚本并且不会在任何这些目录中找到定义的脚本并生成错误。下面的终端显示了 我们利用了变量
./ 循环
Loop顾名思义是重复的东西。为 例如您有一个包含许多朋友的列表并且您希望向他们发送 相同的消息。您可以制作一个循环而不是单独发送它们 在你的脚本中将你的好友列表提供给 Loop 和 Message 中然后 它会将该消息发送给您所有的朋友。
对于循环的一般解释让我们编写一个循环它将 在屏幕上显示从 1 到 10 开始的所有数字
# Defining the Interpreter
#!/bin/bash
for i in {1..10};
do
echo $i
done
第一行包含将从 1 迭代到 10 的变量并且 每次都执行以下代码。 指示循环的开始 code 并指示结束。在它们之间我们想要的代码 execute 的 intent 来写入。for 循环将采用每个数字 并将其分配给每次迭代中的变量。将在每次迭代时显示此变量的值。ido done i echo $i
现在让我们在执行脚本后执行脚本 许可。
上述终端的输出被剪切成数字仅用于演示。但是当根据脚本的逻辑执行时它将显示 中的数字。31 to 10
条件语句
条件语句是脚本编写的重要组成部分。他们提供帮助 仅当满足条件时您才执行特定代码; 否则您可以执行另一个代码。假设您想创建一个 向用户显示密钥的脚本。但是您希望它被显示给 仅部分用户仅对高权限用户。您将创建一个 conditional 语句该语句将首先询问用户的姓名如果 该名称与 High Authority 用户的名称匹配则会显示 秘密。
# Defining the Interpreter
#!/bin/bash
echo Please enter your name first:
read name
if [ $name Stewart ]; thenecho Welcome Stewart! Here is the secret: THM_Script
elseecho Sorry! You are not authorized to access the secret.
fi
上面的脚本将用户名作为输入并将其存储到 变量在 Variables 部分中研究。条件语句 以 if 开头并将该变量的值与字符串进行比较 斯图尔特;如果匹配它将向用户显示密钥或者 否则它不会。fi 用于结束 for 循环。
以下是显示用户 name 与脚本中定义的 authorized 匹配 但是以下终端显示了当 用户名与脚本中定义的 authorized 用户名不匹配 评论
有时代码可能非常冗长。在此方案中代码 当您一段时间后查看它或与之分享时可能会让您感到困惑 有人。解决此问题的一种简单方法是在 代码的不同部分。评论是我们写的一句话 我们的代码只是为了我们的理解。它用 # sign 后跟一个空格和您需要编写的句子。为 #示例让我们重写我们在条件 statements 部分并为其添加注释。
# Defining the Interpreter
#!/bin/bash# Asking the user to enter a value.
echo Please enter your name first:# Storing the user input value in a variable.
read name# Checking if the name the user entered is equal to our required name.
if [ $name Stewart ]; then# If it equals the required name, the following line will be displayed.
echo Welcome Stewart! Here is the secret: THM_Script# Defining the sentence to be displayed if the condition fails.
elseecho Sorry! You are not authorized to access the secret.
fi 了解带有注释的脚本看起来有多容易。注释不会影响 任何脚本的 working 工作。一个好的脚本总是有一些注释。这 上面显示的示例包含每行的注释。这只是一个 更好地解释了它的概念。但是最好的方式是包括 comments 是在 脚本。
注意其他类型的变量、循环和 条件语句也可用于完成不同的任务。 此外还可以在单个 评论。然而这不是这个房间的范围。
并没有什么特别东西 任务5The Locker Script储物柜脚本
在上一个任务中我们研究了变量、循环和条件 语句。让我们使用这些知识创建一个 shell 脚本。
要求
用户在银行中有一个储物柜。为了保护储物柜我们必须拥有 一个在打开用户之前验证用户的脚本。什么时候 执行时脚本应询问用户的姓名、公司名称、 和 PIN 码。如果用户输入以下详细信息则应为 允许他们进入否则应拒绝他们访问。
用户名John公司名称Tryhackme密码7385
脚本
# Defining the Interpreter
#!/bin/bash # Defining the variables
username
companyname
pin# Defining the loop
for i in {1..3}; do
# Defining the conditional statementsif [ $i -eq 1 ]; thenecho Enter your Username:read usernameelif [ $i -eq 2 ]; thenecho Enter your Company name:read companynameelseecho Enter your PIN:read pinfi
done# Checking if the user entered the correct details
if [ $username John ] [ $companyname Tryhackme ] [ $pin 7385 ]; thenecho Authentication Successful. You can now access your locker, John.
elseecho Authentication Denied!!
fi
脚本执行 任务6Practical Exercise实践练习
我们在附加的 Ubuntu 的默认用户目录中放置了一个脚本 机器。此脚本在所有文件中搜索特定关键字 带有.log扩展名在特定目录中。/home/user
注意脚本内需要进行一些更改 文件。当您按照任务 #2 中的说明打开计算机时您将能够以普通用户的身份获得会话。但是我们建议您成为 root 用户以便在给定目录的所有文件中搜索该标志。 要成为其中一员您只需键入以下命令并输入用户的密码 标志 thm-flag01-script目录/var/log grep “cat” /var/log/authentication.log