shell脚本编程-shell十三问

Shell编程 Shell 十三问 第 1 页 共 46 页 shell十三问 1问:为何叫做 shell ? 在介绍 shell 是甚么东西之前,不妨让我们重新检视使用者与计算机系统的关系: 图(FIXME)

我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动, 硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管, 事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为"核心(kernel)"。 然而,从使用者的角度来说,使用者也没办法直接操作 kernel, 而是透过 kernel 的"外壳"程序,也就是所谓的 shell ,来与 kernel 沟通。 这也正是 kernel 跟 shell 的形像命名关系。如图: 图(FIXME)

从技术角度来说,shell 是一个使用者与系统的互动界面(interface), 主要是让使用者透过命令行(command line)来使用系统以完成工作。 因此,shell 的最简单的定义就是---命令解译器(Command Interpreter): * 将使用者的命令翻译给核心处理, * 同时,将核心处理结果翻译给使用者。

每次当我们完成系统登入(log in),我们就取得一个互动模式的 shell ,也称为 login shell 或 primary shell。 若从行程(process)角度来说,我们在 shell 所下达的命令,均是 shell 所产生的子行程。这现像,我们暂可称之为 fork 。 如果是执行脚本(shell script)的话,脚本中的命令则是由另外一个非互动模式的子 shell (sub shell)来执行的。 也就是 primary shell 产生 sub shell 的行程,sub shell 再产生 script 中所有命令的行程。 (关于行程,我们日后有机会再补充。)

这里,我们必须知道:kernel 与 shell 是不同的两套软件,而且都是可以被替换的: * 不同的操作系统使用不同的 kernel , * 而在同一个 kernel 之上,也可使用不同的 shell 。 在 linux 的预设系统中,通常都可以找到好几种不同的 shell ,且通常会被列于如下档案里: /etc/shells 不同的 shell 有着不同的功能,且也彼此各异、或说"大同小异"。 常见的 shell 主要分为两大主流: sh: burne shell (sh) burne again shell (bash) csh: c shell (csh) Shell编程 Shell 十三问 第 2 页 共 46 页 tc shell (tcsh) korn shell (ksh) (FIXME)

大部份的 Linux 系统的预设 shell 都是 bash ,其原因大致如下两点: * 自由软件 * 功能强大 bash 是 gnu project 最成功的产品之一,自推出以来深受广大 Unix 用户喜爱, 且也逐渐成为不少组织的系统标准。

2问:shell prompt(PS1) 与 Carriage Return(CR) 的关系? 当你成功登录进一个文字界面之后,大部份情形下, 你会在荧幕上看到一个不断闪烁的方块或底线(视不同版本而别), 我们称之为*游标*(coursor)。 游标的作用就是告诉你接下来你从键盘输入的按键所插入的位置, 且每输如一键游标便向右边移动一个格子,若连续输入太多的话,则自动接在下一行输入。

假如你刚完成登录还没输入任何按键之前,你所看到的游标所在位置的同一行的左边部份, 我们称之为*提示符号*(prompt)。 提示符号的格式或因不同系统版本而各有不同,在 Linux 上,只需留意最接近游标的一个可见的提示符号,通常是如下两者之一: $:给一般使用者帐号使用 #:给 root (管理员)帐号使用

事实上,shell prompt 的意思很简单: * 是 shell 告诉使用者:您现在可以输入命令行了。 我们可以说,使用者只有在得到 shell prompt 才能打命令行, 而 cursor 是指示键盘在命令行所输入的位置,使用者每输入一个键,cursor 就往后移动一格, 直到碰到命令行读进 CR(Carriage Return,由 Enter 键产生)字符为止。 CR 的意思也很简单: * 是使用者告诉 shell:老兄你可以执行我的命令行了。 严格来说: * 所谓的命令行,就是在 shell prompt 与 CR 字符之间所输入的文字。 (思考:为何我们这里坚持使用 CR 字符而不说 Enter 键呢?答案在后面的学习中揭晓。)

