shell常见问题Word文件下载.docx

上传人:b****5 文档编号:19737447 上传时间:2023-01-09 格式:DOCX 页数:25 大小:24.63KB
下载 相关 举报
shell常见问题Word文件下载.docx_第1页
第1页 / 共25页
shell常见问题Word文件下载.docx_第2页
第2页 / 共25页
shell常见问题Word文件下载.docx_第3页
第3页 / 共25页
shell常见问题Word文件下载.docx_第4页
第4页 / 共25页
shell常见问题Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

shell常见问题Word文件下载.docx

《shell常见问题Word文件下载.docx》由会员分享,可在线阅读,更多相关《shell常见问题Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

shell常见问题Word文件下载.docx

|sed'

s/Bcast.*$//g'

NETMASK=`ifconfigeth0|grep'

s/^.*Mask:

$IP/$NETMASK"

exit

3、用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev目录下。

参考程序:

/bin/sh

FILENAME=

echo“Inputfilename:

readFILENAME

if[-c"

$FILENAME"

]

cp$FILENAME/dev

4.请为下列shell程序添加注释,并说明程序的功能和调用方法:

#/etc/rc.d/rc.httpd

#Start/stop/restarttheApachewebserver.

#TomakeApachestartautomaticallyatboot,makethis

#fileexecutable:

chmod755/etc/rc.d/rc.httpd

case"

$1"

in

'

start'

/usr/sbin/apachectlstart;

;

stop'

/usr/sbin/apachectlstop;

restart'

/usr/sbin/apachectlrestart;

*)

usage$0start|stop|restart"

;

esac

参考答案:

(1)程序注释

/bin/sh定义实用的shell

#/etc/rc.d/rc.httpd注释行,凡是以星号开始的行均为注释行。

in#case结构开始,判断“位置参数”决定执行的操作。

本程序携带一个“位置参数”,即$1

)#若位置参数为start

#启动httpd进程

)#若位置参数为stop

#关闭httpd进程

#重新启动httpd进程

*)#若位置参数不是start、stop或restart时

#显示命令提示信息:

程序的调用方法

esac#case结构结束

(2)程序的功能是启动,停止或重新启动httpd进程

(3)程序的调用方式有三种:

启动,停止和重新启动。

5.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。

i=1

groupaddclass1

while[$i-le30]

if[$i-le9];

USERNAME=stu0${i}

else

USERNAME=stu${i}

useradd$USERNAME

mkdir/home/$USERNAME

chown-R$USERNAME/home/$USERNAME

chgrp-Rclass1/home/$USERNAME

i=$(($i+1))

6.编写shell程序,实现自动删除50个账号的功能。

账号名为stud1至stud50。

while[$i-le50]

userdel-rstud${i}

i=$(($i+1))

7.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:

(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文件;

prgx文件的容:

5016***rm-r/abc/*

(2)、08-18/1***cut-f1/xyz/x1>

>

/backup/bak01.txt

(3)、5017***tarzcvfbackup.tar.gz/data

(4)、5517***umount/dev/hdc

(5)、由超级用户登录,用crontab执行prgx文件中的容:

rootxxx:

#crontabprgx;

在每日早晨8:

00之前开机后即可自动启动crontab。

----------------------------------------------

8.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。

Shell程序fileback存放在/usr/bin目录下。

(1)编写shell程序fileback:

DIRNAME=`ls/root|grepbak`

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

tarzcvf$BACKETC/etc

filebackfinished!

"

(2)编写任务定时器:

001**/bin/sh/usr/bin/fileback"

>

/root/etcbakcron

crontab/root/etcbakcron

或使用crontab-e命令添加定时任务:

01***/bin/sh/usr/bin/fileback

9.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

(1)第一种方法:

用户应使用crontab–e命令创建crontab文件。

格式如下:

00**suncp–r/user/backup/tmp

(2)第二种方法:

用户先在自己目录下新建文件file,文件容如下:

0**suncp–r/user/backup/tmp

然后执行crontabfile使生效。

10.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:

读;

文件所有者的权限为:

读、写、执行;

文件所有者所在组的权限为:

读、执行。

建立程序Pro16如下:

while[i-le50]

if[-d/userdata];

mkdir-p-m754/userdata/user$i 

加上-m754就不用写下面那一句了 

-p是递归建立目录

#chmod754/userdata/user$i

user$i"

let"

i=i+1"

(或i=$(($i+1))

mkdir/userdata

mkdir-p-m/userdata/user$i

(或i=$(($i+1))

 1)如何向脚本传递参数?

./scriptargument

  例子:

显示文件名称脚本

./show.shfile1.txt

catshow.sh

cat$1

  2)如何在脚本中使用参数?

  第一个参数:

$1,第二个参数:

$2

脚本会复制文件(arg1)到目标地址(arg2)

./copy.shfile1.txt/tmp/

catcopy.sh

cp$1$2

  3)如何计算传递进来的参数?

$#

  4)如何在脚本中获取脚本名称?

$0

  5)如何检查之前的命令是否运行成功?

$?

  6)如何获取文件的最后一行?

tail-1

  7)如何获取文件的第一行?

head-1

  8)如何获取一个文件每一行的第三个元素?

awk'

{print$3}'

  9)假如文件中每行第一个元素是FIND,如何获取第二个元素

{if($1=="

FIND"

)print$2}'

  10)如何调试bash脚本

  将-xv参数加到#!

/bin/bash后

  例子:

/bin/bash–xv

  11)举例如何写一个函数?

functionexample{

Helloworld!

}

  12)如何向连接两个字符串?

V1="

Hello"

V2="

World"

V3=${V1}${V2}

echo$V3

  输出

HelloWorld

  13)如何进行两个整数相加?

V1=1

V2=2

letV3=$V1+$V2

3

据kashu的意见,本题的更佳回答为:

两个整数相加,还有若干种方法实现:

A=5

B=6

echo$(($A+$B))#方法2

echo$[$A+$B]#方法3

expr$A+$B#方法4

echo$A+$B|bc#方法5

BEGIN{print'

$A"

+'

$B"

}'

#方法6

  14)如何检查文件系统中是否存在某个文件?

if[-f/var/log/messages]

Fileexists"

  15)写出shell脚本中所有循环语法?

  for循环:

foriin$(ls);

do

echoitem:

$i

  while循环:

COUNTER=0

while[$COUNTER-lt10];

echoThecounteris$COUNTER

letCOUNTER=COUNTER+1

  until循环:

COUNTER=20

until[$COUNTER-lt10];

echoCOUNTER$COUNTER

letCOUNTER-=1

  16)每个脚本开始的#!

/bin/sh或#!

/bin/bash表示什么意思?

  这一行说明要使用的shell。

/bin/bash表示脚本使用/bin/bash。

对于python脚本,就是#!

/usr/bin/python。

(LCTT译注:

这一行称之为释伴行。

  17)如何获取文本文件的第10行?

head-10file|tail-1

  18)bash脚本文件的第一个符号是什么

  19)命令:

[-z"

]&

&

echo0||echo1的输出是什么

  20)命令“export”有什么用?

  使变量在子shell中可用。

  21)如何在后台运行脚本?

  在脚本后面添加“&

”。

据kashu的意见,更好的答案是:

nohupcommand&

大部分时间我们可能是远程使用Linux,我碰到过由于网络断线使得在后台运行的command&

没了...

  22)"

chmod500script"

做什么?

  使脚本所有者拥有可执行权限。

  23)"

  重定向输出流到文件或另一个流。

  24)&

和&

有什么区别

∙&

-希望脚本在后台运行的时候使用它

-当前一个脚本成功完成才执行后面的命令/脚本的时候使用它

  25)什么时候要在[condition]之前使用“if”?

  当条件满足时需要运行多条命令的时候。

  26)命令:

name=John&

echo'

Mynameis$name'

的输出是什么

Mynameis$name

  27)bashshell脚本中哪个符号用于注释?

  28)命令:

echo${new:

-variable}的输出是什么

variable

  29)'

和"

引号有什么区别?

∙'

-当我们不希望把变量转换为值的时候使用它。

∙"

-会计算所有变量的值并用值代替。

  30)如何在脚本文件中重定向标准输出和标准错误流到log.txt文件?

  在脚本文件中添加"

exec>

log.txt2>

1"

命令。

  31)如何只用echo命令获取字符串变量的一部分?

echo${variable:

x:

y}

x-起始位置

y-长度

  例子:

variable="

MynameisPetras,andIamdeveloper."

11:

6}#会显示Petras

  32)如果给定字符串variable="

User:

123:

321:

/home/dir"

,如何只用echo命令获取home_dir?

echo${variable#*:

*:

  或

echo${variable##*:

  33)如何从上面的字符串中获取“User”?

echo${variable%:

*}

echo${variable%%:

  34)如何使用awk列出UID小于100的用户?

awk-F:

$3<

100'

/etc/passwd

  35)写程序为用户计算主组数目并显示次数和组名

cat/etc/passwd|cut-d:

-f4|sort|uniq-c|whilereadcg

{echo$c;

grep:

$g:

/etc/group|cut-d:

-f1;

}|xargs-n2

  36)如何在bashshell中更改标准的域分隔符为"

:

?

IFS="

  37)如何获取变量长度?

${#variable}

  38)如何打印变量的最后5个字符?

-5}

  39)${variable:

-10}和${variable:

-10}有什么区别?

∙${variable:

-10}-如果之前没有给variable赋值则输出10;

如果有赋值则输出该变量

-10}-输出variable的最后10个字符

  40)如何只用echo命令替换字符串的一部分?

echo${variable//pattern/replacement}

  41)哪个命令将命令替换为大写?

tr'

[:

lower:

]'

upper:

  42)如何计算本地用户数目?

wc-l/etc/passwd|cut-d"

-f1或者cat/etc/passwd|wc-l

  43)不用wc命令如何计算字符串中的单词数目?

set${string}

echo$#

  44)"

export$variable"

或"

exportvariable"

哪个正确?

exportvariable

  45)如何列出第二个字母是a或b的文件?

ls-d?

[ab]*

  46)如何将整数a加到b并赋值给c?

c=$((a+b))

c=`expr$a+$b`

c=`echo"

