Shell面试基础

什么是shell

在Linux内核与用户之间的解释器程序

通常指/bin/bash

负责向内核翻译及传达用户指令

解释器有哪些?在哪里查看解释器?

/bin/sh /bin/bash /sbin/nologin

/bin/tcsh /bin/csh /bin/ksh

cat /etc/shells

脚本创建三步走?

1.新建文本文档

2.添加可执行的脚本语句

3.添加x执行权限

脚本的构成?

脚本声明(使用哪种解释器)

可执行语句

注释信息

脚本执行方法?

1,添加x权限

2,使用解释器直接执行脚本,新开启解释器

bash test1.sh //执行完毕后退出新开启的解释器

3,使用source直接执行脚本,使用当前解释器

source test1.sh //执行完毕后退出当前解释器

什么是变量?优点是什么?

以固定名称存放,可能会变化的值。

优点:提高脚本对任务需求,运行环境变化的适应能力

方便在脚本中重复使用

自定义变量的命名要求?

1.等号两边不要有空格

2.变量名由字母,下划线,数字组成,区分大小写

3.变量名不能以数字开头,不要使用关键字和特殊字符

shell****变量的类型?

### 1、环境变量

PWD:当前位置

USER:当前用户名

HOSTNAME:主机名

SHELL:当前用户的解释器

HOME:当前用户的家目录

UID:当前用户的UID号

PATH:系统命令所在地

PS:1一级提示符

PS2:二级提示符

### 2.位置变量

$1 $2 $3 …

### 3.预定义变量

$* 显示所有位置变量的值

$# 统计位置变量的个数

$$ 当前程序的进程号

$? 上一条指令的执行结果,0是正确,非0是异常

$0 显示脚本名称

4.自定义变量**envset****的区别?

env:列出所有环境变量

set:列出所有变量等于:

请说出单引号、双引号和反撇号的区别**?**

单引号:用来界定范围,可以屏蔽特殊符号的作用

双引号:用来界定范围

反撇号:取命令执行的结果(也可用“$()”)

如何关闭和恢复回显?

关闭回显:stty -echo

恢复回显:stty echo

请写出重定向操作的含义(<>>>2>2>>&>

<:重定向输入,将文本输入来源由键盘改为制定的文件(导入,将文件里面的东西导出来)

> :重定向输出,将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上(覆盖重定向)

> > 两个大于号:重定向输出,与>类似,但是追加而不是覆盖

2>:重定向错误,将命令行的执行出错信息保存到文件,而不是直接显示在屏幕上

2>>:重定向错误,与2>类似,但是追加而不是覆盖

&>:混合重定向,相当于>和2>,覆盖到同一个文件(正确错误都输出)

局部变量和全局变量的区别?

局部变量:只在当前shell环境中有效,无法在子shell环境中使用

全局变量:在当前shell和子shell环境中都有效,使用export可将局部变量声明为全局变量,export -n 取消全局属性

请写出进行数值比较时,等于、不等于、大于等于、小于等于、

大于、小于的操作符是?

等于:-eq

不等于:-ne

大于等于:-ge

小于等于:-le

大于:-gt

小于:-lt

请写出下列操作符所代表的含义

-e:判断对象是否存在

-d:判断对象是否为目录

-f:判断对象是否为文件

-r:判读对象是否有读权限

-w:判读对象是否有写权限

-x:判读对象是否有执行权限

请写出**"&&“”||“以及"”**的含义

&& 前一个执行结果成功即可执行下条指令

|| 前一个执行结果失败即执行下一条指令

; 逻辑或,成立其中一个即可

break,continue,exit的区别?

break:跳出当前循环,执行循环后的语句

continue:跳过当前循环,执行下一个循环

exit:退出脚本,默认返回值是0

请写出字串截取的三种方式**,起始位置分别是?

${变量名:起始位置:长度};起始位置为0

expr substr “$变量名” 起始位置 长度;起始位置为1

echo $变量名 | cut -b 起始位置-结束位置;起始位置为1

请写出字串替换的格式?

替换一个:${变量名/old/new}

替换所有:${变量名//old/new}

所有为空(删除):${变量名//old/}

字串的删除方法?

字符串掐头去尾:

- 从左向右,最短匹配删除:${变量名#*关键词}

- 从左向右,最长匹配删除:${变量名##*关键词}

- 从右向左,最短匹配删除:${变量名%关键词*}

- 从右向左,最长匹配删除:${变量名%%关键词*}

请写出下列正则表达式所代表含义?

^ 匹配行首

$ 匹配行尾

[] 集合,匹配集合中的任意单个字符

[^] 对集合取反

. 匹配任意单个字符

*匹配前一个字符任意次数,不能单独使用

{n,m} 匹配前一个字符n到m次

{n} 匹配前一个字符n次

{n,} 匹配前一个字符n次以上

() 保留

\b 单词边界(空,空格,tab,特殊符号)| 或者

sed工具概述?

sed — 流式编辑器

非交互,基于模式匹配过滤和修改文本

逐行处理,并将结果输出到屏幕上

可以实现对文本的输出,删除,替换,复制,剪切,导入,导出等操作。

sed工具的基本选项?

-n(屏蔽默认输出,默认sed会输出读取文档的全部内容)

-r(让sed支持扩展正则)

-i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)

常用动作指令:

p:打印行

d:删除行

s:字符串替换

sed工具的多行文本处理操作?

i: 在指定的行之前插入文本

a:在指定的行之后追加文本

c:替换指定的行

grep的选项?

-v 取反

-n显示行号

-i 忽略字母大小写

-c 统计匹配的行数

awk****的概述?

基于模式匹配检查输入文本,逐行处理并输出

通常用在shell脚本中,获取指定数据

单独使用时,可对文本数据做统计

awk常用内置变量?$0 文本当前行的全部内容

$1 文本的第1列

$2 文件的第2列

NR 文件当前行的行号

NF 文件当前行的列数(有几列)

AWK的处理时机?

BEGIN{ } 行前处理,读取文件内容前执行,指令执行1次

{ } 逐行处理,读取文件过程中执行,指令执行n次

END{ } 行后处理,读取文件结束后执行,指令执行1次

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值