shell题

合集下载

shell脚本基础练习题

shell脚本基础练习题

shell脚本基础练习题1、判断/etc/inittab⽂件是否⼤于100⾏,如果⼤于,则显⽰”/etc/inittab is a big file.”否者显⽰”/etc/inittab is a small file.”#!/bin/bash#判断⽂件⾏数是否⼤于100⾏if [ `wc -l /etc/inittab | awk '{print $1}'` -gt 100 ];then echo "/etc/inittab is a big file."else echo "/etc/inittab is a samll file."fi2、给定⼀个⽤户,来判断这个⽤户是什么⽤户,如果是管理员⽤户,则显⽰“该⽤户为管理员”,否则显⽰“该⽤户为普通⽤户”#!/bin/bash#判断⽤户类型`a=`id -u $1`if [ $a -eq 0 ];then echo "这是管理员⽤户"else echo "普通⽤户"fi3、判断某个⽂件是否存在#!/bin/bash#判断⽂件是否存在if [ -e $1 ];then echo "存在"exit 0else echo "不存在"fi4、判断当前系统上是否有⽤户的默认shell程序是否为bash程序,如果有,就显⽰有多个这类⽤户,否则就显⽰没有这类⽤户;【并且显⽰出那些⽤户是bash】⽅法⼀:#!/bin/bash#判断⽤户默认shell程序类型a=`grep "/bin/bash" /etc/passwd | wc -l`if [ $a -gt 0 ] ;then echo "存在bash⽤户有 $a 个"else echo "不存在"fi⽅法⼆:#!/bin/bash#判断⽤户的默认shell程序类型declare -i sum=`grep "/bin/bash" /etc/passwd | wc -l`if grep "/bin/bash" /etc/passwd &> /dev/null;then echo "存在 $sum 个⽤户,shell程序为/bin/bash" grep "/bin/bash" /etc/passwd | cut -d: -f1 exit 0else echo "没有这类⽤户"exit 1fi5,输⼊⼀个设备⽂件,输出这个设备⽂件的基本信息:#!/bin/bash#查看设备⽂件信息read -t 10 -p "输⼊⼀个设备⽂件名:" devname[ -z $devname ] && devname=`fdisk -l` && exit 1if [ -b /dev/$devname ];then fdisk -l /dev/$devname exit 0else echo "$devname 不是设备⽂件" echo "Usage:请输⼊⼀个设备⽂件,如 sda" exit 2fi6,shell编写99乘法表#!/bin/bash#99乘法表for i in `seq 9`;do for j in `seq 9`;do [ $j -le $i ] && echo -n -e "$i*$j=`echo $(($i*$j))`\t" done echo " "done7,统计netstat -tan类型declare -i L=0declare -i E=0declare -i o=0for i in $(netstat -tan | grep "^tcp" | awk '{print $6}');do if [ $i = LISTEN ];then let L++ elif [ $i = ESTALISHED ];then let E++ else let o++fidoneecho "坚挺的链接有: $L"echo "其他链接有: $o"echo "家⾥链接有: $E"8,计算1-100内偶数的和#!/bin/bash#1-100内偶数的和declare -i sum=0 for i in $(seq 0 2 100);do let sum+=$idoneecho "和 $sum"。

SHELL语法练习题

SHELL语法练习题

SHELL语法练习题1. 编写一个Shell脚本,实现将指定目录下所有后缀名为.txt的文件移动到指定目录下的backup文件夹中。

```shell#!/bin/bashsourceDir="/path/to/source" # 指定源目录backupDir="/path/to/backup" # 指定备份目录# 检查并创建备份目录if [ ! -d "$backupDir" ]; thenmkdir "$backupDir"fi# 移动txt文件到备份目录mv "$sourceDir"/*.txt "$backupDir"```2. 编写一个Shell脚本,实现统计指定目录下的文件数量、目录数量,并输出结果。

```shell#!/bin/bashtargetDir="/path/to/directory" # 指定目标目录# 统计文件数量fileCount=$(find "$targetDir" -type f | wc -l)echo "文件数量: $fileCount"# 统计目录数量dirCount=$(find "$targetDir" -type d | wc -l)echo "目录数量: $dirCount"```3. 编写一个Shell脚本,实现将指定目录下的所有文件和目录名称统一重命名为大写字母,并输出结果。

