拷贝当前文件到目标服务器:
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.写一个脚本;求1到50的偶数累加和?
#!/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}'