练习题

1.创建目录一个 /data

  1.mkdir /data

  2.cd /  然后mkdir data

 

 

2.在/data 下面建立一个文件oldboy.txt

  1.cd /data  然后 touch oldboy.txt

  2.touch /data/oldboy.txt   目录要存在/data

总结:touch(摸)就是摸一下文件,如果不存在就创建,如果存在就改变时间戳

 

 

3.oldboy.txt增加内容为“I am studying linux.”

   1.vi oldboy.txt  进入文件编辑器填写内容

 

 

4.把oldboy.txt拷贝到/tmp下

  [root@localhost data]# cp oldboy.txt /tmp/

 

总结:cp 要看好路径  默认只能拷贝文件,不能拷贝目录

         拷贝目录可以用 -a 或-r    例子:cp -a /etc /tmp/

 

 

5.把/data 目录移动到 /root下

[root@localhost data]# mv /data(需要移动的目录) /root/(目的目录)    

 

 

6.进入root目录下的data目录,删除oldboy.txt

[root@localhost data]# rm oldboy.txt    rm=remove

强制删除:rm -f oldboy.txt

 

 

7.退出到上一级目录,删除data目录

[root@localhost ~]# rm -fr data

 

 

8.已知文件test.txt内容为 test  liyao oldboy 请给出打印txst.txt内容时,不包含oldboy字符串的命令

     [root@localhost ~]# cat >test.txt<<EOF

> test

> liyan

> oldboy

> EOF

              1.[root@localhost ~]# grep -v oldboy test.txt

输出前两行2.[root@localhost ~]# head -2 test.txt

输出liyan 3.[root@localhost ~]# sed -n /li/p test.txt   p的作用:打印 -n:取消默认输出

[root@localhost ~]# sed -n /^oldbou/p test.txt  ^以什么什么开头

 

 

9.请用一条命令完成创建目录/oldboy/test,即创建/oldboy/test目录

      mkdir -p /oldboy/test/a/b/c

     [root@localhost data]# tree /oldboy/      

/oldboy/

└── test

    └── a

        └── b

            └── c

 

               4 directories, 0 files

 

 

10.已知/tmp目录下已经存在了text.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让linux系统不提示是否覆盖。

     [root@localhost /]# cp /tmp/test.txt  /mnt/

这个题关乎到别名

11.只查看ett.Txt文件(100行)内第20到第30行的内容。

        [root@localhost /]# head -30 ett.txt |tail -11

        [root@localhost /]# sed -n 20,30p ett.txt

        [root@localhost ~]# awk '{if(NR>19&&NR<31) print $0}' ett.txt                   $0:把符合条件的行打印出来

   Sed比较擅长输出行

   Awk擅长输出列

12.分析图片服务日志,把日志(每个图片访问次数*图片大小和总和)排行,取top10,也就是计算每个url的总访问大小

13.把/oldboy目录及其子目录下所有以扩展名sh.结尾的文件中包含.hostlists.txt的字符串全部替换为../idctxst_iplist。

[root@localhost ~]# sed -i s#oldboyliunx#oldboywindows#g ett.txt

s:编辑替换   g:全部替换

批量修改:[root@localhost ~]# find / -type f -name "ett.txt"|xargs  sed -i s#oldboyliunx#oldboywindows#g

批量查看:[root@localhost ~]# find / -type f -name "ett.txt"|xargs cat  

 =======================================================================================

1.    查询目前所在的目录

[root@localhost data]# pwd

/data

2.    在根目录创建一个名字为chushi的目录

[root@localhost /]# mkdir /chushi

3.    查询根目录列表看看创建的目录是否存在

[root@localhost /]# ls

bin   chushi  dev  ett.txt  lib    lost+found  mnt     opt   root  selinux  sys  usr

boot  data    etc  home

4.    进入chushi目录

[root@localhost /]# cd /chushi

5.    创建一个名字为1.txt的文件

[root@localhost chushi]# touch /chushi/1.txt

6.    Vi编辑1.txt写入I like Linux 保存退出

