linux shell练习
- 格式:doc
- 大小:41.50 KB
- 文档页数:2
Linux shell实验作业参考1.编写一个Shell脚本,实现输入一个数字,输出该数字的阶乘。
思路:使用for循环,从1到输入的数字进行累乘,最终输出结果。
#!/bin/bashecho "请输入一个数字:"read numfact=1for ((i=1;i<=$num;i++))dofact=$(($fact*$i))doneecho "阶乘为:$fact"2. 编写一个Shell脚本,实现输入一个目录,输出该目录下所有文件名和文件大小。
#!/bin/bash# 获取目录路径read -p "请输入目录路径:" dir_path# 判断目录是否存在if [ ! -d "$dir_path" ]; thenecho "目录不存在!"exit 1fi# 遍历目录下所有文件for file in "$dir_path"/*do# 判断是否是文件if [ -f "$file" ]; then# 获取文件名和大小file_name=$(basename "$file")file_size=$(du -h "$file" | awk '{print $1}')echo "$file_name : $file_size"fidone使用方法:➢将以上代码保存为一个.sh文件,例如:`list_files.sh`➢给该文件添加执行权限:`chmod +x list_files.sh`➢在终端中运行该脚本:`./list_files.sh`,然后输入目录路径即可。
3. 编写一个Shell脚本,实现输入一个字符串,输出该字符串中所有大写字母的个数。
脚本的基本思路是遍历输入的字符串,对于每个字符,判断是否为大写字母,如果是则计数器加一。
shell编程题Shell编程是Linux系统中非常重要的一部分,它能够帮助我们自动化执行各种命令和任务。
现在我将为大家介绍一个简单的Shell 编程题。
题目:编写一个Shell脚本,实现以下功能:1. 创建一个名为"mydir"的目录2. 在"mydir"目录中创建10个以数字命名的子目录,即1-103. 在每个子目录中创建一个空文件,文件名为子目录名+".txt",例如1.txt, 2.txt...4. 输出"mydir"目录下所有子目录名称和对应的文件数量解题思路:首先,我们需要使用mkdir命令来创建名为“mydir”的目录。
接着,可以使用一个循环来创建10个以数字命名的子目录,使用mkdir命令加上循环变量$i即可。
然后,我们再用一个循环在每个子目录中创建一个空文件。
同样,使用touch命令和循环变量$i即可。
最后,我们可以使用ls命令和grep命令来输出“mydir”目录下所有子目录名称和对应的文件数量。
具体实现方法如下:```#!/bin/bash#创建 mydir 目录mkdir mydir#循环创建 10 个数字命名的子目录for i in {1..10}domkdir mydir/$itouch mydir/$i/$i.txtdone#输出 mydir 目录下所有子目录名称和对应的文件数量ls -l mydir | grep "^d" | awk "{print $9}" | while read line donum=$(ls -l mydir/$line | grep "^-" | wc -l)echo "子目录 $line 中有 $num 个文件"done```以上便是一个简单的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 "文件和目录已重命名为大写字母。
linux shell编程题
正文:Linux shell编程题是指在Linux系统下,使用shell脚本语言进行编程的题目。
Shell脚本是一种解释性的脚本语言,可以用于编写自动化任务、系统管理以及数据处理等各种脚本程序。
下面是一些常见的Linux shell编程题目:
1. 编写一个脚本,实现统计一个文本文件中某个单词出现的次数。
2. 编写一个脚本,实现对一个目录下的所有文件进行备份,并将备份文件打包存储到另一个目录。
3. 编写一个脚本,实现对某个目录下的所有图片文件进行批量重命名,比如将所有的jpg文件重命名为png文件。
4. 编写一个脚本,实现统计某个目录下各个子目录的大小,并输出到一个文件中。
5. 编写一个脚本,实现对某个目录下的所有文件进行递归搜索,查找包含某个关键词的文件,并将结果输出到一个文件中。
这些题目涉及了Linux shell编程的一些基本概念与技巧,比如文件
操作、字符串处理、循环、条件判断等。
通过解答这些题目,可以提高对shell脚本语言的理解与应用能力,同时也能够加深对Linux系统的理解与熟悉程度。
总之,Linux shell编程题目对于提升Linux系统管理与自动化能力非常有帮助,对于那些希望深入学习Linux系统与shell脚本的人来说,是一种很好的学习方式和练习方法。
linux shell 练习题Linux Shell 练习题Linux Shell 是一种强大的命令行工具,用于管理和操作 Linux 系统。
它能够帮助用户完成各种任务,从简单的文件管理到复杂的系统配置。
为了提高自己的Shell 技能,下面是一些 Linux Shell 练习题,供大家练习和挑战。
1. 查找文件在 Linux 系统中,我们经常需要查找特定的文件。
请编写一个 Shell 脚本,能够在指定目录下查找包含特定关键词的文件,并将结果输出到一个文件中。
2. 文件备份文件备份是保护数据的重要手段。
请编写一个 Shell 脚本,能够将指定目录下的所有文件备份到另一个目录中,并在备份完成后显示备份的文件列表。
3. 文件统计统计文件中的行数、单词数和字符数是一项常见的任务。
请编写一个 Shell 脚本,能够统计指定文件的行数、单词数和字符数,并将结果输出到终端。
4. 文件排序文件排序是对文件内容进行整理和排序的一种方式。
请编写一个 Shell 脚本,能够对指定文件中的文本内容按照字母顺序进行排序,并将结果输出到一个新文件中。
5. 文件压缩文件压缩是减小文件大小、提高存储效率的一种方法。
请编写一个 Shell 脚本,能够将指定目录下的所有文件压缩成一个压缩包,并显示压缩包的大小。
6. 系统监控监控系统资源的使用情况是保证系统正常运行的重要手段。
请编写一个 Shell 脚本,能够实时监控系统的 CPU 使用率、内存使用率和磁盘空间,并将结果输出到终端。
7. 进程管理管理系统进程是保证系统稳定性和安全性的关键任务之一。
请编写一个 Shell 脚本,能够列出系统中所有正在运行的进程,并提供对进程的管理功能,如杀死指定进程等。
8. 网络连接网络连接是现代计算机的重要组成部分。
请编写一个 Shell 脚本,能够列出系统中所有的网络连接,并提供对连接的管理功能,如断开指定连接等。
9. 系统日志系统日志记录了系统的运行状态和事件信息。
Linux Shell编程复习题集附答案Linux Shell编程复习题集附答案在本文中,我们将为您提供一份包含答案的Linux Shell编程复习题集。
通过这些题目的练习,您可以加深对Linux Shell编程的理解,并巩固所学知识。
一、基础知识题1. 什么是Shell?Shell是一种解释性的编程语言,用户可以通过Shell来与操作系统进行交互和控制。
答案:Shell是一种解释器,它接收用户的命令并将其转换为操作系统能够理解和执行的形式。
2. 常见的Linux Shell有哪些?答案:常见的Linux Shell有Bash、Zsh、Csh、Ksh等。
3. 如何查看当前使用的Shell是哪种类型?答案:可以使用echo $0命令查看当前使用的Shell类型。
4. 什么是环境变量?如何查看当前的环境变量?答案:环境变量是用来存储系统运行时的配置信息的变量。
可以使用echo $变量名命令查看当前环境变量的值。
5. 如何定义一个变量并给其赋值?答案:可以使用变量名=值的形式来定义并赋值一个变量。
二、基本命令题1. 如何查看当前所在的目录?答案:可以使用pwd命令来查看当前所在的目录。
2. 如何列出当前目录下的所有文件和文件夹?答案:可以使用ls命令来列出当前目录下的所有文件和文件夹。
3. 如何切换到某个目录?答案:可以使用cd命令加上目标目录的路径来切换到某个目录。
例如:cd /path/to/directory。
4. 如何创建一个新的文件夹?答案:可以使用mkdir命令加上目录名来创建一个新的文件夹。
例如:mkdir new_folder。
5. 如何复制一个文件?答案:可以使用cp命令加上源文件和目标文件的路径来复制一个文件。
例如:cp source_file target_file。
三、条件控制题1. 编写一个Shell脚本,判断一个文件是否存在,若存在则输出文件存在,若不存在则输出文件不存在。
shell练习Shell是Unix类操作系统中最常用的编程工具,具有极强的可编程性和功能强大的命令行。
它可以把多个命令链接起来,从而完成自动化任务,是Linux系统管理工作的强大利器。
本文将介绍Shell 的基本概念,以及一些实用的练习技巧。
Shell指的是操作系统内核的一层外壳,它是一种命令语言,能够编写命令脚本,完成一系列的系统操作。
它提供了一种访问系统内核的途径,能够完成一些比较复杂的功能,比如系统管理、运维等。
学习Shell编程,一般可以按照以下步骤进行:第一步:了解Shell的基本概念。
Shell提供了一种访问操作系统内核的手段,用户可以用命令行输入命令,从而完成某种操作。
了解Shell的基本概念,包括Shell命令、Shell变量等,有助于后续学习。
第二步:熟悉Shell的常用命令。
要熟练掌握Shell的基本命令,如cd、ls、mkdir等,并能灵活应用。
另外,还要了解Shell的一些高级用法,比如管道、重定向等。
只有熟悉了这些基本命令,才能更好的利用Shell的强大功能。
第三步:学习Shell的脚本编程。
Shell的脚本编程是操作系统管理工作的核心,可以用来构建和分发shell脚本,从而实现自动化任务。
学习Shell脚本编程,需要了解它的语法、流程控制、函数等概念,并能够灵活运用。
第四步:练习项目。
最后,为了掌握Shell的强大功能,要做一些有意义的项目,进行实践操作,不断总结经验,使自己能够熟练掌握Shell的所有功能。
要掌握Shell的常用技能,有一些非常实用的练习技巧可以参考。
首先,要熟练掌握Shell的基本概念和常用命令。
可以多看官方文档,多刷题熟悉常用语法。
比如,可以到网站上做一些Shell编程的练习题,从而加深对Shell语法的理解和掌握。
其次,要把自己学过的知识结合起来,做一些综合的项目练习,比如用Shell实现自动化脚本,或者写一些小程序等。
练习中,可以多使用前人遇到的坑,从而加快自己的学习进度。
文件创建1.创建一个文件夹命名为mydir2. 进入文件夹,创建一个文件,命名为myfile3. 查看mydir文件夹下有哪些文件命令截图文件备份1. 备份mydir文件夹,并命名为mydir.bak2. 进入mydir.bak 选择历史命令查看mydir.bak下的有哪些文件截图删除&编辑文件1. 删除mydir下的myfile文件2. 新建一个mybash.sh的文件3. 使用vim编辑mybash.sh文件,使其功能为每隔1s打印一下1到1000的计数,编辑完毕保存。
4. 展示mybash.sh里的内容截图查看磁盘占用1. 查看机器总体磁盘占用情况2. 查看mydir所在目录下有哪些文件和文件夹,以及各个文件和文件夹占用磁盘空间大小截图修改文件权限和运行1. 查看mybash.sh的拥有者、所属群组和权限2. 修改权限为拥有者可读可写可执行,所属群组和其他人可读可执行不可写。
并确认权限修改正确。
3. 运行mybash.sh文件,观察是否每隔1s打印计数4. 中断mybash的运行,再用nohup在后台运行mybash,观察nohup.out日志的实时更新情况命令截图定时1. 为了防止日志堆积,定时每2min清除nohup.out的日志文件中的日志内容进程1.观察mybash脚本运行实时占用的cpu和内存2.找到正在运行的mybash所在进程的pid3.kill掉该进程,并再次确认进程是否kill掉命令截图shell script1. 编写一个shell脚本,统计当前用户最常用的指令及其对应的历史使用次数,输出最常使用的前5个指令及使用次数,格式为“指令次数”,例如:。
姓名___________联系方式__________中科院测试班linux-基础试卷一、选择题1.一个bashshell脚本的第一行是什么()A#!/bin/bashB.#/bin/bashC.#/bin/cshD./bin/bash2.下面哪个命令是用来定义shell的环境变量()A、exportfsB.aliasC.exportsD.export3.哪个命令可以将普通用户转换成超级用户()A.superB.passwdC.tarD.su4.在vi编辑器里,命令"dd"用来删除当前的()A.行B.变量C.字D.字符5.在一行内运行多个命令需要用什么字符隔开()A.@B.$C.;D.*6.按下()键能终止当前运行的命令A.Ctrl-CB.Ctrl-FC.Ctrl-BD.Ctrl-D7.显示用户的主目录的命令是什么?()A.echo$HOMEB.echo$USERDIRC.echo$ENVD.echo$ECHO12.在vi编辑器里,哪个命令能将光标移到第200行()A.g200B.G200C.:200D.200g8.以下哪个命令可以终止一个用户的所有进程()A.skillallB.skillC.killD.killall9vi中哪条命令是不保存强制退出()A.:wqB.:wq!C.:q!D.:quit10.vi中复制整行的命令是()A.y1B.yyC.ssD.dd11.以下对于shell用户变量的定义,不对的是()A.g_Linux=B.LINUX=2.6.30 C12.在终端里执行echo“currentpath:“‘`pwd`’“”结果是:()A.currentpath:/home/LinuxB.current path:’/home/Linux’C.currentpath:’`pwd`’D.currentpath:`pwd`二、填空题1.对于目录间的切换,跳转到上一级目录使用(),切换到当前用户的家目录()2.需要删除目录xx_linux下的所有文件及目录,并无需提示逐一删除,执行命令为()3.终端里执行a=100;b=20;echo&[$a+$b];echo$a+$b;结果分别是()()4.导出历史记录的最近20条记录到cmd.txt文本:()5、vim进入text.c文件里。
练习一:Shell基础命令一、练习目的1、掌握目录和文件操作的常用命令。
二、练习内容1、目录操作命令练习:在SHELL终端中练习以下命令(并记录结果,回答所提问题):假设当前用户是zsc,查看当前目录命令:pwd (问题:当前的路径是什么?绝对路径与相对路径区别是什么?命令提示符由哪几部分组成?)➢查看目录内容命令:ls -al(问题:隐藏文件有何特点?)➢切换目录命令:使用cd命令从当前目录切换到上一层目录(问题:上一层目录是什么?使用绝对路径的方式切换到上层目录,命令应该写什么?使用相对路径的方式切换到上层目录,命令应该写什么?“ .. ”表示什么意思?“ . ”表示什么意思?)➢创建目录命令:使用mkdir命令在当前用户主目录下创建一个newdir目录(问题:分别使用绝对路径和相对路径的方式创建,命令分别是什么?如果想一次创建多级目录,应该使用什么命令选项?)➢删除目录命令:使用rm命令删除刚才创建的newdir空目录(问题:如果newdir目录下有文件的话,应该使用什么命令删除这个目录?rm常用的选项含义是什么?)2、文件操作命令练习:在SHELL终端中完成以下操作➢在当前用户主目录下创建Temp目录和Backup目录。
➢在Temp目录下创建一个新的空文件,文件名为newfile.txt。
➢将系统文件/etc/profile复制到Backup目录下,并改名为profile.bak。
如果存在就备份原来文件。
➢将Temp目录复制到Backup目录下,➢利用cat命令查看profile.bak文件的内容。
➢利用more和less命令查看profile.bak文件的内容。
提示:q键退出查看模式。
(more与less的区别是什么?)3、扩展练习:在SHELL终端中练习以下命令(并记录结果,回答所提问题):➢帮助命令man:使用man命令查看ls命令的帮助手册(问题:如何使用ls 命令将目录下的文件按修改时间排序,按文件大小排序如何做?)➢使用ls –l命令查看/home目录的权限(问题:用户zsc能在/home目录下直接使用mkdir命令创建目录吗?为什么?➢使用命令touch Hello.java在用户主目录下创建一个Java源程序文件(问题:Hello.java的所有者和所属组分别是什么?zsc用户对此文件具有哪些权限?试一试zsc用户能执行这个文件吗?)➢在root用户主目录下使用命令mkdir rootdir创建一个目录(问题:zsc 用户对rootdir目录具有哪些权限?)。
1.编写一个shell脚本以下面的格式显示HOME、PATH、SHLVL、LOGNAME变量的值:
HOME =
PATH =
SHLVL =
LOGNAME =
2.创建一个shell脚本,该脚本接收10个数,并显示最大数。
3.编写一个shell脚本,它从用户那里接收一个文件名和目录名。
该脚本应判断接收的文件名和目录名是否存在,如果存在,就必须将文件拷贝到指定的目录下。
当不能满足上面条件时要显示错误消息。
4.改变登录提示符为:enter your command >
5.编写一个脚本,接收一个数字,并显示从1 到该数字之间的所有数字的平方值,格式如下:
1 square =
2 square =
…..
n square =
6.使用find命令,查看在linux服务器上定义文件dmesg所花的时间
7.编写一个shell脚本,它能够显示如下主菜单:
************** Main Menu *******************
1)File commands
2)Directory commands
3)List the users currently logged in
当选择第一个选项时,应显示如下文件子菜单:
Which file command would you like help on?
1) cp
2) mv
3) rm
please enter your choice:
当选择主菜单第二个选项时,应显示下面的目录子菜单:
Which directory command would you like help on?
1)mkdir
2)rmdir
3)ls
please enter your choice:
当选择了一个文件或者目录子菜单的选项时,shell脚本应显示该命令的求助,当主菜单的第三个选项被选择时,应显示当前登录的用户列表。
8.编写一个shell脚本,应能显示以下序列的前10个数字:
0,1,1,2,3,5,8,13………
(Fibonacci序列)
附加练习:
1.编写一个接收一个文件名的shell脚本。
如果此文件为一般文件,该脚本应显示以下消
息:
输入文件名is an ordinary file – display?
如果回答是’y’,且该文件有读许可的话应显示文件内容,否则,该脚本应显示以下消息且终止:
Sorry, 输入文件名has no read permission.
如果输入的是一个目录文件,确认该文件存在且有许可后,应显示该目录中的所有文件列表。
如果输入的不是文件或目录,则显示相应的错误信息。
2.编写一个产生以下序列的shell脚本:
1,3,2,4,3,5,4,6 (100)
3.编写一个shell脚本,检查输入的字符串是否为palindrome。
4.编写一个显示以下模式的shell脚本,接收一个数字,使用while循环:(1打印1次,2打印2次,3打印3次。
)
1
22
333
4444。
5.编写一个shell脚本,打印任何数的乘法表。
如:
输入一个数2
打印:
2 * 1 = 2
2 * 2 = 4
2 *
3 = 6
…..
2 * 10 = 20
6.编写一个脚本,显示以下序列:
1 2 3 4 10 5 6 7 8 26 9 10 11 12 42 13 14 15 16 58 17 18 19 20 74。