linux操作题及答案 shell练习题
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 起始值 步进值 结束值
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编程复习题集附答案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脚本,判断一个文件是否存在,若存在则输出文件存在,若不存在则输出文件不存在。
Linux考试试题100道(附答案)

Linux考试试题100道(附答案)1、Linux系统中,用户文件描述符0 表示______。
A.标准输入设备文件描述符B.标准输出设备文件描述符B.管道文件描述符 D.标准错误输出设备文件描述符答案:A2、以长格式列目录时,若文件test的权限描述为:drwxrw-r–,则文件test的类型及文件主的权限是______。
A.目录文件、读写执行B.目录文件、读写C.普通文件、读写D.普通文件、读答案:A3、当字符串用单引号(’’)括起来时,SHELL将______。
A.解释引号内的特殊字符B.执行引号中的命令C.不解释引号内的特殊字符D.结束进程答案:C4、/etc/shadow文件中存放______。
A.用户账号基本信息B.用户口令的加密信息C.用户组信息D.文件系统信息答案:B5、若当前目录为/home,命令ls–l 将显示home 目录下的()。
A.所有文件B.所有隐含文件C.所有非隐含文件D.文件的具体信息答案:D6、为卸载一个软件包,应使用_____。
A.rpm -iB.rpm -eC.rpm -qD.rpm -V答案:B7、下面关于文件“/etc/sysconfig/network-scripts/ifcfg-eth0”的描述哪个是正确的?( )。
A.它是一个系统脚本文件B.它是可执行文件C.它存放本机的名字D.它指定本机eth0的IP地址答案:D8、如何快速切换到用户John的主目录下?( )A.cd @JohnB.cd #JohnC.cd &JohnD.cd ~John答案:D9、启动DNS服务的守护进程()A. httpd startB.httpd stopC. named startD. named stop答案:C10、Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令()A.cat B. more C. less D. menu答案:C11、在LINUX中,要查看文件内容,可使用()命令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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:” F
if [ -r $F ]
then
cp $F /dev/
fi
2.①groupadd keji
i=1
while [ $i –le 30 ]
do`
if [$i –le 9 ]
then USER=us0$i
else USER=us$i
fi
useradd –g keji $USER
i=$[$i+1]
done
②groupadd keji
i=1
while [ $i –le 9 ]
do
useradd –g keji us0$i
i=$[$i+1]
done
while [ $i –le 30 ]
do
useradd –g keji us$i
i=$[$i+1]
done
3.①. i=1
while [ $i –le 20 ]
do
if [$i –le 9 ]
then USER=us0$i
else USER=us$i
fi
userdel $USER
i=$[$i+1]
done
②i=1
while [ $i –le 9 ]
do
userdel us0$i
i=$[$i+1] done
while [ $i –le 20 ]
do
userdel us$i
i=$[$i+1]
done
4.cd /
i=1
while [ $i –le 20 ]
do
mkdir –m 754 user$i
i=$[$i+1]
done
5①#! /bin/sh
for i in 1 2 3 4 5 6 7 8 9
do
for j in 1 2 3 4 5 6 7 8 9
do
if ( test $j -le $i ) then
echo -ne `expr $i …X‟ $j`=$(expr $i \* $j) "\t"
fi
done
echo –ne “\n”
done
②for I in `seq 1 9`
do
for j in `seq 1 $i`
do
echo –n “ $i*$j=$(expr $i \* $j) ”
done
echo –e “\n”
done
6.①建立普通文件job1
20 15 * * * rm –r /ti/
30 16 * * 3 tar –czvf backup.tar.gz /kk
55 17 * * * umount /dev/hdc
②生成crontab文件
crontab job1
检验方法:/var/spool/cron查看有没有job1 7.①生成普通文件job2
mkdir –p /root/test
cp –r /root/hello.c /root/test/
②使用at命令
at –f job2 now+10minutes。