```shell#!/bin/bashtargetDir="/path/to/directory" # 指定目标目录# 遍历目录下的文件和目录,并进行重命名for file in "$targetDir"/*; donewFileName=$(basename "$file" | tr '[:lower:]' '[:upper:]')mv "$file" "$targetDir/$newFileName"doneecho "文件和目录已重命名为大写字母。

shell 练习题 答案

shell 练习题 答案

shell 练习题答案Shell练习题答案1. 问题描述:下面是一个Shell练习题,请写出你认为的答案,并提供相应的解释和思路。

2. 答案:在这道练习题中,我们将探讨一些常见的Shell编程问题。

问题一:如何在Shell中输出Hello World?答案一:可以使用echo命令来输出Hello World。

具体的命令如下:```echo "Hello World"```解释:echo命令用于在终端或脚本中输出文本,它会将文本原样输出到屏幕。

在这里,我们将输出的文本设为Hello World。

问题二:如何在Shell中创建一个变量,并将其输出?答案二:可以使用以下命令创建一个变量,并将其输出:```my_variable="Hello Shell"echo $my_variable```解释:在第一行中,我们通过将文本"Hello Shell"赋值给变量my_variable来创建一个变量。

在第二行,我们使用echo命令将该变量的内容输出到屏幕。

问题三:如何在Shell脚本中使用if语句?答案三:以下展示了一个使用if语句的示例:```shellif [ 1 -eq 1 ]; thenecho "1 equals 1"fi```解释:在这个例子中,我们使用了if [ 1 -eq 1 ]这个条件判断语句。

条件判断部分被放在方括号内,-eq表示比较两个数是否相等。

如果条件成立(即1等于1),则会执行echo命令输出"1 equals 1"。

问题四:如何在Shell中遍历一个数组?答案四:以下是一个遍历数组的示例:```shellmy_array=("Apple" "Banana" "Orange")for item in "${my_array[@]}"; doecho $itemdone```解释:在这个例子中,我们先创建了一个名为my_array的数组,其中包含了三个元素(Apple、Banana和Orange)。

5个实用的shell脚本面试题和答案

5个实用的shell脚本面试题和答案

5个实⽤的shell脚本⾯试题和答案这边提到的5个⾯试问题,延续之前的有关Linux⾯试问题和答案。

如果你是Tecmint的读者,你的⽀持我⾮常感谢。

1. 写⼀个shell脚本来得到当前的⽇期,时间,⽤户名和当前⼯作⽬录。

答案 : 输出⽤户名,当前⽇期和时间,以及当前⼯作⽬录的命令就是logname,date,who i am和pwd。

现在,创建⼀个名为userstats.sh⽂件,将下⾯的代码添加到它。

复制代码代码如下:#!/bin/bashecho "Hello, $LOGNAME"echo "Current date is `date`"echo "User is `who i am`"echo "Current directory `pwd`"给它添加执⾏权限,并且执⾏他。

复制代码代码如下:# chmod 755 userstats.sh# ./userstats.sh样例输出复制代码代码如下:Hello, aviCurrent date is Sat Jun 7 13:05:29 IST 2014User is avi pts/0 2014-06-07 11:59 (:0)Current directory /home/avi/Desktop2.写⼀个shell脚本,进⾏两个数字的相加,如果没有输⼊参数就输出错误信息和⼀⾏使⽤说明答案 : 下⾯是简单的shell脚本以及描述,如果没有命令⾏参数,它会抛出错误与如何使⽤脚本的说明。

再创建⼀个名为twonumbers.sh⽂件和下⾯的内容添加到⽂件⾥。

复制代码代码如下:#!/bin/bash# The Shebangif [ $# -ne 2 ]# If two Inputs are not received from Standard Inputthen# then execute the below statementsecho "Usage - $0 x y"# print on standard output, how-to use the script (Usage - ./1.sh x y )echo " Where x and y are two nos for which I will print sum"# print on standard output, “Where x and y are two nos for which I will print sum ”exit 1# Leave shell in Error Stage and before the task was successfully carried out.fi# End of the if Statement.echo "Sum of $1 and $2 is `expr $1 + $2`"# If the above condition was false and user Entered two numbers as a command Line Argument,it will show the sum of the entered numbers.给他添加可执⾏权限,并且执⾏。

习题07_Shell编程

习题07_Shell编程

习题07_Shell编程一、单选1. 下面哪个命令是用来定义shell的全局变量( D )。

A. exportfsB. aliasC. exportsD. export2.在Shell脚本中,用来读取文件内各个域的内容并将其赋值Shell变量的命令是(D )。

A. foldB. joinC. trD. read3. 当字符串用双引号(’’)括起来时,SHELL将(C )。

A. 解释引号内的特殊字符B. 执行引号中的命令C. 不解释引号内的特殊字符D. 结束进程4. 以下哪个环境变量表示当前路径( B )。

A. PATHB. PWDC. HOMED. ROOT5. shell不仅是(用户命令的解释器),它同时也是一种功能强大的编程语言,(bash )是Linux的缺省shell。

6. 编写的Shell程序运行前必须赋予该脚本文件(执行)权限。

7. 对于Shell脚本程序,若输入参数数量多于9个,则程序遍历每个参数可通过使用(shift )命令实现。

8. 为脚本程序指定执行权的命令及参数是(chmod a+x filename )。

9. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必有(空格)。

10. 输入了Shell命令的部分字符后按( tab )键可补全其余部分。

11.改变命令提示符的环境变量是(PS1 )。

11. grep -E '[Hh]enr(y|ietta)' file的功能是:(在文件File中查找Henry、henry、Henrietta或henrietta)。

12. 如下为命令终端下的一个截图:则,以下两句的执行结果是:(the home path is $HOME )。

path=‘the home path is $HOME’echo $path13. 以下为程序名为prog的程序内容。

则sh prog a b c d的执行结果为( C )。

set A B C Dshiftshiftecho $1三、简答1. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。

shell编程例题

shell编程例题

shell编程例题1. 创建一个名为"hello.sh"的shell脚本,该脚本在屏幕上输出"Hello, World!"。

```bash#!/bin/bashecho "Hello, World!"```2. 编写一个shell脚本,接受一个参数,并打印出该参数的平方。

```bash#!/bin/bashnum=$1square=$((num * num))echo "The square of $num is $square."```3. 编写一个shell脚本,计算1到10的和,并输出结果。

```bash#!/bin/bashsum=0for ((i=1; i<=10; i++))dosum=$((sum + i))doneecho "The sum of numbers from 1 to 10 is $sum."```4. 编写一个shell脚本,统计一个文本文件中特定单词出现的次数,并输出结果。

```bash#!/bin/bashword="example"count=0while IFS= read -r linedofor w in $linedoif [[ $w == $word ]]thencount=$((count + 1))fidonedone < file.txtecho "The word '$word' appears $count times in the file."```请注意,这些只是一些基本的shell编程例题,更复杂的问题可能需要更多的代码和逻辑来解决。

shell 笔试题

shell 笔试题

shell 笔试题以下是一些常见的Shell脚本笔试题,你可以参考这些题目来检验自己的Shell脚本编程能力。

写出创建一个空目录的Shell命令。

答案是:mkdir directory_name如何在一个文件中查找某一特定字符串?答案是:grep "string" file_name如何将两个字符串连接起来?答案是:使用加号+,例如:string1="Hello, " string2="World!" result=$string1$string2如何使用Shell脚本在多个文件中查找某一特定字符串?答案是:使用for循环和grep命令,例如:bash`for file in *; do grep "string" $file; done`如何将一个字符串中的所有单词首字母大写?答案是:使用tr命令和正则表达式,例如:bash`echo "hello world" | tr '[:lower:]' '[:upper:]' | sed 's/\b\(.\)/\u\1/g'`如何使用Shell脚本将一个文件中的所有行反向输出?答案是:使用tac命令,例如:tac file_name如何使用Shell脚本将一个文件中的所有行连接成一个字符串?答案是:使用cat命令和重定向,例如:cat file_name > output_file如何使用Shell脚本将一个文件中的所有行按行反向排序?答案是:使用sort命令和-r选项,例如:sort -r file_name如何使用Shell脚本将一个文件中的所有行按行反向排序并将结果输出到一个新文件中?答案是:使用sort命令、重定向和-o选项,例如:sort -r file_name > output_file。

