Linux基础知识练习题


纸上得来终觉浅,绝知此事要躬行。

很多沉不下心去做的事情,就不会有进步,到头来会怀疑是自己天赋不足,或怀疑自己不得机遇,空想家永远有多个触不可及的梦想,没有进步的行为那么只有原地踏步的懊恼!

Linux基础知识练习题


第 1 题

题目:

解答:

#!/bin/env bash
# Filename: config_yum.sh

# 移动原repo文件到backup目录下
yumdir=/etc/yum.repos.d/
mkdir $yumdir/bakcup
mv $yumdir/*.repo $yumdir/backup

# 挂载光盘
umount /dev/sr0 > /dev/null
mount /dev/sr0 /media &>/dev/null

# 增加base.repo文件
cat >base.repo <<EOF
[base]
name=centos7-base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0

[epel]
name=centos7-epel
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
gpgcheck=0
EOF

# yum元数据缓存,安装"Devlopment Tools"包组
yum makecache >/dev/null
yum groups install "Development Tools" >/dev/null

第 2 题

题目:

  • 复制 /etc/ssh/sshd_config/tmp/ 中并更名为 sshd_config.bak
  • /tmp/sshd_config.bak 文件中所有以非 # 号开头与包含空白字符的行保存至 /tmp/sshd_config 中。

解答:

cp /etc/ssh/sshd_config /tmp/sshd_config.bak
cat /tmp/sshd_config.bak | grep "^[^#]"| grep "^[^[:space:]*$]"

第 3 题

题目:

  • 编写脚本 /root/bin/sysinfo.sh 显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU 型号,内存大小,硬盘分区。

解答:

#!/bin/env bash
# Filename: sysinfo.sh

echo "主机名 : $HOSTNAME"
echo "系统版本: `cat /etc/centos-release`"
echo "内核版本: `uname -r`"
echo "CPU型号 :`cat /proc/cpuinfo | grep "model name" |cut -d: -f2 | head -1`"
echo "内存大小: `free -m |grep Mem|tr -s " "|cut -d" " -f2` MB"
echo -e "硬盘分区:\n`df -hT |egrep -o "^/dev/sd.*\>"|tr -s " " | cut -d" " -f1,3|sort`"

第 4 题

题目:

  • root 用户定义别名命令 vimnet,相当于 vim /etc/sysconfig/network-scripts/ifcfg-ens33,并使 root 执行 history 命令时,显示每个命令执行的具体时间。

解答:

#!/bin/env bash
# Filename: ch_bashrc.sh

cat >>~/.bashrc <<EOF
# shortname
alias vimnet="vim /etc/sysconfig/network-scripts/ifcfg-ens33"

# history with timestamp
export HISTTIMEFORMAT="%F %T "
EOF

第 5 题

题目:

  • 指出软链接硬链接的异同之处

解答:

  • 软链接就相当于Windows的快捷方式,删掉源文件,快捷方式和就失效了,软链接就找不到源文件了。
  • 硬链接相当于多个链接指向同一份数据存储区域,每多一个硬链接,硬链接数+1,如果一个文件,有n个硬链接,删除n-1个硬链接,源文件还在,直到删除所有硬链接,才会删除源文件。

第 6 题

题目:

  • 过滤 ifconfig 命令结果中所有大于 0 且小于 255 的三位数。

解答:

ifconfig | egrep -o "\<((1[0-9]{2}|2[0-4][0-9]|25[0-4]))"

第 7 题

题目:

  • 将用户 escape 被误删除的的家目录恢复,复制 /etc/shadowescape 家目录中,并设置只有用户 wang 可以读取 /home/escape/shadow 文件。

解答:

# root用户执行下面命令
mkdir /home/escape
chown escape:escape /home/escape

# 查看到wang家目录的权限为700
ll -d /home/wang
chmod 700 /home/escape

# 切换到escape用户
su - escape
cp /etc/skel/\.* .
cp -r /etc/skel/.mozilla/ .

# root用户执行下面命令
cp /etc/shadow /escape
setfacl -m u:wang:r shadow

第 8 题

题目:

  • 统计 /var/log/httpd/access.log 日志访问频繁前十的地址,并从大到小排序。

解答:

cat access.log |cut -d" " -f1 |sort |uniq -c |sort -nr|head -n10

第 9 题

题目:

  • 开启两个终端,将终端 1 中输入命令的执行结果输出,并同时输出到终端 2

解答:

COMMAND | tee >/dev/pts/1

第 10 题

题目:

  • 误删除 rpm 包命令,如何恢复之,实验说明。

解答:

# 进入Linux的挽救模式,挂载安装
cd /mnt/sysimage/media/Packages
rpm -ivh rpm-4.11.3-21.el7.x86_64.rpm

第 11 题

题目:

  • 计算 2+4+6+…+96+98+100 之和。

解答:

echo {2..100..2}|tr " " "+"|bc

第 12 题

题目:

  • /etc/sysconfig/network-scripts/ifcfg-ens33 基名,用两种方法实现。

解答:

# 第一种
basename /etc/sysconfig/network-scripts/ifcfg-ens192

# 第二种
echo /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o "[^/]+$"

第 13 题

题目:

  • /etc/目录,分别执行命令,实现以下功能:
    • (1)按从大到小顺序显示文件列表
    • (2)只显示隐藏文件
    • (3)只显示目录
    • (4)按mtime时间显示文件列表
    • (5)按atime时间显示文件列表

解答:

ll -S /etc

ll -d /etc/.*

ll -d /etc/*/

ll -t /etc

ll -u /etc

第 14 题

题目:

  • 编写 /root/bin/excute.sh,实现与用户交互,判断用户给予的参数是否可读,可写,可执行。

解答:

#!/bin/env bash

read -p "请输入文件绝对路径: " path
if [ -e $path ]; then
    [ -r $path ] && echo "文件可读" || echo "文件不可读"
    [ -w $path ] && echo "文件可写" || echo "文件不可写"
    [ -x $path ] && echo "文件可执行" || echo "文件不可执行"
else
    echo "文件不存在"
fi

第 15 题

题目:

  • 编写 /root/bin/wcfile.sh 统计 /etc 目录中的目录的个数,文件的个数,并求出 /etc/ 目录中的目录和文件个数的总和。

解答:

#!/bin/env bash

etc_dir_count=`ls -d /etc/*/ |wc -l`
etc_sum_count=`ls -d /etc/* |wc -l`
let etc_file_count=$etc_sum_count-$etc_dir_count

echo "目录个数为:$etc_dir_count"
echo "文件个数为: $etc_file_count"
echo "目录文件总和为:$etc_sum_count"

第 16 题

题目:

  • 编写 /root/bin/baketc.sh  查找 /etc/ 目录中超过 1 天未修改的文件,将其压缩备份至 /bakup 目录。若之前没有备份过则备份之,若存在的备份文件超过了 2 分钟则备份之,否则退出。备份的格式为 YYYY-MM-DD-hh-mm-ss.xz(Y 表示年,M 表示月,D 表示日,h 表示时,m 表示分,s 表示秒)。

解答:

#!/bin/env bash

# 查找backup下的文件(注意不要用/backup要用/backup/*)不超过两分钟的文件,如果没有,就打包文件。
flag=`find /backup/* -mmin -2`
if [ -z $flag ]; then
    find /etc/ -mtime +1 |xargs tar -Jcvf /backup/`date +"%Y-%m-%d-%H-%M-%S"`.tar.xz
fi

文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录