Linux操作题
输入三个数,求最大值
echo "please enter three number"
read a b c
if [ "$a" -ge "$b" ]
then if [ "$a" -ge "$c" ]
then echo "$a"
else echo "$c"
fi
elif [ "$b" -ge "$c" ]
then echo "$b"
else echo "$c"
fi
输出一个等腰三角形
for ((y=4;y>i;y--))
do
echo -n " "
done
for ((j=2;j<=i;j++))
do
echo -n "*"
done
for ((j=1;j<=i;j++))
do
echo -n "*"
done
done
echo -e ""
输出1-100的和
sum=0
for(( i=1;i<=100;i++ ))
do
let sum=$sum+$i
done
echo "$sum"
根据键盘可以循环输入学生成绩判断是否合格
while true
do
echo "please enter the score:"
read x
case $x in
[0-9]|[1-5][0-9]) echo "failed!";;
[6-9][0-9]|100) echo "passed!";;
q) exit;;
*) echo "error!";;
esac
done
实现两个数的和
read a b
sum=`expr $a + $b`
echo $sum
输出5的阶乘(5!)
sum=1
for((i=5;i>0;i--))
do
sum=$((sum*i))
done
echo "$sum"
输出字符
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
x=0
while [ $x -lt 10 ]
do
y=" $x"
while [ "$y" -ge 0 ]
do
echo -e "$y \c"
y=`expr $y - 1`
done
echo
x=`expr $x + 1`
done
输出字符
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
0 1 2 3 4 5
n=0
while [ "$n" -lt 6 ]
do
x=0
echo -e "$x \c"
x=`expr $x + 1`
while [ "$x" -le "$n" ]
do
echo -e "$x \c"
x=`expr $x + 1`
done
echo
n=`expr $n + 1`
done
打开vi编辑器,进行如下操作:
(1) 插入2019年日历,并把该文件命名为2019.txt。
答:
用vi打开编辑器,进入新的文件编辑时,转到底行命令,输入命令
:r !cal 2019
即插入2019年日历,然后再执行底行命令
:w 2019.txt
即把该文件存盘命名为2019.txt。
(2) 把4、5、6月的日历整体向右移动一个制表位。
答:
在命令模式下,把光标移到4、5、6月的行首,执行命令
7
即把4、5、6月的日历整体向右移动一个制表位。
(3) 把该日历的标题“2019”改为“2019年全年日历”。
答:
把光标移到日历标题位置,在输入模式下把日历的标题“2019”改为“2019年全年日历”。
(4) 删除1、2、3月的日历,然后予以恢复。
答:
把光标移到1、2、3月的日历行首,执行命令
d8G
其中8为1、2、3月的日历最底行的行号。
再按u键予以恢复。
(5) 把7、8、9月的日历整体移到日历的最后面。
答:
该操作为把7、8、9月的日历先整体剪切,然后再到日历最底行,再粘贴的过程,操作如下:
先把光标移到7、8、9月的日历的行首,7、8、9月的日历整体占6行,执行剪切命令
"a6dd
即把7、8、9月的日历整体占的6行剪切到a的缓存区中;
把光标移到日历的最底行,执行粘贴命令
"ap
(6) 依次检索字符串“30”,如果每个月的最后一天为“30”,则删除该字符串“30”。
答:
该操作为检索命令,再判断每个月的最后一天是否为“30”,再进行删除该字符串“30”,操作如下:
执行字符串检索命令:
/30
首先检索到第一个“30”,再判断该月的最后一天是否为“30”,如果是则执行命令
d2l
删除该字符串“30”,然后按n键,检索下一个“30”字符串,以此类推进行操作。
(7) 显示行号。
答:
执行底行命令
:set number
(8) 在该vi编辑器中统计该文件的大小。
答:
在该vi编辑器中统计该文件的大小,首先把该文件进行存盘,比如存盘命名为2019.txt,则可以在vi中执行shell命令
:!wc 2019.txt
已知有两个文本文件f1和f2,把f1文件中的第5~9行剪切并插入粘贴到f2文件的第3行后,再把f2文件中的所有read字符串全部改写成reading,最后在f1文件后附加上当前时间。利用vi编辑器写出以上操作步骤及其相关命令。
答:
首先用vi打开两个文本文件f1和f2,执行命令如下
vi f1 f2
此时编辑为f1下,把光标移到第5行,执行剪切命令
"b5dd
然后把剪切后的f1存盘
:w
之后转到编辑f2文件下
:n
进入到f2下把光标移到第3行,执行粘贴命令
"bp
粘贴后,把f2文件中的所有read字符串全部改写成reading,执行全局替换命令
:g/read/s//reading/g
最后在f1文件后附加上当前时间,操作如下:
当前为f2文件的编辑状态下,先把f2存盘,后返回f1的编辑状态下
:w
:e#
进入到f1编辑状态下后,把光标移到最低,执行插入shell命令,插入当前时间
:r !date
编写一个Shell脚本,利用for循环把当前目录下的所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
答:
echo “please confirm directory name:”
read dir
if [ -d $dir ]
then
for filename in *.c
do
cp $filename $dir
done
ls -l
d
i
r
∣
s
o
r
t
−
n
−
r
−
k
5
e
l
s
e
e
c
h
o
"
b
a
d
d
i
r
e
c
t
o
r
y
n
a
m
e
:
dir | sort -n -r -k 5 else echo "bad directory name:
dir∣sort−n−r−k5elseecho"baddirectoryname:dir"
fi