每日一题20180326

一、问题

1.1 统计脚本执行时间

如何统计脚本执行的时间?

1.2 让rm命令失效

要求用命令rm删除文件时提示如下禁止使用rm的提示,并使该效果永久生效。

[[email protected] oldboy]# rm -f passwd
Do not use rm command.

1.3 删除文件

删除/tmp/oldboy/下除passwd以外的其他文件。

1.4 打印

请打印/etc/passwd文件中的第2-5行

1.5 调换列

调换passwd文件里root位置和/bin/bash位置?即将所有的第一列和最后一列位置调换?

例:

默认:root:x:0:0:root:/root:/bin/bash
修改后:/bin/bash:x:0:0:root:/root:root

1.6 替换

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

1.7 查找

查找/tmp/oldboy下所有7天以前以log结尾的大于1M的文件移动/tmp下

二、答案

2.1

# 说明
# real指命令从开始到结束的时间
# user指用于执行进程所花费的时间
# sys指在内核中执行系统调用所花费的时间,进程使用CPU的时间

2.2

echo 'alias rm="echo Do not use rm command."' >> /etc/profile
source /etc/profile

思路:通过设置rm别名实现

2.3

准备数据:

rm -rf /tmp/oldboy
mkdir /tmp/oldboy
cp /etc/passwd /tmp/oldboy/
touch /tmp/oldboy/tmp{1..5}.txt
touch /tmp/oldboy/tmp{1..5}.log
tree /tmp/oldboy/

答案:

# 使用xargs
find /tmp/oldboy/ -type f ! -name passwd | xargs rm -f
# 使用find参数
find /tmp/oldboy/ -type f ! -name passwd -exec rm -f {} \;

分析:

-type f 指定只查找文件
-name passwd 指定查找名为passwd,加!表示排除passwd
xargs 多行转1行
rm -f 强制删除

find的-exec参数
{} \;   这是固定写法

2.4

# awk
awk 'NR>1 && NR<6{print NR, $0}' /etc/passwd
# sed
sed -n '2,5p' /etc/passwd
# head/tail
head -5 /etc/passwd | tail -4

分析:

# awk
NR是awk的内置变量表示行数
# sed
参考 sed速查手册

2.5

awk -F: '{print $7FS$2FS$3FS$4FS$5FS$6FS$1}' /etc/passwd

分析:

FS是awk的内置变量表示列之间的分隔符

2.6

准备数据:

rm -rf /tmp/oldboy
mkdir /tmp/oldboy
touch /tmp/oldboy/{1..2}.txt
touch /tmp/oldboy/{1..2}.log
echo 'hello oldgirl' > /tmp/oldboy/1.txt
echo 'hello oldgirl' > /tmp/oldboy/2.txt
echo 'hello oldgirl' > /tmp/oldboy/1.log
echo 'hello oldgirl' > /tmp/oldboy/2.log
find /tmp/oldboy/ -type f | xargs -I {} cat {}

find /tmp/oldboy/ -type f | xargs sed -i 's/oldgirl/oldboy/g'

分析:使用sed的替换功能

2.7

模拟环境:

rm -rf /tmp/oldboy
mkdir /tmp/oldboy
dd if=/dev/zero of=/tmp/oldboy/test1.log bs=1k count=1023
dd if=/dev/zero of=/tmp/oldboy/test2.log bs=1k count=1024
dd if=/dev/zero of=/tmp/oldboy/test3.log bs=1k count=1025
dd if=/dev/zero of=/tmp/oldboy/test4.log bs=1k count=1025

touch /tmp/oldboy/test3.log -m -d '20180101'

答案:

find /tmp/oldboy/ -type f -name '*.log' -size +1M -mtime +7 -exec mv {} /tmp \;

分析:

# 查看文件的时间
stat test1.log
atime 文件最近访问的时间
mtime 文件的内容最近修改的时间
ctime 文件属性最近修改的时间
当文件的目录被修改或文件的所有者、权限等被修改时ctime也会更新
# 修改文件的时间 mtime
touch test1.log -m -d '20180101'

