第一个大题
1. shudown –r +10 “this system will reboot after 10 minutes”
2.
ls -l | grep "^-" | wc –l(注:ls –l 是输出该目录下文件信息, grep “^-”是过
滤输出信息,保留一般文件,wc 用于统计多少行,一行信息对应一个文
件)
3. shuf file.txt –o sample.txt –n 100 (-n 是行数,-o 是输出文件),也可以用如
下命令 shuf file.txt –n 100 > sample.txt (利用重定向到新文件中)
第二个大题
1. 首先安装 crontabs:yum install crontabs(需要 root 用户)
2. 命令行中输入以下命令:crontab –e 进入到 crontab 命令行界面,是 vi 编
辑界面
3. 输入以下命令:
20 2 * * * rm –rf /confbackup/*
* 8-14/1 * * * cat /home/user/workspace/log >> /backup/bak.txt 或者采用
/home/user/workspace/log >>
如 下 命 令 * 8,9,10,11,12,13,14 * * * cat
/backup/bak.txt
4. vi 编辑器保存退出显示 crontab: installing new crontab 则表示该调
度命令成功。
5. 通过 crontab –l 可以查看进行中的调度命令
6. crontab -r 结束调度
第三个大题
第一题代码:
#!/bin/bash
#add group
#创建student组
groupadd students
#循环添加
for name in $(seq 1 20)
do
#判断是或小于10,如果小于就在前面加0
if [ $name -lt 10 ]
then
useradd -g students stu0$name
useradd -g students stu$name
else
fi
done
第二题代码:
#!/bin/bash
#get ascii table and write into the data.txt
man ascii | sed -n '21,85p' > data.txt
gawk 'BEGIN {print " Decimal \t HEX \t Character";print
"---------------------------------"};
{print "
gawk '{if($NF>=2) {res=$(NF-2);cur=$(NF-1);};print "
"\t" $NF }' data.txt
" $2 "\t" $3 "\t" $4}' data.txt
" res "\t" cur
第四个大题
#!/bin/bash
#声明牌的数组为关联数组
declare -A card
#a b c d分别代表四个人
person=(1 2 3 4)
#随机产生函数
function rand() {
}
#从card_total数组中
#得到随机数为1-52
#其中1-13为梅花
#14-26为方块
min=$1
max=$(($2-$min+1))
num=$(($RANDOM+1000000000))
echo $(($num%$max+$min))
}
#随机数的产生之2
function seed_random(){
min=$1
max=$(($2-$min+1))
num=$(date +%s%N)
echo $(($num%$max+$min))
#27-39为红桃
#40-52为黑桃
function random_value() {
#产生要取出的数组下标值
rnd=$(seed_random 0 $1)
#存储要返回的数据
local num=${card_total[$rnd]}
#返回随机数值(数组下表)和对应的牌的值
echo $rnd
echo $num
}
#发牌函数
#首先生成1-52的随机数,检验是否已经产生过
#然后按照发给第1,2,3,4个人的顺序依次发下去
function deal_cards() {
done
}
#获得花色
function get_color() {
#产生的牌的总数,达到52时终止,total的范围是0-51
declare -i total=51
#牌的原始数组
#下标是0-51,值是1-52
card_total=($(seq 1 52))
#记录已经产生过的数字,用于判断是否重复
number=()
while [ $total -ge 0 ]
do
#产生随机数
rand_number=($(random_value $total))
unset card_total[${rand_number[0]}]
card_total=(${card_total[*]})
#随机数加入到number数组中
echo "产生随机数${rand_number[1]}"
number[$total]=${rand_number[1]}
#确定这是第几个人的牌
count=$((total%4))
#加入到card数组中
card[${rand_number[1]}]=${person[$count]}
#成功产生一个随机数加入则加1
echo ${number[*]}
echo "总数是 is ${#number[*]}"
((total--))
#定义要判断的数值
key_temp=$1
if [ $key_temp -ge 1 -a $key_temp -le 13 ]
then
color="梅花"
value=$key_temp
echo $color
echo $value
elif [ $key_temp -ge 14 -a $key_temp -le 26 ]
then
color="方块"
value=$((key_temp-13))
echo $color
echo $value
elif [ $key_temp -ge 27 -a $key_temp -le 39 ]
then
color="红桃"
value=$((key_temp-26))
echo $color
echo $value
elif [ $key_temp -ge 40 -a $key_temp -le 52 ]
then
color="黑桃"
value=$((key_temp-39))
echo $color
echo $value
fi
}
#输出按人打印手里的牌
function show_card() {
for var in ${person[*]}
do
echo -n "第$var个人手里的牌是:"
for key in ${!card[*]}
do
if [ ${card[$key]} = $var ]
then
#echo -n "$key "
result=($(get_color $key))
echo -n "${result[0]}${result[1]} "
fi
done
echo ""
done
}
deal_cards
echo "最后数组是:${number[*]}"
show_card
第五个大题
(1) 实现读取第 23 行的方法:
sed –n ‘23p’ file.txt
cat file.txt | head –n 23 | tail –n 1
awk “NR==23” file.txt
for(i=1;i<=NF;i++) {
array[$i]++;
}
(2) 统计单词:
(3) #!/bin/bash
(4) cat file.txt | sed 's/[,.:;/!?]//g' | awk '
(5) {
(6)
(7)
(8)
(9) };END{
(10) for(i in array) {
(11)
(12) }
(13) }
(14) '|sort –t ‘:’ –n –k 2
(3) 守护进程:
print i,array[i]
#!/bin/bash
while true
do
sleep 5
testing=$(netstat -tuln |grep ":2001")
if [ "$testing" == "" ]
then
./start 2001 2>/dev/null 1>&2 &
echo "process 2001 start"
else
fi
testing=$(netstat -tuln |grep ":2002")
if [ "$testing" == "" ]
then
./start 2002 2>/dev/null 1>&2 &
echo "process 2002 start"
fi
testing=$(netstat -tuln |grep ":2003")
if [ "$testing" == "" ]
then
./start 2003 2>/dev/null 1>&2 &
echo "process 2003 start"
fi
done
第六个大题
#!/bin/bash
#find the file end with .model
modelfile=$(find ./models/ -name '*.model')
for var in $modelfile
do
#store .model into datastore.txt
echo $var >> datastore.txt
#execute the commmand and get the rate of accurate
temp=$(./bin deploy.prototxt $var |tail -n 1|awk '{print $NF}')
#write the rate into the datastore
sed -e "$ s/$/ $temp/" datastore.txt > datastore.txt
done
#get the high rate of the model
cat datastore.txt |sort -n -k 2|tail -n 1|awk '{print $1}'
第七个大题
Android.mk 文件:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
OPENCV_LIB_TYPE=STATIC
:= nonfree
include /home/user/OpenCV-android-sdk/native/jni/OpenCV.mk
LOCAL_MODULE
LOCAL_SRC_FILES := nonfree_init.cpp sift.cpp surf.cpp
LOCAL_LDLIBS
include $(BUILD_SHARED_LIBRARY)
+= -llog
Application.mk 文件:
APP_STL := gnustl_static
APP_CPPFLAGS:=-frtti -fexceptions
APP_ABI := armeabi armeabi-v7a
编译指令:ndk-build
第八个大题
第 1、2、3 小问
function.c 文件:
#include
//交换两个数组
void swap(int *a, int *b){
int tmp = *a;
*a = *b;
*b = tmp;
}
//输出打印数组
void output(int list[], int size){
int i;
for(i = 0; i < size; i++){
printf("%d ", list[i]);
}
putchar('\n');
}
//递归查找全排列输出
void permutation_duplicate(int list[], int begin, int end, int p_size){
int i, j;
if(begin >= p_size){
output(list, p_size);
}
else{
for(i = begin; i <= end; i++){
for(j = begin; j < i; j++){
if(list[j] == list[i]){
break;
}
}
if(i == j){
swap(list + begin, list + i);
permutation_duplicate(list, begin + 1, end, p_size);
swap(list + begin, list + i);
}
}
}
}
Function.h 文件
#include
void swap(int *a, int *b);
void output(int list[], int size);
void permutation_duplicate(int list[], int begin, int end, int p_size);
main.c文件:
#include
#include "function.h"
int main() {
//定义数组长度,从命令行获取
int total;
printf("请输入数组长度:");
scanf("%d", &total);
//定义输入的数组
int num;
int i=0;
int j=0;
int arr[10];
printf("请输入数组参数:");
while(i