非常好的12道shell命令经典面试问题

2019-09-23 08:59:09于海丽

15. 如何获取文本文件的第 10 行 ?
head -10 file|tail -1

16. bash 脚本文件的第一个符号是什么
#

17. 命令:[ -z"" ] && echo 0 || echo 1 的输出是什么
0

18. 如何在后台运行脚本 ?
nohup command&

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

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

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

22. bash shell 脚本中哪个符号用于注释 ?
#

23. ' 和 " 引号有什么区别 ?
' - 当我们不希望把变量转换为值的时候使用它。
" - 会计算所有变量的值并用值代替。


24. 如何在脚本文件中重定向标准输出和标准错误流到log.txt 文件 ?
在脚本文件中添加 "exec >log.txt2>&1" 命令。


25. 如何只用 echo 命令获取字符串变量的一部分 ?
echo ${variable:x:y}
x - 起始位置
y - 长度

例子:
variable="My name is Petras, and I amdeveloper."
echo ${variable:11:6} # 会显示 Petras


26. 如何使用 awk 列出 UID 小于 100 的用户 ?
awk -F: '$3<100' /etc/passwd


27. 写程序为用户计算主组数目并显示次数和组名
cat /etc/passwd|cut -d: -f4|sort|uniq-c|while read c g
do
{ echo $c; grep :$g: /etc/group|cut -d:-f1;}|xargs -n 2
done

28. 如何获取变量长度 ?
${#variable}

29. 如何打印变量的最后 5 个字符 ?
echo ${variable: -5}

30. 如何只用 echo 命令替换字符串的一部分 ?
echo ${variable//pattern/replacement}

31. 如何计算本地用户数目 ?
wc -l /etc/passwd|cut -d" " -f1 或者 cat /etc/passwd|wc -l

32. 不用 wc 命令如何计算字符串中的单词数目 ?
set ${string}
echo $#

33. 如何列出第二个字母是 a 或 b 的文件 ?
ls -d ?[ab]*

34. 如何将整数 a 加到 b 并赋值给 c ?
c=$((a+b))

c=`expr $a + $b`

c=`echo "$a+$b"|bc`

35. 如何去除字符串中的所有空格 ?
echo $string|tr -d " "

36. 写出输出数字 0 到 100 中 3 的倍数(0 3 6 9…)的命令 ?
for i in {0..100..3}; do echo $i; done

for (( i=0; i<=100; i=i+3 )); do echo"Welcome $i times"; done

37. 如何打印传递给脚本的所有参数?
echo $*

echo $@

38.  [ $a == $b ] 和[ $a -eq $b ] 有什么区别
[ $a == $b ] - 用于字符串比较
[ $a -eq $b ] - 用于数字比较

39. = 和 == 有什么区别
= - 用于为变量赋值
== - 用于字符串比较

40. 写出测试 $a 是否大于 12 的命令 ?