Linux习题集

拷贝当前文件到目标服务器:

scp ./a.csv root@目标服务器ip:/root/test

从目标服务器拷贝文件到当前:

scp -r 目标服务器ip:/root/test/tea.txt a.txt

通过svn拉取文件:

svn co svn://目标服务器ip/test/

1.下载网页www.baidu.com,并把包含“百度”的关键字找出来

wget http:// www.baidu.com

grep -nir "百度"

2.计算20110102到20140329多少天

echo $((($(date +%s -d '20140329')-$(date +%s -d '20110102'))/86400))

3.查找/root/lhn/shell 目录下包含“1218”的文件或者文件夹

find /root/lhn/shell/ 1218

4.查找pid=1174的进程的服务路径

ps aux |grep 1174

解释:-aux 显示所有包含其他使用者的行程

5.检索出文件/root/lhn/shell/test1.txt包含3的文件行

grep 3 /root/lhn/shell/test1.txt

6.查看当前机器的IP4地址

ifconfig

注:该指令用来查看和配置网络设备

7.指令计算1+12等于多少

echo $((1+12))

echo "1+12" |bc –l

解释:bc 命令是任意精度计算器语言,通常在linux下当计算器用

8.显示文件/root/lhn/shell/test1.txt的最后5行

tail -n 5 /root/lhn/shell/test1.txt

解释:tail指令,即为在屏幕上显示查看文档内容的结尾

9.统计文件/root/lhn/shell/test1.txt包含3的共计多少行

grep 3 /root/lhn/shell/test1.txt |wc -l

解释:应用管道进行统计

10.对文件/root/lhn/shell/test1.txt按照第一列进行排序

sort /root/lhn/shell/test1.txt

解释:sort命令用于将文本文件内容加以排序,默认将文本文件的第一列以ASCII 码的次序排列

11.将/root/lhn/shell/test1.txt /root/lhn/shell/test2.txt按照顺序合并成/root/lhn/shell/test3.txt

cat /root/lhn/shell/test1.txt /root/lhn/shell/test2.txt >/root/lhn/shell/test3.txt

12.找出/root/lhn/shell/test1.txt 与/root/lhn/shell/test2.txt的不同行

diff /root/lhn/shell/test1.txt /root/lhn/shell/test2.txt

解释:diff 命令用于比较文件的内容

13.传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商。

#!/bin/bash

i=$1

j=$2

sum=$((i+j))

a=$((i-j))

b=$((i*j))

c=$((i/j))

echo $sum

echo $a

echo $b

echo $c

14.写一个脚本;150的偶数累加和?

#!/bin/bash

i=0

sum=0

while [[ "$i" -lt 51 ]]

do       

sum=$(($sum+i))

i=$((i+2))

done    

echo $sum

#!bin/bash

sum=0

for((i=2;i<=50;i=i+2))

do

sum=$(($sum+$i))

done

echo $sum

15.任意四个整数,判断最大数。

#!/bin/bash

max=$1

[ $2 -gt $max ] && max=$2

[ $3 -gt $max ] && max=$3

[ $4 -gt $max ] && max=$4 

echo $max

解释:在bash中,如果想要比较两个数字的大小

-gt是大于的意思。

-eq是等于的意思。

-ne是不等于的意思。

-ge是大于等于的意思。

-lt是小于的意思。

-le是小于等于的意思。

16.Shell脚本通过for循环打印九九乘法表。

#!/bin/bash

for(( i=1;i<=9;i++ ))

do

   for (( j=1;j<=9;j++ ))

   do    

      [  $j  -le  $i  ]  &&  echo -n "$i*$j=$((i*j))   "

   done  

   echo " "  

done 

解释:echo -n 不换行输出

17.请完成脚本count.sh,统计文件:/root/haitao/test.txt中的空行个数并输出。

         awk  '/^$/{x++}END{print  x}'  test.txt

       

18.声明一个数组,并将以下内容赋值给声明的数组:[1 3 6 8 9 10 20 48 3 5 1 78],之后利用for循环把他们打印出来

#!/bin/bash

num=(1 3 6 8 9 10 20 48 3 5 1 78)

