【运维心得】你不知道,运维也要写代码(2)

文章目录

  • 编程题目
  • 代码解析

接着上次的文章说,运维写代码的场景还挺多的,今天说的这道题,有点儿像教科书。为什么这么说呢?你看了就知道了。

编程题目

  1. 使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:
    coaolvajcq_oldboy.html qnvuxvicni_oldboy.html vioesjmcbu_oldboy.html
    gmkhrancxh_oldboy.html tmdjormaxr_oldboy.html wzewnojiwe_oldboy.html
    jdxexendbe_oldboy.html ugaywanjlm_oldboy.html xzzruhdzda_oldboy.html
    qcawgsrtkp_oldboy.html vfrphtqjpc_oldboy.html
  2. 将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写。(请用至少两种方法实现)

代码解析

  1. 第一个问题,先声明,代码也是从网上找到的,重新执行验证了一下,下面的代码是我验证过的,另外,一定要在linux中重新敲一遍,或者转为unix格式,:set fileformat=unix否则即使按照我的代码,也会报错!所以大家今后看代码,一定要先自己验证一下。
    原文请见使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,大家可以对比代码的区别。
dir=/oldboy
[ -d $dir ] || mkdir -p $dir
for  n  in  {1..10}
do
    name=`tr -cd 'a-zA-Z'  </dev/urandom  |head -c10`
    touch  $dir/${name}_oldboy.html
done

上述代码还是比较直观的,需要了解tr/dev/random/dev/urandom的用法,tr -cd 'a-zA-Z' 就是取10位随机数的命令,实在不理解的,就死记住吧。至于touch,就不多解释了,感觉这些代码的确比较基础,如果面试的时候写不出来,很难给面试官一个良好的印象。

  1. 第二个问题,网上找到了两种方法,都写出来,大家可以比较一下那种更适合自己。
    第一种方法,
#!/bin/bash
cd /oldboy
for i in 'ls'
do
   rename ‘oldboy‘ ‘oldgirl‘ $i | rename ‘html‘ ‘HTML‘ $i
done

很明了的代码,只要会用rename的正则表达式就可以了。需要注意是ls外面的引号一定不要用错!

第二种方法:

#!/bin/bash
cd /oldboy
for i in `ls`
do
  mv $i `echo $i|sed -e ‘s#oldboy#oldgirl#g;s#html#HTML#g‘`
done

此方法用的是mv方式,说真的,这个命令不如上面的命令容易记忆。

你可能感兴趣的:(运维,运维,面试,代码)