shell脚本学习(持续更新)

1.将文件的内容按行读取,并在循环中处理
1).利用管道的方式,将文件内容传给while
cat input.txt | while read Line
do 
    command1
done
2).利用重定向的方式,将文件内容传给while
while read Line
do 
    command1
done < input.txt
3).通过文件描述符的方式
exec 3 &< 0 #0表示的是标准输入,先备份到3
exec 0 &< input.txt #将文件的内容拷贝到0
while read Line   #这个时候是从0来读取内容
do 
    command1
done
exec 0 &< 3 #恢复
2.$() 和 ··都用来做变量替换
3.tee 输出到标准输出
  tee file 输出到标准输出的同时,输出到文件
  tee -a file 输出到标准输出的同时,追加到指定文件
4.sed [-nefri] [动作]
  选项:
-n : 安静模式。只有经过sed特殊处理的行才会被列出来。
-e : 在命令模式上进行sed的动作编辑
-f : 直接将sed的动作写在文件内
-i : 直接修改读取的文件内容,而不是输出到终端
  动作:
    a : 在指定行后新增
d : 删除指定行
i : 在指定行前新增
s : 替换  1,20s/old/new/g 将1-20行匹配old的替换成new
= : 获取匹配行号,比如 sed -n -e "/matchstr/=" file
5.expect 是一个可以完成交互功能的命令,通过expect命令,我们可以将交互过程写成脚本来执行。
 (1)四个关键的命令
           spawn : 用于启动新的进程,参数是一条shell命令,后续的expect,send,interact都在当前进程环境内
expect:获取当前进程的处理返回,参数可以是字符串或者正则表达式,在没有新启动进程时,期待标准输入。
   send : 给当前进程发送内容,参数是字符串。在没有启动新进程时,发送给标准输出。
    interact : 在当前进程提供给人工干预的机会
http://www.cnblogs.com/lzrabbit/p/4298794.html
 6. dos2unix file1 file2 file3...
     unix2dos file1 file2 file3
     由于linux和windows中文件的行结束符不同,linux中是“\n” windows中是“\r\n”,因此需要转换后执行
7.source file  :在当前shell环境下执行
   .    file : 和source一样
   ./file : 需要执行权限,会在当前环境下执行该shell,并且使用shell脚本中#!指定的解释器
   sh file:新开一个子shell环境执行,shell脚本中的指定解释器失效
8. IFS : internal file seperator 内部的文件分隔符,通过设置文件分隔符,可以指定读取文件时,默认按照指定分隔符分隔,并过滤掉分隔符进行输出。比如如果想从某个文件按行读取内容,且保留换行符,空格,就可以将其设置为$"\n"表示分隔符为换行符。这样换行符就会被忽略。
9.调试
可以在需要进行调试的代码前加上set -x ,代码后加上 set +x
 10.test
test 文件运算符
  利用这些运算符,您可以在程序中根据对文件类型的评估结果执行不同的操作:
  -b file 如果文件为一个块特殊文件,则为真
  -c file 如果文件为一个字符特殊文件,则为真
  -d file 如果文件为一个目录,则为真
  -e file 如果文件存在,则为真
  -f file 如果文件为一个普通文件,则为真
  -g file 如果设置了文件的 SGID 位,则为真
  -G file 如果文件存在且归该组所有,则为真
  -k file 如果设置了文件的粘着位,则为真
  -O file 如果文件存在并且归该用户所有,则为真
  -p file 如果文件为一个命名管道,则为真
  -r file 如果文件可读,则为真
  -s file 如果文件的长度不为零,则为真
  -S file 如果文件为一个套接字特殊文件,则为真
  -t fd 如果 fd 是一个与终端相连的打开的文件描述符(fd 默认为 1),则为真
  -u file 如果设置了文件的 SUID 位,则为真
  -w file 如果文件可写,则为真
  -x file 如果文件可执行,则为真


11.chown -R ${APP_USER}:${APP_GROUP} ${ADTDIR}
    修改指定文件夹的 所属用户:用户组,-R表示是递归的修改指定目录下的所有文件及子目录下的文件
12、环境变量文件介绍
转自:http://blog.csdn.net/cscmaker/article/details/7261921
Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。
所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)
(1).系统级:
      /etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于登录到系统的每一个用户。该文件一般是调用/etc/bash.bashrc文件。
/etc/bash.bashrc:系统级的bashrc文件。
    /etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。


(2).用户级(这些文件处于家目录下):
      ~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方
     ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定影响。
阅读更多
文章标签: shell
个人分类: Linux基础
上一篇详细打印tomcat的日志
下一篇使用parted分区的步骤
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