70个经典的shell脚本面试问题及解答

70个经典的shell脚本面试问题及解答

70个经典的shell脚本面试问题及解答选择了 70 个你可能遇到的 shell 脚本面试问题及解答。

了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。

在过去的几年里,我们注意到所有的linux 工作职位都要求脚本技能。

1) 如何向脚本传递参数 ?./script argument例子: 显示文件名称脚本 ?1 2 3 4 ./show.sh file1.txtcat show.sh#!/bin/bashecho $1(LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。

)2) 如何在脚本中使用参数 ?第一个参数 : $1,第二个参数 : $2例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ?1 2 3 4 ./copy.sh file1.txt /tmp/cat copy.sh#!/bin/bashcp $1 $23) 如何计算传递进来的参数 ?$#4) 如何在脚本中获取脚本名称 ?$05) 如何检查之前的命令是否运行成功 ?$?6) 如何获取文件的最后一行 ?tail-17) 如何获取文件的第一行 ?head-18) 如何获取一个文件每一行的第三个元素 ?awk'{print $3}'9) 假如文件中每行第一个元素是 FIND ,如何获取第二个元素awk'{ if ($1 == "FIND") print $2}'10) 如何调试 bash 脚本将 -xv 参数加到 #!/bin/bash 后例子:#!/bin/bash –xv11) 举例如何写一个函数 ? ?1 2 3 function example {echo "Hello world!"}12) 如何向连接两个字符串 ? ?1 2 3 4 V1="Hello"V2="World"V3=${V1}${V2}echo $V3输出HelloWorld13) 如何进行两个整数相加 ? ?1 2 3 4 V1=1V2=2let V3=$V1+$V2echo $V3输出3据 @kashu 的意见,本题的更佳回答为:两个整数相加,还有若干种方法实现: ?1 2 3 4 5 6 7 A=5echo $(($A+$B)) # 方法 2echo $[$A+$B] # 方法 3expr $A + $B # 方法 4echo $A+$B | bc # 方法 5awk 'BEGIN{print '"$A"'+'"$B"'}' # 方法 6 14) 如何检查文件系统中是否存在某个文件 ? ?1 2 3 4 if [ -f /var/log/messages ]thenecho "File exists"fi15) 写出 shell 脚本中所有循环语法 ?for 循环 : ?1 2 3 foriin$(ls);doecho item:$idonewhile 循环 : ?1 2 3 4 5 6 #!/bin/bashCOUNTER=0while [ $COUNTER -lt 10 ]; doecho The counter is $COUNTERlet COUNTER=COUNTER+1doneuntil 循环 :1 2 3 4 5 6 #!/bin/bashCOUNTER=20until [ $COUNTER -lt 10 ]; doecho COUNTER $COUNTERlet COUNTER-=116) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?这一行说明要使用的shell 。

shell编程题经典100例

shell编程题经典100例

shell编程题经典100例 1. 显示当前路径```shellpwd```2. 列出当前目录中的文件和目录```shellls```3. 创建一个新的目录```shellmkdir <目录名> ```4. 删除一个目录 ```shellrmdir <目录名> ```5. 删除一个文件 ```shellrm <文件名>```6. 复制一个文件```shellcp <源文件> <目标文件> ```7. 移动一个文件```shellmv <源文件> <目标文件> ```8. 重命名一个文件```shellmv <旧文件名> <新文件名> ```9. 创建一个符号链接```shellln -s <源文件> <符号链接> ```10. 显示一个文件的详细信息 ```shellls -l <文件名>```11. 显示一个目录的详细信息 ```shellls -ld <目录名>```12. 查找一个文件```shellfind <路径> -name <文件名> ```13. 搜索文本字符串```shellgrep <字符串> <文件>```14. 显示一个文件的指定行```shellhead -n <行数> <文件>```15. 显示一个文件的最后几行 ```shelltail -n <行数> <文件>```16. 比较两个文件```shelldiff <文件1> <文件2>```17. 合并两个文件```shellcat <文件1> <文件2> > <输出文件> ```18. 运行一个命令```shellcommand <参数>```19. 管道命令```shellcommand1 | command2```20. 重定向输出```shellcommand > <输出文件> ```21. 重定向输入```shellcommand < <输入文件> ```22. 使用环境变量```shellecho $PATH```23. 设置环境变量```shellPATH=/usr/bin:/bin export PATH```24. 创建一个脚本```shell#!/bin/bash# 脚本内容```25. 运行一个脚本 ```shell./<脚本名>```26. 调试一个脚本 ```shellbash -x <脚本名> ```27. 使用case语句 ```shellcase $1 in"start")# 执行启动命令;;"stop")# 执行停止命令;;esac```28. 使用if语句```shellif [ $1 -gt 10 ]; then# 执行条件为真的命令 else# 执行条件为假的命令 fi```29. 使用for循环```shellfor i in 1 2 3 4 5; do # 迭代执行命令done```30. 使用while循环```shellwhile [ $i -lt 10 ]; do # 循环执行命令i=$((i+1))done```31. 使用until循环```shelluntil [ $i -gt 10 ]; do # 循环执行命令i=$((i+1))done```32. 使用函数```shellfunction my_function() { # 函数体}my_function```33. 使用数组```shellarr=(1 2 3 4 5)echo ${arr[2]}```34. 使用字典```shelldeclare -A dictdict["name"]="John Doe" echo ${dict["name"]}```35. 使用正则表达式```shellif [[ $string =~ ^[[:alpha:]]+$ ]]; then # 匹配以字母开头的字符串fi```36. 使用管道符```shellls | grep "txt"```37. 使用换行符```shellecho -e "Line 1\nLine 2"```38. 使用引号```shellecho "This is a string with spaces"```39. 使用转义字符```shellecho "This is a string with a \n newline" ```40. 使用注释```shell# 这是一行注释```41. 使用条件?:```shellresult=$(if [ $condition ]; then echo "true"; else echo "false"; fi)```42. 使用切片```shellecho "${string:0:3}"```43. 使用join命令```shellecho $( IFS=","; echo "${array[]}" ) ```44. 使用read命令```shellread -p "Enter your name: " name```45. 使用变量赋值```shellvar=$(expr 1 + 2)```46. 使用算术运算```shell(( i++ ))```47. 使用逻辑运算符```shellif [[ $condition1 && $condition2 ]]; then # 条件 1 和条件 2 都为真fi48. 使用比较运算符```shellif [[ $var -gt 10 ]]; then # var 大于 10fi```49. 使用测试命令```shellif test -f <文件>; then# 文件存在```50. 使用getopts解析命令行参数 ```shellwhile getopts ":ab:" opt; do case $opt ina)flag_a=true;;b)arg_b=$OPTARG;; esac done```。