不同的命令可接受的命令行格式或有不同,一般情况下,一个标准的命令行格式为如下所列: command-name options argument

若从技术细节来看,shell 会依据 IFS(Internal Field Seperator) 将 command line 所输入的文字给拆解为"字段"(word)。 然后再针对特殊字符(meta)先作处理,最后再重组整行 command line 。 (注意:请务必理解上两句话的意思,我们日后的学习中会常回到这里思考。) Shell编程 Shell 十三问 第 3 页 共 46 页 其中的 IFS 是 shell 预设使用的字段分隔符,可以由一个及多个如下按键组成: * 空格键(White Space) * 表格键(Tab) * 回车键(Enter)

系统可接受的命令名称(command-name)可以从如下途径获得: * 明确路径所指定的外部命令 * 命令别名(alias) * 自定功能(function) * shell 内建命令(built-in) * $PATH 之下的外部命令 每一个命令行均必需含用命令名称,这是不能缺少的。

3问:别人 echo、你也 echo ,试问 echo 知多少? 承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明。 温习---标准的 command line 包含三个部件: * command_name option argument

echo 是一个非常简单、直接的 Linux 命令: * 将 argument 送出至标准输出(STDOUT),通常就是在监视器(monitor)上输出。 (注:stdout 我们日后有机会再解说,或可先参考如下讨论: http://www.chinaunix.net/forum/viewtopic.php?t=191375 )

为了更好理解,不如先让我们先跑一下 echo 命令好了: 代码: $ echo

$ 你会发现只有一个空白行,然后又回到 shell prompt 上了。 这是因为 echo 在预设上,在显示完 argument 之后,还会送出一个换行符号(new-line charactor)。 但是上面的 command 并没任何的 argument ,那结果就只剩一个换行符号了... 若你要取消这个换行符号,可利用 echo 的 -n option : 代码: $ echo -n $

不妨让我们回到 command line 的概念上来讨论上例的 echo 命令好了: * command line 只有 command_name(echo) 及 option(-n),并没有任何 argument 。 要想看看 echo 的 argument ,那还不简单﹗接下来,你可试试如下的输入: Shell编程 Shell 十三问 第 4 页 共 46 页 代码: $ echo first line first line $ echo -n first line first line $

于上两个 echo 命令中,你会发现 argument 的部份显示在你的荧幕,而换行符号则视 -n option 的有无而别。 很明显的,第二个 echo 由于换行符号被取消了,接下来的 shell prompt 就接在输出结果同一行了... ^_^

事实上,echo 除了 -n options 之外,常用选项还有: -e :启用反斜线控制字符的转换(参考下表) -E:关闭反斜线控制字符的转换(预设如此) -n :取消行末之换行符号(与 -e 选项下的 \c 字符同意)

关于 echo 命令所支持的反斜线控制字符如下表: \a:ALERT / BELL (从系统喇叭送出铃声) \b:BACKSPACE ,也就是向左删除键 \c:取消行末之换行符号 \E:ESCAPE,跳脱键 \f:FORMFEED,换页字符 \n:NEWLINE,换行字符 \r:RETURN,回车键 \t:TAB,表格跳位键 \v:VERTICAL TAB,垂直表格跳位键 \n:ASCII 八进位编码(以 x 开首为十六进制) \\:反斜线本身 (表格资料来自 O'Reilly 出版社之 Learning the Bash Shell, 2nd Ed.)

或许,我们可以透过实例来了解 echo 的选项及控制字符: 例一: 代码: $ echo -e "a\tb\tc\nd\te\tf" a b c d e f

上例运用 \t 来区隔 abc 还有 def ,及用 \n 将 def 换至下一行。 例二: 代码:

合集下载

Shell 脚本面试题及答案

Shell 脚本面试题及答案

Shell 脚本面试题及答案一、Shell脚本是什么、它是必需的吗?一个Shell脚本是一个文本文件,包含一个或多个命令。

作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务。

二、什么是默认登录shell,如何改变指定用户的登录shell?在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。

使用chsh命令可以改变默认的shell。

三、可以在shell脚本中使用哪些类型的变量?在shell脚本,我们可以使用两种类型的变量:①系统定义变量;②用户定义变量。

系统变量:是由系统系统自己创建的。

这些变量通常由大写字母组成,可以通过“set”命令查看。

用户变量:是由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。

四、如何将标准输出和错误输出同时重定向到同一位置?这里有两个方法来实现:方法一:2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )方法二:&> (如# ls /usr/share/doc &> out.txt )五、shell脚本中“$?”标记的用途是什么?在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。

六、如何在后台运行脚本?在脚本后面添加“&”。

七、"chmod 500 script" 做什么?使脚本所有者拥有可执行权限。

八、">" 做什么?重定向输出流到文件或另一个流。

九、& 和 && 有什么区别& - 希望脚本在后台运行的时候使用它;&& - 当前一个脚本成功完成才执行后面的命令/脚本的时候使用它。

shell脚本编程(完结版)

shell脚本编程(完结版)
if [ 条件表达式 1 ] then
if [ 条件表达式 2 ] then …… …… else …… …… fi
命令串; else
命令串; fi
如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦
1. 整数测试运算
test int1 -eq int2: 判断两个数是否相等 test int1 -ne int2: 判断两个数是否不相等 test int1 -gt int2: 判断整数 1 是否大于整数 2 test int1 -ge int2: 判断整数 1 是否大于等于整数 2 test int1 -lt int2: 判断整数 1 是否小于整数 2 test int1 -le int2: 判断整数 1 是否小于等于整数 2 整数测试也可以使用 let 命令或双圆括号 相关操作为:== 、!= 、> 、>= 、< 、<= 如: x=1; [ $x -eq 1 ]; echo $? x=1; let "$x == 1"; echo $? x=1; (($x+1>= 2 )); echo $? 两种测试方法的区别: 使用的操作符不同 let 和 双圆括号中可以使用算术表达式,而中括号不能 let 和 双圆括号中,操作符两边可以不留空格
1. 整数测试运算 .................................................4 2. 字符串测试运算 ...............................................4 3. 文件测试运算 .................................................5 4. 逻辑运算 .....................................................5 第二节 在 shell 脚本中进行条件控制 ................................ 5 第三节 在 shell 脚本中进行 for 循环 ................................ 7 第四节 在 shell 脚本中进行 while 循环 .............................. 8 第五节 在 shell 脚本中使用 util 循环 ............................... 8 第六节 在 shell 脚本中使用函数 .................................... 8 第七节 shell 脚本之 echo 和 expr 讲解 ................................ 9 第八节 shell 脚本循环终止之 break 和 continue ..................... 10 第九节 shell 脚本之 exit 和 sleep ................................. 11 第十节 shell 脚本之 select 循环与菜单 ............................. 11 第十一节 shell 脚本之循环控制 shift 命令 .......................... 11 第十二节 shell 脚本之字符串操作 ................................... 11 第十三节 shell 脚本之数组实现 ..................................... 12 第十四节 shell 脚本之脚本调试 ..................................... 12 第十五节 shell 脚本之编程小结 ..................................... 12 程序例程 ......................................................... 14 习题实训 ......................................................... 29 综合实例 ......................................................... 31 1. 需求分析....................................................31 2.系统设计 ....................................................31 3.程序代码 ....................................................31 声明 ............................................................. 35

shell面试题及答案

shell面试题及答案

shell面试题及答案在准备面试时,对于Shell编程的问题是非常常见的。

Shell是一种命令行解释器,是Unix和Linux操作系统中的一种重要工具。

下面将为你介绍一些常见的Shell面试题及答案。

题目一:什么是Shell脚本?Shell脚本是一种用来编写Shell命令的脚本文件,它是由一系列的Shell命令组成的。

通过编写Shell脚本,可以将多个Shell命令按照一定的顺序组合执行,实现自动化的任务。

题目二:如何定义Shell脚本的执行方式?要定义Shell脚本的执行方式,可以在脚本文件的开头使用shebang (也称为hashbang)来指定解释器。

例如,使用#!/bin/bash来指定脚本由bash解释器执行。

题目三:如何查看Shell脚本的执行权限?可以使用ls命令来查看Shell脚本的执行权限。

执行权限分为三个级别,分别是用户(u)、群组(g)和其他(o)的权限。

ls命令的输出结果中,r表示可读,w表示可写,x表示可执行。

题目四:如何在Shell脚本中定义变量?在Shell脚本中,可以使用等号(=)来定义变量。

例如,使用name="Tom"来定义名为name的变量,并将其赋值为"Tom"。

题目五:如何在Shell脚本中读取用户输入?可以使用read命令来读取用户输入。

例如,使用read name来将用户输入赋值给名为name的变量。

题目六:如何在Shell脚本中进行条件判断?Shell脚本中的条件判断可以使用if语句来实现。

if语句的语法如下:if [ 条件 ]; then执行语句elif [ 条件 ]; then执行语句else执行语句fi其中,条件可以使用各种比较运算符(如-eq、-ne、-lt、-gt等)进行比较。

题目七:如何在Shell脚本中进行循环操作?Shell脚本中的循环操作可以使用for循环和while循环来实现。

for循环用于遍历一个列表或一个范围,while循环用于在条件满足时重复执行一段代码。

shell脚本编程基础面试题

shell脚本编程基础面试题

shell脚本编程基础⾯试题⼀级标题shell脚本编程基础1、编写脚本/root/bin/systeminfo.sh,显⽰当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存⼤⼩,硬盘⼤⼩[root@magedu ~]# vim sysinfo.sh#!/bin/bashipv4=`ifconfig |egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"`echo "当前主机系统信息如下:"echo 主机名: `hostname`echo ipv4地址:"$ipv4"echo 操作系统版本: `cat /etc/redhat-release |cut -d. -f1-2`echo 内核版本: `uname -r`echo CPU型号: `lscpu |grep "Model name"|tail -1 |tr -s ' '|cut -d: -f2`echo 内存⼤⼩: `free -mh |head -2|tail -1|tr -s ' '|cut -d' ' -f2`echo 硬盘容量: `fdisk -l|head -2|tail -1|cut -d, -f1|cut -d' ' -f2-4`带颜⾊的版本。

2、编写脚本/root/bin/backup.sh,可实现每⽇将/etc/⽬录备份到/root/etcYYYY-mm-dd中[root@magedu ~]# vim /root/bin/backup.sh#!/bin/bashcp -a /etc/ /root/etc`date +%Y-%m-%d`echo "/etc⽬录备份完成"3、编写脚本/root/bin/disk.sh,显⽰当前硬盘分区中空间利⽤率最⼤的值[root@magedu ~]# vim /root/bin/disk.sh#!/bin/bashecho "当前硬盘分区中空间利⽤率最⼤的值: `df |grep /dev/sd |grep -o "[0-9]\{1,3\}%" |sort -rn|head -1`4、编写脚本/root/bin/links.sh,显⽰正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从⼤到⼩排序[root@magedu ~]# vim /root/bin/links.sh#!/bin/shecho "每个远程主机的IPv4地址和连接数:`netstat -tan |tr -s " " ":"|cut -d: -f6|grep ^[[:digit:]]|sort|uniq -c |sort -nr`"1、编写脚本sumid.sh,计算/etc/passwd⽂件中的第10个⽤户和第20⽤户的ID之和[root@magedu ~]# vim /root/bin/sumid.sh#!/bin/baship1=`cat /etc/passwd |head -10 | tail -1|cut -d: -f3`ip2=`cat /etc/passwd |head -20 | tail -1|cut -d: -f3`let sum=ip1+ip2echo $sum2、编写脚本sumspace.sh,传递两个⽂件路径作为参数给脚本,计算这两个⽂件中所有空⽩⾏之和##[root@magedu ~]# vim /root/bin/sumspace.sh#!/bin/shspace1=`cat $1 |grep "^$"|wc -l`space2=`cat $2 |grep "^$"|wc -l`let sum=space1+space2echo "两个⽂件中所有空⽩⾏之和:$sum"3、编写脚本sumfile.sh,统计/etc, /var, /usr⽬录中共有多少个⼀级⼦⽬录和⽂件[root@magedu ~]# vim /root/bin/sumfile.sh#!/bin/bashnumetc=ls -A /etc|wc -lnumvar=ls -A /var|wc -lnumusr=ls -A /usr|wc -llet sum=numetc+numvar+numusrecho $sum1、编写脚本argsnum.sh,接受⼀个⽂件路径作为参数;如果参数个数⼩于1,则提⽰⽤户“⾄少应该给⼀个参数”,并⽴即退出;如果参数个数不⼩于1,则显⽰第⼀个参数所指向的⽂件中的空⽩⾏数[root@magedu ~]# vim argsnum.sh#!/bin/bash[[ $# -lt 1 ]] && (echo "at least one argument"&&exit)|| echo `grep '^$' $1|wc -l`2、编写脚本hostping.sh,接受⼀个主机的IPv4地址做为参数,测试是否可连通。

shell 笔试题

shell 笔试题

shell 笔试题以下是一些常见的Shell脚本笔试题,你可以参考这些题目来检验自己的Shell脚本编程能力。

写出创建一个空目录的Shell命令。

答案是:mkdir directory_name如何在一个文件中查找某一特定字符串?答案是:grep "string" file_name如何将两个字符串连接起来?答案是:使用加号+,例如:string1="Hello, " string2="World!" result=$string1$string2如何使用Shell脚本在多个文件中查找某一特定字符串?答案是:使用for循环和grep命令,例如:bash`for file in *; do grep "string" $file; done`如何将一个字符串中的所有单词首字母大写?答案是:使用tr命令和正则表达式,例如:bash`echo "hello world" | tr '[:lower:]' '[:upper:]' | sed 's/\b\(.\)/\u\1/g'`如何使用Shell脚本将一个文件中的所有行反向输出?答案是:使用tac命令,例如:tac file_name如何使用Shell脚本将一个文件中的所有行连接成一个字符串?答案是:使用cat命令和重定向,例如:cat file_name > output_file如何使用Shell脚本将一个文件中的所有行按行反向排序?答案是:使用sort命令和-r选项,例如:sort -r file_name如何使用Shell脚本将一个文件中的所有行按行反向排序并将结果输出到一个新文件中?答案是:使用sort命令、重定向和-o选项,例如:sort -r file_name > output_file。

第13章 Shell编程

第13章  Shell编程

13.5.2 如何把一条命令分成多行编 写
编写多个命令组合在一起使用的脚本
第13章 Shell编程
一个Shell脚本可以包含一个或多个命令,通过编写 Shell脚本可以简化很多原本需要手工输入大量命令 的任务。在本章中将对Shell脚本的基本原理、条件 测试、控制结构、用户交互以及保留变量等的内容 进行介绍。
13.1 Shell编程简介
Shell除了是命令解释器外还是一种脚本编程语言, 通过编写该脚本可以自动运行多条命令,简化手工 操作。要运行一个Shell脚本文件,必须要为它添加 执行权限。本节将对Shell脚本的功能、使用、结构 等内容进行简单介绍,最后会编写一个简单的Hello World脚本演示编写并执行该脚本的步骤。
13.2.1 数值测试
关系运算符 -eq -ne -gt
说明
两个数值相等 两个数值不相等 第一个数大于第二个数
关系运算符 -lt -ge -le
说明 第一个数小于第二个数 第一个数大于等于第二个数 第一个数小于等于第二个数
13.2.2 字符串测试
关系运算符 = !=
说明 两个字符串相等 两个字符串不相等
13.3.1 if-then-else分支结构
编写if-then-else分支结构的脚本
13.3.2 case分支结构
编写case分支结构的脚本
13.3.3 for循环结构
1.以常量作为值列表 2.以变量作为值列表 3.以命令运行结果作为值列表
13.3.4 expr命令计数器
expr命令
13.5 Shell编程中的常见问题
本节介绍Linux下Shell编程中的常见问题及它们的解 决方法,并且会结合实例进行说明,包括如何在 Shell中屏蔽命令的输出结果,如何把一条命令分成 多行编写,以使Shell代码的结果方便阅读及更加清 晰等。

linux shell面试题目

linux shell面试题目在开始回答这些Linux Shell面试题之前,我们先来了解一下什么是Linux Shell。

Linux Shell是Linux操作系统中用来与用户交互的命令解释器。

它提供了给操作系统发送命令的接口,使用户可以通过输入命令来管理操作系统和执行各种任务。

下面是一些常见的Linux Shell面试题目,帮助你更好地了解和回答关于Linux Shell的问题:1. 什么是Shell脚本?Shell脚本是一种用Shell语言编写的脚本文件,用来执行一系列的Shell命令。

它可以将多个命令组合在一起执行,从而实现自动化的任务。

2. 怎么在Linux中创建一个Shell脚本?在Linux中,可以使用文本编辑器(如vi或nano)创建一个脚本文件,文件名以.sh为后缀。

首先,使用编辑器创建一个新文件,然后在文件中编写Shell脚本命令,最后保存并退出编辑器。

3. 如何执行一个Shell脚本?要执行一个Shell脚本,首先需要为脚本文件添加可执行权限。

使用chmod命令,例如:```chmod +x script.sh然后,可以使用以下命令来执行脚本:```./script.sh```4. 如何在Shell脚本中获取命令行参数?在Shell脚本中,可以使用特殊变量$1、$2、$3等来获取命令行参数。

例如,如果执行脚本时输入了参数,可以通过$1来获取第一个参数,通过$2来获取第二个参数,以此类推。

5. 如何在Shell脚本中进行条件判断?可以使用if语句在Shell脚本中进行条件判断。

if语句的基本语法如下:```if [ 条件 ]then命令1else命令2fi在方括号中填写条件,根据条件的结果执行相应的命令。

6. 如何在Shell脚本中使用循环?在Shell脚本中,可以使用for循环或while循环来进行迭代。

for循环的基本语法如下:```for 变量 in 列表do命令done```while循环的基本语法如下:```while [ 条件 ]do命令done```根据需要选择合适的循环结构,并在循环中执行相应的命令。

shell面试常见题目

shell面试常见题目Q:Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。

作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。

Q:什么是默认登录shell,如何改变指定用户的登录shell答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。

使用chsh命令可以改变默认的shell。

Q:可以在shell脚本中使用哪些类型的变量?答:在shell脚本,我们可以使用两种类型的变量:系统定义变量和用户定义变量。

系统变量是由系统系统自己创建的。

这些变量通常由大写字母组成,可以通过“set”命令查看。

用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。

Q:shell脚本中“$?”标记的用途是什么?答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。

Q:在shell脚本中如何比较两个数字 ?答:在if-then中使用测试命令( -gt 等)来比较两个数字。

Q:shell脚本中break命令的作用?答:break命令一个简单的用途是退出执行中的循环。

我们可以在while和until循环中使用break命令跳出循环。

Q:shell脚本中continue命令的作用?答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。

continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。

Q:shell脚本中while循环语法?答:如同for循环,while循环只要条件成立就重复它的命令块。

不同于for循环,while循环会不断迭代,直到它的条件不为真。

Q:如何使脚本可执行 ?答:使用chmod命令来使脚本可执行。

linux shell面试问题

linux shell面试问题当涉及到Linux shell面试问题时,通常会涉及到以下几个方面,基本概念、命令行操作、脚本编程、权限管理和系统管理等方面。

下面我将从这几个方面逐一进行回答。

首先,基本概念方面的问题可能涉及到什么是Shell、Shell和Kernel的关系、常见的Shell类型有哪些以及它们的区别等。

Shell是一个命令行解释器,它是用户与操作系统内核之间的接口。

Shell和Kernel的关系是Shell作为用户与操作系统内核之间的接口,负责接收用户输入的命令并将其转换为操作系统内核能够理解的格式。

常见的Shell类型包括Bash、Korn shell、C shell等,它们的区别在于语法、功能和特性方面有所不同。

其次,命令行操作方面的问题可能涉及到常用的命令有哪些、如何查看文件内容、如何查找文件、如何管理进程等。

常用的命令包括ls、cd、cp、mv、rm、mkdir、rmdir、cat、more、less、grep、find、ps、top等。

通过这些命令可以实现对文件和目录的操作、查看文件内容、查找文件以及管理系统进程等功能。

再者,脚本编程方面的问题可能涉及到如何编写Shell脚本、Shell脚本中的变量、条件判断和循环结构、函数等。

编写Shell脚本可以使用文本编辑器编写,以.sh为扩展名保存。

Shell脚本中的变量使用$符号引用,可以使用if-else语句进行条件判断,使用for和while语句进行循环,还可以定义和调用函数。

此外,权限管理方面的问题可能涉及到文件和目录的权限是如何管理的、如何修改文件和目录的权限、如何授予用户和组权限等。

文件和目录的权限包括读、写和执行权限,可以使用chmod命令修改权限,可以使用chown和chgrp命令改变文件和目录的所有者和所属组。

最后,系统管理方面的问题可能涉及到如何进行系统信息查看、如何进行系统配置、如何进行系统维护等。

可以使用uname、hostname、df、free、top等命令查看系统信息,可以通过修改配置文件实现系统配置,可以使用cron进行定时任务管理,可以使用rsync进行数据备份等。

shell常见面试题

shell常见面试题Shell脚本是一种在Unix、Linux系统中用于运行命令的编程语言。

在面试过程中,掌握Shell脚本编写以及相关的常见面试题是非常重要的。

本文将介绍一些常见的Shell面试题,希望能够帮助您在面试中更好地准备和表现。

1. 什么是Shell脚本?Shell脚本是一种解释性脚本语言,用于编写一系列的命令,以便在Unix、Linux系统中自动执行。

它提供了交互式和非交互式的命令行操作,可以用于执行常见的系统管理任务以及自动化任务。

2. 如何创建并执行一个Shell脚本?要创建一个Shell脚本,您可以使用任何文本编辑器编写一个以.sh 为后缀的文件,例如:script.sh。

在该文件中,您可以编写需要执行的一系列命令,如:```#!/bin/bashecho "Hello, World!"```保存并退出文件后,使用以下命令执行脚本:```$ chmod +x script.sh$ ./script.sh```3. 如何传递参数给Shell脚本?Shell脚本可以通过命令行参数来接收外部输入。

在脚本中,可以使用特殊变量$1,$2,$3等来引用传递的参数。

例如,脚本名为script.sh,可以通过以下命令传递参数:```$ ./script.sh arg1 arg2 arg3```脚本中可以通过$1引用arg1,$2引用arg2,以此类推。

4. 如何获取Shell脚本的输入?除了通过命令行参数传递输入外,脚本还可以通过读取标准输入来获取输入。

可以使用read命令来获取用户输入的值,例如:```#!/bin/bashecho "Please enter your name:"read nameecho "Hello, $name!"```5. 如何使用条件语句在Shell脚本中做判断?在Shell脚本中,可以使用if-else语句来做条件判断。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档