for(( i=0; i<${#num[*]}; i++));

do

   echo "number"${num[$i]}

done

#!/bin/bash

num=(1 3 6 8 9 10 20 48 3 5 1 78)

for i in ${num[@]}

do

   echo $i

done

19.利用shell计算1-100内的所有奇数之和

#!/bin/bash

i=1

sum=0

while [[ "$i" -lt 101 ]]

do       

sum=$(($sum+i))

i=$((i+2))

done    

echo $sum

#!/bin/shell

sum=0

for((i=1;i<=100;i=i+2))

do

sum=$(($sum+$i))

done

echo $sum

20.Shell编程求解1+2-3+4-5+6-7……50的所有数之和

#!/bin/bash

f=1

sum=0    

for(( i=2; i<51; i++));

do       

sum=$(($sum+i*f))

f=$(($f*(-1)))

done 

sum=$(($sum+1))   

echo $sum

解释:一定要注意看,拆成1+偶数和-奇数和

21.通过构造传参函数,判别任意三个数的最小值

#!/bin/bash

function pt

{

min=$1

[ $2 -gt $min ] && min=$2 

[ $3 -gt $min ] && min=$3

return $min

}       

result=$(pt 5 1 2 )

result=$?

echo $result

     

22.通过foreach计算任意外部传入的四个整数的累加和

#!/bin/bash

function sum(){

sum=0

for n in $@

do

sum=$((sum+$n))

done

echo $sum

}

sum 5 8 0 1

23.通过构造传参函数,判别任意三个数的累加值

#!/bin/bash

function sum(){

sum=0

for n in $@

do

sum=$((sum+$n))

done

echo $sum

}

sum 9 8 6

24.构造传参函数,查询/root/lhn/shell目录下的所有文件总数

#!/bin/bash

function fileCount(){

count=`ls $1 | wc -w`

echo $count

}

fileCount /root/lhn/shell

25.通过构造传参函数,计算任意6个整数的阶乘

#!/bin/bash

function factorial(){

for n in $@

do

sum=1

for (( i=$n; i>=1; i-- ));

do

sum=$((sum*i))

done

echo $sum

done

}

factorial 5 3 6 4 1

 

26.新建文件sava.txt,通过重定向把当前时间写入到save.txt中

time=`date`

echo "Today is "$time > save.txt

cat save.txt

27.利用重定向统计/root/luohongni目录下多少个文件

ls -l |grep "^-"|wc -l > save1.txt

cat save1.txt

解释:查看某文件夹下文件的个数:ls -l |grep "^-"|wc –l

28.查找/root/haitao/test/list.sh文件中包含多少个3的行,并把相应的行输出到文件static.txt(没有该文件则新建)

grep 3 list.sh >static.txt

cat static.txt

wc -l <static.txt

解释:如果是想直接统计并重定向到static.txt:

grep 3 test1.txt |wc -l >static.txt

cat static.txt

29.利用shell控制符号实现shell 猜字游戏,标准答案自定义。

用户任意输入一个数,如果大了,提醒大了并让用户重新猜字,如果小了,则提醒用户小了并让用户重新猜字,如此循环,直到猜对为止

#!/bin/bash

number=28

read -p "Please input you guess bumber:" guessNumber

while (($guessNumber))

do

    if (( $guessNumber > $number ));

    then

        echo "you enter number is bigger!"

        read -p "Please input you guess bumber:" guessNumber

    elif (( $guessNumber < $number ));

    then

        echo "you enter number is low!"

        read -p "Please input you guess bumber:" guessNumber

else

echo "ture"

    break

fi

done

29.在28题基础上,增加标准答案系统随机给出(即不需要提前定义)

#!/bin/bash

number=$RANDOM

echo $number

read -p "Please input you guess bumber:" guessNumber

while (($guessNumber))

do

    if (( $guessNumber > $number ));

    then

        echo "you enter number is bigger!"

        read -p "Please input you guess bumber:" guessNumber

elif (( $guessNumber < $number ));

then

    echo "you enter number is low!"

    read -p "Please input you guess bumber:" guessNumber

else

    echo "ture"

    break

fi

done

           

30.通过svn拉取test文件,其中test文件中有一个demo.txt文件,该文件即为接下来要操作的文件(用awk实现)

svn co svn://服务器ip/test/test/

(1)显示demo.txt中所有的电话号码(:隔开的即第二列)

awk -F: '{print $2}' test/demo.txt

(2)仅仅显示Susan的电话号码

awk -F: '/^Susan/{print $2}' test/demo.txt

(3)显示Susan的名字和电话号码

awk -F: '/^Susan/{print $1,$3}' test/demo.txt

(4)显示所有以“S”开头姓

awk -F: '/^Susan/{print $1,$3}' test/demo.txt

(5)通过awk打印demo.txt全部内容

 awk '{print $0}' test/demo.txt

   

31.通过svn拉取work8文件,该文件包含接下来要操作所需的文件

svn co svn://服务器ip/test/work8/

(1)针对tesx1.txt,先打印出行号,再打印出整行的内容

awk '{print NR,$0}' work8/test1.txt

(2)关于text2.txt,忽略第一行,打印出剩余所有内容

awk 'NR>=2{print $0}'  work8/test2.txt

(3)输入文件text1.txt,text2.txt,分别显示两个文件的行号并输出全部文件内容

awk '{print FNR,$0}' work8/test1.txt work8/test2.txt

(4)指定了使用"空格"作为"行分隔符"输出test1文本

awk -v FS=' ' '{for(i=1;i<=NF;i++)print $i}' work8/test1.txt

(5)自定义变量name=你的名字,然后通过awk进行name输出

awk 'BEGIN{name="luohongni";print name}'

32.(1)统计第二列(用,隔开)sku_id(即购买商品的id),每一种ski_id的出现的频率(结果第一列为sku_id,第二列为sku_id的频率):

awk -F, '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]}' a.csv

(2)把1)输出的结果按照频率的降序进项排序并取top200

awk -F, '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]|"sort -nrk2"}' a.csv | head -n 200

(3)在2)输出的结果取,第10行到100行的结果

awk -F, '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]|"sort -nrk2"}' a.csv | head -n 100 | tail -n +10

(4)对3)输出结果进行优化展示(即第一行添加属性说明):