[root@localhost chushi]# vi /chushi/1.txt 

7.    查看1.txt

[root@localhost chushi]# cat 1.txt 

I laik linux

8.    用打印输出功能打印Linux is good 覆盖1.txt原内容。

[root@localhost chushi]# echo "Linux is good" >1.txt 

 

9.    查看1.txt

[root@localhost chushi]# cat 1.txt                   

Linux is good

10.    打印输出功能打印Linux is very good 追加1.txt的内容

[root@localhost chushi]# echo "Linux is good" >>1.txt 

11.    查看1.txt

[root@localhost chushi]# cat 1.txt                    

Linux is good

Linux is good

12.    再在根目录下创建一个名字为chushi1的目录

[root@localhost chushi]# mkdir /chushi1

 

13.    查看建立是否成功

[root@localhost /]# ls

bin   chushi   data  etc      home  lib64       media  oldboy  proc  sbin     srv  tmp  var

boot  chushi1  dev

14.    拷贝chushi目录下的1.txt到chushi1下一份

[root@localhost /]# cp /chushi/1.txt /chushi1

15.    检查复制是否成功

[root@localhost /]# ls /chushi1

1.txt

16.    再次拷贝chushi目录下的1.txt到chushi1下一份,会提示是否同意覆盖

[root@localhost /]# cp /chushi/1.txt /chushi1

cp:是否覆盖"/chushi1/1.txt"? 

17.    再次拷贝chushi目录下的1.txt到chushi1下一份,但是这次不要然他提示覆盖

[root@localhost /]# cp -n /chushi/1.txt /chushi1

18.    在根目录下创建一个a.txt的文件和a的目录

[root@localhost /]# touch /a.txt

[root@localhost /]# mkdir /a

19.    分别将a.txt文件和a目录移动到chushi下

[root@localhost /]# mv -f a.txt /chushi

[root@localhost /]# mv -f /a /chushi

20.    强制删除chushi1文件夹及其内容

[root@localhost /]# rm -fr /chushi1

21.    用cat命令给chushi目录下的1.txt覆盖3行内容(lichaoran liyun wangyanhua)

[root@localhost /]# cat >/chushi/1.txt <<ep 

> lichoran

> liyun

> wangyanhua

> ep

22.    滤出1.txt中的含有“li”的行并显示。

[root@localhost /]# grep "li" /chushi/1.txt 

lichoran

liyun

23.    找出1.txt中的还有”li”的行并显示

 

24.    显示1.txt的前两行

[root@localhost /]# head -2 /chushi/1.txt 

lichoran

liyun

25.    用sed方法查找1.txt中的含有”li”的行

[root@localhost /]# sed -n /li/p /chushi/1.txt 

lichoran

liyun

26.    用sed方法查找1.txt中不含有”li”的行

[root@localhost /]# sed  /li/d /chushi/1.txt     

wangyanhua

26.    在根目录创建一个4层的文件夹

[root@localhost /]# mkdir -p /a/b/c/d

28.    查看一下27

 

29.    在chushi目录下创建1目录

[root@localhost /]# mkdir /1

30.    把chushi目录下的1.txt复制到1目录下一份

[root@localhost /]# cp /chushi/1.txt /1

31.    查找chushi目录中的1.txt

[root@localhost /]# find /chushi/ -type f -name "1.txt"

/chushi/1.txt

32.    查找chushi目录下的1.txt并删除

[root@localhost /]# find /chushi/ -type f -name "1.txt"|xargs rm -fr

33.    在根目录下用序列创建一个b.txt的文件为100

 

34.    用空格为间隔横着显示一总数为6的序列

 

35.    查询命令cp rm mv的位置

 which

36.    查询系统默认命令别名

 在我的命令小节里

37.    查看根目录下的b.txt的45-50行显示。

在我的命令小节里方法是用sed

 =======================================================================================================

第一题:如何过滤出根目录下的所有一级目录?

分析:1.根据颜色区分文件和目录

      2.ls -l结果中以d开头的就是目录

