当前位置: 首页 > 编程笔记 >

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

田兴旺
2023-03-14
本文向大家介绍Linux下一些常用的Shell脚本整理,包括了Linux下一些常用的Shell脚本整理的使用技巧和注意事项,需要的朋友参考一下

如何计算当前目录下的文件数和目录数
   
   

 # ls -l * |grep "^-"|wc -l ---- to count files
  
  # ls -l * |grep "^d"|wc -l ----- to count dir

   
    如何只列子目录?
   

  ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux)
  
  ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)

   
    如何实现取出文件中特定的行内容
  
    如果你只想看文件的前5行,可以使用head命令,
  
    如: 

head -5 /etc/passwd

   
    如果你想查看文件的后10行,可以使用tail命令,
  
    如: 

tail -10 /etc/passwd

   
    你知道怎么查看文件中间一段吗?你可以使用sed命令
  
    如:

sed -n '5,10p' /etc/passwd 

这样你就可以只查看文件的第5行到第10行。
  
    如何查找含特定字符串的文件
  
    例如查找当前目录下含有"the string you want find…"字符串的文件:
   
    

$find . -type f -exec grep "the string you want find…" {} ; -print

   
    如何列出目录树
  
    下面的短小的shell程序可以列出目录树, 充分利用了sed强大的模式匹配能力。
  
    目录树形式如下:
   

  .
  
  `--shellp
  
  `--updates
  
  `--wu-ftpd-2.4
  
  | `--doc
  
  | | `--examples
  
  | `--src
  
  | | `--config
  
  | | `--makefiles
  
  | `--support
  
  | | `--makefiles
  
  | | `--man
  
  | `--util

   
    脚本如下:
   
  

 #!/bin/sh
  
  # dtree: Usage: dtree [any directory]
  
  dir=${1:-.}
  
  (cd $dir; pwd)
  
  find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"

   
    如何实现取出文件中特定的列内容
  
    我们经常会遇到需要取出分字段的文件的某些特定字段,例如/etc/password就是通过":"分隔各个字段的。可以通过cut命令来实现。例如,我们希望将系统账号名保存到特定的文件,就可以:
   
    

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表示没有错误,其他任何值表明有错误。
  
    如何使程序的执行结果同时定向到屏幕和文件
  
    program_name |tee logfile
  
    这样程序执行期间的显示都记录到logfile同时显示到标准输出(屏幕
)。
  
    如何用sendmail给系统所有用户送信
  
    首先在aliases文件里面建立一个alias:
   

  alluser: :include:/etc/mail/allusers

   
    并执行newaliases使之生效,然后在/etc/mail/allusers里面列出所有用户,可以使用下面的命令:
   
    

awk -F: '$3 >; 100 { print $1 }' /etc/passwd >; /etc/mail/allusers

   
    如何查找某条命令的相关库文件
  
    在制作自己的发行版时经常需要判断某条命令需要哪些库文件的支持,以确保指定的命令在独立的系统内可以可靠的运行。
  
    在Linux环境下通过ldd命令即可实现,在控制台执行:
   

  ldd /bin/ls

   
    即可得到/bin/ls命令的相关库文件列表。
  
    如何使用host命令获得更多信息
  
    Host能够用来查询域名,然而它可以得到更多的信息。host -t mx linux.com可以查询出Linux.com的MX记录,以及处理Mail的Host的名字。Host -l linux.com会返回所有注册在linux.com下的域名。host -a linux.com则会显示这个主机的所有域名信息。
  
    如何停止终端多个进程
  
    以下是脚本:
   
   

echo "系统当前用户"
  
  echo "---------------"
  
  who | awk '{print $2}'
  
  echo "---------------"
  
  echo "输入要杀死终端的终端号:"
  
  read $TTY
  
  kill -9 ${K}=`ps -t $TTY | grep [0-9] | awk '{print $1}'` 
 类似资料:
  • 本文向大家介绍自己常用的一些shell脚本分享,包括了自己常用的一些shell脚本分享的使用技巧和注意事项,需要的朋友参考一下 自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的,程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了,呵呵,本文会陆续更新,给自己加油! 1.模拟linnux登录shell 2.比较两个

  • 一、解放生产力 以下脚本需要放入一个可执行文件中,实现双击就可以运行! 1.1、快速提交代码 # Mac 上可以去掉脚本的第一行标志:「#!/bin/bash」 # 加上这个,颜色码会失效 # 1、cd 到当前目录 currentDir=$(cd "$(dirname "$0")"; pwd) cd ${currentDir} # 2、获取当前的分支 currentBranch=$(git s

  • 本文向大家介绍shell脚本中常见的一些特殊符号和作用详解,包括了shell脚本中常见的一些特殊符号和作用详解的使用技巧和注意事项,需要的朋友参考一下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1、{} 大括号: 用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合:

  • 本文向大家介绍Linux下netstat命令的一些常见用法,包括了Linux下netstat命令的一些常见用法的使用技巧和注意事项,需要的朋友参考一下 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 输出信息含义 执行nets

  • 本文向大家介绍linux下使用shell脚本输出带颜色字体,包括了linux下使用shell脚本输出带颜色字体的使用技巧和注意事项,需要的朋友参考一下 输出特效格式控制: \033[0m  关闭所有属性  \033[1m   设置高亮度  \03[4m   下划线  \033[5m   闪烁  \033[7m   反显  \033[8m   消隐  \033[30m   --   \033[37m

  • 本文向大家介绍linux下mysql如何自动备份shell脚本,包括了linux下mysql如何自动备份shell脚本的使用技巧和注意事项,需要的朋友参考一下 Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令。 保存后将以上脚本加入cront