$a+$b"

|bc`

  47)如何去除字符串中的所有空格?

echo$string|tr-d"

  48)重写这个命令,将输出变量转换为复数:

item="

car"

echo"

Ilike$item"

item="

Ilike${item}s"

  49)写出输出数字0到100中3的倍数(0369…)的命令?

foriin{0..100..3};

doecho$i;

done

for((i=0;

i<

=100;

i=i+3));

doecho"

Welcome$itimes"

  50)如何打印传递给脚本的所有参数?

echo$*

echo$

  51)[$a==$b]和[$a-eq$b]有什么区别

∙[$a==$b]-用于字符串比较

∙[$a-eq$b]-用于数字比较

  52)=和==有什么区别

∙=-用于为变量赋值

∙==-用于字符串比较

  53)写出测试$a是否大于12的命令?

[$a-gt12]

  54)写出测试$b是否小于等于12的命令?

[$b-le12]

  55)如何检查字符串是否以字母"

abc"

开头?

[[$string==abc*]]

  56)[[$string==abc*]]和[[$string=="

abc*"

]]有什么区别

∙[[$string==abc*]]-检查字符串是否以字母abc开头

∙[[$string=="

]]-检查字符串是否完全等于abc

  57)如何列出以ab或xy开头的用户名?

egrep"

^ab|^xy"

/etc/passwd|cut-d:

-f1

  58)bash中$!

表示什么意思?

  后台最近执行命令的PID.

  59)$?

  前台最近命令的结束状态。

  60)如何输出当前shell的PID?

echo$$

  61)如何获取传递给脚本的参数数目?

  (LCTT译注:

和第3题重复了。

  62)$*和$有什么区别

∙$*-以一个字符串形式输出所有传递到脚本的参数

∙$-以$IFS为分隔符列出所有传递到脚本中的参数

  63)如何在bash中定义数组?

array=("

Hi"

my"

name"

is"

  64)如何打印数组的第一个元素?

echo${array[0]}

  65)如何打印数组的所有元素?

echo${array[]}

  66)如何输出所有数组索引?

echo${!

array[]}

  67)如何移除数组中索引为2的元素?

unsetarray[2]

  68)如何在数组中添加id为333的元

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1