第三十四章 Linux常规练习题(一)参考答案

一、练习题一

1.超级用户(管理员用户)提示符是___#_,普通用户提示符是___$_。


2.linux关机重启的命令有哪些 ?

关机命令 重启命令 
shutdown -h now shutdown -r now
init 0  init 6
poweroff reboot
halt -p    

 

 

 

 

 

 


3.bash是什么?

是一种命令解释器  负责用户和内核交互的一种接口  

将用户输入的命令翻译给操作系统,并将处理后得到的结果输出到屏幕上


4.bash特性, 常见的bash特性有哪些?

tab键补全

命令行快捷键

历史记录

命令别名


5.网卡的配置文件路径什么?

/etc/sysconfig/network-scripts/ifcfg-eth0


6.[root@qiudao ~]# 已知这个是linux命令行,那么请问root表示什么?

当前所登陆的用户


7.接第上题,qiudao表示什么?

主机名


8.接上题,~的位置表示什么?而~本身又代表了什么?

当前所在的位置

当前用户所在的家目录

 

[root@qiudao ~]# yum install -y net-tools 已知命令行内容,下面几道练习题根据此命令行内容作答。

9.已知当前光标所在位置在最后面,我如果要删除命令行的内容,该怎样操作呢?

Ctrl+u


10.已知当前光标所在位置在最前面,我如果要删除命令行的内容,该怎样操作呢?

Ctrl+k


11.已知当前光标所在位置在最后面,我想只删除net-tools,该怎样操作呢?

Ctrl+w


12.磁盘分区安装系统的时候,你是怎么分区的?

/boot    500M

/swap   1G

/     全给

 

13.网络类型都有哪几种?这几种模式,各个意思你是怎么理解的?

(1)NAT 网络地址转换

NAT模式中的虚拟机是通过宿主机(物理电脑)进行上网和交换数据的

使用到网卡是VMnet8 VMware NAT Service服务就充当了一个路由器,虚拟机上网的时候首先会找到这个路由器,进行了一个地址转换,伪装了一个跟宿主机一样的IP地址 进行上网, 网络上的数据将返回给VMnet8这个网卡,VMnet8这块网卡会把数据返回给虚拟机

好处: 外面的网络可以随便更换,虚拟机的网络不变,IP地址也不会跟宿主机的IP地址冲突,IP的地址范围也广,设置一个网段

坏处: 上网需要经过一个中介 代理

(2)桥接模式 Bridge

通过宿主机网卡架设了一座桥 网桥 直接进入到了实际的网络环境中

虚拟机的IP地址跟宿主机的IP地址在一个网段范围之内,容易跟宿主机IP发生冲突

IP地址会随着外面网络的改变而改变,不能使用一个固定的IP地址,IP少

优点: 上网不需要经过宿主机,只需要通过VMnet0 网卡

桥接模式中的虚拟机跟宿主机的层级是一样的

(3)仅主机模式 Host-only

仅能跟宿主机进行连接,没有办法上网的 VMnet1


14.快照有什么作用?

保存虚拟机的某种状态,一旦虚拟机出现某种问题可以恢复到这种状态


15.克隆分哪几种?各表示什么含义?

完整克隆  是原始虚拟机的完整副本 ,不依赖于原始虚拟机,即使原始虚拟机出现问题,克隆机还能使用,但克隆速度较慢

链接克隆  是基于原始虚拟机的副本,依赖于宿主机,一旦原始虚拟机出现问题,克隆机就会出现问题,克隆速度较快

 

16.GNU是什么,介绍一下都有哪些内容?

GNU是斯托曼创立的FSF下的一个项目 全称GNU is not Unix

优秀的软件: Emacs编辑器    gcc编译软件   bash命令解释器    gawk开发语言    hurd内核 还在研发

 
17.GPL是什么,内容是什么?

通用公共许可协议   开源许可协议    

自由的,可任意传播的

可任意修改的,但是必须将修改之后的源代码发布出来  


18.Linux的发行版本都有哪些?

Redhat   红帽   开源但是收费  

CentOS 学习使用     去掉了Redhat的收费和logo部分编译而成的系统   开源 免费 企业 首选      

Fedora 新功能   想使用新功能 是Redhat的测试版本 预发布版

Ubuntu 乌班图   桌面系统   开发人员使用的多 

SUSE     数据库高级服务及电子邮件   德国使用的多   收费     OpenSUSE

Debian、FreeBSD   对安全性要求比较高   中文 麒麟 红旗  


19.创建一个目录,shanghai。

mkdir shanghai


20.创建一个文件,test.txt

touch test.txt


21.进入到shanghai这个目录。

cd shanghai


22.显示你当前所在的位置。

pwd


23.如何快速从当前目录切换到家目录?

cd


24.用ls -a随便查看一个目录,发现每个目录下都会有两个名为“.”和“..”的目录,解释它们分别代表的含义

.   当前所在的目录

..   当前所在目录的上一级目录


25.解释linux系统下“绝对路径”和“相对路径”的区别?

以/为起点的就是绝对路径

不以/为起点的就是相对路径


26.使用创建文件的命令一次性在oldboy目录下批量创建(oldboy1,oldboy2,oldboy3,oldboy4,oldboy5)这几个文件

mkdir oldboy

touch oldboy/oldboy{1..5}


27.如何检查当前登录的是什么用户?

whoami


28.如何快速返回上一次所在的目录?

cd -


29. 假设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为?

/root


30. 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是?

-p


31. 在linux中,下面(A)命令不是针对目录操作的。
A. ps
B. cd
C.pwd
D. ls


32. 建立一个新文件可以使用的命令为?

touch


33. 如果要列出一个目录下的所有文件需要使用命令为?

ls -la

 

34.Linux系统习惯将许多设备驱动存储在什么目录中?

/dev


35.包含了域名与IP地址的映射关系的文件是?

/etc/hosts


36.用什么命令来显示当前目录?

pwd


37.在类linux操作系统中,哪个用户默认对整个操作系统拥有完全控制权?

root


38.linux系统管理员创建一个普通oldboy用户,默认会在哪个目录下创建一个用户的主目录

/home


39.使用cd命令进入到/usr/local目录下,然后又执行了cd .. 请问,当前你所在的位置是哪里?

/usr


40.已知你在/etc/sysconfig/network-scripts/目录下,你执行了cd /etc/systemd/命令,怎样才能快速的到达/etc/sysconfig/network-scripts/目录下?

cd -


41.已知当前位置为/opt,请问,执行cd . ,写出你所在的位置?

/opt


42.创建/oldboy目录?

mkdir /oldboy


43.创建/data/test目录,已知/data目录不存在,请给出命令?

mkdir -p /data/test


44.创建/root/user /root/logs /root/conf /root/html目录,请用一条命令实现

mkdir /root/{user,logs,conf,html}


45.创建文件oldboy.txt 

touch oldboy,txt


46.在/root/目录下创建文件test.txt test.log test.sh test.conf 请用一条命令创建。

touch /root/test.{txt,log,sh,conf}


47.显示/root目录下的目录结构。

tree /root


48.只显示/目录的两层目录结构。

tree -L 2 /


49.只显示/etc目录下的目录。

