用Shell编程,判断一文件是不是块设备文件, 如果是将其shell 远程拷贝文件到 /tmp 目录下

shell编程面试题&考试题_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
shell编程面试题&考试题
l​i​n​u​x​ ​编​程​,​s​h​e​l​l​编​程​,​考​试​题​带​答​案​,​面​试​题​带​答​案
大小:87.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Shell编程面试题 - Linux面试题 - 职友集(发现中国好公司)
<meta name="description" content="1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。
Shell编程面试题
阅读( 113 )
1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。
参考程序:
echo “Input file name:”
read FILENAME
if [ -c &$FILENAME& ]
cp $FILENAME /dev
2.请下列shell程序加注释,并说明程序的功能和调用方法:#!/bin/sh
# /etc/rc.d/rc.httpd
# Start/stop/restart the Apache web server.
# To make Apache start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.httpd
case &#43; in
&#8216;start&#8217;)
/usr/sbin/;
&#8216;stop&#8217;)
/usr/sbin/;
&#8216;restart&#8217;)
/usr/sbin/;
echo &#8220;usage $0 start|stop|restart&#8221; ;;
参考答案:
(1)程序注释
#!/bin/sh 定义实用的shell
# /etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。
# Start/stop/restart the Apache web server.
# To make Apache start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.httpd
case &#43; in #case结构开始,判断“位置参数”决定执行的操作。本程序携带一个“位置参数”,即$1
&#8216;start&#8217;) #若位置参数为start
/usr/sbin/; #启动httpd进程
&#8216;stop&#8217;) #若位置参数为stop
/usr/sbin/; #关闭httpd进程
&#8216;restart&#8217;) #若位置参数为stop
/usr/sbin/; #重新启动httpd进程
*) #若位置参数不是start、stop或restart时
echo &#8220;usage $0 start|stop|restart&#8221; ;; #显示命令提示信息:程序的调用方法
esac #case结构结束
(2)程序的功能是启动,停止或重新启动httpd进程
(3)程序的调用方式有三种:启动,停止和重新启动。
3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
参考答案:
groupadd class1
while [ $i -le 30 ]
if [ $i -le 9 ] ;then
USERNAME=stu0$&#123;i&#125;
USERNAME=stu$&#123;i&#125;
useradd $USERNAME
mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME
chgrp -R class1 /home/$USERNAME
i=$(($i 1))
4.编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。
参考程序:
while [ $i -le 50 ]
userdel -r stud$&#123;i&#125;
i=$(($i 1 ))
5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
(1)在下午4 :50删除/abc目录下的全部子目录和全部文件;
(2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;
(3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;
(4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);
(5)在早晨8:00前开机后启动。
解决方案:
(1)用vi创建编辑一个名为prgx的crontab文件;
(2)prgx文件的内容:
50 16 * * * rm -r /abc/*
0 8-18/1 * * * cut -f1 /xyz/x1 &;&; /backup/bak01.txt
50 17 * * * tar zcvf backup.tar.gz /data
55 17 * * * umount /dev/hdc
(3)由超级用户登录,用crontab执行 prgx文件中的内容:
root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。
6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
参考答案:
(1)编写shell程序fileback:
DIRNAME=`ls /root | grep bak`
if [ -z &$DIRNAME& ] ; then
mkdir /root/bak
cd /root/bak
YY=`date %y`
MM=`date %m`
DD=`date %d`
BACKETC=$YY$MM$DD_etc.tar.gz
tar zcvf $BACKETC /etc
echo &#8220;fileback finished!&#8221;
(2)编写任务定时器:
echo &# 1 * * /bin/sh /usr/bin/fileback&#8221; &; /root/etcbakcron
crontab /root/etcbakcron
或使用crontab -e 命令添加定时任务:
0 1 * * * /bin/sh /usr/bin/fileback
7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
参考答案:(1)第一种方法:
用户应使用crontab –e 命令创建crontab文件。格式如下:
0 0 * * sun cp –r /user/backup /tmp
(2)第二种方法:
用户先在自己目录下新建文件file,文件内容如下:
0 * * sun cp –r /user/backup /tmp
然后执行 crontab file 使生效。
8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
参考答案: 建立程序 Pro16如下:
while [ i -le 50 ]
if [ -d /userdata ];then
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
echo &#8220;user$i&#8221;
let &#8220;i = i 1&#8243; (或i=$(($i+1))
mkdir /userdata
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
echo &#8220;user$i&#8221;
let &#8220;i = i 1&#8243; (或i=$(($i+1))
分享给朋友:
亲~ 如果您有更好的答案 可在评论区发表您独到的见解。
您想查看更多的信息:
Linux面试题目推荐
微信公众号linux操作题目shell命令。由于俺电脑没有装LINUX,明天LINUX笔试要用,请写过程。注意是笔试!_百度知道
linux操作题目shell命令。由于俺电脑没有装LINUX,明天LINUX笔试要用,请写过程。注意是笔试!
1、用shell命令查看&#47;home目录下的可执行文件。2、改变桌面背景。3、改变info这个文件的权限,原先为-rw-r—r--,用shell命令增加可执行权限。4、选择一个磁盘分区,对其进行挂载,然后访问其中内容,之后对其卸载。5、选用shell命令建立目录,并对文件和目录进行移动、复制、删除以及改名等操作。&7、用Shell脚本实现计算1~5的平方。8、用cal命令查看日是星期几(写出shell命令)。9、选择一个文件系统,对其进行挂载,然后访问其中内容,之后对其卸载。&11、使用Shell命令对用户帐号和组群进行增加、删除等操作。12、对vi编辑器使用的操作说明(包括建立文件、保存并退出、三种模式的切换)。13、用Shell编程计算2*(3 + 4)的值,并输出结果。14.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 &#47;dev 目录下。15.& 在根目录下有四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell编程,实现自动创建m1,m2,m3,m4四个目录,并将m1.txt,m2.txt,m3.txt,m4.txt四个文件分别拷贝到各自相应的目录下。16. 请用Shell编程来实现:当输入不同的选择时,执行不同的操作,如:输入start 开始启动应用程序myfiles,输入stop时,关闭myfiles,输入status时,查看myfiles进程,否则执行*)显示“EXIT!”并退出程序。&
提问者采纳
1.file /home/* |awk -F: &#39;$2~/executable/{print $1}&#39;2.桌面 右键 更改桌面背景,我的图形界面是这样gnome3.chmod +x info4.mount /dev/设备名(比如sda2) /mnt/(你的挂载目录)
umount /dev/设备名5.mkdir tmpdir
mv tmpdir /移动位置
cp -r /移动位置/tmpdir /移动位置2
mv /移动位置2/tmpdir /移动位置2/tmpdir2 (改名字)
rm -rf /移动位置2/tmpdir26.?7.#!/bin/bash
for i in `seq 1 5`
echo $i*$i |bc
done8.?9.?11.useradd someone
groupadd somegrp
userdel someone
groupdel somegrp12
vi somefile (建立)
输入冒号 wq 保存退出
模式是指esc
冒号下边有命令行 和i 插入或者替换编辑这三个模式么,不清楚13.echo 2*&#92;(3+4&#92;) |bc 14.#!/bin/bashflag=`ls -l yourfile |grep ^c` if [ -n &$flag& ] ;then
yourfile /devfi15.for i in `seq 4`do
mkdir /m$i
mv m$i.txt /m$idone16.#!/bin/bashecho &Please input your commond&read
commondcase $commond in
*)echo &EXIT&;;esac
其他类似问题
为您推荐:
shell的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁shell编程案例_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
shell编程案例
s&#8203;h&#8203;e&#8203;l&#8203;l&#8203;经&#8203;典&#8203;编&#8203;程&#8203;案&#8203;例
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢Linux下的shell编程入门 - Linux 时代 - ChinaUnix.Net
&&产品与方案
???????????????????????????????????
Linux下的shell编程入门
日期: 作者: 来自:
  通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应。一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率。要达到这样的目的,通常我们利用shell程序或者shell脚本来实现。
  一、简介
  Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂。Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令。
  下面我们来看一个简单的shell程序:
  1、首先建立一个内容如下的文件,名字为date,将其存放在目录下的bin子目录中。
  #Program date
  #usageto ::show the date in this way (注释)
  echo “Mr.$USER,Today is:”
  echo date “+%B%d%A”
  echo “Whish you a lucky day !”
  2、编辑完该文件之后它还不能执行,我们需要给它设置可执行权限。使用如下命令:
  chmod +x date
  通过以上过程之后,我们就可以像使用ls命令一样执行这个shell程序.
  [beichen@localhost bin]$ date
  Mr.beichen,Today is:
  January 13 Friday
  Whish you a lucky day !
  为了在任何目录里都可以执行这个程序,可以将bin的这个目录添加到路径中去。
  [beichen@localhost bin]$ PATH=$PATH:$HOME/bin
  (注:这里的$HOME代替的是/home/beichen,而bin目录是自己建的一个目录)
  另外一种执行date的方法就是把它作为一个参数传给shell命令:
  [beichen@localhost /]$ bash date
  Mr.beichen,Today is:
  January 13 Friday
  Whish you a lucky day !
  尽管在前面我们使用chmod +x date将date设置为可执行,其实不设置也没有关系,但在Linux里执行它,需要先告诉系统它是一个可执行的脚本。
  [beichen@localhost /]$ .date
  Mr.beichen,Today is:
  January 13 Friday
  Whish you a lucky day !
  即在date前面加上一个点”.”,并且用空格与后面的shell脚本的文件名隔开。当然,不推荐这样做。
  二、shell参数
  如同ls 命令可以接受目录等作为它的参数一样,在shell编程时同样可以使用参数。Shell有位置参数和内部参数。
  1、 位置参数
  由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。
  2、 内部参数
  上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。
  $# ----传递给程序的总的参数数目
  $? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
  $* ----传递给程序的所有参数组成的字符串。
  下面举例进行说明:
  建立一个内容为如下的程序P1:
  echo “Program name is $0”
  echo “There are totally $# parameters passed to this program”
  echo “The last is $?”
  echo “The parameters are $*”
  执行后的结果如下:
  [beichen@localhost bin]$ P1 this is a test program //传递5个参数
  Program name is /home/beichen/bin/P1 //给出程序的完整路径和名字
  There are totally 5 parameters passed to this program //参数的总数
  The last is 0 //程序执行结果
  The parameters are this is a test program //返回有参数组成的字符串
  下面我们利用内部变量和位置参数编写一个名为del的简单删除程序:
  #name: del
  #author: liangnian
  #this program to compress a file to the dustbin
  if test $# -eq 0
  echo “Please specify a file!”
  gzip $1 //先对文件进行压缩
  mv $1.gz $HOME/dustbin //移动到回收站
  echo “File $1 is deleted !”
  三、变量表达式
  在上面我们编写的小程序中我们用到了一个关键字test,其实它是shell程序中的一个表达式?D?D比较(test)。通过和shell提供的if等条件语句(后面我们会介绍)相结合我们可以方便的完判断。
  其用法如下:
  test 表达式
  表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。其中文件操作符是一种shell独特的操作符,因为shell里的变量都是字符串,为了达到对文件进行操作的目的,于是才提供了这样的一种操作符。
  1、 字符串比较
  作用:测试字符串是否相等、长度是否为零,字符串是否为NULL(注:bash区分零长度字符串和空字符串)
  常用的字符穿操作符有:
  = 比较两个字符串是否相同,同则为“是”!= 比较两个字符串是否相同,不同则为“是”
  -n 比较字符串长度是否大于零,如果大于零则为“是”
  -z 比较字符串的穿度是否等于零,如果等于则为“是”
  2、 数字比较
  这里区别于其他编程语言,test语句不使用>?类似的符号来表达大小的比较,而是用整数式来表示这些。
  -eq 相等
  -ge 大于等于
  -le 小于等于
  -ne 不等于
  -gt 大于
  -lt 小于
  3、 逻辑操作! 反:与一个逻辑值相反的逻辑值
  -a 与(and):两个逻辑值为“是”返回值才为“是”,反之为“否”
  -o 或(or):两个逻辑值有一个为“是”,返回值就为“是”
  4、 文件操作
  文件测试表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,我们只列举一些常用的。
  -d 对象存在且为目录返回值为“是”
  -f 对象存在且为文件返回值为“是”
  -L 对象存在且为符号连接返回值为“是”
  -r 对象存在且可读则返回值为“是”
  -s 对象存在且长度非零则返回值为“是”
  -w 对象存在且可写则返回值为“是”
  -x 对象存在且可执行则返回值为“是”
  file1 ?Cnt(-ot) file2 文件1比文件2新(旧)
  四、循环结构语句
  shell常见的循环语句有for循环、while循环、until循环
  for 循环
  语法:for 变量 in 列表
  注:变量是要在循环内部用来指代当前所指代的列表中的那个对象的。
  列表是在for 循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件名。
  例:删除垃圾箱中的所有.gz文件
  #delete all file with extension of “gz” in the dustbin
  for I in $HOME/dustbin/*.gz
  rm ?Cf $i
  echo “$i has been deleted!”
  执行结果如下:
  [beichen@localhost bin]$.f_rmgz
  /home/beichen/dustbin/nessus-4.0.0.2.tar.gz has been deleted!
  /home/beichen/dustbin/gftp-2.2.1.tar.gz has been deleted!
  While循环
  语法:while 表达式
  只要while表达式成立,do和done之间的操作就一直会进行。
  until循环
  语法:until 表达式
  重复do和done之间的操作直到表达式成立为止。
  #test until
  #add from 1 to 100
  total=0
  until test num ?Ceq 100
  total=`expr $total + $num` //注意,这里的引号是反引号,下同
  num=`expr $num+1`
  echo “The result is $total”
  执行结果如下:
  [beichen@localhost bin]$until
  The result is 5050!
  五、条件语句
  Shell程序中的条件语句主要有if语句、case语句;
  If语句
  语法:if 表达式1 then
  elif 表达式2 then
  elif 表达式3 then
  Linux里的if的结束标志是将if反过来写成fi;而elif其实是else if的缩写
  其中elif理论上可以有无限多个。
  Case语句
  语法:case 字符串 in
  值1|值2)
  操作::
  值3|值4)
  操作::
  值5|值6)
  操作::
  操作::
  case的作用就是当字符串与某个值相同是就执行那个值后面的操作。如果同一个操作对于多个值,则使用”|”将各个值分开。在case的每一个操作的最后面都有两个”::”,分号是必须的。
  case $USER in
  beichen)
  Echo “You are beichen!”;;
  liangnian)
  echo “You are liangnian”; //注意这里只有一个分号
  echo “Welcome!”;; //这里才是两个分号
  echo “You are root!:echo Welcome!”;; //将两命令写在一行,用一个分号作为分隔符
  echo “Who are you?$USER?”;;
  执行结果:
  [liangnian@localhost bin]$ test
  You are liangnian
  Welcome!
  关于shell编程基础的东西就介绍这么多,如果你想更进一步了解shell编程的知识,请查阅相关书籍。
本文被浏览次
Copyright &
ChinaUnix.net
All Rights Reserved
感谢所有关心和支持过ChinaUnix的朋友们}

我要回帖

更多关于 shell 判断是不是数字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信