如果你使用的是任何主要的操作系统,你都会间接地与之交互 壳 .如果您运行的是Ubuntu、Linux Mint或任何其他Linux发行版,则每次使用终端时都会与shell进行交互。在本文中,我将讨论linux shell和shell脚本,因此在理解shell脚本之前,我们必须熟悉以下术语-
- 内核
- 壳
- 航空站
- 文件管理
- 过程管理
- I/O管理
- 内存管理
- 设备管理等。
- 人们经常错误地认为 托瓦兹 他开发了Linux操作系统,但实际上他只负责Linux内核的开发。 完整的Linux系统=内核+ GNU 系统实用程序和库+其他管理脚本+安装脚本。
- 命令行Shell
- 图形外壳
- 巴什(伯恩·谢尔) –它是Linux系统中使用最广泛的shell。它在Linux系统和macOS中用作默认登录shell。它也可以安装在Windows操作系统上。
- CSH(C外壳) –C shell的语法和用法与C编程语言非常相似。
- KSH(科恩壳牌) –Korn Shell也是POSIX Shell标准规范等的基础。
- Shell关键字–if、else、break等。
- Shell命令–cd、ls、echo、pwd、touch等。
- 功能
- 控制流量——如果。。然后除此之外,还有外壳和外壳循环等。
- 避免重复性工作和自动化
- 系统管理员使用shell脚本进行例行备份
- 系统监控
- 向shell添加新功能等。
- 命令和语法与直接在命令行中输入的完全相同,所以程序员不需要切换到完全不同的语法
- 编写shell脚本要快得多
- 快速启动
- 交互式调试等。
- 容易出现代价高昂的错误,一个错误就可以更改命令,这可能是有害的
- 执行速度慢
- 语言语法或实现中的设计缺陷
- 不太适合大而复杂的任务
- 提供与其他脚本语言不同的最小数据结构。等
什么是贝壳
shell是一种特殊的用户程序,它为用户提供一个使用操作系统服务的接口。Shell接受用户可读的命令,并将其转换为内核可以理解的内容。它是一种命令语言解释器,执行从键盘或文件等输入设备读取的命令。shell在用户登录或启动终端时启动。
命令
壳牌大致分为两类:
命令行Shell
用户可以使用命令行界面访问Shell。一个叫做 航空站 在linux/macOS或 命令提示符 在Windows操作系统中,输入人类可读的命令,如“cat”、“ls”等,然后执行。结果随后在终端上显示给用户。Ubuntu 16.4系统中的终端如下所示——
linux命令行
在上面的截图中 “ls” 指挥 “-l” 选项被执行。
它将以长列表格式列出当前工作目录中的所有文件。 对于初学者来说,使用命令行shell有点困难,因为很难记住这么多命令。它非常强大,允许用户将命令存储在文件中并一起执行。这样,任何重复的任务都可以轻松地自动化。这些文件通常被称为 批处理文件 在窗户和 壳 Linux/macOS系统中的脚本。
图形外壳
图形shell通过允许打开、关闭、移动和调整窗口大小等操作,以及在窗口之间切换焦点,提供了基于图形用户界面(GUI)操作程序的方法。Windows操作系统或Ubuntu操作系统可以被认为是一个很好的例子,它们为用户提供GUI,以便与程序进行交互。用户不需要为每个操作键入命令。Ubuntu系统中的典型GUI——
GUI外壳
Linux系统有几种shell,如——
每个shell执行相同的任务,但理解不同的命令,并提供不同的内置函数。
Shell脚本
Shell通常是交互式的,这意味着它们接受来自用户的命令作为输入并执行它们。然而,有时我们想要常规地执行一系列命令,所以我们每次都要在终端中输入所有命令。 由于shell也可以从文件中获取命令作为输入,我们可以将这些命令写入文件,并在shell中执行它们,以避免重复工作。这些文件称为 Shell脚本 或 Shell程序 .Shell脚本与 批处理文件 在MS-DOS中。每个shell脚本都保存为 嘘 文件扩展名。 我的脚本。嘘
shell脚本的语法与任何其他编程语言一样。如果你以前有过Python、C/C++等编程语言的经验,那么就很容易开始使用它。 shell脚本包含以下元素——
为什么我们需要shell脚本
编写shell脚本有很多原因——
shell脚本的优点
shell脚本的缺点
使用Bash shell编写shell脚本的简单演示
如果你在终端上工作,你会在目录中深入遍历一些东西。然后,对于路径中接下来的几个目录,我们必须执行如下所示的命令,才能到达“python”目录——
这是非常令人沮丧的,所以我们为什么不可以有一个实用程序,我们只需要键入目录的名称,我们可以直接跳转到它,而无需执行 “cd…” 一次又一次地指挥。将脚本另存为 “跳,嘘”
# !/bin/bash
# A simple bash script to move up to desired directory level directly
function
jump()
{
# original value of Internal Field Separator
OLDIFS=$IFS
# setting field separator to "/"
IFS=/
# converting working path into array of directories in path
# eg. /my/path/is/like/this
# into [, my, path, is, like, this]
path_arr=($PWD)
# setting IFS to original value
IFS=$OLDIFS
local
pos=-1
# ${path_arr[@]} gives all the values in path_arr
for
dir
in
"${path_arr[@]}"
do
# find the number of directories to move up to
# reach at target directory
pos=$[$pos+1]
if
[
"$1"
=
"$dir"
];
then
# length of the path_arr
dir_in_path=${
#path_arr[@]}
#current working directory
cwd=$PWD
limit=$[$dir_in_path-$pos-1]
for
((i=0; i<limit; i++))
do
cwd=$cwd/..
done
cd
$cwd
break
fi
done
}
目前我们无法执行shell脚本,因为它没有权限。我们必须通过键入以下命令使其可执行——
$ chmod -x path/to/our/file/jump.sh
现在,为了在每一个终端会话上都能使用它,我们必须把它放进去 “.bashrc” 文件 “.bashrc” 是一个shell脚本,每当以交互方式启动Bash shell时,它都会运行。一个项目的目的。bashrc文件提供了一个地方,您可以在这里设置变量、函数和别名,定义我们的提示,并定义我们在打开新终端窗口时想要使用的其他设置。 现在打开终端并键入以下命令——
$ echo “source ~/path/to/our/file/jump.sh”>> ~/.bashrc
现在打开终端,输入以下命令,尝试新的“跳转”功能-
$ jump dir_name
就像下面的截图一样——
学习Bash脚本的资源
工具书类
本文由 阿图尔·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
什么是内核
内核是一个计算机程序,它是计算机操作系统的核心,可以完全控制系统中的一切。它管理Linux系统的以下资源——