【面试合集】说说你对 shell 的理解?常见的命令?

news/2024/11/28 2:28:12/

面试官:说说你对 shell 的理解?常见的命令?

一、是什么

Shell 是一个由c语言编写的应用程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言

它连接了用户和Linux内核,让用户能够更加高效、安全、低成本地使用 Linux 内核

其本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、微信等其它软件没有什么区别,特殊的地方就是开机立马启动,并呈现在用户面前

主要作用是接收用户输入的命令,并对命令进行处理,处理完毕后再将结果反馈给用户,比如输出到显示器、写入到文件等,同样能够调用和组织其他的应用程序,相当于一个领导者的身份,如下图:

那么shell脚本就是多个 Shell 命令的组合并通过 if 条件分支控制或循环来组合运算,实现一些复杂功能,文件后缀名为.sh

常用的 ls 命令,它本身也是一个 Shell 脚本,通过执行这个 Shell 脚本可以列举当前目录下的文件列表,如下创建一个hello.sh脚本

#!/bin/bash# 执行的命令主体
ls
echo "hello world"
  • #!/bin/bash :指定脚本要使用的 Shell 类型为 Bash

  • ls、echo: 脚本文件的内容,表明我们执行 hello.sh 脚本时会列举出当前目录的文件列表并且会向控制台打印 `hello world

执行方式为.hello.zsh

二、种类

LinuxShell 种类众多,只要能给用户提供命令行环境的程序,常见的有:

  • Bourne Shell(sh),是目前所有 Shell 的祖先,被安装在几乎所有发源于 Unix 的操作系统上

  • Bourne Again shell(bash) ,是 sh 的一个进阶版本,比 sh 更优秀, bash 是目前大多数 Linux 发行版以及 macOS 操作系统的默认 Shell

  • C Shell(csh) ,它的语法类似 C 语言

  • TENEX C Shell(tcsh) ,它是 csh 的优化版本

  • Korn shell(ksh) ,一般在收费的 Unix 版本上比较多见

  • Z Shell(zsh) ,它是一种比较新近的 Shell ,集 bash 、 ksh 和 tcsh 各家之大成

关于 Shell 的几个常见命令:

  • ls:查看文件
  • cd:切换工作目录
  • pwd:显示用户当前目录
  • mkdir:创建目录
  • cp:拷贝
  • rm:删除
  • mv:移动
  • du:显示目录所占用的磁盘空间

三、命令

Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程,这和使用 C++C#JavaPython 等常见的编程语言并没有什么两样。

Shell 虽然没有 C++、Java、Python 等强大,但也支持了基本的编程元素,例如:

  • if…else 选择结构,case…in 开关语句,for、while、until 循环;
  • 变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
  • 函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)

下面以bash为例简单了解一下shell的基本使用

变量

Bash 没有数据类型的概念,所有的变量值都是字符串,可以保存一个数字、一个字符、一个字符串等等

同时无需提前声明变量,给变量赋值会直接创建变量

访问变量的语法形式为:${var}$var

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,所以推荐加花括号。

word="hello"
echo ${word}
# Output: hello

条件控制

跟其它程序设计语言一样,Bash 中的条件语句让我们可以决定一个操作是否被执行。结果取决于一个包在[[ ]]里的表达式

跟其他语言一样,使用if...else进行表达,如果中括号里的表达式为真,那么thenfi之间的代码会被执行,如果则elsefi之间的代码会被执行

if [[ 2 -ne 1 ]]; thenecho "true"
elseecho "false"
fi
# Output: true

fi标志着条件代码块的结束

函数

bash 函数定义语法如下:

[ function ] funname [()] {action;[return int;]
}
  • 函数定义时,function 关键字可有可无
  • 函数返回值 - return 返回函数返回值,返回值类型只能为整数(0-255)。如果不加 return 语句,shell 默认将以最后一条命令的运行结果,作为函数返回值
  • 函数返回值在调用该函数后通过 $? 来获得
  • 所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至 shell 解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可

http://www.ppmy.cn/news/1324961.html

相关文章

使用Python实现MySQL数据库的查询,有录播直播私教课视频教程

查询所有 from mysql.db_object import Databasedb Database(host"localhost",password"zhangdapeng520",database"zdppy_mysql_demo")# 创建表 table "test_user" sql """ create table test_user(id bigint prim…

美易平台:美股盘前,热门中概股多数上涨

美股盘前,热门中概股多数上涨,蔚来涨超4%,哔哩哔哩、富途控股、贝壳涨超2%,爱奇艺、理想汽车涨近2%。美股大型科技股普涨,AMD涨3%,苹果、英伟达涨近2%。 在美国股市盘前交易中,热门的中概股表现…

libcurl是一个用于进行网络通信的开源库,提供了各种功能和选项,可以用于发送和接收HTTP请求、FTP操作等

libcurl libcurl是一个用于进行网络通信的开源库,提供了各种功能和选项,可以用于发送和接收HTTP请求、FTP操作、SMTP邮件等。它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、SMTP、POP3、IMAP等。 以下是libcurl库的一些特点和功能&#xff1…

【QA】Linux-CentOS-解决mysqlclient无法安装

文章目录 文章概述解决方式1:直接找到mysqlclient的whl安装包python3.8-x86-64位其他适配版本的whl安装包 解决方法2:先安装相关依赖,再单独安装mysqlclient解决方式3:根据错误信息找到根源,一步一步解决 文章概述 li…

OpenAI 公布2024选举虚假信息打击计划

据统计,2024 年预计将有 50 多个国家举行大选,虚假信息的威胁成为人们关注的焦点。 人工智能聊天机器人 ChatGPT 和图像生成器 DALL-E 的开发商 OpenAI 近日宣布了一项新的措施,以防止在今年大选之前再次出现虚假信息滥用和误导事件。 本周…

前端开发 5: Vue.js 框架

在前端开发中,Vue.js 是一个流行且灵活的 JavaScript 框架,用于构建用户界面。它采用了组件化的开发方式,使得前端开发更加模块化和可维护。在本篇博客中,我将为你介绍 Vue.js 的基础知识和常用技巧,帮助你更好地掌握前…

AcWing逆序对的数量(Java)

给定一个长度为 n 的整数数列&#xff0c;请你计算数列中的逆序对的数量。 逆序对的定义如下&#xff1a;对于数列的第 i 个和第 j 个元素&#xff0c;如果满足 i<j 且 a[i]>a[j]&#xff0c;则其为一个逆序对&#xff1b;否则不是。 输入格式 第一行包含整数 n&#…

Twincat PLC 跳出循环

在TwinCAT PLC编程中&#xff0c;要跳出循环结构通常可以通过以下几种方式实现&#xff1a; 使用Break指令&#xff1a; 在TwinCAT 3的PLC编程环境中&#xff08;IEC 61131-3标准&#xff09;&#xff0c;可以使用BREAK指令来立即终止最内层的循环。例如&#xff0c;在FOR或WH…