[root@localhost /]# ls -l|grep ^d

      3.通过给目录加标识,然后通过过滤标识,过滤出目录

[root@localhost /]# ls -Fl|grep /$

      4.通过find直接查找指定文件的类型

[root@localhost ~]# find ./ -maxdepth 1 -type d    -maxdepth是指定级数的

      5.ls -l|sed -n ‘/^d/’p

(提示:不包含根目录下的子目录一级隐藏目录)

第二题:cd - 切到上一次的目录上去

 

 

第三题:一个目录中有多个文件(ls查看时或多屏),想最快的看到最近更新的文件,怎么看?

[root@localhost /]# ls -lrt

 

 

第四题:apache服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留7天的访问日志,请问如何解决?

找出七天以前的数据,然后删除,让后用crontab来定时没天执行以下就行; find /app/loggs/ -type f -name "*.log" -mtime +7 | xarge rm -f 然后写在 crontab -e 里面保存起来就行

(提示:可以从apache服务配置上着手,也可以从生成出来的日志上着手)

软连接:ln -s /app/loggs/apache2.2.17/ /apalication/apache  注意最后这个文件夹不能存在

 

 

 

第五题:调试系统服务的时候,希望能实时查看系统日志文件/var/log/messages的更新,如何做?

[root@localhost logs]# tail -f /var/log/messages

小节:系统日志文件:/var/log/messages

      Tail -f  跟踪文件内容变化

 

 

第六题:打印配置文件NGINX.conf内容的行号以及内容,如何做到?

[root@localhost /]# cat -n NGINX.conf

 

 

第七题:Linux系统运行级别一般为0-6,请分别写出每个级别的含义

0:关机模式(不要将Linux默认运行级别设置为0)

1:单机模式

2:多用户模式(无网络)

3:完全多用户模式

4:没有使用

5:图形界面

6:重启

 

 

 

第八题:安装完系统后,希望让网络文件共享服务NFS,仅在3级别上开机自启动,该如何做?

chkconfig --level 3 nfs on

 

 

 

第九题:Linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

修改字符集

[root@localhost sysconfig]# vi /etc/sysconfig/i18n #LANG="en_US.UTF-8" LANG="zh_CN.GB18030" SYSFONT="latarcyrheb-sun16"

 

 

第十题:/etc/目录为Linux系统的默认的配置文件以及服务启动命令的目录

  a、请用tar打包/etc/整个目录(打包及压缩)

  b、请把a点命令的压缩包,解压到/tmp/指定的目录下(最好只用tar命令实现)

  c、请用tar打包/etc/整个目录(打包及压缩),但是要排除/etc/services文件

 

 

 

第十一题:已知如下命令及结果

  mkdir -p /test/

  echo "I am test,my age is 23." > /test/test.txt

a、现在需要从文件中过滤出"test"和"23"字符串,请给出命令

[root@localhost ~]# awk '{print $3 $6} ' /test/test.txt

[root@localhost ~]# cut -d" " -f3,6 /test/test.txt

b、如果需要从文件中过滤出"test,23"字符串,请再给出命令

[root@localhost ~]# cut -d" " -f3,6 /test/test.txt |sed s#,#" "#g

 

 

 

第十二题:如何查看/etc/services文件有多少行?

[root@localhost /]# wc -l /etc/services

[root@localhost ~]# cat -n /etc/services |tail -1

 

 

 

第十三题:过滤出/etc/services文件包含3306或1521俩个数字的所有在行的内容

[root@localhost /]# egrep -n "3306|1521" /etc/services

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

 

 

====================================================================

1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644这样的数字

答:[root@localhost ~]# stat -c%a  /etiantian

 

 

2.Linux下通过mkdir命令创建一个新目录/oldboy/ett,他的硬链接数是多少

答:是2个

 

 

3.请执行命令取出linux中的eth0的IP 地址(请用cut 。或者awk,sed)

 [root@localhost ~]# ifconfig eth0|sed -n '/inet addr/p' 