tree -d /etc

 

50.如果我在当前在/目录下,之后执行了以下操作,请告诉我,最后我所在的目录位置

cd /etc/sysconfig/

cd ..

cd ..

cd -

cd ~

cd ..

 

root用户     /

普通用户   /home

 

51.当前用户是root用户,当前所在位置是/usr/local ,输入cd命令后,当前所在目录是哪里?

/root

 

52.显示当前所在位置信息

pwd

 

53.显示/oldboy 下面所有文件(包含隐藏文件)的详细信息

ls  -la /oldboy

 

54.在/oldboy目录下创建以你名字的目录。(已知oldboy目录不存在,请用一条命令实现)

mkdir -p /oldboy/jh

 

55.在你名字的目录下面创建两个文件,分别为test.txt,test.log

 touch /oldboy/jh/test{txt,log}

 

 二、练习题二

1. 欲把当前目录下的file1.txt复制为file2.txt 命令是?

cp file1.txt ./file2.txt


2.批量创建oldboy01,oldboy02,...oldoby05这几个目录

mkdir oldboy{01..05}


3.显示/oldboy 下面所有文件(包含隐藏文件)的详细信息

ls -la /oldboy


4.在/oldboy目录下创建以你名字的目录。(已知oldboy目录不存在,请用一条命令实现)

mkdir -p /oldboy/jh


5.在你名字的目录下面创建两个文件,分别为test.txt,test.log

touch /oldboy/jh/test,{txt,log}

 

6.把test.txt文件移动到/tmp目录下面

mv  /oldboy/jh/test.txt /tmp


7.把test.log文件重命名为test.sh

cd  /oldboy/jh/

mv test.log test.sh


8.删除test.sh这个文件

rm -f test.sh


9.删除oldboy这个目录

rm -rf /oldboy


10.切换到/tmp目录下,查看当前的工作位置,同时创建data1、data2、data3、共三个目录。

cd /tmp

pwd

mkdir data{1..3}

 

11.接上一题,分别在data1、data2、data3三个目录下创建3个文件,名字为oldboy1、oldboy2、oldboy3.然后查看/tmp目录的整个目录结构情况,最后检查下data1和oldboy1两个对象的属性。

touch data{1..3}/oldboy{1..3}

tree /tmp

ll  -d data1

ll data/oldboy1

 

12.把/etc/hosts文件复制到/tmp/data1目录下,然后把data1目录复制到/opt/目录下。

cp /etc/hosts /tmp/data1

cp /tmp/data1 /opt


13.将/tmp/data1目录移动到/root目录下,然后删除/opt/data1目录下的hosts文件,最后删除/opt目录下的data1目录。

mv /tmp/data1 /root

rm -f /opt/data1/hosts

rm -rf /opt/data1

 

14.查看oldboy.txt文件中的内容,并显示行号(请使用cat命令)。

cat -n oldboy.txt 


15.使用cat命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中

cat >test,txt<<EOF

oldboy

oldgirl

student

EOF

 

16.查看系统中/etc/services文件中的内容(使用more和less命令,进行上下页查看,并搜索关键字‘ssh’,之后退出。)

more /etc/services b上一页 空格下一页 /ssh q退出
less /etc/services b上一页 空格下一页 /ssh q退出


17.使用cat命令查看文本文件的内容时要对所有的输出行进行显示行号,怎么实现?

-n


18.使用mv命令,下列说法错误的是? CD

A.mv命令可以重命名文件
B.mv命令可以移动文件
C.mv命令可以复制文件
D.mv命令可以删除文件
19.删除文件的命令为?


20.显示"I'm a student"到屏幕上面

echo "I'm a student"


21.将"I'm a student"追加到hello.txt文件中

echo "I'm a student">>hello.txt


22.将/etc/passwd文件复制到/opt目录中

cp /etc/passwd /opt


23.将/tmp目录复制到当前用户的家目录下

cp -a /tmp /root


24.将/opt目录下的hosts文件移动到/root目录下,并将其改名为ip.txt 

mv /opt/hosts /root  ip.txt


25.把/var/log/目录下的所有文件拷贝到/opt目录下 

