首页 > 其他 > 详细

linux实习笔记(二)

时间:2014-02-15 12:06:32      阅读:439      评论:0      收藏:0      [点我收藏+]

 

***********************************************NO.1********************************************************

如果文件在之前并不存在,那么就创建它.如:

         1 : > data.xxx         #文件"data.xxx"现在被清空了.

         2

         3 #与 cat /dev/null >data.xxx 的作用相同

         4 #然而,这不会产生一个新的进程,因为":"是一个内建命令.

 

***********************************************NO.2********************************************************

/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!

/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。

 

***********************************************NO.3********************************************************

注意:在[[]]结构中,将没有文件扩展或者是单词分离,但是会发生参数扩展和命令替换.

     1 file=/etc/passwd

     2

     3 if [[ -e $file ]]

     4 then

     5   echo "Password file exists."

     6 fi

注意:使用[[]],而不是[],能够阻止脚本中的许多逻辑错误.比如,尽管在[]中将给出一个错误,

     但是&&,||,<>操作还是能够工作在一个[[]]test之中.

注意:在if后边,test命令和[]或[[]]都不是必须的.如下:

     1 dir=/home/bozo

     2

     3 if cd "$dir" 2>/dev/null; then   # "2>/dev/null" hides error message.

     4   echo "Now in $dir."

     5 else

     6   echo "Can‘t change to $dir."

     7 fi

if命令将返回if后边的命令的退出码.

 

***********************************************NO.4********************************************************

逻辑与

         1 if [ $condition1 ] && [ $condition2 ]

         2 # 与:  if [ $condition1 -a $condition2 ] 相同

         3 # 如果condition1和condition2都为true,那结果就为true.

         4

         5 if [[ $condition1 && $condition2 ]]    # 也可以.

         6 # 注意&&不允许出现在[ ... ]中.

注意: 在一个 管道 中, 可能有一种把stdin 重定向  到一个文件中的更有效的办法, 这

         种方法比 cat文件的方法更有效率.

 

     1 cat filename | tr a-z A-Z

     2

     3 tr a-z A-Z < filename   #  效果相同,但是处理更少,

     4                         #+ 并且连管道都省掉了.

 

 

***********************************************NO.5********************************************************

     tac 命令, 就是 cat的反转, 将从文件的结尾列出文件.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。

 

***********************************************NO.6********************************************************

trap ‘command‘ EXIT 或 trap ‘command‘ 0

通过捕获ERR信号,我们可以方便的追踪执行不成功的命令或函数,并输出相关的调试信息,以下是一个捕获ERR信号的示例程序,其中的$LINENO是一个shell的内置变量,代表shell脚本的当前行号。

$ cat -n exp1.sh
1 ERRTRAP()
2 {
3 echo "[LINE:$1] Error: Command or function exited with status $?"
4 }
5 foo()
6 {
7 return 1;
8 }
9 trap ‘ERRTRAP $LINENO‘ ERR
10 abc
11 foo

其输出结果如下:

$ sh exp1.sh
exp1.sh: line 10: abc: command not found
[LINE:10] Error: Command or function exited with status 127
[LINE:11] Error: Command or function exited with status 1

在调试过程中,为了跟踪某些变量的值,我们常常需要在shell脚本的许多地方插入相同的echo语句来打印相关变量的值,这种做法显得烦琐而笨拙。而通过捕获DEBUG信号,我们只需要一条trap语句就可以完成对相关变量的全程跟踪。

以下是一个通过捕获DEBUG信号来跟踪变量的示例程序:

$ cat –n exp2.sh
1 #!/bin/bash
2 trap ‘echo “before execute line:$LINENO, a=$a,b=$b,c=$c”‘ DEBUG
3 a=1
4 if [ "$a" -eq 1 ]
5 then
6 b=2
7 else
8 b=1
9 fi
10 c=3
11 echo "end"

其输出结果如下:

$ sh exp2.sh
before execute line:3, a=,b=,c=
before execute line:4, a=1,b=,c=
before execute line:6, a=1,b=,c=
before execute line:10, a=1,b=2,c=
before execute line:11, a=1,b=2,c=3
end

从运行结果中可以清晰的看到每执行一条命令之后,相关变量的值的变化

 

***********************************************NO.7********************************************************

ctrl+c是强制中断程序的执行。

 

ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.

 

例如:当你vi一个文件是,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得存盘推出,你可以简单的按下ctrl+z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件。

 

ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF

 

***********************************************NO.8********************************************************

ls -ltr 按时间反序排序当前文件夹中文件(-r反序)
2
、在当前文件夹内查找最近一天内更改的文件(包括子文件夹):
       
find . -type f -mtime -1
    1天以前更改的文件:
       
find . -type f -mtime +1
    最近10分钟内状态变化的文件:
    
   find . -type f -cmin -10

linux实习笔记(二)

原文:http://blog.csdn.net/panfengyun12345/article/details/19193233

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!