三、参考

原文地址:https://www.cnblogs.com/okokabcd/p/8654145.html

时间: 2024-10-14 03:13:58

每日一题20180326的相关文章

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

老男孩教育每日一题-第126天-通过shell脚本打印乘法口诀表

问题背景: 生成9*9乘法表 [[email protected] ~]# seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}' 1x1=1 1x2=2   2x2=4 1x3=3   2x3=6   3x3=9 1x4=4   2x4=8   3x4=12  4x4=16 1x5=5

老男孩教育每日一题-第83天-binlog是什么?记录的什么?有几种工作模式及企业应用场景

参考答案 含义 binlog:是用于记录所有更新了数据的操作语句,语句以事件的形式保存,它描述数据的更改过程作用:用于实时备份数据,数据库的主从复制log_bin 打开记录binlog功能 binlog的查看 mysqlbinlog /home/mysql/binlog/binlog.000003 binlog的删除:可分为自动与手动删除 自动删除 能过binlog参数expire_logs_days来实现 show binary logs; show variables like "expir

&#8203;老男孩教育每日一题-第85天-下面这个脚本直接执行没有问题,在定时任务中有问题,什么原因?

脚本内容: [[email protected] scripts]# cat /server/scripts/ip.sh  #!/bin/bash IP=$(ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}') echo "ip:$IP" >> /tmp/ip.txt 定时任务: [[email protected] scripts]# crontab -l * * * * * /bin/bash /serve

老男孩教育每日一题-第84天-两个文件,把第一个文件中的第2、3行内容添加到第二个文件的第3行后面

两个文件如下: [[email protected] ~]# cat 1.txt  111 222 333 [[email protected] ~]# cat 2.txt AAA bbb ccc ddd 要求修改后的文件 [[email protected] ~]# cat 2.txt  AAA bbb ccc 222 333 ddd `` 参考答案: 方法1: [[email protected] ~]# sed -n 2,3p 1.txt |xargs |sed -r 's# #\\n#g

老男孩教育每日一题-2017年5月9日-vim命令粘贴带#号或注释信息格式会出现混乱情况怎么办

1.题目 老男孩教育每日一题-2017年5月9日-vim编辑器使用知识点:vim命令粘贴带#号或注释信息格式会出现混乱情况,有什么方法进行解决?问题说明:每次复制代码时,如果代码里有 //或# 这样的注释就容易让格式乱掉,显示的内容不整齐,并不是所期望的显示格式. 2.参考答案 原因分析: 是由于vim编辑命令的自动缩进功能所影响,因此粘贴带注释的代码时可以取消自动缩进 问题解决: vim在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉:最初的解决

老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写

老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写 文件内容如下: [[email protected] oldboy]# cat oldboy.txt  oldboy.blog.51cto.com www.oldboyedu.com 方法一:sed [[email protected] oldboy]# sed 's#[a-z]#\u&#g' oldboy.txt OLDBOY.BLOG.51CTO.COM WWW.OLDBOYEDU.COM 方

【Java每日一题】20161103

package Nov2016; import java.util.List; public class Ques1103 { public void method01(String[] array){} public void method01(Integer[] array){} public void method02(List<String> list){} public void method02(List<Integer> list){} } 今日问题: 请问主程序能否

老男孩教育每日一题-第110天-find命令-size参数

老男孩教育每日一题-第110天-find命令-size参数1.查找当前目录下以log结尾的大于50k小于2M的普通文件2.查找当前目录下以log结尾的小于50k大于2M的普通文件以上两个问题有什么不同? 参考答案: 测试环境: [[email protected] tmp]# pwd /root/tmp [[email protected] tmp]# ll -h total 7.4M -rw-r--r-- 1 root root   262 Jul 30 15:45 a.log -rw-r--