cp -a /var/log/* /opt


26.使用echo命令创建一个非空文件

echo "1"  >2.txt


27.使用echo命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中

echo -e "oldboy\noldgirl\nstudent" >test.txt

 

28.将/etc/hosts和/etc/passwd两个文件合并为一个新文件,文件名称为test.log 

cat /etc/hosts /etc/passwd >>test,log


29.将/etc/services文件拷贝到/root目录下

cp /etc/services  /root


30.分页查看/root/services文件,要求从第10行开始显示

 more +10 /root/services

 

 三、练习题三

1.打开这个网站http://nginx.org/download/,下载一个结尾为tar.gz的软件包

wget  http://nginx.org/download/nginx-1.18.0.tar.gz 


2.同样打开上面的网站,下载一个结尾为tar.gz的软件包,要求下载之后的软件包名为nginx.tar.gz

wget -O ./nginx.tar.gz http://nginx.org/download/nginx-1.18.0.tar.gz 


3.打开此网站https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/ 下载一个结尾为rpm的软件包 

wget  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-server-pgsql-4.0.9-2.el7.x86_64.rpm 


4.同样打开上面这个网站,下载一个结尾为rpm的软件包,要求下载之后的软件包名为zabbix.rpm

wget -O ./zabbix.rpm  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-web-4.0.20-1.el7.noarch.rpm


5.在linux中访问qls的博客网站,访问主页就可以

root@jindada ~]# curl -L https://www.increase93.com/

6.在linux中访问qls的博客网站,要求把主页的内容保存到qls.hml文件中。
curl -o jindada.html https://www.increase93.com/

7.在linux中访问百度的首页
 curl https://www.baidu.com

 

8.在linux中访问百度的首页,要求把主页的内容保存到baidu.html文件中
curl -o baidu.html www.bidu.com

9.把/etc/hosts文件下载到本地电脑桌面

sz /etc/hosts

 

 

10.把/etc/services文件下载到本地电脑D盘中

sz /etc/hosts


11.把你的课堂笔记上传到linux系统中

rz


12.把你的习题笔记上传到linux系统中的/opt目录下面

cd /opt

rz


13.如果我要把本地电脑中的目录上传到linux系统,请问怎么上传?

打包压缩上传

xftp上传


14.查找ifconfig命令的绝对路径在哪里?你能使用几种方法实现?

which ifconfig

locate ifconfig

type -p ifconfig

whereis -b ifconfig


15.查找netstat命令的绝对路径在哪里?你能使用几种方法实现?

which netstat

locate netstat

type -p netstat

whereis -b netstat


16.统计文件/etc/hosts的行数?你能使用几种方法实现?

cat  -n /etc/hosts |tail -1

grep -c '.*' /etc/hosts

wc -l /etc/hosts

 

17.改变bash的提示符实际上就是改变变量?

ps1


18.显示/etc/passwd文件的前5行内容。

head -5 /etc/passwd

grep -n '.*' /etc/passwd |grep -wA   4 '^1'

sed -n '1,5p' /etc/passwd

awk 'NR<6' /etc/passwd


19.显示/etc/passwd文件的最后5行内容。

tail -5 /etc/passwd

 

20.显示/etc/services文件的第11行到第20行的内容

cp /etc/services ./

cat -n services |head -20 |tail

grep -n '.*' services |grep -wA 9 '^11'

sed -n '11,20p' services

awk 'NR>10 &&NR<21' services


21.查看系统中的cd命令是不是内嵌命令

type  -a cd


22.找出系统中文件名为oldboy.txt的所有文件。

find / -type f -name "oldboy.txt"


23.找出系统中名为oldboy的所有目录。

find / -type d -name  "oldboy"


24.找出系统中文件名以oldboy开头的所有文件。

find / -type f -name "oldboy*"


25.rm是个危险的命令,要求用命令rm删除文件时提示“rm command no bny”,怎么实现?

alias rm="echo rn command no bny"


26.设置rm命令存在别名之后,要删除/oldboy这个目录,怎么实现?

\rm -rf /oldboy


27.实时查看系统日志/var/log/message的更新

tail -f /var/log/message


28.查找出系统中为s类型的文件

find / -type s


29.查找出系统中为p类型的文件

find / -type p


30.只显示出/etc/passwd文件的第五行   

cat - n /etc/passwd |head -5 |tail -1

grep -wn '^5'   /etc/passwd

sed -n '5p' /etc/passwd

awk 'NR==5' /etc/passwd

 

四、练习题四

1.已知sort.log文件内容如下,请根据文件内容的第二列进行倒序排序。
cat >>sort.log<<'EOF'
218.65.30.25 68652
218.65.30.53 34326
218.87.109.154 21201
112.85.42.103 18065
112.85.42.99 17164
218.87.109.151 17163
218.87.109.150 17163
218.65.30.61 17163
218.65.30.126 17163
218.65.30.124 17163
EOF

sort    -nk2r sort.log

 

2.统计系统文件/etc/services有多少行。

cat -n /etc/services |tail -1

grep -c '.*' /etc/services

wc -l /etc/services

awk '{print NR,$0}' /etc/services |tail -1

 

3.已知文件内容如下,请对该文件的字符串出现的次数进行统计,并从小到大的进行排序出来。
cat>>uniq.txt<<'EOF'
oldboy
oldgirl
oldboy
egon
student
oldgirl
oldboy
EOF

sort -n uniq.txt |uniq -c

 

4.取出系统中的文件/etc/passwd的第七列(以:为分隔符)。

cut -d ':' -f7 /etc/passwd

awk -F: '{print $7}' /etc/passwd

sed -nr 's#(.*)(:.*:)(.*$)#\3#gp' /etc/passwd

 

5.已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。
test
qiudao
oldboy

grep -v 'oldboy' test.txt

sed '/oldboy/d' test.txt

awk '!/oldboy/' test.txt


6.只查看/etc/passwd文件内第5到第15行的内容

cat -n /etc/passwd |head -15 |tail -11

grep -n '.*' /etc/passwd |grep -wA  10  '^5'

sed -n '5,15p' /etc/passwd

awk 'NR>4 && NR <16'  /etc/passwd

 

7.test.txt 的内容如下,要求过滤出不包含oldgirl的行。
oldboy
oldgirl
qiudao 

grep -v 'oldboy' test,txt

 

8.请执行命令取出linux中eth0的IP地址分别是ip和ifconfig的命令(请用cut,有能力者也可分别用awk,sed命令答)。

ip a s eth0 |sed -nr '3s#(.*et )(.*)(/24.*$)#\2#gp'

ip a s eth0 |awk 'NR ==3{print $2}' |cut -d '/' -f1

ip a s eth0 |awk -F '[ /]*' 'NR ==3{print $3}' 

ifconfig eth0 |sed -nr '2s#(.*net )(.*)( ne.*$)#\2#gp'

ifconfig eth0 |awk 'NR==2 {print $2}'

 

9.删除/etc/passwd文件的前三行内容。

sed  '1,3d' /etc/passwd

 

10.统计文件/etc/hosts的行数?你能使用几种方法实现?

grep -c ',*' /etc/hosts

wc -l /etc/hosts

cat -n /etc/hosts |tail -1


11.统计文件/etc/services的字节数。你能使用几种方法实现?

ll /etc/services

wc -c /etc/services


12.执行下面的命令echo "Im qls , is QQ 1176494252" >file.txt,要求取出该文件中的姓名和QQ号。

cut -d ' ' -f2,6 file.txt

awk '{print $2,$6}' file.txt

grep -oE '1176494252|qls' file.txt

sed -nr 's#(.* )(.*)( ,.*)( .*$)#\2\4#pg' file.txt


13.执行如下命令
cat > file.txt <<EOF
abc
123
abc
123
def
EOF
要求去除重复的列

 

sort  file.txt |uniq


14.接上题,取出每列出现的次数

sort  file.txt |uniq -c

 

15.统计/var/log下的文件个数,不统计下级目录。

ll /var/log |grep '^-' |wc -l

ll /var/log  |grep -c '^-' 

 

16.统计/var/log下的所有文件和目录个数,不包含隐藏文件。

tree  /var/log | tail -1 | cut -d " " -f1,3

 

17.以“:”为分隔符,取出/etc/passwd第一行的最后一列的内容

 head -1 /etc/passwd |cut -d ':' -f7

 sed -nr '1s#(.*)(:.*:)(.*$)#\3#pg' /etc/passwd

awk -F: 'NR==1 {print $7}' /etc/passwd

18.过滤出/etc/passwd以nologin结尾的内容,并统计行数

grep -c 'nologin$' /etc/passwd

 

19.分析如下日志内容,每个域名被访问次数

cat>catweb.log <<EOF
http://www.oldboy.com/index.html
http://www.oldboy.com/1.html
http://post.oldboy.com/index.html
http://mp3.oldboy.com/index.html
http://www.oldboy.com/3.html
http://post.oldboy.com/2.html
EOF

cat catweb.log  |cut -d '/' -f3 |sort |uniq -c

sed -nr 's#(.*/)(.*)(/.*$)#\2#gp' catweb.log |sort |uniq -c

 

20.显示/etc/services文件的第11行到第20行的内容

cat -n /etc/services |head -20 |tail

 

21.已知文件123.txt内容如下,请过滤出包含oldboy字符串的命令
test
OLDBOY
online
oldboy
oldboyoldboy

grep  'oldboy' 123.txt


22.过滤出文件123.txt中不包含test的行,并给其过滤出来的内容加上行号

grep  -nv ‘test' 123.txt


23.要求过滤出文件123.txt中包含oldboy的字符串,忽略大小写。

grep -i 'oldboy' 123.txt


24.要求过滤出文件123.txt中包含online字符串的行,并统计共有多少行。

grep -n 'online' 123.txt |grep -c '.*'


25.要求过滤出文件123.txt中包含oldboy的单词。

grep -o 'oldboy' 123.txt

 

写一个文件,文件内容如下,下面几题请用该文件作答?
cat >>test.txt<<EOF
server {
lisTEN 80;
server_nAme www.oldboy.com;
root /code/dOcs
index INDEX.html;
}
EOF