shell题库

shell题库

1. Linux 高效、灵活的系统管理离不开文本环境操作。

vi 编辑器是Linux系统中最常用的编辑器,使用文本编辑器具有的优点是(ABC)。

A.文字环境操作方式下可以高效地完成所有的任务;B.可以比较容易地了解到Linux 的运作状况;C.对于要求做服务器的主机,使用字符界面不用启动图形工作环境,大大地节省了系统资源开销。

D.命令好记忆。

2. 操作系统怎样识别用户发出的指令呢?比如输入一个指令:ls –l ,操作系统怎么知道用户要列出文件信息呢?因此在操作系统与用户之间还要有一个界面,它可以将稍微人性化的语言或操作转换为操作系统能够识别的操作。

在文本环境中,这个沟通的工作就是由(填空1)(英文)完成。

它是命令语言、命令解释程序及程序设计语言的统称。

填空1:Shell3. 下面实现输出重定向,将ls 命令的输出保存为文件dir.out ,若该文件存在则予以取代。

请完整程序。

student@Ubuntu:~$ls ( 填空1) dir.out填空1:>4. (填空1)用于将一系列的命令连接起来,也就是把前面命令的输出作为后面命令的输入。

管道的命令是“(填空2)”。

填空1:管道填空2:|5. Shell脚本可以包含任意从键盘输入的Linux 命令。

建立Shell脚本的步骤与建立普通文本文件的步骤相同,利用编辑器( 如vi) 进行程序录入和编辑加工,虽然脚本名没有什么限制,为了方便认识,还是建议脚本的后缀名最好为( D )。

A.exeB.docC.cD.sh6. 执行Shell脚本的方式包括(ABC )。

A. 输入重定向:即用输入重定向方式让Shell从给定文件中读入命令行,并进行相应处理。

其一般形式为:bash< 脚本名B. 以脚本名作为参数。

其一般形式为:bash 脚本名C. 将Shell脚本的权限设置为可执行,然后在提示符后输入脚本名直接执行。

7. 要使用环境变量或其他Shell变量,必须在变量名前加上一个“(A )”符号而不能直接使用变量名。

shell 笔试题

shell 笔试题

shell 笔试题1、SHELL脚本test.sh权限为644,脚本没有执行权限的时候怎么执行test.sh脚本() [单选题] *A sh test.sh(正确答案)B python test.shC exec test.shD ./test.sh2、SHELL脚本中$0代表什么() [单选题] *A 脚本传递的所有参数B 脚本名(正确答案)C 脚本第一个参数D 脚本参数个数3、如下条件判断语句,输出内容为()name="zhangsan"if [ "$name" == "Xzhangsan" ];thenecho "true"elseecho "false"fi [单选题] *A trueB false(正确答案)4、文件表达式中,-x是什么权限() [单选题] *A 读权限B 写权限C 执行权限(正确答案)D 是否为目录5、while死循环中如何跳出当前循环() [单选题] *A continueB selectC break(正确答案)D goto6、read -s -t 30 -p命令中-s参数的含义是() [单选题] *A 静默输出(正确答案)B DEBUG模式输出C 结合-t参数,休眠7、SHELL脚本中如何执行函数() [单选题] *A sh 函数名B 函数名(正确答案)C function 函数名D ./函数名8、SHELL脚本函数如何返回字符串() [单选题] *A return 字符串B echo 字符串(正确答案)C print 字符串D printf 字符串9、SHELL脚本中单引号可以识别变量() [判断题] *对错(正确答案)10、SHELL脚本中函数return不可以返回字符串() [判断题] *对(正确答案)错11、SHELL脚本中continue指令是跳出本次循环进入下一次循环() [判断题] *对(正确答案)错12、SHELL脚本中双引号不能识别变量() [判断题] *对错(正确答案)13、SHELL脚本中反撇``和$()中都可以执行命令() [判断题] *对(正确答案)错。

70 个经典的shell 脚本面试问题及解答

70 个经典的shell 脚本面试问题及解答

选择了 70 个你可能遇到的 shell 脚本面试问题及解答。

了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。

在过去的几年里,我们注意到所有的 linux 工作职位都要求脚本技能。

1) 如何向脚本传递参数 ?./script argument例子: 显示文件名称脚本 ?1 2 3 4 ./show.sh file1.txtcat show.sh#!/bin/bashecho $1(LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。

)2) 如何在脚本中使用参数 ?第一个参数 : $1,第二个参数 : $2例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ?1 2 3 4 ./copy.sh file1.txt /tmp/cat copy.sh#!/bin/bashcp $1 $23) 如何计算传递进来的参数 ?$#4) 如何在脚本中获取脚本名称 ?$05) 如何检查之前的命令是否运行成功 ?$?6) 如何获取文件的最后一行 ?tail-17) 如何获取文件的第一行 ?head-18) 如何获取一个文件每一行的第三个元素 ?awk'{print $3}'9) 假如文件中每行第一个元素是 FIND ,如何获取第二个元素awk'{ if ($1 == "FIND") print $2}'10) 如何调试 bash 脚本将 -xv 参数加到 #!/bin/bash 后例子:#!/bin/bash –xv11) 举例如何写一个函数 ? ?1 2 3 function example {echo "Hello world!"}12) 如何向连接两个字符串 ? ?1 2 3 4 V1="Hello"V2="World"V3=${V1}${V2}echo $V3输出HelloWorld13) 如何进行两个整数相加 ? ?1 2 3 4 V1=1V2=2let V3=$V1+$V2echo $V3输出3据 @kashu 的意见,本题的更佳回答为:两个整数相加,还有若干种方法实现: ?1 2 3 4 5 6 7 A=5B=6echo $(($A+$B)) # 方法 2echo $[$A+$B] # 方法 3expr $A + $B # 方法 4echo $A+$B | bc # 方法 5awk 'BEGIN{print '"$A"'+'"$B"'}' # 方法 614) 如何检查文件系统中是否存在某个文件 ? ?1 2 3 4 if [ -f /var/log/messages ]thenecho "File exists"fi15) 写出 shell 脚本中所有循环语法 ?for 循环 : ?1 2 3 foriin$(ls);doecho item:$idonewhile 循环 : ?1 2 3 4 5 6 #!/bin/bashCOUNTER=0while [ $COUNTER -lt 10 ]; doecho The counter is $COUNTERlet COUNTER=COUNTER+1doneuntil 循环 :?1 2 3 4 5 6 #!/bin/bashCOUNTER=20until [ $COUNTER -lt 10 ]; doecho COUNTER $COUNTERlet COUNTER-=1done16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?这一行说明要使用的 shell 。

