哈喽大家好!我是波哥! 最近做了一个简约版互联网行业新闻小程序。 有兴趣的可以点击下方链接或者微信搜索:IT路边社 IT路边社 1、为何叫做Shell? 我们知道计算机的运作离不开硬件,但却无法直接操作硬件,硬件的驱动只能通过一种称之为操作系统(OS,OpertatingSystem)的软件来管控。Linux严格来说是一个操作系统(OS)。 使用者没有办法直接操作Kernel,而是通过Kernel的外壳程序,也就是所谓的Shell来与Kernel沟通。Shell是一个使用者与系统的交互界面(Interface),只能通过命令行(Commandline)来使用系统来完成工作。因此, Shell最简单的定义就是:命令解译器(CommandInterpreter) 将使用者的命令翻译给内核处理; 同时,将内核处理结果翻译给使用者。 不同的OS使用不同的K同一个kernel之上,也可以使用不同的Shell,常见的Shell有sh、bash、csh、ksh等 2、Shellprompt(PS1)与CarriageReturn(CR)的关系? 成功登录一个Shell终端后,光标左边部分称之为提示符Prompt,通常一般用户使用,管理员用户使用 ShellPrompt:可以输入命令了,键入命令后,直到读进CR(CarriageReturn)字符为止 CarriageReturn:可以执行命令了 若从技术的细节来看,Shell会依据IFS(InternalFieldSeperator)将Commandline所输入的文字拆解为字段(wordfield)。然后再针对特殊字符(meta)先作处理,最后重组整行commandline。 3、别人echo,你也echo,试问echo知多少? echo将argument送到标准输出(stdout),通常显示在屏幕stdin标准输入 stdout标准输出 stderr标准错误输出echon取消换行符echoe启用反斜杠转译 4、双引号与单引号有什么区别? hardquote:(单引号),关闭所有引用 softquote:(双引号),保留引用 5、varvalue?export前后差在哪? 变量定义:namevalue,等号左右两边不能使用分隔符。 变量替换:echo{name} export变量:exportnamevalue,使变量成为环境变量本地变量AB取消变量unsetA环境变量exportAB 6、exec跟source差在哪?环境变量只能从父进程到子进程单向传递。换句话说:在子进程中环境如何变更,均不会影响父进程的环境。 当我们执行一个shellscript时,其实是先产生一个subshell的子进程,然后subshell再去产生命令行的子进程。创建子shell执行脚本。1。sh当前shell执行source1。sh当前shell执行后退出exec1。sh 7、与{}差在哪? 将commandgroup置于subshell执行 {}则是在同一个shell内完成 8、()与还有{}差在哪?假设我们定义了一个变量为:filedir1dir2dir3my。file。txt我们可以用{}分别替换获得不同的值: 1。shell字符串的非贪婪(最小匹配)左删除{file}拿掉第一条及其左边的字符串:dir1dir2dir3my。file。txt2。shell字符串的贪婪(最大匹配)左删除{file}拿掉最后一条及其左边的字符串:my。file。txt{file。}拿掉最后一个。及其左边的字符串:txt3。shell字符串的非贪婪(最小匹配)右删除:{file}拿掉最后条及其右边的字符串:dir1dir2dir3{file。}拿掉最后一个。及其右边的字符串:dir1dir2dir3my。file4。shell字符串的贪婪(最大匹配)右删除:{file}拿掉第一条及其右边的字符串:(空值){file。}拿掉第一个。及其右边的字符串:dir1dir2dir3my 记忆的方法为:是去掉左边(在键盘上在之左边)是去掉右边(在键盘上在之右边)单一符号是最小匹配两个符号是最大匹配。5。shell字符串取子串:{file:0:5}:提取最左边的5个字节:dir1{file:5:5}:提取第5个字节右边的连续5个字节:dir2 6。shell字符串变量值的替换:{filedirpath}:将第一个dir提换为path:path1dir2dir3my。file。txt{filedirpath}:将全部dir提换为path:path1path2path3my。file。txt 7。{}还可针对变量的不同状态(没设定、空值、非空值)进行赋值:{filemy。file。txt}:假如file没有设定,则使用my。file。txt作传回值。(空值及非空值时不作处理){file:my。file。txt}:假如file没有设定或为空值,则使用my。file。txt作传回值。(非空值时不作处理){filemy。file。txt}:假如file设为空值或非空值,均使用my。file。txt作传回值。(没设定时不作处理){file:my。file。txt}:若file为非空值,则使用my。file。txt作传回值。(没设定及空值时不作处理){filemy。file。txt}:若file没设定,则使用my。file。txt作传回值,同时将file赋值为my。file。txt。(空值及非空值时不作处理){file:my。file。txt}:若file没设定或为空值,则使用my。file。txt作传回值,同时将file赋值为my。file。txt。(非空值时不作处理){file?my。file。txt}:若file没设定,则将my。file。txt输出至STDERR。(空值及非空值时不作处理){file:?my。file。txt}:若file没设定或为空值,则将my。file。txt输出至STDERR。(非空值时不作处理) tips:以上的理解在于,你一定要分清楚unset与及non这三种赋值状态。一般而言,:与有关,若不带:的话,不受影响,若带:则连也受影响。8。计算shell字符串变量的长度:{var}{var}可计算出变量值的长度:{file}可得到27,因为dir1dir2dir3my。file。txt刚好是27个字节。。。 9。bash数组(array)的处理方法数组:A(abcd)引用数组:{A〔〕}{A〔〕}访问数组成员{A〔0〕}计算数组长度{A〔〕}{A〔〕}数组重新赋值A〔2〕xyz 10。()是用来做整数运算的a5;b7;c2;echo((abc)) 9、与区别在哪? 则可得到p1p2p3p4这三个不同的词段 则可得到p1p2p3p4这一整串单一的词段 10、与差在哪? 1、test命令有两种形式 testexpression 〔expression〕 2、bash的test目前支持三种测试对象 string:字符串 integer:整数 file:文件 3、当expression为真是返回0(true),否则返回非0(false) command1command2command2只有在command1的RV为0(True)的条件下执行。 command1command2command2只有在command1的RV为非0(False)的条件下执行。 4、先替换变量再比较A123〔nA〕(〔Alt100〕echotoobig)unsetA 11、与差在哪?0:StandardInput(STDIN) 1:StandardOutput(STDOUT) 2:StandardErrorOutput(STDERR) 我们可用来改变读进的数据信道(stdin),使之从指定的档案读进。 我们可用来改变送出的数据信道(stdout,stderr),使之输出到指定的档案。lsmy。fileno。such。file1file。out2file。err21就是将stderr并进stdout做输出lsmy。fileno。such。file1file。out21dev空lsmy。fileno。such。filedev21 catfilefile在IORedirection中,stdout与stderr的管道会先准备好,才会从stdin读进资料。也就是说,在上例中,file会先将file清空,然后才读进file,但这时候档案已经被清空了,因此就变成读不进任何数据了 12、你要if还是case呢?ifechonDoyouwanttocontinue?(YesNo):readYNif〔YNYoYNyoYNYesoYNyesoYNYES〕;thenechocontinueelseexit0fi caseechonDoyouwanttocontinue?(YesNo):readYNcaseYNin〔Yy〕〔Yy〕〔Ee〕〔Ss〕);)exit0esac 13、forwhat?while与until差在哪?forfor((i1;i10;i))doechonumisidone whilenum1while〔numle10〕;doechonumisnumnum((num1))done untilnum1until〔numgt10〕;doechonumisnumnum((nu1))done break是结束loop return是结束function exit是结束scriptshell 来源:https:www。cnblogs。comrustlingp9833174。html 获取更多的面试题、脚本等运维资料点击:运维知识社区获取 脚本之短信轰炸机 脚本之QQ微信轰炸机 ansible一键搭建redis5。0。5集群 elk7。9真集群docker部署文档 全球最全loki部署及配置文档 最强安全加固脚本2。0 一键设置iptbales脚本