awk -F, '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]|"sort -nrk2"}' a.csv | head -n 100 | tail -n +10 | awk 'BEGIN{print "商品id","频率"}{print $1,$2}'

33.统计第一列(用空格隔开)ip的出现的频率。

awk 'NR>1{count[$1]++}END{for(i in count){print i,count[i]}}' ip.txt

34.用awk 计算1+2+3…..+100的累计值

awk 'BEGIN{for(i=1;i<=100;i++){sum+=i}{print sum}}'

35.用awk 代码写入shell脚本中,实现九九乘法表的打印

awk 'BEGIN{for(i=1;i<=9;i++) {for(j=1;j<=i;j++) {printf "%d%s%d%s%d\t",j,"*",i,"=",i*j;}printf "\n"}}'

36.使用rand等函数,每次随机输出一个大于6且小于10的整数。

awk 'BEGIN{while(1){value=int(10*rand());if(value>6 && value<10){print value;break}}}'

37.(1)a.txt该文件的列分隔符号为“,”,请把第一列的*号去掉

awk  -F, '{gsub("*","",$1);OFS=",";print $0}' a.txt

(2)统计a.text数据中有多少个男同学,有多少个女同学

awk -F : '/男/{count++}END{print count}' a.txt &&  awk -F : '/女{count++}END{print count}' a.txt

38.使用awk 输出以下内容

   0

  1 2

 3 4 5

6 7 8 9

awk 'BEGIN{z=0;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++){printf " ";}for(j=1;j<=i;j++){printf z++;printf " "}print}}'

39.输出a.txt除开1-5行之外的所有行内容

awk '{if(NR>5){print NR,$0}}' a.txt

40.观察下面的现象,某个数字的立方,按位累加仍然等于自身。

1^3 = 1

8^3  = 512    5+1+2=8

17^3 = 4913   4+9+1+3=17

...

请你用awk计算包括1,8,17在内,符合这个性质的正整数一共有多少个?

awk 'BEGIN{z=0;for(i=1;i<10000;i++){sum=0;num=i*i*i;while(num!=0){k=num%10;sum+=k;num=int(num/10)}if(i==sum){z++}}print z}'

41.分数

1/1 + 1/2 + 1/4 + 1/8 + 1/16 + ....

每项是前一项的一半,如果一共有15项,

求这个和是多少,结果用分数表示出来。

类似:

3/2

当然,这只是加了前2项而已。分子分母要求互质。