shell脚本练习题

shell脚本练习题

shell脚本例子集锦(习题总结)练习一:写一个脚本1.设定变量FILE的值为/etc/passwd2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)Hello,root,your UID is 0.3.统计一个有多少个用户答案一:#!/bin/bashfile="/etc/passwd"LINES=`wc -l $file | cut -d" " -f1`for I in `seq 1 $LINES`;douserid=`head -$I $file | tail -1 |cut -d: -f3`username=`head -$I $file | tail -1 |cut -d: -f1`echo "hello $username,your UID is $userid"doneecho "there are $LINES users"答案二:#!/bin/bashfile=/etc/passwdlet num=0for I in `cat $file`;dousername=`echo "$I" | cut -d: -f1`userid=`echo "$I" | cut -d: -f3`echo "Hello,$username,your UID is $userid"num=$[$num+1]doneecho "there are $num users"练习二:写一个脚本1.切换工作目录至/var2.依次向/var目录中的每个文件或子目录问好,形如:(提示:for FILE in /var/*;或for FILE in `ls /var`;)Hello,log3.统计/var目录下共有多个文件,并显示出来答案:#!/bin/bashcd /varlet num=0for I in `ls /var/*`;doecho "hello $I"num=$[$num+1]doneecho "the number of files is $num"练习三:写一个脚本1.设定变量file的值为/etc/passwd2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容3.把这些行保存至/tmp/mypasswd文件中答案:#!/bin/bashfile="/etc/passwd"for I in 2 4 6 10 13 15;doexec 3>/tmp/mypasswdline=`head -$I $file | tail -1`echo "$line"echo "$line" >&3exec 3>&-done练习四:写一个脚本传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商答案如下:vim test.sh#!/bin/bashecho "first number $1" (表示输出第一个数)echo "second number $2" (表示输出第二个数)echo "$(($1+$2))" (输出两数之和)echo"$[$1-$2]" (输出两数之差)echo"$[$1*$2]" (输出两数之积)echo"$[$1/$2]" (输出两数之商):wq(表示保存并退出vi编辑器)chmod +xtest.sh (给test.sh执行的权限)./test.sh 23 (传递两个参数并执行脚本作业一:写一个脚本:1.创建目录/tmp/scripts2.切换工作目录至此目录中3.复制/etc/pam.d目录至当前目录,并重命名为test4.将当前目录的test及其里面的文件和子目录的属主改为redhat5.将test及其子目录中的文件的其它用户的权限改为没有任何权限答案:#!/bin/bashmkdir -v /tmp/scriptscd /tmp/scriptscp -r /etc/pam.d ./testchown -R redhat ./testchmod -R o=--- ./test作业二:写一个脚本1.显示当前系统日期和时间,而后创建目录/tmp/lstest2.切换工作目录至/tmp/lstest3.创建目录a1d,b56e,6test4.创建空文件xy,x2y,7325.列出当前目录下以a,x或者6开头的文件或目录6.列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录答案:#!/bin/bashdatemkdir -pv /tmp/lstestcd /tmp/lstestmkdir a1d b56e 6testtouch xy x2y 732ls [ax6]*ls [[:alpha:]][[:digit:]]*作业三:写一个脚本添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加答案:#!/bin/bashfor I in `seq 1 10`;docut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err || useradd user$Idone作业四:写一个脚本通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线如果在线,就显示“ip is up”如果不在线,就显示“ip is down”答案: #!/bin/bashfor I in `seq 151 254`;doping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$I is up" || echo "192.168.0.$I is down"done例题:shell1.sh 显示日期和时间。

SHELL试题

SHELL试题

SHELL 试题姓名:得分:一、选择题:1关于shell 中特殊字符说法错误的是()A 、星号(*):可以匹配任何字符串,包括空串。

B 、问号(?):?可以匹配文件名中的任何字符。

C 、中括号([]):可以匹配一个集合的元素。

D 、执行符号(&):“&”号使程序以后台的形式执行。

2关于shell 中&&,||,|,&说法错误的是()A 、command1 && command2:当且仅当:当且仅当command1执行失败后才执行command2 B 、command1 || command2:当且仅当:当且仅当command1执行失败后才执行command2 C 、command1 | command2:command1输出作为command2的输入D 、command1 & :command1后台执行3关于用户自定义变量说法错误的是()A 、在程序中变量需要事先说明类型。

B 、没有全程、局部的区别,变量可以随时随地定义。

C 、其名称是以字母开头的不包含空白字元的任何字符串,长度不限。

D 、其使用范围只限于程序运行期间。

4关于内置变量变量说法错误的是()A 、$0 Shell 所有参数B 、$n Shell 程序(或过程)的第n 个位置参数值,n=1..9 C 、$* Shell 程序所有的位置参数组成的字符串D 、$# Shell 程序的位置参数个数5下列方法给shell 变量var 赋值报错误的是()A var= ls –l B read var B read var C var=`ls -l` C var=`ls -l` C var=`ls -l` D var=$1 D var=$1 6给脚本shell.ksh 文件的所有者赋予可执行权限正确的语句()A chmod 644 shell.ksh B chmod 755 shell.ksh C chown 644 shell.ksh D chown 755 shell.ksh 7下列不能用于循环控制流程的()A 、for B 、while C 、util D 、go 8如果Shell 程序以"#!"开头,则"#!"后面所写的就是所使用的Shell ,而且要将整个路径名称指出来下列说法错误的是()A 使用Bourne Shell 程序开头是#!/bin/sh B 使用C Shell 程序开头是#!/bin/csh C 使用Korn Shell 程序开头是#!/bin/ksh D 使用/etc/perl 程序开头是#! /etc/perl 9下列说法错误的是( )A[ -f $file ] #名为 $file 的目录是否存在。