26.过滤www.oldboy.com这段关键字

[root@jindada ~]# grep  'www.oldboy.com'  test.txt 

server_nAme www.oldboy.com;

[root@jindada ~]# sed  -n '/www.oldboy.com/p'  test.txt 

server_nAme www.oldboy.com;

[root@jindada ~]# awk  '/www.oldboy.com/' test.txt

server_nAme www.oldboy.com;

 

27.同时过滤出root和index的行,不区分大小写

[root@jindada ~]# grep  -Ei  'root|index'  test.txt 

root /code/dOcs

index INDEX.html;

[root@jindada ~]# sed -nr '/root|ROOT|index|INDEX/p' test.txt 

root /code/dOcs

index INDEX.html;

[root@jindada ~]# awk  '/root|ROOT|index|INDEX/' test.txt 

root /code/dOcs

index INDEX.html;

 

28.过滤index,区分大小写

[root@jindada ~]# grep  'index'  test.txt 

index INDEX.html;

[root@jindada ~]# awk '/index/'  test.txt 

index INDEX.html;

[root@jindada ~]# sed -n  '/index/p'  test.txt 

index INDEX.html;

 

29.过滤出带"O"的行,不区分大小写

[root@jindada ~]# grep  -i 'o'  test.txt 

server_nAme www.oldboy.com;

root /code/dOcs

[root@jindada ~]# sed  -nr '/o|O/p'  test.txt

server_nAme www.oldboy.com;

root /code/dOcs

[root@jindada ~]# awk  '/o|O/'  test.txt

server_nAme www.oldboy.com;

root /code/dOcs

 

30.过滤出不带";"的行

[root@jindada ~]# grep  -v ';'  test.txt

server {

root /code/dOcs

}

[root@jindada ~]# sed  '/;/d' test.txt

server {

root /code/dOcs

}

[root@jindada ~]# awk  '!/;/' test.txt

server {

root /code/dOcs

}

 

31.过滤出以s开头的行

[root@jindada ~]# grep  '^s'  test.txt

