1. 如何取得/etiantian文件的权限对应的数字内容,如-rw-r-r 为644,要求使用命令取得644或0644这样的数字。
解答:
方法1:用sed获取stat filename里的属性值 [root@oldboy oldboy]# stat oldboy.txt|sed -nr '4s#.*([0-9]{4}).*#1#gp' 0644 方法2: 获取到权限值,用tr替换rwx- 注意,替换的顺序,-rwx,会把-r认为是参数,出错。 [root@oldboy oldboy]# ls -l oldboy.txt|cut -c2-10|tr "-rwx" "0421" tr: invalid option -- 'r' Try `tr --help' for more information. [root@oldboy oldboy]# ls -l oldboy.txt|cut -c2-10|tr "rwx-" "4210" 420400400 [root@oldboy oldboy]# ls -l oldboy.txt|cut -c2-10|tr "rwx-" "4210"|awk -F "" '{print $1+$2+$3,$4+$5+$6,$7+$8+$9}' 6 4 4 方法3: [root@oldboy oldboy]# stat oldboy.txt|awk -F "[(/)]" 'NR==4 {print $2}' 0644 方法4: 用stat filename的自带参数 [root@oldboy oldboy]# stat oldboy.txt -c %a 644
stat的--format参数(-c参数)
-c --format=FORMAT use the specified FORMAT instead of the default; output a newline after each use of FORMAT The valid format sequences for files (without --file-system): %a Access rights in octal %A Access rights in human readable form %b Number of blocks allocated (see %B) %B The size in bytes of each block reported by %b %C SELinux security context string ...
2. Linux下通过mkdir命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么?如果在/oldboy/ett下面再创建一个目录test,再问/oldboy/ett的硬链接数是多少?
解答:
在目录目录只有/oldboy/ett的情况下:
- /oldboy目录和本身"."互为硬链接,所以是2个
- /oldboy目录和/ett目录下的".."互为硬链接,所以加上1个
- 总计/oldboy的硬链接数为3
- /oldboy/ett本身和ett下面的'.'本身互为硬链接,下面没有目录
- 所以/oldboy/ett有2个硬链接
- 在新增/oldboy/ett/test目录后
- test目录下的".."与/oldboy/ett互为硬链接,所以/oldboy/ett的硬链接数加1
- /oldboy目录下,没有新增的第一层字目录,所以硬链接数不增加,还是3
[root@oldboy /]# mkdir /oldboy/ett -p [root@oldboy /]# ls -ld /oldboy/ett drwxr-xr-x 2 root root 4096 Sep 5 22:17 /oldboy/ett # 包含本身和'.' 互为硬链接目录 [root@oldboy /]# mkdir /oldboy/ett/test [root@oldboy /]# ls -ld /oldboy/ett drwxr-xr-x 3 root root 4096 Sep 5 22:17 /oldboy/ett # 包含本身和'.' 互为硬链接,还有一个'..' [root@oldboy /]# ls -alid /oldboy/ett/ /oldboy/ett/. 275739 drwxr-xr-x 3 root root 4096 Sep 5 22:17 /oldboy/ett/ 275739 drwxr-xr-x 3 root root 4096 Sep 5 22:17 /oldboy/ett/. [root@oldboy /]# ls -ld /oldboy/ett/test drwxr-xr-x 2 root root 4096 Sep 5 22:17 /oldboy/ett/test [root@oldboy /]# ls -alid /oldboy/ett/test/. /oldboy/ett/test 275740 drwxr-xr-x 2 root root 4096 Sep 5 22:17 /oldboy/ett/test 275740 drwxr-xr-x 2 root root 4096 Sep 5 22:17 /oldboy/ett/test/.
[root@oldboy /]# ls -alid /oldboy/ett/ /oldboy/ett/. /oldboy/ett/test/.. 275739 drwxr-xr-x 3 root root 4096 Sep 5 22:17 /oldboy/ett/ 275739 drwxr-xr-x 3 root root 4096 Sep 5 22:17 /oldboy/ett/. 275739 drwxr-xr-x 3 root root 4096 Sep 5 22:17 /oldboy/ett/test/..
3. 请执行命令取出linux中eth0的IP地址
解答:
[root@oldboy /]# ifconfig eth3|sed -nr '2s#^.*dr:([0-9.]+) B.*$#1#gp' 192.168.0.109 [root@oldboy /]# ifconfig eth3|grep 'inet'|awk -F "[: ]+" '{print $4}' 192.168.0.109 [root@oldboy /]# ifconfig eth3|grep 'inet'|cut -d ":" -f 2|cut -d " " -f1 192.168.0.109 [root@oldboy /]# ifconfig eth3|awk -F "[: ]+" 'NR==2{print $4}' 192.168.0.109
4. 请给出默认情况eth0网卡配置文件的路径和客户端DNS的路径
解答:
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件:/etc/resolv.cnf
[root@oldboy test]# cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 192.168.1.1 nameserver 192.168.0.1
修改IP,DNS等服务器网络配置,可以直接使用以上配置文件,可以不用setup命令。
如果配置DNS,ifcfg-eth0 优先于resolv.conf
5. 企业案例:查找当前目录下所有文件,并把文件中的www.etiantian.org 字符串替换成www.oldboy.me
解答:
- find / -type f |xargs sed -i 's#www.etiantian.org#www.oldboy.me#g'
- find / -type f -exec sed -i 's#www.etiantian.org#www.oldboy.me#g' {} ;
- sed 's/www.etiantian.org/www.oldboy.me/g' $(find . -type f)
6. 如何赋予oldboy.txt文件-rw-r--r-x权限
解答:
- chmod 641 oldboy.txt
- chmod u=rw,g=r,o=rx oldboy.txt
7. 执行下面命令时发现提示需要输入密码,请问提示需要输入的密码是哪个用户的密码 sudo su - oldboy
解答:
输入当前用户密码,oldboy的密码
8. 请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出 echo 'oldboy';echo 'oldboy'
解答:echo -n 参数
[root@oldboy /]# echo 'oldboy';echo 'oldboy' oldboy oldboy [root@oldboy /]# echo 'oldboy' -n ;echo 'oldboy' oldboy -n oldboy [root@oldboy /]# echo -n 'oldboy';echo 'oldboy' # -n参数 oldboyoldboy
9. 请给出如下格式的date命令,日期显示为11-02-26,星期六显示为数字6
解答:
date +%Y-%m-%d;date +%w
date +%F;date +%w
[root@oldboy /]# date +%Y-%m-%d;date +%w 2019-11-29 5 [root@oldboy /]# date +%F;date +%w 2019-11-29 5
[root@oldboy test]# date +%y-%m-%d
19-09-06
10. 当从root用户切换到普通用户oldboy时,执行ifconfig会提示,
[oldboy@oldboy ~]$ ifconfig
-bash: ifconfig: command not found
请问原因时什么,如何解决。
解答:
这是由于普通用户oldboy和root用户的环境变量不一致导致的。主要是环境变量PATH的值发生了变化,普通用户无法找到ifconfig的路径。
因为CentOS5中ifconfig命令是超级用户的管理命令,其命令路径/sbin不在普通用户的全局环境变量中
解决办法
1、执行绝对路径
2、将/sbin添加到环境变量中
# 字符串拼接 [root@oldboy ~]# PATH="$PATH:/root" # 原有的PATH路径加上":/root",注意使用双引号。 [root@oldboy ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
# export 方式添加路径 [root@oldboy ~]# export PATH=$PATH:$HOME/bin:/sbin [root@oldboy ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root:/root/bin:/sbin
3、将添加环境变量的命令写入.bash_profile文件
11. 打印三天前的日期
解答:date -d参数
[root@oldboy /]# date +%F -d '-3day' 2019-11-26
12. 已知/oldboy/test.txt 文件内容为:
oldboy
xizi
xiaochao
请问,如何把文件中的空行过滤掉(要求命令行实现)。
解答:
- grep -v '^$' /oldboy/test.txt 过滤空行
- sed -nr 's#([^ ].*)#1#gp' /oldboy/test.txt 保留非空开头的行
- sed -n '/[^ ].*/p' /oldboy/test.txt 显示非空格开头的任意行
- sed '/^$/d' /oldboy/test.txt 将空行删掉
- awk '$0 !~/^$/{print}' /oldboy/test.txt 匹配非空格行
- awk '/^[^$]/' /oldboy/test.txt 匹配非空行的开头,过滤出以非空行开头的行; [^$] 非$结尾,即非空行
13. 已知/oldboy/ett.txt文件内容如下,使用grep正则匹配过滤出前两行内容:
oldboy
olldboooy
test
解答:
- grep -v 'test' /oldby/ett.txt
- grep '^ol.*' /oldboy/ett.txt
- grep '.*y$' /oldboy/ett.txt
- grep -E 'o+' /oldboy/ett.txt
14. 如何快速查到ifconfig的全路径,给出命令
解答:which,whereis,locate,find
# 查找二进制命令所在路径,从PATH环境变量查找 [root@oldboy ~]# which ifconfig /sbin/ifconfig # 查看命令的说明、源代码 [root@oldboy ~]# whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz [root@oldboy ~]# whereis ifconfig -b ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz # 查找updatedb中的文件 [root@oldboy ~]# locate ifconfig /sbin/ifconfig /usr/sbin/pifconfig /usr/share/man/de/man8/ifconfig.8.gz /usr/share/man/fr/man8/ifconfig.8.gz /usr/share/man/man8/ifconfig.8.gz /usr/share/man/man8/pifconfig.8.gz /usr/share/man/pt/man8/ifconfig.8.gz # find是从根目录开始遍历查找,效率最低 [root@oldboy ~]# find / -name ifconfig /sbin/ifconfig
15. 请描述下面路径的内容是作什么的?
- /var/log/messages 系统日志
- /var/log/secure 系统安全日志
- /var/spool/clientmqueue 邮件临时队列(目录)
- /proc/interrupts 中断文件
- /etc/fstab 磁盘文件系统开机自动挂载文件
- /etc/profile 全局的环境配置文件
16. 每周日上午 9:30去上课,用/oldboy.sh代替,请用linux定时任务命令表示。¶
解答:
30 09 * * 0 /bin/sh /scripts/messages.txt >/dev/null 2>&1
17. 请给出当前哪些用户在线的Linux命令
解答:
此类命令有who, w, last, lastlog, users, fingers
18. 公司已开发人员申请对某以服务器10天的普通用户权限,请问你如何操作只给此用户10天的使用期限
解答:
Linux下控制账户过期的多种方法。
- useradd oldboy -e 01/28/12 用户在2011年1月28日过期
- usermod -e 01/28/12 oldboy
- chage -E 01/28/12 oldboy
19. 请给出正确的关机与重启命令
解答:
一、shutdown命令(推荐使用)
- 命令所在路径:/sbin/shutdown
- 执行权限:root
- 功能描述:进行关机重启操作
- 语法:shutdown 【选项】 【时间】
- -c 取消前一个关机命令
- -h 关机
- -r 重启
范例1:马上关机:shutdown -h now
范例2:晚上八点半关机:shutdown -h 20:30
注意:推荐使用该命令进行关机,此命令关机之前会正确的关闭系统的服务。
shutdown -h now 马上关机 shutdown -h +1 1分钟以后关机 shutdown -h 20:30 晚上8点半关机
二、其他关机命令
- halt 立即停止系统,需要人工关闭电源(生产常用)
- poweroff 立即停止系统,并且关闭电源
- init0 切换运行级别到0
三、其他重启命令
- reboot 生产常用
- init6 切换运行级别到6
- shutdown -r now 生产常用
shutdown -r +1 一分钟以后重启
四、退出登录命令
-
logout
-
exit
-
ctrl +D (快捷键)(生产常用)
20. 请写出下面命令行快捷键的功能
- ctrl+a 切换到命令的行首
- ctrl+e 切换到命令的行尾
- ctrl+c 中止当前命令或脚本
- ctrl+d 退出当前shell,相当于logout,exit,一个个删除
- ctrl+l 清屏,相当于clear
- ctrl+u 清除(剪切)光标之前的内容
- ctrl+k 清除(剪切)光标之后的内容
- ctrl+r 查找
tab 所有命令及路径补全功能,一般要多按几下
- ctrl+shift+c 命令行复制内容
- ctrl+shift+v 命令行粘贴内容