面试杂记1
来源:互联网 发布:永磁旋振治疗仪淘宝 编辑:程序博客网 时间:2024/06/10 20:49
1. 关于/tmp临时文件的理解
/tmp 下的文件在每次关机后都会被清理干净,若想手动清理,清理的时候不推荐使用rm -rf命令,这样有时会引起程序的僵死。推荐使用tmpwatch命令来进行清理。
tmpwatch简介:tmpwatch 工具从指定的目录中递归地搜索,并删除在指定时间段内没有被访问的文件。tmpwatch 一般被用来清扫那些用来临时驻留文件的目录(譬如,/tmp)tmpwatch 忽略符号链接,它不会切换文件系统,而且只删除空目录和常规文件。
tmpwatch语 法:tmpwatch [-afqv][--test][超期时间][目录...]tmpwatch参数说明:-a或--all 删除任何类型的文件。-f或--force 强制删除文件或目录,其效果类似rm指令的"-f"参数。-q或--quiet 不显示指令执行过程。-v或--verbose 详细显示指令执行过程。-test 仅作测试,并不真的删除文件或目录实例:sudo /usr/sbin/tmpwatch -afv 3 /tmp (清除/tmp下三小时以内没有使用的文件,并将结果输出)。
2. cp拷贝命令的 -f参数含义为什么?
强制覆盖
3. shell脚本之shift和getopts
很多脚本执行的时候我们并不知道后面参数的个数,但可以使用$*来获取所有参数。但在程序处理的过程中有时需要逐个的将$1、$2、$3……$n进行处理,shift命令的作用就是在执行完$1后,将$2变为$1,$3变为$2,依次类推。位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。
如下,可以自己运行看一下效果:
vim testshift.sh
#!/bin/bashcount=1until [ $# -eq 0 ]do echo "第 ${count} 个参数为: $1 参数个数为: $#" shift count=`expr $count + 1`done
以上程序运行结果
[root@original ~]# ./testshift.sh 1 2 3 4 5 6
第 1 个参数为: 1 参数个数为: 6第 2 个参数为: 2 参数个数为: 5第 3 个参数为: 3 参数个数为: 4第 4 个参数为: 4 参数个数为: 3第 5 个参数为: 5 参数个数为: 2第 6 个参数为: 6 参数个数为: 1
当在shift后面添加一个数字,比如2,则运行结果如下:
[root@original ~]# ./testshift.sh 1 2 3 4 5 6
第 1 个参数为: 1 参数个数为: 6第 2 个参数为: 3 参数个数为: 4第 3 个参数为: 5 参数个数为: 2
在上边的程序中,要注意until [ $# -eq 0 ]这个结束条件,如果shift 2但是传递的参数是奇数个的话就会一直循环下去
对传递的参数进行求和:
if [ $# -eq 0 ]thenecho "Usage:x_shift2.sh 参数"exit 1fisum=0until [ $# -eq 0 ]dosum=`expr $sum + $1`shiftdoneecho "sum is: $sum"
4、遍历目录中的文件并且提取最后一行的数值进行加法运算得到最后的结果,不知道文件有多少行,但是最后一行的格式是一样的(如total: 123)
#!/bin/bashtotal=0function count(){ for file in `ls $1` do echo $1$file if [ -f "$1${file}" ] then price=`tail -n 1 "$1${file}" | awk '{print $2}'` total=`expr $total + $price` else echo ${file} "is directory!" count "$1${file}/" fidone}count $1echo "The total price is: "$total
从文件中读取数据:
read number <data.txt
for 循环读取文件的每一个字段:
#!/bin/bashFILENAME=$1function viewFile(){ for line in `cat $FILENAME` do echo $line done}
大小写转换
[root@original ~]# echo 'halo' | tr 'a-z' 'A-Z'HALO[root@original ~]# name="lockey";typeset -u name;echo $nameLOCKEY[root@original ~]# name="LOCKEY";typeset -l name;echo $namelockey
while逐行读取:
#!/bin/bashFILENAME=$1cat $FILENAME | while read LINEdoecho $LINEdone
假如在当前面目录下有1.txt和2.txt,现在我们把它输出到halo,具体为:
find ./ -name "*.txt" | xargs cat > halo
5、普通用户免密切换到超级用户
vim /etc/pam.d/su
将第4行的#号去掉,然后将登陆用户加入 wheel组
[root@ok ok]# usermod -G wheel ok
阅读全文
1 0
- 面试相关杂记1
- 面试杂记(1)
- 面试杂记1
- 面试杂记
- 面试相关杂记2
- 笔试面试杂记
- 扇贝面试杂记
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记1
- 杂记-1
- 【数据结构作业六a】建立一个顺序表,用顺序查找、折半查找的方法对其实施查找
- Java进制概述及进制间的相互转换
- 计算机视觉(ComputerVision, CV)相关领域牛人的网站链接
- 读书笔记 2017年11月28日
- SpringMVC自定义注解进行日期校验
- 面试杂记1
- leetcode--12. Integer to Roman
- IO多路复用之select、poll、epoll详解
- C语言
- Linux如何查看JDK的安装路径
- shell脚本中写sftp
- 数据结构--无序List
- js为假的判断
- JAVA多线程实现的三种方式