Assignment Help logo
在线聊天

Loading...

Score %0 (0 correct0 incorrect20 unanswered)

Q1. 三种方法中哪个会将名为 "photo dir" 的目录递归地从用户的主目录复制到 /backups?

cp -R "~/photo dir" /backups #method1
cp -R ~"/photo dir" /backups #method2
cp -R ~/"photo dir" /backups #method3
  • 三种方法都不会扩展到用户的主目录。只有使用 "$HOME/photo dir" 会成功。
  • 只有方法 1 会将 "~/" 扩展到用户的主目录,然后追加包含空格的目录名称。
  • 只有方法 2 会将 "~/" 扩展到用户的主目录,然后追加包含空格的目录名称。
  • 只有方法 3 会将 "~/" 扩展到用户的主目录,然后追加包含空格的目录名称。

Q2. 如果在当前目录中运行 script.sh,它会失败。为什么?

$ ls -1
Beach photo1.jpg
Photo1.jpg
Photo2.jpg
Script.sh

$ cat script.sh
for i in $(ls *.jpg); do
	mv $i ${i}.bak
done
  • ls: cannot access nonexistentfile: No such file or directory
  • for 循环将在单词边界处分割,而 Beach photo1.jpg 中有一个空格。
  • mv 命令将失败,因为大括号是 Bash 中的特殊字符,不能用于文件名。
  • 运行 script.sh 将成功,因为 ls 命令会构建当前目录中文件的列表,然后 for 循环遍历该列表并重命名带有 .bak 扩展名的文件。

Q3. 要在子shell 中运行复制命令,你会使用哪种语法?

  • ( command )
  • sh command
  • { command; }
  • (( command ))

参考。子shell 是程序员捕获(通常是为了处理)来自程序或脚本的输出的一种方式。要在子shell 中运行的命令被封装在单括号内,并且由美元符号前缀:DIRCONTENTS=$(ls -l) echo ${DIRCONTENTS}。

Q4. 使用 "awk",这个命令字符串的输出是什么?

echo "1 2 3" | awk '{for (i=1; i<=NF; i++) s=s+$i};END {print s}'
  • 6
  • 123
  • 3
  • 600

参考。AWK 是一种专为处理基于文本的数据而设计的编程语言,可以在文件、数据流或使用 shell 管道中使用。换句话说,您可以将 awk 与 shell 脚本结合使用,或直接在 shell 提示符下使用。

Q5. 下面的命令将在根文件系统中搜索名为 "finance.db" 的文件。在这种情况下,发送到 /dev/null 的是什么信息?

find / -name "finance.db" 1>results.txt 2>/dev/null
  • 不匹配 finance.db 的文件名
  • 发送到标准错误的信息-例如,find 命令运行时显示的错误
  • 匹配 finance.db 的文件名
  • 发送到标准输出的信息-即,find 命令找到的文件的路径

参考。将 stderr(标准错误)重定向到文件的语法:command 2> errors.txt

Q6. 要永久删除文件 textfile 中的空行,你可以使用哪个命令?

  • sed -i '/^$/d' textfile
  • sed '/^$/d' textfile
  • cat textfile | sed '/^$/d
  • sed -i 's/^$//' textfile

参考
sed:sed 是一个流编辑器。流编辑器用于对输入流上的基本文本进行基本文本转换。
-i[SUFFIX]:此选项指定要就地编辑的文件。
'/^$/d':正则表达式位于 //. ^ 是行的开头,$ 是行的结尾。^$ 意味着开始和结束之间没有任何内容。
d:删除模式空间;立即开始下一个周期。
警告,此示例不会在 macOS 终端上工作,因为 macOS 使用了不同的 UNIX 变种。有一种方法可以使其在 macOS 上工作,添加一个额外的标志 -e,甚至只是 --(在 StackOverflow 上找到):sed -i -e '/^$/d' textfile.txt

Q7. 假设用户 user1 存在,那么这个命令字符串的结果会是什么?

awk -F: '/user1/{print $1 "-" $3 "-" $6}' /etc/passwd
  • 它会显示用户 user1 的用户名、UID 和主目录,用冒号分隔。
  • 它会打印用户 user1 的 UID、GID 和主目录,用连字符分隔。
  • 它会打印用户 user1 的 UID、注释 和主目录,用连字符分隔。
  • 它会显示用户 user1 的用户名、UID 和主目录,用连字符分隔。

参考。传统上,/etc/passwd 文件用于跟踪注册的每个用户,这些用户都可以访问系统。/etc/passwd 文件是一个以冒号分隔的文件,包含以下信息:1-用户名,2-密码,3-用户 ID(UID),4-组 ID(GID),5-用户 ID 信息(GECOS),6-主目录,7-命令/ shell

Q8. 如果在 Bash 脚本中使用 "set -e" 会发生什么?

  • 如果函数或子shell 返回非零状态码,Bash 将退出。
  • 如果条件返回非零状态码,Bash 将退出。
  • 如果 local、declare 或 typeset 分配返回非零状态码,Bash 将退出。
  • 如果命令、命令列表、复合命令或潜在的管道返回非零状态码,Bash 将退出。

