嵌入式软件工程师面试题——2025校招社招通用(Linux篇)(二十七)

发布时间:2024年01月21日

说明:

  • 面试群,群号: 228447240
  • 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
  • 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
  • 博主与大家一起学习,一起刷题,共同进步;
  • 写文不易,麻烦给个三连!!!

本篇开始将进入Linux系列的题目分享,Linux题目比较则乱,博主按照题型将它分为四类:填空题 选择题 简答题 编程题

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

答案:

#!/bin/bash

file_path="path/to/your/file"  # 替换为你想要判断的文件路径

if [ -c "$file_path" ]; then
    echo "文件是字符设备文件"
    cp "$file_path" /dev/
else
    echo "文件不是字符设备文件"
fi

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

答案:

#!/bin/bash

group_name="class1"
start_index=1
end_index=30

# 添加新组
sudo groupadd "$group_name"

# 添加属于该组的用户
for ((i=start_index; i<=end_index; i++))
do
    username="std$(printf "%02d" $i)"  # 格式化用户名为 stdxx,其中 xx 为两位数字
    sudo useradd -m -s /bin/bash -G "$group_name" "$username"
    echo "添加用户 $username 成功"
done

3.编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50

答案:

#!/bin/bash

start_index=1
end_index=50

# 删除指定用户
for ((i=start_index; i<=end_index; i++))
do
    username="stud$i"
    sudo userdel -r "$username"  # -r 参数表示同时删除用户的家目录
    echo "已删除用户 $username"
done

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

答案:

#!/bin/bash

# 定义备份目录和目标目录
backup_dir="/user/backup"
target_dir="/tmp"

# 获取当前时间和星期几
current_time=$(date "+%Y-%m-%d %H:%M:%S")
current_day=$(date "+%u")

# 判断是否为周日(星期天)
if [ "$current_day" -eq 7 ]; then
    # 执行备份操作
    cp -r "$backup_dir" "$target_dir"
    echo "[$current_time] 备份成功!"
else
    echo "[$current_time] 今天不是周日,不执行备份操作。"
fi

5.编写shell脚本,输入三个数并进行升序排序

答案:

#i/bin/bash
#三个数,两两比较一次就可以了
t=0
read a
read b
read c

if [ $a -gt $b ];then
	t=$a
	a=$b
	b=$t
fi

if [ $a -gt $c ];then
	t=$a
	a=$c
	c=$t
fi

if [ $b -gt $c ];then
	t=$b
	b=$c
	c=$t
fi

echo "$a $b $c"

6.使用for循环输出当前文件夹下面的所有文件,统计文件数量并打印

答案:

#!/bin/bash
num=0
for i in $(ls)
	do
		num=$[$num+1]
		echo "item:$i"
	done
echo "the number of files is $num"

7.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下

答案:

#!/bin/bash
for FileName in `ls -l | awk '$5>10240 {print $9}'`
	do  
		mv $FileName /tmp
	done

8.编写shell脚本,把字符串反过来显示。例如:给定abcde输出edcba

答案:

#!/bin/bash
read -p “请输入字符:” char
echo $char|rev

9.批量创建10个系统帐号CSDN01-CSDN10并设置密码(密码为随机8位字符串)

答案:

#!/bin/bash
for i in `seq -w 10`
do
        useradd CSDN$i >/dev/null
        #取8个字符串
        passwd=`cat /dev/urandom |head |md5sum | head -c8`
        #账户密码存放
        echo CSDN$i  $passwd  >> /CSDN.txt
        echo $passwd | passwd --stdin CSDN$i >/dev/null
        if [ $? -eq 0 ];then
                echo 用户CSDN${i}创建成功
        else
                echo 用户CSDN${i}创建失败
        fi
done

10.编写shell脚本,实现两个变量之间的加减乘除运算

答案:

#!/bin/bash
result=0
read -p "请输入第一个数:" a
read -p "请输入第二个数:" b
read -p "请输入运算符号:" c

if [ $c = "+" ];then
	result=$(($a+$b))
	echo " $a $c $b = $result "
elif [ $c ="-" ];then
	result=$(($a-$b))
	echo " $a $c $b = $result "
elif [ $c = "*" ];then
	result=$(($a*$b))
	echo " $a $c $b = $result "
elif [ $c = "/" ];then
	result=$(($a/$b))
	echo " $a $c $b = $result "
fi

文章来源:https://blog.csdn.net/weixin_45257157/article/details/135711618
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。