shell脚本练习题

shell脚本练习题

shell脚本例子集锦(习题总结)练习一:写一个脚本1.设定变量FILE的值为/etc/passwd2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)Hello,root,your UID is 0.3.统计一个有多少个用户答案一:#!/bin/bashfile="/etc/passwd"LINES=`wc -l $file | cut -d" " -f1`for I in `seq 1 $LINES`;douserid=`head -$I $file | tail -1 |cut -d: -f3`username=`head -$I $file | tail -1 |cut -d: -f1`echo "hello $username,your UID is $userid"doneecho "there are $LINES users"答案二:#!/bin/bashfile=/etc/passwdlet num=0for I in `cat $file`;dousername=`echo "$I" | cut -d: -f1`userid=`echo "$I" | cut -d: -f3`echo "Hello,$username,your UID is $userid"num=$[$num+1]doneecho "there are $num users"练习二:写一个脚本1.切换工作目录至/var2.依次向/var目录中的每个文件或子目录问好,形如:(提示:for FILE in /var/*;或for FILE in `ls /var`;)Hello,log3.统计/var目录下共有多个文件,并显示出来答案:#!/bin/bashcd /varlet num=0for I in `ls /var/*`;doecho "hello $I"num=$[$num+1]doneecho "the number of files is $num"练习三:写一个脚本1.设定变量file的值为/etc/passwd2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容3.把这些行保存至/tmp/mypasswd文件中答案:#!/bin/bashfile="/etc/passwd"for I in 2 4 6 10 13 15;doexec 3>/tmp/mypasswdline=`head -$I $file | tail -1`echo "$line"echo "$line" >&3exec 3>&-done练习四:写一个脚本传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商答案如下:vim test.sh#!/bin/bashecho "first number $1" (表示输出第一个数)echo "second number $2" (表示输出第二个数)echo "$(($1+$2))" (输出两数之和)echo"$[$1-$2]" (输出两数之差)echo"$[$1*$2]" (输出两数之积)echo"$[$1/$2]" (输出两数之商):wq(表示保存并退出vi编辑器)chmod +xtest.sh (给test.sh执行的权限)./test.sh 23 (传递两个参数并执行脚本作业一:写一个脚本:1.创建目录/tmp/scripts2.切换工作目录至此目录中3.复制/etc/pam.d目录至当前目录,并重命名为test4.将当前目录的test及其里面的文件和子目录的属主改为redhat5.将test及其子目录中的文件的其它用户的权限改为没有任何权限答案:#!/bin/bashmkdir -v /tmp/scriptscd /tmp/scriptscp -r /etc/pam.d ./testchown -R redhat ./testchmod -R o=--- ./test作业二:写一个脚本1.显示当前系统日期和时间,而后创建目录/tmp/lstest2.切换工作目录至/tmp/lstest3.创建目录a1d,b56e,6test4.创建空文件xy,x2y,7325.列出当前目录下以a,x或者6开头的文件或目录6.列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录答案:#!/bin/bashdatemkdir -pv /tmp/lstestcd /tmp/lstestmkdir a1d b56e 6testtouch xy x2y 732ls [ax6]*ls [[:alpha:]][[:digit:]]*作业三:写一个脚本添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加答案:#!/bin/bashfor I in `seq 1 10`;docut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err || useradd user$Idone作业四:写一个脚本通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线如果在线,就显示“ip is up”如果不在线,就显示“ip is down”答案: #!/bin/bashfor I in `seq 151 254`;doping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$Iis up" || echo "192.168.0.$I is down"done例题:shell1.sh 显示日期和时间。

shell知识及面试题

shell知识及面试题

1、运行Shell脚本有两种方法。

1)作为可执行程序将上面的代码保存为test.sh,并 cd 到相应目录:chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本2)作为解释器参数这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:/bin/sh test.sh3)当前shell环境执行,.a.sh或者source a.sh执行。

2、./ 和 sh的使用区别1)使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限(绿色);2)使用“sh” 执行脚本,对应的xxx.sh没有执行权限,亦可执行;如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统默认的shell(大多数linux默认是bash),如果指定了解释器,那么就将该脚本交给指定的解释器比如a.run文件内容是这个:#!/usr/bin/pythonprint("This is Python script")那么你如果运行./a.run,结果就是输出一行文字,但是如果你运行sh a.run,会报错。

sh:#!/bin/bash 可以不写。

因为将a.sh作为参数传给sh(bash)命令来执行的,这时不是a.sh自己来执行,而是被人家调用执行,所以不要执行权限,采用系统默认bash解释器。

6)Shell文件包含例如,创建两个脚本,一个是被调用脚本 subscript.sh,内容如下:echo "shell测试"一个是主文件 main.sh,内容如下:#!/bin/bash. ./subscript.shecho $url执行脚本:$chomd +x main.sh./main.shshell测试注意:被包含脚本不需要有执行权限。

2、Shell变量Shell变量的定义、删除变量、只读变量、变量类型。

1)定义变量Shell 支持以下三种定义变量的方式:variable=valuevariable='value'variable="value"3)变量的单引号和双引号的区别#!/bin/bashurl="中文网11"website1='中文网:${url}'website2="中文网:${url}"echo $website1echo $website2运行结果:中文网:${url}中文网:中文网11以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。

linux shell练习题

linux shell练习题

linux shell练习题Linux Shell是一种基于文本界面的操作系统Shell,可以通过Shell 命令来管理和操作计算机系统。

对于初学者来说,掌握Shell语言是非常重要的。

在本篇文章中,将为你提供一些Linux Shell练习题,帮助你巩固和提升自己的Shell编程技能。

1. 练习题一:文件处理a) 在当前目录下创建一个名为"mydir"的目录。

b) 在"mydir"目录中创建一个名为"mytext.txt"的空白文件。

c) 将"mytext.txt"文件的权限设置为只读。

d) 在"mydir"目录下创建一个名为"mycopy.txt"的文件,并将"mytext.txt"的内容复制到"mycopy.txt"中。

e) 删除"mytext.txt"文件。

