Linux下一些常用的Shell脚本整理

2019-09-23 09:24:50于丽

    

cut -d: -f 1 /etc/passwd >; /tmp/users

   
    -d用来定义分隔符,默认为tab键,-f表示需要取得哪个字段。
  
    当然也可以通过cut取得文件中每行中特定的几个字符,例如:
   

  cut -c3-5 /etc/passwd

   
    就是输出/etc/passwd文件中每行的第三到第五个字符。
  
    -c 和 -f 参数可以跟以下子参数:
  
    N 第N个字符或字段
  
    N- 从第一个字符或字段到文件结束
  
    N-M 从第N个到第M个字符或字段
  
    -M 从第一个到第N个字符或字段
  
    在vim中实现批量加密
  
    密码中还是不能带空格,不管了,能加密就好,先这么用着。
   
   

 #!/bin/bash
  
  # Encrypt file with vim
  
  if (test $# -lt 2) then
  
  echo Usage: decrypt password filename
  
  else
  
  vim -e -s -c ":set key=$1" -c ':wq' $2
  
  echo "$2 encrypted."
  
  fi
  
  [weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done
  
  test2.txt encrypted.
  
  test4.txt encrypted.
  
  test9.txt encrypted.
  
  kick.txt encrypted.
  
  echo "$2 encrypted."
  
  fi
  
  [weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done
  
  test2.txt encrypted.
  
  test4.txt encrypted.
  
  test9.txt encrypted.
  
  kick.txt encrypted.
  
  too_old.txt encrypted.
  
  too_old_again.txt encrypted.
  
  bg5.txt encrypted.
  
  [weeder@SMTH weeder]$

   
    $@等特定shell变量的含义
  
    在shell脚本的实际编写中,有一些特殊的变量十分有用:
  
    $# 传递到脚本的参数个数
  
    $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
  
    $$ 脚本运行的当前进程ID号
  
    $! 后台运行的最后一个进程的进程ID号
  
    $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
  
    $- 显示shell使用的当前选项,与set命令功能相同
  
    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
  
    如何使程序的执行结果同时定向到屏幕和文件