自己随便整理了一下在学习Linux网课时遇到的一些习题,易错点之类的,接上文Linux MOOC习题 1~5章。
PS:第七章是上机实验。
六、Linux命令风格和文件系统
这两个题都忽略了“符号链接”的作用。
这俩没啥好说的。
在Linux中,一般是-1代表失败,>=0的值代表成功。
八、文件和目录的权限,Shell
目录有执行权限(即x权限)意味着分析路径名过程中可检索该目录。
九、替换,元字符和转义
如果你是执行这个命令的操作员,估计你马上就心情不好了。由于拼错了单词,把DATABASE不小心写成了DATEBASE,灾难来了。未命名的变量被bash替换为空字符串,实际上你以root身份执行了最邪恶的一条命令:
1 rm -rf /*永远不要盲目自信,谁也保证不了自己不会犯错误,怎么才能避免这样的悲剧发生?
尽量不要以root身份登录。
bash有选项,引用未定义的变量会出错而不是替换为空字符串,可以打开这个选项。早期的编程语言把引用的未定义过的变量自动加上定义,这种做法实际上太糟糕,最早的FORTRAN语言就这种做法,据说曾因此导致一次太空任务失败。
在设计你自己的系统时,建库命令能够从目录名开始建库,就是说要求建库之前/opt/data下不需要存在目录puma,而不是要求建库之前/opt/data有个空目录puma,这样的话,即使你的命令变成了
1 rm -rf $DATEBASE因为你的失误,会导致rm命令抱怨缺少参数而什么都不做,这个结果是可以接受的。
在Linux中,目前我已知的Shell的元字符有:
1 空格 制表符 回车 > < | ; & $ * [ ] ? \ ( ) '' " " 反撇号`第11题中,这三个命令都可以取消文件通配符*的特殊作用,让echo直接打印字符*,并且这个替换是Shell进行的,也就是说,echo拿到的命令都是一样的,他是分不清操作员输入的是哪个命令,这三个命令的参数:
而对于不转义的命令的参数:
1 echo *因此结果就很明显了:
十、shell流程控制:条件,循环与函数
- B选项:明显的错误,
then
要么另起一行,要么前面加;
。- C选项和D选项:都是没加
fi
,C选项还有其他的错误,这明显是和C语言之类的给混了。