2. 练习题二:文本处理a) 创建一个名为"mytext.txt"的文本文件,并在文件中写入以下内容:```Hello, world!This is a test file.This file will be used for text processing exercises.```b) 统计"mytext.txt"文件中的行数、单词数和字符数。

c) 在"mytext.txt"文件中,将所有的"test"替换为"practice"。

d) 在"mytext.txt"文件的每一行前加上行号,并将其保存到一个新文件中。

3. 练习题三:条件语句和循环a) 输入一个数字,判断该数字是正数、负数还是零,并输出相应的提示信息。

b) 输入一个字符串,判断该字符串是否为回文字符串(正序和逆序均相同),并输出相应的结果。

shell反弹原理 选择题

shell反弹原理 选择题

shell反弹原理选择题
以下是关于shell反弹原理的选择题:
1. shell反弹是一种利用网络连接的方式进行远程控制的技术,其原理是:
a) 在受控端启动一个服务
b) 在攻击端发送命令
c) 在攻击端监听网络连接
d) 在受控端执行命令
答案:c) 在攻击端监听网络连接
2. shell反弹通常使用的网络协议是:
a) HTTP
b) FTP
c) SSH
d) TCP
答案:d) TCP
3. shell反弹的过程中,利用的是受控端的哪个服务?
a) Telnet
b) SSH
c) FTP
d) HTTP
答案:a) Telnet
4. shell反弹需要攻击者先在受控端安装一个什么程序或脚本?
a) Shell脚本
b) 反弹软件
c) RAT程序
d) 木马程序
答案:d) 木马程序
5. shell反弹可以绕过目标防火墙和安全设置吗?
a) 是
b) 否
答案:b) 否,shell反弹需要攻击者能够建立网络连接,如果
目标防火墙或安全设置阻止了此连接,反弹将无法成功。

shell经典题目

shell经典题目

shell经典题目含详解共20道1. 打印当前目录:```bashpwd```这个命令用于打印当前工作目录的路径。

2. 列出目录下的文件:```bashls```用于列出当前目录下的文件和子目录。

3. 创建一个新目录:```bashmkdir new_directory```用于创建一个名为"new_directory"的新目录。

4. 切换目录:```bashcd directory_name```将工作目录更改为"directory_name"。

5. 显示文件内容:```bashcat filename```用于显示文件的内容。

6. 统计文件行数:```bashwc -l filename```返回文件中的行数。

7. 查找文件中的关键词:```bashgrep "keyword" filename```在文件中查找包含"keyword"的行。

8. 将两个文件合并:```bashcat file1 file2 > merged_file```将两个文件合并成一个文件。

9. 循环输出数字:```bashfor i in {1..5}; do echo $i; done```用于在Shell脚本中实现循环输出。

10. 条件判断:```bashif [ $a -eq $b ]; then echo "Equal"; else echo "Not equal"; fi ```比较两个变量$a和$b是否相等。

11. 函数定义:```bashmy_function() { echo "Hello, World!"; }my_function```定义一个简单的函数并调用它。

12. 读取用户输入:```bashread -p "Enter your name: " nameecho "Hello, $name!"```用于从用户那里获取输入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一shell程序设计实验内容Part 1:shell命令行1. ls命令多次执行的输出结果都重定向到文件ls.log保存。

(1) ls命令多次执行的输出结果都重定向到文件ls.log保存。

首先,用ls>指令重定向到ls.log,再用cat指令打开ls.log文件。

(2)题目解答的命令root@ubuntu:~# ls>ls.logroot@ubuntu:~# cat ls.log(3)运行结果的截图及说明图1-1说明:用ls指令重定向到ls.log,再用cat指令打开ls.log文件,列出ls重定向到ls.log 中的内容。

2. 列出/etc目录下以字母p开头的以.conf结尾的配置文件名称。

(1) 列出某一目录下的满足条件的配置文件名称。

首先,应该用find命令,然后要求在/etc/以字母p开头的以.conf结尾的文件名称,则需输入-name,p ,.conf,其中p后面应加上一个‘*’,略指文件名称中省略的部分(2)题目解答的命令root@ubuntu:~# find /etc/ -name p*.conf(3)运行结果的截图及说明图1-2说明:在root@ubuntu:~# 之后,直接加find命令,输入要求,回车,就会出现满足命令的文件名称依次列出。

3.如何使用shell命令统计某个目录下的文件数(目录中有下级目录)?(1) 统计某个目录下的文件数(目录中有下级目录)。

以etc文件夹为例,ls –l 长列表输出该目录下文件信息,grep “^-”将长列表过滤,只保留一般文件,如果只保留目录则为^d,wc-l统计输出信息的行数,一行信息对应一个文件,统计结果即为文件个数。

(2)题目解答的命令或源代码root@ubuntu:~# ls /etc -lr|grep "^-" |wc –lroot@ubuntu:~# ls /etc -lr|grep "^d" |wc -l(3)运行结果的截图及说明图1-3(1)图1-3(2)说明:图1-3(1)为etc中过滤长列表的一部分后剩余的文件数目,而图1-3(2)则为etc中总的文件个数。

4. 利用shell命令统计当前目录(如/home)下的文件数。

(1)上题与本题类似,本体是统计当前目录。

(2)题目解答的命令或源代码root@ubuntu:~# ls /home -lr|grep "^d"|wc -l(3)运行结果的截图及说明图1-4说明:本题与上一题类似,只是将任一文件夹的名称改为当前目录。

5. 利用shell命令统计你所完成的《学生成绩管理系统》代码行数。

(1)题目分析及设计方案将学生成绩管理系统(SIMS.txt)移动到主文件夹下,用cat指令统计行数。

(2)题目解答的命令或源代码root@ubuntu:~# cat SIMS | wc -l(3)运行结果的截图及说明图1-5说明:学生成绩管理系统不能用文件夹表示,需转换成txt格式。

6. shell中历史命令的查看:(1)使用上下箭头翻看历史命令①题目分析及设计方案直接用鼠标拖动页面查看。

②运行结果的截图及说明图1-6(1)说明:用鼠标控制箭头直接上下滑动。

(2)使用history命令查看命令的历史记录列表①题目分析及设计方案直接输入history命令。

②题目解答的命令或源代码root@ubuntu:~# history③运行结果的截图及说明图1-6(2)图1-6(3)说明:图1-6(2)为history指令输入,图1-6(3)为history指令结束。

