linux shell练习题
[ -d /oldboy ] && cd /oldboy
for dd in `/bin/ls linux*`;do mv $dd `echo $dd | sed 's#linux#oldboy#g'`
for f in `/bin/ls /root/scprit/qita/*.html`;do mv $f `echo $f | sed 's#html#HTML#g'`
done [root@puppet scprit]# bash gmin3.sh [root@puppet scprit]# ll qita/ total 0 -rw-r--r--. 1 root root 0 Mar 20 10:05 12ab.HTML -rw-r--r--. 1 root root 0 Mar 20 10:05 2345.HTML -rw-r--r--. 1 root root 0 Mar 20 10:05 abcd.HTML -rw-r--r--. 1 root root 0 Mar 20 10:05 kkk.HTML [root@puppet scprit]#
生成数值列表的方式常用的有两种:第一种是{start..end},使用花括号,里面给一个起 始值,中间用点点来表示,最后跟上结束值,比如说生成 1 到 100 之间的所有的数值,就可 以使用{1..100}这样,{1..100}这是命令行展开语句,自动给你展开从 1 到 100,这是第一种 方式。
第二种方式可以使用 seq 命令,系统上有个叫做 seq 的命令,用法: seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST seq 结束值 seq 起始值 结束值 seq 起始值 步进值 结束值
把最后的 html 换成大写 HTML: [root@puppet qita]# ll total 0 -rw-r--r--. 1 root root 0 Mar 20 10:05 12ab.html -rw-r--r--. 1 root root 0 Mar 20 10:05 2345.html
-rw-r--r--. 1 root root 0 Mar 20 10:05 abcd.html -rw-r--r--. 1 root root 0 Mar 20 10:05 kkk.html [root@puppet qita]# [rooபைடு நூலகம்@puppet scprit]# vim gmin3.sh #!/bin/bash #
用命令 rename 修改:
[root@puppet oldboy]# rename oldboy linux *oldboy* [root@puppet oldboy]# ll total 0 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-1 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-10 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-2 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-3 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-4 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-5 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-6 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-7 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-8 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-9 [root@puppet oldboy]#
问题 2:将以上文件名中的 oldboy 全部改成 linux(用 for 循环实现): [root@yumlamp scripts]# vim gmlin.sh #!/bin/bash #
for bb in {1..10}; do mv /oldboyshell/oldboy-$bb /oldboyshell/linux-$bb
done [root@puppet scprit]# bash gmin2.sh [root@puppet scprit]# ll /oldboy/ total 0 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-1 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-10 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-2 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-3 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-4 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-5 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-6 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-7 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-8 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-9 [root@puppet scprit]#
done [root@yumlamp oldboyshell]# [root@puppet scprit]# bash wjm.sh [root@puppet scprit]# ll /oldboy/ total 0 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-1 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-10 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-2 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-3 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-4 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-5 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-6 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-7 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-8 -rw-r--r--. 1 root root 0 Mar 20 09:30 oldboy-9 [root@puppet scprit]#
问题 1:使用 for 循环在/oldboy 目录下批量创建 10 个文件,名称依次为: oldboy-1 oldboy-2 oldboy-3 …………. oldboy-10
[root@yumlamp oldboyshell]# vim wjm.sh #!/bin/bash #
for aa in {1..10}; do [ ! -d /oldboyshell ] && mkdir -p /oldboyshell >& /dev/null touch /oldboyshell/oldboy-$aa
问题 3:批量创建 10 个系统账号 oldboy01-oldboy10,并设置密码(密码不能相同):
如何创建像 01、02 这样的数字那? [root@puppet qita]# seq -w 10 01 02 03 04 05 06 07 08 09 10 [root@puppet qita]# [root@puppet qita]# echo {01..10} 01 02 03 04 05 06 07 08 09 10 [root@puppet qita]# [root@puppet qita]# seq -s " " -w 10 01 02 03 04 05 06 07 08 09 10 [root@puppet qita]#
done [root@yumlamp scripts]# [root@puppet scprit]# bash gmin.sh
[root@puppet scprit]# ll /oldboy/ total 0 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-1 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-10 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-2 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-3 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-4 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-5 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-6 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-7 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-8 -rw-r--r--. 1 root root 0 Mar 20 09:30 linux-9 [root@puppet scprit]#
linuxshell脚本编程练习作业及答案(全)
linuxshell脚本编程练习作业及答案(全)本人乃一介草民,刚学shell编程不久,一日见有人发题求助,所以自己也当作练习来练练手,写的不好请勿吐槽,可与本人交流,一起学习!!(1)创建用户批量创建1000个用户用户名为:班级+学号+昵称;每个班为一个组群能够自动删除所创建的用户每成功创建或删除一个用户,在屏幕上显示用户名(题目中这用户,也太tm多了点,没有达到题目的全部要求,还是水平有限啊!!)#!/bin/bash#this is programe to build users batchecho "how many users you want to add"read -p "input the numbers of users: " numcount=1while [ $count -le $num ]douseradd -G class1 std$countecho "user std$count del successfully"count=$(($count + 1))doneread -p "what do you want to do: " dolet count=count-1case $do ind)for(( count; count >= 1;count-- ))douserdel -r std$countecho "user std$count del successfully"done;;*) exit;;esac############################################# #####(2)创建目录和文件,目录名为:dir1, dir2, …, dir10每个目录下分别新建10个文本文件,文件名为:目录名+file1~10并设置每个文件的权限:文件所有者:读+写+执行同组用户:读+执行其他用户:读+执行等待键盘输入一个数字,范围为1~10重命名该级目录(假设输入数字为“5”,则为“dir5”目录)下所有文件的扩展名为bak,并将该目录下所有文件名保存到一个文本文件删除包含该数字的所有目录和文件#!/bin/bash#test 2for((i=1;i<=10;i++))domkdir /root/tmp/dir$icd /root/tmp/dir$ichmod 755 -R . #这有个(.)代表当前文件夹a=1while [ $a -le 10 ]dotouch dir${i}file$alet a=a+1donedoneread -p "which directory you want chage:" numcd /root/tmp/dir$numfor s in `ls /root/tmp/dir$num`domv $s $s.bakdonels /root/tmp/dir$num >../outrm -rf /root/tmp/*${num}*############################################# #####(3)备份文件l 每天18:00归档/etc目录下的所有文件,归档文件名为如下形式:etc-YYYY-MM-DD;保存在/home/user/backup目录下,其中user 为当前登录用户名需要编写一个脚本,放到/etc/cron.d/script :vi script#!/bin/bashDATE=`date +%F`tar -cvf /etc-$DATE /etcmkdir /home/$USER/backupmv /etc-$DATE /home/$USER/backup#结束,保存chmod +x scriptcrontab -e00 18 * * * /etc/cron.d/script############################################# #####同上差不多l 每天8:00压缩/etc目录下的所有内容,压缩文件名为如下形式:etc-YYYY-MM-DD;存放在/home/user/tar目录下,其中user为当前登录用户名l 每周日17:00归档/home下每个目录,归档文件名为如下形式:dir-YYYY-MM-DD;保存在/tmp/YYYYMMDD目录下############################################# #####(4)查找统计l 查看/etc/passwd中所有包含字符串“aa”的用户,并将结果保存在文本文件中grep "aa.*" /etc/passwd|cut -d: -f1 >filel 查看/bin中包含字符串“ls”的文件名,并将结果保存在文本文件中ls /bin|grep "ls.*" >filel 把/bin和/sbin下的文件名保存到文件commandview中ls /bin /sbin >commandviewl 统计/bin和/sbin下的文件数量ls /bin |wc -lls /sbin|wc -l############################################# #####真心不会只知道ps top(5)进程管理l 显示系统正在运行的所有进程l 显示当前终端正在运行的所有进程应该是: ps -Hl 显示root正在运行的所有进程l 以优先级-16后台启动一个进程“find / -name ls* > tmp &”l 显示该进程信息ps -ef |grep findl 修改该进程的优先级renicel 杀掉该进程kill id############################################# #####(6)系统信息显示当前登录的用户名whoami显示系统中所有用户名cut -d ":" -f1 /etc/passwd显示本机名hostname显示本机操作系统的名称、版本cat /etc/issue显示文件系统信息df -h显示当前系统状态信息############################################# #####(7)加减乘除运算,其中l 两个操作数和一个运算符由位置参数给出l 在屏幕上分别显示操作数、运算符和运算结果#!/bin/bash#test 7read -p "input first num: " var1read -p "input +-*/ : " varread -p "input second num: " var2v=`echo "scale=2; $var1 $var $var2 "|bc`echo "$var1 $var $var2 = $v"############################################# #####(8)按照运行结果编写Shell程序:101210123210123432101234543210123456543210123456765432101234567876543210123456789876543210123456789#!/bin/bash#test 8i=0for(( i; i <= 9; i++ ))doj=$ifor(( i; i >= 0; i-- ))doecho -n "$i"donea=1while [ $a -le $j ]doecho -n "$a"let a=a+1doneecho " "i=$jdone############################################# #####(9)逆序输出一个字符串#!/bin/bash#test 9read -p "input chars : " charrev $char############################################# #####(10)冒泡法对10个数按升序排序#!/bin/bash#test 10 冒泡法输出i=0for m in "$@"doa[i]=$mdone# $#随意多个位置参数都可以进行排序,具体到n个参数,则改为nfor (( i = 0; i <= $# ; i++ ))dofor(( j=1+i; j <= $# ; j++ ))doif [[ ${a[i]} -gt ${a[j]} ]]thent=${a[i]}a[$i]=${a[j]}a[$j]=$tfidonedoneecho "${a[@]}" #不换行输出#如果要换行输出用下面语句:for k in "${a[@]}"doecho $kdone~############################################# #####(11)编写1个menu的Shell程序,执行后的界面为:NumberNameFor Linux Menu2viedit a file3datedate4calcalendar5wholist the users6lslist the files in this directory7catdisplay a file on the screenPlease input a number or a name for the action you wish:(有点差异,绞尽脑汁也不知道怎么改的跟上面一样:)echo "NumberNameFor Linux Menu"select var in "exitleave" "viedit a file" "datedate" "calcalendar" "wholist the user" "lslist the files in this directory" "catdisplay a file on the screen"dobreakdoneecho "please input a number or a name for the action you wish:"echo "your choose is $var"############################################# #####(12)求n的阶乘,n=100方法1:#!/bin/basha=1for(( i=1; i <= 100; i++ ))doa=$[ $i * $a ]doneecho "100!=$a"#我的电脑100!输不出来,可能是出题目的有点脑残,考算法直接用10就可以嘛!!方法2(递归)(可以求任意数的阶乘,但是。
Linux shell编程实验作业(含答案)
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脚本,实现输入一个字符串,输出该字符串中所有大写字母的个数。
脚本的基本思路是遍历输入的字符串,对于每个字符,判断是否为大写字母,如果是则计数器加一。
linux运维Shell编程入门测试题
linux运维Shell编程入门测试题linux运维Shell编程入门测试题1.【单选题】10分| CentOS默认的shell是()A tcshB kshC bashD csh2.【单选题】10分| 编写shell脚本的标准首行是()A #!/usr/bin/perlB #!/usr/bin/expectC #!/bin/bashD #!/usr/bin/env python3.【单选题】10分| 虽然Linux系统没有文件扩展名的概念,但是我们通常认为以()结尾的文件是shell脚本A exeB docC shD py4.【单选题】10分| 要输出或打印环境变量或其他自定义变量定义的内容时,必须在变量名前加()符号而不能直接使用变量名。
A !C #D $5.【单选题】10分| 下面环境变量()表示获取当前执行的shell脚本的文件名。
A $0B $1C $*D $@6.【单选题】10分| 下面环境变量()表示获取当前执行的shell脚本的第1个参数值。
A $0B $1C $*D $@7.【单选题】10分| 下面哪个变量命名不符合命名规则?A oldboyB 123oldboyC oldboy123D oldboy_training8.【单选题】10分| 默认Centos系统命令行下,执行[ -f /etc/hosts ]echo 1 ||echo 0这条命令,输出结果为()B 0C /etc/hostsD True9.【多选题】10分| 下面哪些命令是bash的内置命令?A historyB cdC echoD cat10.【多选题】10分| 在CentOS6系统中,下面选项哪些是系统变量?A HOMEB PATHC SHELLD USE。
精编-Linux shell 练习题
第四章SED和AWK1、下面给出一个记录学生信息的文件student,每条记录包含5个域,域分隔符是“-”,5个域依次是:姓名-专业-出生年份-籍贯-学制。
请按下面要求对此文件时行排序:Q Cai-English-1984-Jiangsu-7Z Wu-Computer-1982-Jiangsh-9H Yuan-Transportation-1978-Anhui-9K Song-Chemistry-1982-Shanghai-4Y Gao-Physical-1981-Hubei-3L Li-Architecture-1977-Guangdong-7N Tang-Computer-1983-Baotao-7(1)按照第2域进行排序,对于专业相同的记录,按照姓名排序(2)按照第3域进行排序,出生年份数值大的排在前面。
(3)按照第4域进行排序,籍贯相同的记录学制小的排在前面,并将此排序结果存储到province文件中。
(4)分别对student文件和province文件测试是否排序;(5)输出每个专业的学生数2、对professor.db文件中文件块根据学校名字进行排序,结果仍然以文本块的格式输出。
Cat professor.dbJ LuoSoutheast UniversityNanJing,ChinaY ZhangVictory UniversityMelbourne, AustraliaD HouBeijing UniversityBeijing,,ChinaB LiuShanghai Jiaotong UniversityShanghai,ChinaC LinUniversity of TorontoToronto,Canada3、定义score文件用于记录学生的平均成绩,结合student文件,输出student和score文件中共有学生的信息及其平均成绩。
Vi scoreQ Cai-92Z Wu-69Y Zhuang-70H Yuan-79L Li-80G Wang-60N Tang-754、将student文件中的第1域和score文件的第2域提取出来,并粘贴到一个新文件中。
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程序设计试卷一、选择题。
(每题1分,共20分)1、一个文件名字为rr.tar.gz,可以用来解压缩的命令是()。
A、tarB、gzipC、compressD、uncompress2、关闭liinux系统(不重新启动)可使用的命令是()。
A、ctrl+alt+delB、haltC、shutdown -r nowD、reboot3、修改ip地址的命令是()。
A、pingB、ifconfigC、arpD、traceroute4、在vi编辑器中的命令模式下,键入()可在光标当前所在行下添加一新行。
A、OB、oC、iD、a5、你使用命令“vi /etc/inittab”查看该文件的内容,你不小心改动了一些内容,为了防止系统出问题,你不想保存所修改内容,你应该如何操作()。
A、在底行模式下,键入:wqB、在底行模式下,键入:q!C、在底行模式下,键入:x!D、在编辑模式下,键入“ESC”键直接退出vi6、删除文件命令为()。
A、mkdirB、moveC、mvD、rm7、假设文件fileA的符号链接为fileB,那么删除fileA后,下面的描述正确的是()。
A、fileB也随之被删除B、fileB仍存在,但是属于无效文件C、因为fileB未被删除,所以fileA会被系统自动重新建立D、fileB会随fileA的删除而被系统自动删除8、改变文件所有者的命令为()。
A、chmodB、touchC、chownD、cat9、在给定文件中查找与设定条件相符字符串的命令为()。
A、grepB、gzipC、findD、sort10、建立一个新文件可以使用的命令为()。
A、chmodB、moreC、cpD、touch11、对名为file的文件用 chmod 551 file命令进行修改,则它的许可权是()。
A、-rwxr-xr-xB、-rwxr--r--C、-r--r--r--D、-r-xr-x--x12、下面不是对linux操作系统特点描述的是()。
最新Linux上机练习题shell程序设计基础资料
上机实习题:1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev目录下。
a#!/bin/bashdirectory=/devfor file in /bin/a2pdoif [ -f $file ]thencp $file $directory/$file.bakFidone2.编写一个 shell 脚本,完成功能: 1)显示文字“Waiting for a while….”2)长格式显示当前目录下面的文件和目录,并输出重定向到/home/file.txt 文件 3)定义一个变量,名为 s,初始值“Hello” 4)使该变量输出重定向到/home/string.txt 文件 m#!/bin/bashecho "waiting for a while… "ls -l.>/home/file.txts=helloecho $s > /home/string.txt3.编写一个 shell 脚本,它把第二个位置参数及其以后的各个参数指定的文件复制到第一个位置参数指定的目录中。
b#!/bin/bashdir=$1shiftwhile [$1]dofile=$1cp $1 $dirshiftdonels $dir4.编写一个 shell 脚本,利用 for 循环将当前目录下的.c 文件移动到指定的目录,并按文件大小显示出移动后指定的目录的内容。
d#!/bin/bashfor file in *.c{mv /$file/bin/a}ls -lS /bin/a5.利用数组形式存放 10 个城市的名字,然后利用 for 循环把它们打印出来。
c#!/bin/bashcity=(jinan,qingdao,rizhao,weifang,beijing,shanghai,shenzhen,guangzhou,chongqi ng,nanjing)for i in ${name[*]}doecho $idone6.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
Linux常用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操作题及答案 shell练习题
1.用Shell编程,判断一文件是不是只读文件,如果是将其拷贝到 /dev 目录下。
2.设计一个shell程序,添加一个新组为keji,然后添加属于这个组的30个用户,用户名的形式为usxx,其中xx从01到30。
3.编写shell程序,实现自动删除20个账号的功能。
账号名为us01至us20。
4.设计一个Shell程序,在根目录下建立20个目录,即user1~use r20,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
5、显示传统方式的九九乘法表7、十分钟后系统自动在root目录下新建一子目录test,并将root 目录中的hello.c将文件拷贝到该目录6.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:(1)在下午3 :20删除/ti目录下的全部子目录和全部文件;(2)每逢星期三下午4:30将/kk目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;(3)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);1.read –p “please input a file:” Fif [ -r $F ]thencp $F /dev/fi2.①groupadd kejii=1while [ $i –le 30 ]do`if [$i –le 9 ]then USER=us0$ielse USER=us$ifiuseradd –g keji $USERi=$[$i+1]done②groupadd kejii=1while [ $i –le 9 ]douseradd –g keji us0$ii=$[$i+1]donewhile [ $i –le 30 ]douseradd –g keji us$ii=$[$i+1]done3.①. i=1while [ $i –le 20 ]doif [$i –le 9 ]then USER=us0$ielse USER=us$ifiuserdel $USERi=$[$i+1]done②i=1while [ $i –le 9 ]douserdel us0$ii=$[$i+1] donewhile [ $i –le 20 ]douserdel us$ii=$[$i+1]done4.cd /i=1while [ $i –le 20 ]domkdir –m 754 user$ii=$[$i+1]done5①#! /bin/shfor i in 1 2 3 4 5 6 7 8 9dofor j in 1 2 3 4 5 6 7 8 9doif ( test $j -le $i ) thenecho -ne `expr $i …X‟ $j`=$(expr $i \* $j) "\t"fidoneecho –ne “\n”done②for I in `seq 1 9`dofor j in `seq 1 $i`doecho –n “ $i*$j=$(expr $i \* $j) ”doneecho –e “\n”done6.①建立普通文件job120 15 * * * rm –r /ti/30 16 * * 3 tar –czvf backup.tar.gz /kk55 17 * * * umount /dev/hdc②生成crontab文件crontab job1检验方法:/var/spool/cron查看有没有job1 7.①生成普通文件job2mkdir –p /root/testcp –r /root/hello.c /root/test/②使用at命令at –f job2 now+10minutes。
Linux编程_Shell脚本练习题
Linux编程_Shell脚本练习题1,编写shell脚本,计算1~100的和。
#! /bin/bashsum=0for i in `seq1100`;dosum=$[$i+$sum]doneecho $sum2,编写shell脚本,输⼊⼀个数字n并计算1~n的和。
要求:如果输⼊的数字⼩于1,则重新输⼊,直到输⼊正确的数字为⽌。
#! /bin/bashread -p "input number:" nsum=0;for((i=0;i<=$n;i++))dosum=`expr $sum + $i`doneecho $sum3,编写shell脚本,批量建⽴⽤户user_00、user_er_99。
要求:所有⽤户同属于users组。
#! /bin/bashgroupadd usersfor i in `seq -w09uesradd -g users user_0$i4done4,编写shell脚本,批量添加⽤户 jsj01-jsj09、jsj10-jsj99。
#! /bin/bashfor((i=1;i<20;i++));doif(i<10);thenjsj="jsj0$i";elsejsj="jsj$i";fiuseradd $jsjdone5,编写shell脚本,要求实现如下功能:当执⾏⼀个程序的时候,这个程序会让使⽤者选择boy或者girl;如果使⽤者输⼊B或者b时,就显⽰:He is a boy;如果使⽤者输⼊G 或者g时,就显⽰:He is a girl;如果是除了B/b/G/g以外的其他字符,就显⽰:I don’t know。
#! /bin/bashecho -n your choice:read choicecase $choice ing)echo"She is a girl.";;G)echo"She is a girl.";;b)echo"He is a boy.";;B)echo"He is a boy.";;*)echo"I don't know.";;esac6,编写shell脚本,实现两个变量之间的加减乘除运算。