参考。set -e 选项指示 bash 如果任何命令[1] 的退出状态非零,则立即退出。您不会希望为命令行 shell 设置此选项,但在脚本中设置它非常有帮助。在所有广泛使用的通用编程语言中,未处理的运行时错误 - 无论是 Java 中的抛出异常,还是 C 中的分段错误,还是 Python 中的语法错误 - 都会立即停止执行程序;后续行不会被执行。

Q9. "_" 关键字用于暂停脚本以从标准输入获取输入。

  • get
  • argument
  • read
  • input

Q10. 如果 file.sql 包含要执行的 SQL 语句,file.txt 中会有什么?

mysql < file.sql > file.txt
  • file.sql 内容的副本
  • 指示这是无效语法的错误
  • MySQL 命令的错误输出
  • MySQL 命令的非错误输出

检查下面的问题以获取变体。

Q11. 屏幕上的输出与 out.txt 的内容之间有什么区别?

mysql < file.sql > out.txt
  • 屏幕上的输出将与 out.txt 完全相同
  • 屏幕上没有输出,因为它被重定向到 out.txt。
  • 屏幕上的输出将与 out.txt 完全相同加上行号。
  • out.txt 文件将包含 STDERR,并且 STDOUT 将显示在屏幕上。

检查上面的问题以获取变体。

Q12. SUID 或 setuid 如何影响可执行命令?

  • 当命令创建文件时,文件将由命令的组所有者拥有。
  • SUID 位允许任何人执行命令,而不管其他权限如何。
  • 当执行命令时,其运行权限将提升到命令的用户所有者。
  • 当执行命令时,其运行权限将提升到命令的组所有者。

参考。Linux 和 Unix 访问权限标志 setuid 和 setgid(简称 set user identity 和 set group identity)[1] 允许用户以相应的文件系统权限执行可执行文件的所有者或组。并且在目录中更改行为。

Q13. 要从名为 textfile 的文件的第一列中提取文本,你会使用哪个命令?

  • cat {$1,textfile}
  • cat textfile | awk [print $1]
  • cat textfile | awk '{print $1}'
  • awk textfile {print $1}

Q14. 调用如下 Bash 历史搜索的键盘快捷键是什么?

(reverse-i-search)`':
  • Esc + R
  • Ctrl + H
  • Ctrl + R
  • Alt + R

注意:在 Mac 上,它将显示 bck-i-search:,而不是 (reverse-i-search)

Q15. 哪个算术表达式将给出最精确的答案?

  • var=$( expr 10 / 8 )
  • (( var= 10 /8 ))
  • var=$(( 10 / 8 ))
  • var=$(echo 'scale=2; 10 / 8' | bc)

参考。bc 命令用于命令行计算器。它类似于基本计算器,我们可以使用它进行基本的数学计算。除法的两位小数精度将传递给 bc,然后计算,并赋值给变量。

Q16. 这个脚本的结果是什么?

txt=Penguins
[[ $txt =~ [a-z]{8} ]]; echo $?
  • 0,表示 'true',因为变量 "txt" 包含八个字母
  • 0,表示 'true',因为每个人都喜欢企鹅!
  • 1,表示 'false',因为变量 "txt" 的长度超过八个字符
  • 1,表示 'false',因为变量 "txt" 不包含八个小写字母 a 到 z 之间的字符

Q17. 如何将 Bash shell 提示更改为以下内容?

HAL>
  • SHELL="HAL\>"
  • SHELL="HAL>"
  • export PS1="HAL>"
  • PS1="HAL\>"

Q18. 这段代码的输出是什么?

VAR="/var/www/html/website.com/html/"
echo "${VAR#*/html}"
  • /website.com/html/
  • /html/website.com/html/
  • /var/www/html/website.com/
  • 屏幕上不会输出任何内容。

参考 这里发生了什么引用 POSIX shell 规范:${parameter#[word]}。删除最小前缀模式。word 将扩展为一个模式。然后参数扩展将导致参数,其中模式匹配的最小部分被删除。
例如 ${VAR#?} 将扩展为带有第一个字符删除的 $VAR 的值。并且 ${VAR#\*/html} 将扩展为包括/html文本的所有字符,该文本将从变量中删除,产生/website.com/html/ 的输出。

Q19. 如果要求在标准输入中输入文本,你可以用什么键组合告诉命令你已经完成输入文本?

  • Ctrl + A(Windows)或 Command + A(Mac)
  • Ctrl + E(Windows)或 Command + E(Mac)
  • Ctrl + D(Windows)或 Command + D(Mac)
  • Ctrl + Z(Windows)或 Command + Z(Mac)

Q20. 要使 Bash 脚本像操作系统命令一样执行,它应该以什么开头?

  • #!/usr/bin/env bash
  • ~/usr/bin/env bash
  • '$!/usr/bin/env bash
  • #/usr/bin/env bash