server {

server_nAme www.oldboy.com;

[root@jindada ~]# sed -n '/^s/p'  test.txt

server {

server_nAme www.oldboy.com;

[root@jindada ~]# awk  '/^s/'  test.txt

server {

server_nAme www.oldboy.com;

 

32.统计该文件的行数

wc  -l

 

33.如果某一天你误操作了"rm -rf *",会发生哪些情况

看目录   

删除当前目录下的所有  

 

34.已知123.txt文件内容如下:

linlaoshi

qiulaoshi

oldboy 

要求过滤出oldboy这一行的内容?你有几种方法?

[root@jindada ~]# grep 'oldboy' 456.txt 

oldboy

[root@jindada ~]# sed  -n '/oldboy/p' 456.txt 

oldboy

[root@jindada ~]# awk '/oldboy/' 456.txt 

oldboy

 

 

35.接上题,要求不显示oldboy这行内容,怎么实现?你有几种方法?

[root@jindada ~]# grep -v 'oldboy' 456.txt 

linlaoshi

qiulaoshi

[root@jindada ~]# sed  '/oldboy/d' 456.txt 

linlaoshi

qiulaoshi

[root@jindada ~]# awk '!/oldboy/' 456.txt 

linlaoshi

qiulaoshi

 

 

 

五、练习题五

1.取出系统中的文件/etc/passwd的第七列(以:为分隔符)。

[root@jindada ~]# cut -d ':' -f7 passwd 

[root@jindada ~]# awk -F: '{print $7}' passwd 

 

2.已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。

test

qiudao

oldboy

[root@jindada ~]# grep -v 'oldboy' 789.txt 

test 

qiudao

[root@jindada ~]# sed '/oldboy/d' 789.txt 

test 

qiudao

[root@jindada ~]# awk '!/oldboy/' 789.txt 

test 

qiudao

 

3.只查看/etc/passwd文件内第5到第15行的内容

root@jindada ~]# cat -n passwd |head -15 |tail

[root@jindada ~]# grep -n '.*' passwd  | grep  -wA 10 '^5'

[root@jindada ~]# sed -n '2,15p' passwd

[root@jindada ~]# awk 'NR>4&&NR<16' passwd 

 

4.把test.txt文件中的oldboy替换为oldgirl,给出命令

[root@jindada ~]# sed 's#oldboy#oldgirl#g' 789.txt 

test 

qiudao

oldgirl

 

5.test.txt 的内容如下,要求过滤出不包含qiudao的行。有几种方法可以实现

oldboy

oldgirl

qiudao

[root@jindada ~]# grep -v 'qiudao' 1.txt 

oldboy

oldgirl

[root@jindada ~]# sed '/qiudao/d' 1.txt 

oldboy

oldgirl

[root@jindada ~]# awk '!/qiudao/' 1.txt 

oldboy

oldgirl

 

6.把文件/etc/passwd文件中的/sbin/nologin替换为/bin/bash 

[root@jindada ~]# sed 's#/sbin/nologin#/bin/bash#g' passwd 

 

7.把/etc/selinux/config文件中的SELINUX=enforcing行中的enforcing替换成disabled

[root@jindada ~]# sed  -i  '/^S/s#enforcing#disabled#g'  /etc/selinux/config

 

8.现将文件b.txt 中的所有123 替换成def,请问如何实现?

[root@jindada ~]# sed -i 's#123#def#g' b.txt

 

9.将文件的test.txt中的第10行的oldboy改为oldgirl

[root@jindada ~]# sed -i '10s#oldboy#oldgirl#g' b.txt

 

10.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。

[root@jindada ~]# ifconfig eth0 |head -2 |tail -1 |cut -d ' ' -f10

10.0.0.200

[root@jindada ~]# ifconfig  eth0 |sed -n '2p' |sed -r 's#(^.*et )(.*)( n.*$)#\2#g'

10.0.0.200 

[root@jindada ~]# ifconfig  eth0 |awk -F '[ /]*' 'NR==2{print $3}'

10.0.0.200

 

11.使用命令调换/etc/passwd文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?

[root@jindada ~]# sed  -r  's#(^.*)(:x.*:)(.*)#\3\2\1#g'  passwd 

[root@jindada ~]# awk  -F:  '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}'  passwd 

[root@jindada ~]# awk  -F: -vOFS=":"  '{a=$1;$1=$NF;$NF=a;print}'  passwd  

 

12.先拷贝,再删除/etc/passwd文件的前三行内容。

[root@jindada ~]# sed '1,3d' passwd 

 

13.使用sed命令打印出/etc/passwd文件的第一行到第三行

[root@jindada ~]# sed -n '1,3p' passwd 

 

14.过滤出/etc/services 文件包含3306或1521两数字所在的行的内容。(三种方法)

[root@jindada ~]# grep  -E  '3306|1521'  /etc/services 

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

[root@jindada ~]# sed  -nr '/3306|1521/p' /etc/services

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

[root@jindada ~]# awk  '/3306|1521/'  /etc/services

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

 

15.在linux 系统中,当LAN(局域网)内没有条件记案例DNS 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置( /etc/hosts)文件(请写全路径)

 

16.写出redhat中,配置网卡及dns的配置文件是什么?有什么区别?

DNS1=xxxx 

DNS2=xxxx

 

DNS配置文件

/etc/resolv.conf     立即生效 

 

nameserver   xxxxx

 

nameserver   xxxxx

 

生效的方式的不一样 

 

书写的方式不一样 

 

17.若要将鼠标从VM中释放出来,可按()键完成。

ctrl + alt  

 

18.如何统计/etc下有多少个目录,不包括隐藏目录,只显示目录个数。

[root@jindada ~]# tree -d  /etc  | tail -1

605 directories

 

19.统计secure.log文件中每个ip地址破解你用户密码的次数(包含Failed password字符串的行属于破解密码的,日志群里有,文件很大,建议不要使用cat打开)。

[root@jindada ~]# awk  '/Failed password/{print $(NF-3)}'  secure.log |sort | uniq -c | sort -rn | head 

  68652 218.65.30.25

  34326 218.65.30.53

  21201 218.87.109.154

  18065 112.85.42.103

  17164 112.85.42.99

  17163 218.87.109.151

  17163 218.87.109.150

  17163 218.65.30.61

  17163 218.65.30.126

  17163 218.65.30.124

 

20.输入last,统计当前连接本机的每个远程终端IP的连接总次数

[root@jindada ~]# last  | grep  'pts' |awk  '{print $3}' | sort | uniq -c | sort -rn 

      8 10.0.0.1

 

21.输入lscpu,取出当前系统的cpu核心数

[root@jindada ~]# lscpu | grep '^Core'

Core(s) per socket:    1

[root@jindada ~]# lscpu | grep '^Core' | awk  '{print $NF}'

1

 

 

22.输入df -h,取出当前系统根分区剩余可用磁盘空间

[root@jindada ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        98G  1.2G   97G   2% /

devtmpfs        980M     0  980M   0% /dev

tmpfs           991M     0  991M   0% /dev/shm

tmpfs           991M  9.6M  981M   1% /run

tmpfs           991M     0  991M   0% /sys/fs/cgroup

/dev/sda1       497M  120M  378M  25% /boot

tmpfs           199M     0  199M   0% /run/user/0

[root@jindada ~]# df -h | awk  'NR==2{print $4}'

97G

[root@jindada ~]# df -h | awk  '/\/$/'

/dev/sda3        98G  1.2G   97G   2% /

[root@jindada ~]# df -h | awk  '/\/$/{print $4}'

97G

 

23.显示/proc/meminfo文件中以s开头的行(忽略大小写)

[root@jindada ~]# grep -i  '^s'  /proc/meminfo

SwapCached:            0 kB

SwapTotal:       2097148 kB

SwapFree:        2097148 kB

Shmem:              9732 kB

Slab:             154764 kB

SReclaimable:     104372 kB

SUnreclaim:        50392 kB

 

[root@jindada ~]# sed  -nr  '/^s|^S/p'  /proc/meminfo

SwapCached:            0 kB

SwapTotal:       2097148 kB

SwapFree:        2097148 kB

Shmem:              9732 kB

Slab:             154764 kB

SReclaimable:     104372 kB

SUnreclaim:        50392 kB

[root@jindada ~]# awk  '/^s|^S/'  /proc/meminfo

SwapCached:            0 kB

SwapTotal:       2097148 kB

SwapFree:        2097148 kB

Shmem:              9732 kB

Slab:             154764 kB

SReclaimable:     104372 kB

SUnreclaim:        50392 kB

 

24.执行命令echo "I am jindada,myqq is 1176494252">oldboy.txt,

现在需要从文件中过滤出“jindada”和“1176494252”字符串,请给出命令?(最少三种方法)

[root@jindada ~]# echo "I am jindada,myqq is 1176494252">oldboy.txt

[root@jindada ~]# cat oldboy.txt

I am jindada,myqq is 1176494252

[root@jindada ~]# awk  -F '[ ,]'  '{print $3,$6}'  oldboy.txt

jindada 1176494252

[root@jindada ~]# tr ',' ' ' < oldboy.txt 

I am jindada myqq is 1176494252

[root@jindada ~]# tr ',' ' ' < oldboy.txt  |cut -d " " -f3,6

jindada 1176494252

[root@jindada ~]# sed  's#^.*m ##g'  oldboy.txt | sed 's#,.* # #g'

jindada 1176494252

 

25.接上题,如果需要从文件中过滤出“jindada,1176494252”字符串,请再给出命令?

[root@jindada ~]# sed  's#^.*m ##g'  oldboy.txt | sed 's#,.* #,#g'

jindada,1176494252

[root@jindada ~]# tr ',' ' ' < oldboy.txt  |cut -d " " -f3,6 | tr ' ' ','

jindada,1176494252

[root@jindada ~]# awk  -F '[ ,]'  '{print $3","$6}'  oldboy.txt

jindada,1176494252

 

26.我想在/data/oldboyedu目录下面创建 一个oldboy.txt文件,出现了如下报错。

[root@qiudao ~]# touch /data/oldboyedu/oldboy.txt

touch: cannot touch ‘/data/oldboyedu/oldboy.txt’: No such file or directory

问:为何出现这样的错误?该怎么解决?

 

/data/oldboyedu/ 目录不存在  

mkdir  -p  /data/oldboyedu/ 

touch /data/oldboyedu/oldboy.txt

 

27.翻译题

01).command not found  #命令找不到   

02).No such file or directory  #没有这个文件或者目录   

03).File exists #文件已经存在

04).Is a directory #这是个目录

05).Not a directory  #不是一个目录

 

28.在/backup下创建10个.txt的文件,找到/backup目录下所有后缀名为.txt的文件

touch  /backup/{01..10}.txt 