(3)使用管道符连接history命令和more命令,实现执行结果的分页查看①题目分析及设计方案直接用管道符连接history和more。

②题目解答的命令或源代码root@ubuntu:~# history | more③运行结果的截图及说明图1-6(4)图1-6(5)说明:图1-6(4)为指令输入,图1-6(5)为指令结束。

(4)使用管道符连接history命令和head命令,显示前5条记录。

①题目分析及设计方案直接用管道符连接history和head,又因为显示前5条记录,则加-5。

②题目解答的命令或源代码root@ubuntu:~# history | head -5③运行结果的截图及说明图1-6(6)说明:输入指令后,直接显示前五条指令。

Part 2: shell脚本1. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。

直到用户输入"end"停止。

(1)题目分析及设计方案首先,启动gedit建立一个脚本(number),然后在脚本中写入符合要求的程序(图2-1(1)),最后在执行脚本。

(2)题目解答的命令或源代码脚本number:#!/bin/bashunset varwhile [ "$var" != "end" ]doecho -n "please input a number: "read varif [ "$var" = "end" ]thenbreakfiecho "var is $var"done命令:root@ubuntu:~# gedit number.sh用gedit建立脚本numberroot@ubuntu:~# chmod +x number.shroot@ubuntu:~#./number.sh先为脚本增加可执行属性,再执行脚本(3)运行结果的截图及说明图2-1(1)图2-1(2)说明:首先启动gedit建立新的脚本number,然后在脚本中输入满足条件的代码,如图2-1(1)所示,再用chomd指令为脚本增加可执行属性,最后在执行脚本。

2. 编写shell脚本lish.sh,实现功能:显示当前系统时间。

列出/etc目录下以字母p开头的以.conf结尾的配置文件名称并输出到list.txt中。

(1)题目分析及设计方案首先,应该先建立一个脚本list.sh,在脚本中先实现显示当前系统时间和列出/etc目录下以字母p开头的一.conf结尾的配置文件名称,再将这些文件名称输出到list.txt中。

(2)题目解答的命令或源代码List.sh中的源代码:te | tee list.txtfind /etc/ -name P*.conf | tee -a list.txtroot@ubuntu:~# gedit list.sh建立脚本list.shroot@ubuntu:~# chmod +x list.shroot@ubuntu:~# ./list.sh增加脚本可执行属性,执行脚本(3)运行结果的截图及说明图2-2(1)图2-2(2)说明:首先建立脚本list.sh,在脚本中写入满足条件的程序(图2-2(1)),在增加脚本的可执行属性(chmod +x list.sh),最后运行脚本,显示满足条的内容(时间和目录)。

3. 编写shell脚本cf.sh,实现功能:统计某个目录下的文件数(目录中有下级目录)。

(1)题目分析及设计方案首先,建立脚本cf.sh,在脚本中写入统计某个目录下的文件数的指令,然后执行脚本。

(2)题目解答的命令或源代码脚本cf.sh:#!/bin/bashls -l | grep "^-" | wc –lroot@ubuntu:~# gedit cf.sh建立脚本cf.shroot@ubuntu:~# chmod +x cf.shroot@ubuntu:~# ./cf.sh增加脚本的可执行属性,执行脚本(3)运行结果的截图及说明图2-3(1)图2-3(2)说明:建立脚本cf.sh,在脚本红输入满足条件的指令,如图2-3(1),增加脚本的可执行属性(chmod +x cf.sh),执行脚本,输出目录下的文件个数。

4. 写一个脚本:①创建目录/user/script②切换工作目录至此目录中③查找/etc/pam.d④复制/etc/pam.d目录至当前目录,并重命名为tt⑤将当前目录的tt及里面的文件和子目录的权限改为可读、可写、可执行。

(1)题目分析及设计方案首先建立脚本(jj.sh),输入符合要求的代码(创建路径,切换目录,查找,复制目录并重命名,更改权限),再运行脚本。

(2)题目解答的命令或源代码jj.sj 源代码:#!/bin/bashmkdir usercd usermkdir scriptfind /etc/pam.dcp -r /etc/pam.d ./ttfind ./tt -type f -exec chmod 777 {} \;find ./tt -type f -exec chmod 777 {} \;root@ubuntu:~# gedit jj.sh创建脚本jj.shroot@ubuntu:~# chmod +x jj.shroot@ubuntu:~# ./jj.sh增加执行权限,运行程序。

(3)运行结果的截图及说明图2-4(1)图2-4(2)图2-4(3)说明:建立脚本jj.sh,输入满足该题目条件的代码图2-4(1),运行后,显示的目录图2-4(3)属于重命名后tt内的目录图2-4(2),图2-4(1)中‘777’是权限全部包含的意思。

5. 编写一个shell脚本,完成如下任务:要求采用交互式的方式,使用菜单界面,能够从键盘中获得一组数值,要求功能完善,操作方便。

①输入命令add,则可以添加一个新数值;②输入命令avg,则可以计算所有值的平均数;③输入命令max,则可以找到数值中的最大值;④输入命令min,则可以找到数值中的最小值;⑤输入命令show,则可以查看当前所有输入的数值;⑥输入命令exit,则退出。

(1)题目分析及设计方案首先,建立脚本cc.sh,然后再脚本中输入相应代码,主要是几个指令的源代码运行及设置,主题运用的结构是if elsif 格式。

(2)题目解答的命令或源代码root@ubuntu:~# gedit cc.shroot@ubuntu:~# chmod +x cc.shroot@ubuntu:~# ./ cc.sh(3)运行结果的截图及说明图2-5(1)图2-5(2)图2-5(3)说明:首先建立脚本cc.sh图2-5(1),由脚本中的程序运行图2-5(2),执行程序,得到结果图2-5(3)。

在实验过程中遇到的问题及自己的解决方案和心得。

在本次试验中,主要出现的问题有:第一大部分中,由于是第一次接触Linux,很多具体指令还没有掌握,所以第一部分查了很多资料,具体是指令的细节应用;第二大部分,难度上增加了许多,像有的指令根本不知道如何应用,或者是根本不知道,只能查找相关的例题,在自己分析,例如,计算行数的时候,刚开始我本来打算用find,结果不行,最后还是用cat解决的,还有查了资料我才知道“777”代表了全部权限都能实行。

相关文档
最新文档