1.什么是shell?
shell是用户和内核之间的接口;
2.典型linux系统上常用的shell有哪些不同类型?
bash,sh等;
3.软链接和硬链接有什么区别?
软链接相当于快捷方式,是文件名的链接,删除原始文件会使软链接处于断开状态;
硬链接相当于复制,删除原始文件,不影响硬链接;
4.如何在linux中传递和访问脚本的参数?
脚本(a.sh)中写入$1,$2,执行脚本时,加参数(./a.sh "arg1" "arg2")
5.$#的意义是什么?
$#显示传递给脚本的参数计数;
6.我想监视一个不断更新的日志文件,可以用什么命令最有效地实现这个目的;
tail -f 文件名;默认显示最后10行,连续显示文件的更新部分;
7.我想连接远程服务器并执行一些命令,我该如何实现?
我们可以使用ssh来做到这一点;ssh username@serverIP -p sshport;若是sshport为22,也可以省略-p,如,ssh root$183.13.27.97;
8.linux中的3个标准流是什么?
0-标准输入;1-标准输出;2-标准错误;
9.for循环的语法
10.在linux中编写if条件的语法;
11.shell脚本是什么,它是必须的吗?
一个shell脚本是一个文本文件,包含一个或多个命令。有时经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令到shell脚本来完成这些日常工作任务;
12.可以在shell脚本中使用哪些类型的变量?
系统定义变量(set查看)、用户定义变量(变量值可以通过echo $变量名 查看);
13.执行脚本;
bash a.sh; cat a.sh |bash; ./a.sh;
14.变量使用
name=`cat a.sh`
echo $name(无格式);echo "$name"(与linux查看的效果一致,有格式)
shell赋值时,不需要考虑值类型,如,字符串、整数、小数;默认赋值为字符串;
局部变量,name=xixi当前进程下使用(父进程或子进程不能使用);pstree -p;(查看进程树)
全局变量(环境变量),export name 或 export name=hehe(赋值并声明为全局变量)或 declare -x name=hehe ;(可以一直往下传n级进程);(env查看全局变量)
unset name;删除变量name;
set显示所有变量,标准变量、全局变量;
()开启子shell(pid与当前shell,pid一致),一次性,不影响当前shell;执行完就结束了;
{}影响当前环境;
(ls;pwd),{ ls;pwd;}无差异,但赋值就不同了,如(name=hua;echo $name)
远程上传文件:scp 文件名 用户名@ip:路径
shift 位移
$?判断上一条命令是否成功;执行脚本后,$?,判断脚本中最后执行的一条命令是否正确(如,第一条脚本语法错误,脚本位置中最后一条不执行);
bash -x a.sh分布执行;