[root@localhost ~]#  ifconfig eth0|sed -n '/inet addr/p'|awk -F ":" '{print $2}'|awk '{print $1}'

[root@localhost ~]#  ifconfig eth0|sed -n '2p'|awk -F ":" '{print $2}'|awk '{print $1}'

[root@localhost ~]# ifconfig eth0|awk -F "[: ]+" 'NR==2 {print $4}'

[root@localhost ~]# ifconfig eth0|sed -n '/inet addr/p'|sed 's#^.*addr:##g'|sed 's# Bc.*$##g'

[root@localhost ~]# ifconfig eth0|sed -n 's#^.*addr:(.*)  Bcast:.*$#1#gp'   如过有一个人()后面就是1两个就是 2

 

 

4.给出默认情况eth0网卡配置文件的路径及客户端DNS的路径

eth0 网卡配置文件路径如下:

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

客户端DNS的路径如下:

/etc/resolv.conf

 

 

 

5.查找当前目录下的所有文件,并把文件中的www.etiantian.org字符串替换成www.oldboy.cc

 太简单

 

 

6.如何赋予oldboy文件-rw-r--r-x权限属性

[root@localhost a]# chmod 645 1.txt

 

 

7.执行下面命令时发现提示输入密码,请问要输入的密码是哪个用户的密码

当前用户

 

 

8.请问在一个命令上加一个什么参数可以实现下面命令的内容在同一行输出

Echo“oldboy”;ehco“oldboy”

[root@localhost a]# echo "1"|xargs echo "1"

 

 

9.请给出如下格式的data命令例子:11-02-26,再给出实现按周输出比如:周六输出为6,请分别给出命令

date '+%y-%m-%d'      +%w

 

 

10.当从root用户切换到普通用户时,执行ifconfig会提示

请问这是为什么?如何解决,给出纤细解决过程

[root@localhost a]# sudo ifconfig

export PATH=/sbin/ifconfig:$PATH

 

 

 

11.扩展问题,打印三天前的日期格式如2011-02-26

[root@localhost ~]# date +%F -d '3 day ago' 

 

 

12.已知/oldboy/test.txt文件内容为:

Oldboy

 

Xizi

 

Xiaochao

请问如何把文件中的空格过滤掉

[root@localhost ~]# grep -v "^$" /oldboy/test.tx

                    Sed /^$/d test.txt

 

 

13.已知/oldboy/ett.txt文件内容为

Oldboy

Olldbooy

Test

请用grep或egrep正则匹配的方式过滤出前两行内容

 前面有

 

 

14.如何快速查看到ifconfig的全路径(假如你不知道其他路径)

Which ifconfig

 ========================================================================================

 

1.每格一分钟,打印一个加号到oldboy.log,给出crondtab完整命令

[root@localhost ~]# crontab -e

* * * * * echo +>>/root/oldboy.log

 

 

2.每个两个小时将/etc/servic文件打包备份到/tmp下(最好每次备份成不同的被分包)

00 */2 * * * tar zcf /tmp/servic`date +%F`.tar.gz  /etc/servic

 

 

3.每天晚上12点。打包站点目录/var/www/html备份到/data目录下(最好每次备份按时间生成不同的备份包)

00 24  * * * tar /data/www_`date +%F-%H`.tar.gz  /var/www/html

 

 

4.每周六、日上午9点和下午14点来老男孩学习(执行程序/server/scripts/oldboy.sh)

echo   “00 09,14 * *6,7     sh     /server/scripts/oldboy.sh   >/dev/null  2>&1”>>/var/spool/cron/root

 

 

 

口头表达题

1.描述linux系统从开机到登陆界面的启动过程

2.描述linux下软链接和硬链接的区别

3.描述linux shell中单引号、双引号及不加引号的简单区别

4.描述 Linux运行级别0-6的各自含义

5.描述linux下文件删除的原理

 

 加油!加油!加油!

 

原文地址:https://www.cnblogs.com/zrxuexi/p/10908503.html