awk 'BEGIN{sum=2**14;s=(2*(2**14)-1);print s"/"sum}'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux操作系统 一、单项选择题 1. 关于Linux内核版本的说法,以下错误的是()。 A.表示为主版本号.次版本号.修正号 B.1.2.3表示稳定的发行版 C.1.3.3表示稳定的发行版 D.2.2.5表示对内核2.2的第5次修正 2. 系统引导的过程一般包括如下几步: a.MBR中的引导装载程序启动; b.用户登录; c.Linux内核运行; d.BIOS自检。 正确的顺序是()。 A.d,b,c,a B.d,a,c,b C.b,d,c,a D.a,d,c,b 3. 字符界面下使用shutdown命令重启计算机时所用的参数是()。 A.-h B.-t C.-k D.-r 4. 下面哪个不是桌面环境软件? A.KDE B.twm C. Gnome D.CDE 5. 在UNIX/Linux系统添加新用户的命令是() A. groupadd B. usermod C. userdel D. useradd 6. Android系统是基于Linux操作系统开发的手机系统,因此在进行刷机、删除系统自带软件时需要获得管理员账户( )的权限。 A.administrator B.admin C.root D.liveuser 7.已知当前系统umask的值为022,请问这时新建目录文件的权限为()。 A. 755 B. 644 C.775 D.664 8.已知用户sarwar在虚拟终端1和虚拟终端2及图形用户界面下登录,请问sarwar在虚拟终端1中执行ls >tty2后,命令输出到哪里?() A.虚拟终端1 B.虚拟终端2 C.图形终端 D.无输出 二、填空题(每空1分,共15分) 1. Linux系统中有三种基本的文件类型:普通文件、目录文件和 设备文件 。 2. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。 3. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。 4. /sbin 目录用来存放系统管理员使用的管理程序。 5. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。 11.将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式__ __tar -czvf wang.tar.gz /home/stud1/wang_ 三、判断题(每题1分,共10分) 1. Ubuntu LINUX安装时自动创建了根用户。( T ) 2. LINUX中的超级用户为root,登陆时不需要口令。( F ) 3. Linux不可以与MS-DOS、OS/2、Windows等其他操作系统共存于同一台机器上。( F ) 4. Linux的特点之一是它是一种开放、免费的操作系统。 ( T ) 5. RedHat系统中,默认情况下根口令没有字符长短的的限制,但是必须把口令输入两次;如果两次输入的口令不一样,安装程序将会提示用户重新输入口令。 ( F ) 四、问答题\应用操作题(每题5分,共25分) 1. Linux内核主要由哪几部分组成?每部分的作用? Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。 进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时, 由调度程序选择最值得运行的进程; 内存管理(MM)允许多个进程安全的共享主内存区域; 虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统; 网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持; 进程间通讯(IPC) 支持进程间各种通信机制。 2. vi编辑器有哪几种工作模式?如何在这几种工作模式之间转换? Vi的工作模式有三种:命令模式、输入模式、末行模式。 在命令模式下输入a、A、i、I、o、O等命令之一可以进入输入模式, 在输入模式下按Esc键回到命令模式; 在命令模式下输入:进入末行模式,末行命令执行完后回到命令模式。 3.假设你是系统管理员,需要增加一个新的用户账号u1,为新用户设置初始密码,锁定用户账号u2,并删除用户账号u3。请写出完成本题所述功能的命令序列 useradd u1 -添加用户u1 passwd 123456 -为用户添加密码123456 passwd -l u2 -锁定用户账号u2 userdel u3 -删除用户账号u3 4.写出将/abc目录中所有文件及目录打包压缩成文件abc.tar.gz的命令。 tar -zcvf abc.tar.gz /bc 5.创建一个用户,用户名为user02,所属私有组和标准组为group01,用户主目录为/home/user02,用户登录shell为/bin/bash。 useradd -g group01 –G group01 –d /home/user02 -s /bin/bash user02 五、综合题(1题10分,1题10分,共20分) 1、已知管理员用户的主目录结构如图2所示: (1)管理员用户目前在/R/B/T4/S0中,分别写出执行以下命令后,管理员在目录系统中的位置。 cd /R cd .. /R/B/T4 cd ../.. /R/B cd / / cd ~ /R (2)写出删除目录C的两种办法。 1.rm -rf /root/C 2.rm /root/T3 rm /root/T4 rmdik/root/C (3)已知管理员用户在/R目录中,分别用绝对路径和相对路径方式写出将目录/R/C/T3/S0中的文件复制到/R/D/T5目录中的方法。 cp /R/C/T3/S0 /R/D/T5 cp /C/T3/S0 /D/T5 2、设计一个shell程序计算n的阶乘。要求: (1) 从命令行接收参数n; (2) 在程序开始后立即判断n的合法性,即是否有参数,若有是否为正整数,若非法请给错误提示; (3) 最后输出计算的结果。 #!/bin/sh echo “please input your number n:” read n #if(( ! -n “$n”)); then if test -z “$”; then echo “n is no data !” exit 1 else if(( $n<=));then echo -e “$n is no zhengzhengshu.\n”; exit 1 fi fi fact=1;tmp=1 while[$tmp -le $n ] do fact=$((fact*tmp));tmp=$((++tmp)); done echo "fact=$fact"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值