ll  /backup/*.txt

 

29.显示/etc/services文件的第10行到第20行的内容?

[root@jindada ~]# sed -n '10,20p' services 

 

30.显示文件/etc/services的大小?

[root@jindada ~]# wc -c services 

[root@jindada ~]# ll services 

-rw-r--r-- 1 root root 670293 Jul 17 16:48 services

 

[root@jindada ~]# stat services 

  File: ‘services’

  Size: 670293    Blocks: 1312       IO Block: 4096   regular file

Device: 803h/2051dInode: 134380615   Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2020-07-17 16:48:08.524679627 +0800

Modify: 2020-07-17 16:48:01.909679477 +0800

Change: 2020-07-17 16:48:01.909679477 +0800

 Birth: -

 

31.以“:”为分隔符,取出/etc/passwd第一行的第七列也就是最后一列的内容?(两种方法)

[root@jindada ~]# sed -nr '1s#(.*)(:.*:)(/.*)#\3#gp' passwd 

/bin/bash

[root@jindada ~]# awk -F:  'NR==1{print $NF}' passwd 

/bin/bash

 

32.找出/var/log目录中以.log结尾的文件,并显示这些文件的属性信息。

[root@jindada ~]# ll /var/log/*.log 

 

33.寻找名称为mytest.log的文件

[root@jindada ~]#find  /  -type f   -name "mytest.log"

 

34.用命令行更改config.txt文件,把里面的“name”更改为“address”

[root@jindada ~]#sed  -i  's#name#address#g'   config.txt

 

35.把/etc/passwd文件中的:替换成#

[root@jindada ~]#tr  ':'  '#'  < /etc/passwd

 

36.说明下面这几个文件的作用:

/etc/hostname、#主机名

/etc/resolv.conf、#本地DNS文件

/etc/hosts#本地域名解析文件   

 

37.尝试使用sed命令的后向引用和awk命令取出ip地址,请分别使用ip和ifconfig命令取出。

前面题目有

 

38.在123.txt文件末尾插入‘test’。(两种方法)

sed  '$atest'  123.txt

echo 'test'  >> 123.txt

 

cat >>123.txt<<EOF

test

EOF

 

 

39.将/etc/passwd文件中第一行到第五行的root替换为admin?

sed  -i  '1,5s#root#admin#g'  passwd  

 

40.统计nginx访问日志access.log中每个访问ip出现次数最多的10个。(已知ip在第一列,日志群里有) 

[root@jindada ~]# awk  '{print $1}'  access.log  |sort | uniq -c |sort -rn |  head

  16033 139.226.172.217

   1041 47.102.42.79

    994 180.95.238.82

    727 113.140.249.33

    647 223.166.74.124

    525 112.87.125.55

    429 182.138.163.167

    373 112.87.125.53

    352 223.166.74.198

    308 182.138.158.169

 

41.取出下列文件的权限如:0644 ?(两种方法)

[root@jindada ~]# stat  jindada.txt 

  File: ‘123.txt’

  Size: 44        Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051dInode: 67160518    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2019-07-27 16:55:57.055131412 +0800

Modify: 2019-07-27 16:55:50.098131214 +0800

Change: 2019-07-27 16:55:50.101131214 +0800

 

[root@jindada ~]# stat -c %a  passwd 

644

[root@jindada ~]# stat passwd    | awk  -F '[(/]'  'NR==4{print $2}'

0644

 

42.删除jindada.txt文件中的第10行到20行。(两种方法)

sed  '10,20d'   jindada.txt

awk  'NR<10 || NR>20'  jindada.txt

 

 六、练习题六

#准备文件

[root@jindada ~]# cat file.txt 

server {

listen 80;

server_name test.oldboy.com;

index index.html;

}

 

1.跳转到某行时使用

nG #跳到n行

ngg#跳到n行

 

2.复制server{   到    }结尾的这一行,  粘贴到 } 结尾的下一行

光标在第一行,命令模式下yy然后光标移到}这一行,p粘贴

 

3.删除listen相关的所有行

:2d

 

4.将server_name 替换为SERVER_NAME

:3s#server_name#SERVER_NAME#g   

 

5.删除oldboy.com,boy删除  

:3s#boy##g 

 

6.撤销一次  

u

 

7.在编辑模式下修改 test.oldboy.com为test.ett.com

i进入编辑模式,光标移到old处,回车删除old,输入ett,ESC返回命令模式

 

8.在index 最后面,添加index.php

i进入编辑模式,光标移到index 后面,输入index.php,ESC返回命令模式

 

9.在index行下面插入一行内容为:root  html;。

o进入编辑模式 输入root  html

 

10.退出编辑模式。

ESC返回命令模式

 

11.将/etc/passwd 复制到/root/目录下,并重命名为test.txt

[root@jindada ~]# cp /etc/passwd /root/test.txt 

 

12.分别向下、向右、向左、向右移动5个字符,分别向下、向上翻两页

向下5j、向右5k、向左5h、向右5l

向下翻两页ctrl +f  ctrl+f

向上翻两页ctrl +b ctrl +b

 

13.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到test.txt文件的最后一行,移动到文件的首行

移动到行尾$

移动到行首^

移动到test.txt文件的最后一行G

移动到文件的首行1G

 

14.搜索文件中出现的 root 并数一下一共出现多少个

命令模式/root搜索 总共4个

 

15.把从第一行到第三行出现的root 替换成admin,然后还原上一步操作

命令模式:1,3s#root#damin#g

还原操作u

 

16.把整个文件中所有的root替换成admin

命令模式:%s#root#damin#g

 

17.把光标移动到20行,删除本行,还原上一步操作

命令模式:20d

还原操作u

 

18.删除从5行到10行的所有内容,还原上一步操作

命令模式:5,10d

还原操作u

 

19.复制2行并粘贴到11行下面,还原上一步操作(按两次u)

复制2行2yy

粘贴到11行p

还原操作uu

 

20.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作(按两次u)

11gg,5yy

粘贴到8行p

还原操作uu

 

21.把13行到18行的内容移动文件的尾部,还原上一步操作(按两次u)

13gg,6dd

复制2行2yy

粘贴到尾部p

还原操作uu

 

22.将文件中所有的/sbin/nologin为/bin/bash

命令模式:%s#/sbin/nologin#/bin/bash#g  

 

23.在第一行下面插入新的一行,并输入"# Hello!"

1gg,o进入编辑模式,大输入# Hello!

 

24.保存文档并退出

:wq

:x

zz

 

#根据文件回答下列习题

[root@jindada ~]# cat proxy.conf

server {

    Listen 8080;

    Server_Name vim.OldboyEDU.com;

    location / {

        proxy_pass http://127.0.0.1:8080;

        proxy_set_header Host $http_host;

        proxy_set_header X-Forward-for;

        proxy_intercept_errors on;

        proxy_next_upstream error timeout;

        proxy_next_upstream_timeout 3s;

        proxy_next_upstream_tries 2;

        error_page 500 502 403 404 = /proxy_error.html;

    }

    location = /proxy_error.html {

        root /code/proxy;

    }

}

 

25.使用vim打开proxy.conf文件

vim proxy.conf

 

26.修改Listen为listen小写,并将8080修改为80

:2s#Listen 8080#listen 8080#g 

 

27.修改Server_Name为server_name小写。

:3s#Server_Name#server_name#g 

 

28.修改vim.OldboyEDU.com为vim.oldboy.com

:3s#vim.OldboyEDU.com#vim.oldboy.com#g

 

29.在server_name行下插入一行 root /code;

2gg,o进入编辑模式,输入root /code

 

30.复制5-14行的内容,然后将其粘贴到14行下面

5gg

10yy

粘贴到14行p

 

31.删除与proxy_set_header相关的两行全部删除

6G, 2dd

 

32.如上操作完成后,在13-20行前面加上#号

:13,20s#^#\##g

 

33.删除21-23的行,然后保存当前文件

21gg

3dd

:wq

 

 

 七、练习题七

1.什么是用户?

能够登录系统的就是用户

 

2.Linux与windows系统的用户有什么区别?

Linux支持多用户同时登录

Windows默认不支持同时多用户登录的  

 

3.使用什么命令可以查看用户是否存在?

id   user

grep  'user'  /etc/passwd  

 

4.跟用户相关的配置文件都有哪些?分别存放的是什么?

/etc/passwd  用户基本信息    /etc/shadow   用户密码信息 

5./etc/passwd文件以':' 为分割符, 分为7个字段,请说明一下每个字段的具体含义?

6./etc/shadow文件以':' 为分割符, 分为9个字段,请说明一下每个字段的具体含义?

 

7.什么是用户的UID?

用户自己独有的ID号码  编号 

 

8.不同的用户对应UID号范围是多少?

约定  

 

9.新建用户user1、user2,用户user2不允许登陆到系统中。

useradd  user1

useradd  -M  -s  /sbin/nologin

 

10.创建普通用户oldboy,其ID号为789.

useradd  -u789   oldboy

 

11.创建虚拟用户test,其ID号为666

useradd  -u666  -M  -s  /sbin/nologin  test

 

12.修改oldboy用户的ID号,修改为777.

usermod  -u 777  oldboy

 

13.修改用户test的命令解释器,使其可以登录到系统。

usermod  -s  /bin/bash   test  

 

14.删除用户user1.不删除其家目录。

userdel  user1

 

15.删除用户user2,不保留其家目录。

userdel  -r  user2

 

16.给oldboy用户创建一个密码为123,并尝试登录。

echo "123"  | passwd  --stdin  oldboy 

 

17.默认情况下管理员创建了一个用户,就会在()目录下创建一个用户主目录

/home

 

18.如何检查系统中存在oldboy用户,并且显示用户id信息

id  oldboy 

grep  oldboy  /etc/passwd  

 

19.创建gid为1666,名字为www的用户组

groupadd  -g1666  www

 

20.创建uid为1666,gid为1666,名字为www的用户

useradd  -u1666  -g1666  www

 

21.创建uid为1888,注释信息为"虚拟用户",不创建家目录,不能登录系统,名字为oldboyedu的用户

useradd  -u1888 -c "虚拟用户"  -M  -s /sbin/nologin   oldboyedu

 

 

22.批量创建10个用户,用户名为oldboy1 oldboy2 oldboy3 .... oldboy10.

[root@jindada ~]# echo {1..10} |xargs -n1

1

2

3

4

5

6

7

8

9

10

[root@jindada ~]# seq 10

1

2

3

4

5

6

7

8

9

10

 

[root@jindada ~]# seq 10  | awk  '{print "oldboy"$1}'

oldboy1

oldboy2

oldboy3

oldboy4

oldboy5

oldboy6

oldboy7

oldboy8

oldboy9

oldboy10

[root@jindada ~]# seq 10  | awk  '{print "useradd  oldboy"$1}'

useradd  oldboy1

useradd  oldboy2

useradd  oldboy3

useradd  oldboy4

useradd  oldboy5

useradd  oldboy6

useradd  oldboy7

useradd  oldboy8

useradd  oldboy9

useradd  oldboy10

[root@jindada ~]# seq 10  | awk  '{print "useradd  oldboy"$1}' | bash 

[root@jindada ~]# tail  /etc/passwd

oldboy1:x:1014:1014::/home/oldboy1:/bin/bash

oldboy2:x:1015:1015::/home/oldboy2:/bin/bash

oldboy3:x:1016:1016::/home/oldboy3:/bin/bash

oldboy4:x:1017:1017::/home/oldboy4:/bin/bash

oldboy5:x:1018:1018::/home/oldboy5:/bin/bash

oldboy6:x:1019:1019::/home/oldboy6:/bin/bash

oldboy7:x:1020:1020::/home/oldboy7:/bin/bash

oldboy8:x:1021:1021::/home/oldboy8:/bin/bash

oldboy9:x:1022:1022::/home/oldboy9:/bin/bash

oldboy10:x:1023:1023::/home/oldboy10:/bin/bash

 

 

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd \1#gp'

useradd 1

useradd 2

useradd 3

useradd 4

useradd 5

useradd 6

useradd 7

useradd 8

useradd 9

useradd 10

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd oldboy\1#gp'

useradd oldboy1

useradd oldboy2

useradd oldboy3

useradd oldboy4

useradd oldboy5

useradd oldboy6

useradd oldboy7

useradd oldboy8

useradd oldboy9

useradd oldboy10

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd oldboy\1#gp' |bash

 

23.迁移oldboy8用户的家目录到/tmp/oldboy8

usermod  -md  /tmp/olsboy8   oldboy8  

 

24.oldboy8用户的用户名修改成oldboy888

usermod  -l  oldboy888  oldboy8

 

25.锁定oldboy888用户,解锁oldboy888用户

usermod  -L oldboy888

usermod  -U  oldboy888

 

26.创建普通用户test01、test02、test03,要求UID为2888,2999,2998

[root@jindada ~]# echo -e "01  2888\n02  2999\n03  2998"

01  2888

02  2999

03  2998

[root@jindada ~]# echo -e "01  2888\n02  2999\n03  2998" |awk '{print "test"$1}'

test01

test02

test03

[root@jindada ~]# echo -e "01  2888\n02  2999\n03  2998" |awk '{print $2"test"$1}'

2888test01

2999test02

2998test03

[root@jindada ~]# echo -e "01  2888\n02  2999\n03  2998" |awk '{print $2"  test"$1}'

2888  test01

2999  test02

2998  test03

[root@jindada ~]# echo -e "01  2888\n02  2999\n03  2998" |awk '{print "useradd  -u"$2"  test"$1}'

useradd  -u2888  test01

useradd  -u2999  test02

useradd  -u2998  test03

[root@jindada ~]# echo -e "01  2888\n02  2999\n03  2998" |awk '{print "useradd  -u"$2"  test"$1}' | bash

 

27.给test01用户使用交互式设置密码为123456

passwd  test01

 

28.使用test01用户进行登录。

ssh  test01@10.0.0.100  

 

29.使用非交互式给test01设置密码为oldboy123

echo "oldboy123"  | passwd  --stdin   test01

 

30.使用修改之后的密码进行登录。

ssh  test01@10.0.0.100

 

31.有哪些命令可以查看当前用户的登录情况?

w    who    

 

32.删除用户test02,要求连家目录一起删除。

userdel -r  test02

 

33.请问,我删除了test02用户,哪个文件会发生变化?

/etc/passwd   /etc/shadow   /etc/group  /etc/gshadow

 

34.创建一个虚拟用户oldboy01,要求UID为555,不创建家目录。

useradd  -u555 -M -s /sbin/nologin  

 

35.创建用户时,不指定选项设置参数了,系统创建之后的默认参数是根据什么文件来定义的?

/etc/login.defs

/etc/default/useradd  

 

36.切换普通用户时,出现这样的命令行"-bash-4.1$",这是什么原因造成的,该怎么解决?

家目录不存在

家目录里面配置文件不存在 

cp  -a  /etc/skel/.bash*  ./  

 

37.登录到test01用户,给其用户test03设置密码,发现报错,请问是什么原因?该怎么解决?

普通用户只能给自己设置密码 

 

38.登录到test01用户,给其本用户设置密码为123,报错,请问是什么原因?该怎么解决?

普通用户设置密码至少要8位 并且不能有规律  

 

39.使用root用户给test01用户设置一个18位的随机密码,并进行登录。

echo  $RANDOM | md5sum  | cut -c 1-18  | tee pass.txt  | passwd --stdin test01

mkpasswd  -l 18  

 

40.创建10个用户,前缀是你的姓,后缀为数字序列,比如qiu1等,并设置随机密码,一条命令实现(能否使用多种方法实现)。

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd oldboy\1#gp'

useradd oldboy1

useradd oldboy2

useradd oldboy3

useradd oldboy4

useradd oldboy5

useradd oldboy6

useradd oldboy7

useradd oldboy8

useradd oldboy9

useradd oldboy10

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd oldboy\1 && mkpasswd  -l 18 |tee pass\1\.txt | passwd --stdin oldboy\1#gp' 

useradd oldboy1 11 mkpasswd  -l 18 |tee pass1.txt | passwd --stdin oldboy1

useradd oldboy2 22 mkpasswd  -l 18 |tee pass2.txt | passwd --stdin oldboy2

useradd oldboy3 33 mkpasswd  -l 18 |tee pass3.txt | passwd --stdin oldboy3

useradd oldboy4 44 mkpasswd  -l 18 |tee pass4.txt | passwd --stdin oldboy4

useradd oldboy5 55 mkpasswd  -l 18 |tee pass5.txt | passwd --stdin oldboy5

useradd oldboy6 66 mkpasswd  -l 18 |tee pass6.txt | passwd --stdin oldboy6

useradd oldboy7 77 mkpasswd  -l 18 |tee pass7.txt | passwd --stdin oldboy7

useradd oldboy8 88 mkpasswd  -l 18 |tee pass8.txt | passwd --stdin oldboy8

useradd oldboy9 99 mkpasswd  -l 18 |tee pass9.txt | passwd --stdin oldboy9

useradd oldboy10 1010 mkpasswd  -l 18 |tee pass10.txt | passwd --stdin oldboy10

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd oldboy\1 \&\& mkpasswd  -l 18 |tee pass\1\.txt | passwd --stdin oldboy\1#gp'

useradd oldboy1 && mkpasswd  -l 18 |tee pass1.txt | passwd --stdin oldboy1

useradd oldboy2 && mkpasswd  -l 18 |tee pass2.txt | passwd --stdin oldboy2

useradd oldboy3 && mkpasswd  -l 18 |tee pass3.txt | passwd --stdin oldboy3

useradd oldboy4 && mkpasswd  -l 18 |tee pass4.txt | passwd --stdin oldboy4

useradd oldboy5 && mkpasswd  -l 18 |tee pass5.txt | passwd --stdin oldboy5

useradd oldboy6 && mkpasswd  -l 18 |tee pass6.txt | passwd --stdin oldboy6

useradd oldboy7 && mkpasswd  -l 18 |tee pass7.txt | passwd --stdin oldboy7

useradd oldboy8 && mkpasswd  -l 18 |tee pass8.txt | passwd --stdin oldboy8

useradd oldboy9 && mkpasswd  -l 18 |tee pass9.txt | passwd --stdin oldboy9

useradd oldboy10 && mkpasswd  -l 18 |tee pass10.txt | passwd --stdin oldboy10

[root@jindada ~]# seq 10 | sed -nr 's#(.*)#useradd old\1 \&\& mkpasswd  -l 18 |tee pass\1\.txt | passwd --stdin oldboy\1#gp' |bash

Changing password for user oldboy1.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy2.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy3.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy4.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy5.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy6.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy7.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy8.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy9.

passwd: all authentication tokens updated successfully.

Changing password for user oldboy10.

passwd: all authentication tokens updated successfully.

[root@jindada ~]# ll

total 61148

-rw-r--r--. 1 root root       39 Jul 17 19:16 123.txt

-rw-r--r--. 1 root root  9272936 Jul 17 12:01 access.log

-rw-r--r--. 1 root root       28 Jul 17 20:12 oldboy.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass10.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass1.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass2.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass3.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass4.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass5.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass6.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass7.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass8.txt

-rw-r--r--  1 root root       19 Jul 22 12:20 pass9.txt

 

[root@jindada ~]# seq 10  | awk  '{print "useradd  boy"$1" && mkpasswd  -l 18 |tee -a pass.log | passwd --stdin boy"$1}' |bash

Changing password for user boy1.

passwd: all authentication tokens updated successfully.

Changing password for user boy2.

passwd: all authentication tokens updated successfully.

Changing password for user boy3.

passwd: all authentication tokens updated successfully.

Changing password for user boy4.

passwd: all authentication tokens updated successfully.

Changing password for user boy5.

passwd: all authentication tokens updated successfully.

Changing password for user boy6.

passwd: all authentication tokens updated successfully.

Changing password for user boy7.

passwd: all authentication tokens updated successfully.

Changing password for user boy8.

passwd: all authentication tokens updated successfully.

Changing password for user boy9.

passwd: all authentication tokens updated successfully.

Changing password for user boy10.

passwd: all authentication tokens updated successfully.

[root@jindada ~]# cat pass.log 

yekvpfdmF+3anweKd0

4nyyrwkUM>u3jlcgvi

jw5vczapnuplG5vVv<

mJaebjb9cxapL+1yjf

vvdyshXNkzc1qq4wg*

lmlGubcwrs9(Whq6wf

rbm/kwxbwdufAU55cx

g=mzhdgY6osysgLnf5

nany5srVjnf9emFpi*

fV5sn0qzm}kaMzgsux

 

 

41.创建10个用户,前缀是你的名,后缀为数字序列,比如jindada1等,并给其10个用户设置统一密码为123456,最后尝试是否可以登录。

[root@jindada ~]# seq 10  | awk  '{print "useradd  boy"$1" && echo '123456' | passwd --stdin boy"$1}' |bash

Changing password for user boy1.

passwd: all authentication tokens updated successfully.

Changing password for user boy2.

passwd: all authentication tokens updated successfully.

Changing password for user boy3.

passwd: all authentication tokens updated successfully.

Changing password for user boy4.

passwd: all authentication tokens updated successfully.

Changing password for user boy5.

passwd: all authentication tokens updated successfully.

Changing password for user boy6.

passwd: all authentication tokens updated successfully.

Changing password for user boy7.

passwd: all authentication tokens updated successfully.

Changing password for user boy8.

passwd: all authentication tokens updated successfully.

Changing password for user boy9.

passwd: all authentication tokens updated successfully.

Changing password for user boy10.

passwd: all authentication tokens updated successfully.

 

 

42.创建用户qiudao,并给其用户设置一个24位的随机密码,要求密码包含数字,大小写字母及特殊符号,最后查看是否可以登录。

useradd  qiudao

mkpasswd  -l 24  -d 6 -c 6 -C 6 -s 6 | tee  pass.txt | passwd  --stdin  qiudao  

 

43.跟组相关的两个配置文件是?

/etc/group 

/etc/gshadow

 

 

44.创建一个用户基本组,shanghai01.

groupadd   shanghai01

 

45.创建一个用户基本组,shanghai02,指定GID为1099.

groupadd -g1099   shanghai02

 

46.创建一个用户系统组,shanghai03.

groupadd  -r  shanghai03

 

47.修改用户基本组shanghai02的GID号为1033.

groupmod  -g 1033  shanghai02

 

grep -i 'oldboy' 123.txt

 

posted @ 2020-08-06 19:42  年少纵马且长歌  阅读(1911)  评论(0编辑  收藏  举报