L014-第三关课前linux命令及基础知识考试手把手实战解答小节
又是一周啊,以后保持一周一个微博吧。
这是一个堂解答考试题的课,那么就以题目来展开吧!
1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这样的数字。
首先,关于权限
r read
w write
x 执行
- 无
stat 显示文件属性命令 -c 自定义输出格式,结尾有换行
-L 如果是链接文件,则获取原文件信息
-f 显示文件所在的文件系统的状态
%a 八进制格式的文件访问权限
%s 文件大小(单位byte)
此时我们用stat命令来查看一下
[root@moban ~]# stat etiantian.txt
File: `etiantian.txt'
Size: Blocks: IO Block: regular file
Device: 802h/2050d Inode: Links:
Access: (/-rw-r--r--) Uid: ( / root) Gid: ( / root)
Access: -- ::15.730978904 +
Modify: -- ::12.106982349 +
Change: -- ::12.106982349 +
在命令输出结果的第4行,我们看到了此etiantian.txt的数字权限为0644
下一步,我们把0644的值给取出来就达到题目的要求了。
答:
使用“cut”
[root@moban ~]# stat etiantian.txt | sed -n 4p | cut -c -
使用“sed”
[root@moban ~]# stat etiantian.txt | sed -n 's#^.*ccess: (\(.*\)/-r.*$#\1#gp' //正则表达式
使用“awk”
[root@moban ~]# stat etiantian.txt | awk -F "[(/]" 'NR==4 {print $2}'
根据man stat,使用stat
[root@moban ~]# stat -c %a etiantian.txt
特别笨的方法:
[root@moban ~]# ll etiantian.txt | cut -c - | tr rwx- | awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
本题小节(思路):
本题其实就是3点思路:
1、 通过stat输出包含目标的内容。
2、 通过head、tail、sed、awk、grep定位到单行-->这是取行惯用命令
3、 通过cut、awk等设置分隔符取出需要段内容-->这是取列的惯用命令
4、 当命令结果包含我们需要的内容的时候,我们想到命令的参数是否有具体的参数能够一步到达我们需要的结果呢?这样会去 man stat了。
2.linux下通过mkdir命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么?
答:2个。
ett有两个硬链接,一个是他本身,他本身就是一个硬链接,另一个是ett目录下有一个隐藏目录“.”,他是ett的硬链接。
另一问:linux下通过mkdir命令创建一个新目录/oldboy/ett/loi,ett的硬链接数是多少,为什么?
答
除了上题的答案外,loi目录下有一个隐藏目录“..”他是指向上级ett的一个硬链接,所以有3个。
3.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)
答:
使用“cut”
[root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 //调出配置文件查看IP所在行
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DNS1=192.168.85.2
USERCTL=no
IPV6INIT=no
HWADDR=:0c::9b::
IPADDR=192.168.85.199
NETMASK=255.255.255.0
GATEWAY=192.168.85.2 [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 | sed -n 10p | cut -c -
192.168.85.199
使用“awk”
[root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 //调出配置文件查看IP所在行
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DNS1=192.168.85.2
USERCTL=no
IPV6INIT=no
HWADDR=:0c::9b::
IPADDR=192.168.85.199
NETMASK=255.255.255.0
GATEWAY=192.168.85.2 [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F "=" 'NR==10 {print $2}'
192.168.85.199
使用“sed”
[root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 //调出配置文件查看IP所在行
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DNS1=192.168.85.2
USERCTL=no
IPV6INIT=no
HWADDR=:0c::9b::
IPADDR=192.168.85.199
NETMASK=255.255.255.0
GATEWAY=192.168.85.2 [root@moban ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 | sed -n "10s#^.*DDR=\(.*\)#\1#gp" //"\1" 为指向括号()括号中的内容引到里面来,10为第10行。
192.168.85.199
4.请给出默认情况eth0网卡配置文件的路径及客户端DNS的路径
答:
网卡路径:/etc/sysconfig/network-scripts/ifcfg-eth0
DNS路径:/etc/resolv.conf
5.查找当前目录下所有文件,并把文件中的www.oldboy.cc字符串替换成www.etiantian.org
答:
[root@moban ~]# grep -lr "www.oldboy.cc" /root/ | xargs sed -i "s#www.oldboy.cc#www.etiantian.org#g" //-l参数是文件内部查找 -r是循环参数
企业真实案例:
网站被攻击,发现所有的文件都有一句话,oldboylichaoran 。导致很多文件现阶段不不可用,现在寻求解决办法。
答:
①模拟攻击:
此命令是寻找lkjiop的普通文件,并把每个文件的第一行都插入oldboylichaoran字符
[root@moban lkjiop]# find ./ -type f | xargs sed -i '1 i oldboylichaoran' //-i为sed写入参数 1为行 i为写入 后面接写入字符
②处理命令
[root@moban lkjiop]# find ./ -type f | xargs sed -i 's#oldboylichaoran##g' //把所有文件中的oldboylichaoran都替换成空
但是会出现一个小问题,此时我们看一个其中改过的文件:
[root@moban lkjiop]# cat .txt asdjasjkfbsdkjgbsdkj
asdjkhasbfjshdfbjhsd
asfhjsdbfjhsdbf
asddbsdjfbjsdhfbs
asdasjkfbsdkjbfsd
sfdskdjbsdgbsdkg
sdfkjsdgskdghskdgfs
jskdgfnsdkjgnkjg
由此可以看出虽然把需要删除的字符都删除掉了, 但是第一行却留空了,如果在程序中可能就会导致程序出错,所以可以用此命令解决:
[root@moban lkjiop]# find ./ -type f | xargs sed -i '/^$/d'
这样就不会出现问题了,或者有一步解决的办法,跟上边这个命令是一个道理:
[root@moban lkjiop]# find ./ -type f | xargs sed -i '/oldboylichaoran/d'
这样问题就解决了,而不需要分两步。不过根据现代科学唯物主义论(具体问题具体分析)来说,也有分两步的好处,如果需要替换的文字是特别多的符号的话,那么符号都要打转义符,不光自己眼花,还容易出错,索性就分两步走啦。
最后一定要亡羊补牢,寻找问题来源,补好漏洞:①网站目录权限降低 ②上传附件的入口做详细过滤
6.问题:如何赋予oldboy文件-rw-r--r-x权限属性
答:
[root@moban ~]# chmod trf.txt
[root@moban ~]# ll
-rw-r--r-x root root Mar : trf.txt
7.执行下面命令时发现提示需要输入密码,请问提示输入的密码是那个用户的密码。
[test@oldboy ~]$ sudo su - oldboy
答:
oldboy
8.问题:请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。
命令:
echo
常用参数:
-n未不切行,同一line下输出
-e 使用转义字符(如\t \n )
[root@moban ~]# echo -e "oldboy\toldboy"
oldboy oldboy
[root@moban ~]# echo -e "oldboy\noldboy"
oldboy
oldboy
9.问题,请给出如下格式的date命令 例:12-02-26. 在给出实现按周输出 比如:周六输出为6,请分别给出命令。
答:
[root@moban ~]# date '+%y-%m-%d' //y年 m月 d日
--
查看目前是星期几
[root@moban ~]# date '+%w' //今天是2016.4.28 日星期四
简写法
[root@moban ~]# date +%F
--
日期和时间
[root@moban ~]# date '+%F'\ %H:%M:%S
-- ::
日期和时间简写
[root@moban ~]# date '+%F'\ %T
-- ::
使用echo输出需要$()或者``才能执行
[root@moban ~]# echo $(date +%F) //$()放在里面命令可以执行
--
实用举例
比如每天都要打包一个文件夹,且加上日期,那么每天都写日期会比较麻烦,可以用下面的命令:
[root@moban ~]# tar czvf oldboy-$(date +%F).tar.gz ./oldboy // $()跟``是一样,输出程序使用
./oldboy
另一只方法,主要是为了显示$()和``两种写法
[root@moban ~]# tar czvf oldboy-`date +%F`.tar.gz ./oldboy //同上
./oldboy
删除7天前文件
[root@moban ~]# find ./ -type f -name "*.log" -mtime+ | xargs rm –f
[root@moban ~]# find ./ -name --20log.gz.tar -exec rm -f {} \; //顺便复习一下exec 嘿嘿嘿
10.问题:当从root用户切到普通用户时,执行ifconfig会提示。
[oldboy@student ~]$ ifconfig
-bash: ifconfig: command not found
提示:centOS5.8会遇到,centOS6.4没有此问题
请问这是为什么?如何解决,请给出详细解决过程。
答:
因为centos 5中ifconfig默认为系统管理员的命令,在切换到普通用户后使用ifconfig提示不能使用
第一种解决办法:
普通用户可以使用全路径进行使用ifconfig
[root@moban ~]# which ifconfig
/sbin/ifconfig
第二种方法
使用PATH方法生效
[root@moban ~]# export PATH=%PATH"%HOME/bin:/sbin //export为设置或查看环境变量命令
第二种方法在重启后回恢复,所以需要第三种方法永久修改。
第三种方法:
[root@moban ~]# cat /etc/profile //放在此文件中将永久使用
把export PATH=%PATH"%HOME/bin:/sbin命令放入profile文件中 [root@moban ~]# source .bash_profile //使修改生效
11.问题:扩展问题:打印三天前的日期格式:2016.4.28
答:
[oldboy@moban ~]$ date +%y-%m-%d --date="-3 day" //今天2016.4.28
--
简写
[root@moban ~]# date +%F -d -3day
--
扩展一下:3小时前
[root@moban ~]# date +%H -d '-3hour' //3小时前
创建名字为当前日期三天前的压缩包
[root@moban ~]# tar czvf oldboy$(date +%F -d '-3day').tar.gz ./oldboy
./oldboy
[root@moban ~]# ll
total
-rw-r--r-- root root May : oldboy2016--.tar.gz
12.已知/oldboy/test.txt文件内容为
oldboy
xizi
xiaochao
答:
grep方法
[root@moban ~]# grep -v ^$ test.txt //grep方法
oldboy
xizi
xiaochao
sed方法
[root@moban ~]# sed "/^$/d" test.txt //sed方法
oldboy
xizi
xiaochao
awk方法
[root@moban ~]# cat test.txt | awk /^[^$]/ //awk 方法 非空行开头的
oldboy
xizi
xiaochao
13.已知/oldboy/ett.txt文件内容为:
oldboy
olldboooy
test
请使用grep或egrep正则匹配的方式过滤出前两行的内容
答:
查看ett.txt文件
[root@moban ~]# cat ett.txt
oldboy
oldboooy
test
分别用egrep、grep、sed
[root@moban ~]# grep -Ev "oldboy|oldboooy" ett.txt //grep
test [root@moban ~]# egrep -v "oldboy|oldboooy" ett.txt //egrep
test [root@moban ~]# sed -n /old/p ett.txt //sed
oldboy
oldboooy
14.请描述下列路径的内容是做什么的?
/var/log/messages
/var/log/secure
/var/spool/clientmqueue
/proc/interupts
/etc/fstab
/etc/profile
答:
/var/log/messages //系统日志
/var/log/secure //显示登录信息,安全的文件
/var/spool/clientmqueue //邮件临时目录
/proc/interrupts //查看中断文件
/etc/fstab //开机自动挂载磁盘的文件
/etc/profile //全局环境变量存放文件
15.如何快速查到ifconfig的全路径(加入你不知道其路径),请给出命令
which(我最熟悉的)
[root@moban ~]# which ifconfig
/sbin/ifconfig
whereis
[root@moban ~]# whereis -b ifconfig //-b 查看二进制文件
ifconfig: /sbin/ifconfig
find(但是我感觉速度上有点慢)
[root@moban ~]# find / -name "ifconfig" //慢
/sbin/ifconfig
16.每周日上午9:30分来老男孩linux培训上课(用/oldboy.sh),请用linxu定时任务命令。
答:
参考这篇文章:
http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html
[root@moban ~]# crontab –e
*/ * * * * /usr/sbin/ntpdate time.nist.gov >dev/null >&
* * * * * /root/oldboy.sh
17.请给出查看当前那些用户在线的linux命令。
答:
常用的就是who了
[root@moban ~]# who
oldboy pts/ -- : (192.168.85.1)
再一个就是w
[root@moban ~]# w
:: up :, user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
oldboy pts/ 192.168.1.12 : .00s .11s .01s sshd:
使用whoami
[root@moban ~]# whoami
Root
使用id
[root@moban ~]# id –un
Root
19.请给出正确的关机和重启服务器的命令
答:
关机
Shutdown –h now
Init 0
halt
poweroff
重启
Shutdown –r now
Init 6
reboot
注销:
logout
exit
ctrl + D
20.请写下面面linux secureCRT命令行快捷快捷键命令的功能?
答:
Ctrl + a 移到命令行首
Ctrl + c 取消
Ctrl + d logout linux的注销
Ctrl + e 移到命令行尾
Ctrl + L 清屏
Ctrl + R 查找
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Ctrl + xx:在命令行首和光标之间移动
Tab 自动补全
Ctrl + shift + c 复制选中字段
Ctrl + shift + v 粘贴选中字段
L014-第三关课前linux命令及基础知识考试手把手实战解答小节的更多相关文章
- Linux命令工具基础04 磁盘管理
Linux命令工具基础04 磁盘管理 日程磁盘管理中,我们最常用的有查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩: 查看磁盘空间 查看磁盘空间利用大小 df -h -h: huma ...
- SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- 1)Linux程序设计入门--基础知识
)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...
- linux运维基础知识
linux运维基础知识大全 一,序言 每一个微不足道的知识,也是未来的铺垫.每一份工作的薪资职位,也是曾经努力的结果. 二,服务器 1,运维人员工作职责: 1)保证数据不丢失:2)保证服务器24小时运 ...
- linux基础:第三关课前考试题整理
1.如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r-- 为 644, 要求使用命令取得644 这样的数字. [root@server ~]# stat /etc/hosts ...
- linux 命令行基础
命令行基础 一些名词 「图形界面」 「命令行」 「终端」 「shell」 「bash」 安装使用 Windws: 安装git, 打开 gitbash Linux 打开终端 Mac 打开终端 基本命令 ...
- Linux命令行基础操作
目录 1.打开终端命令行 2.常用快捷键 2.1 tab键 2.2 Ctrl+c组合键 2.3 Ctrl+d组合键 2.4Ctrl+Shift+c组合键和Ctrl+Shift+v组合键 2.5图形界面 ...
- linux web服务基础知识,dns
#web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx > web server 服务端浏览器 > web client 客户端 #dns解析 ...
- L010 linux命令及基础手把手实战总结
一转眼都快两周没更新了,最近实在太忙了,这两周的时间断断续续的把L010学完了,短短的15节课,确是把前10节的课程全部的运用一遍,从笔记到整理,再到重新理解,最后发布到微博,也确实提升了一些综合性能 ...
随机推荐
- fastjson反序列化JdbcRowSetImpl
Gadget com.sun.rowset.JdbcRowSetImpl setAutoCommit() -> connect() -> InitialContext.lookup() p ...
- 9、Dubbo-配置(4)
本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端 也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等 等,此时就需 ...
- linq的左连接右连接内连接用法
1.左连接: var LeftJoin = from e in ListOfEmployees join d in ListOfDepartment on e.DeptID equals d.ID i ...
- python过滤文件中特殊标签
Beautiful Soup Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的导航( ...
- [AHOI2001]多项式乘法
\([Link](https://www.luogu.org/problemnew/show/P2553)\) \(\color{red}{\mathcal{Description}}\) 给出两个多 ...
- CTreeCtrl::HitTest
CTreeCtrl::HitTest 调用此函数确定指定的位置点相对树视图控件的工作区的. HTREEITEM HitTest( CPoint pt, UINT* pFlags = NULL ...
- misc类设备
何为misc (1)中文名:杂项设备\杂散设备,它是一种典型的字符设,在一般情况下在内核中,所有的misc设备的主设备号是固定的,为10,它们的次设备号不一样:(2)可以在根文件系统中看到:/sys/ ...
- 点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )
测试移动端页面的时候,偶然发现点击底部input输入框时,弹出的虚拟键盘偶尔会挡住input输入框. 输入框固定在页面底部,如图所示: input固定底部设计图.png 点击底部input输入框唤 ...
- Extjs6 组件浅谈
一.Component组件 一个 Ext JS 应用的界面由一个或多个叫做 组件的控件组成. 所有的组件都是 Ext.Component 类的子类,这个类可以允许参与包含实例化.渲染.自动大小和位置以 ...
- eclipse 打开一个新工程的基本设置
1.代码自动提示 Window -> Preferences -> Java -> Editor -> Content Assist -> Auto Activation ...