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}'`

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux
shell
linux常用shell脚本、linux常用的shell脚本、常用shell脚本、shell常用命令整理、运维常用shell脚本,以便于您获取更多的相关知识。

时间: 2024-10-15 23:39:57

Linux下一些常用的Shell脚本整理_linux shell的相关文章

判断文件是否存在的shell脚本代码_linux shell

实现代码一. #!/bin/sh # 判断文件是否存在 # link:www.jb51.net # date:2013/2/28 myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath" fi # 这里的-d

实战模拟监控MySQL服务shell脚本小结_linux shell

1)端口判断法==>仅适合数据库本地使用 法1:if条件判断方法 [root@oldboy scripts]# cat check_db01.sh #!/bin/sh #created by oldboy #mail:oldboy521@gmail.com PortNum=`netstat -lnt|grep 3306|wc -l` if [ $PortNum -eq 1 ] then echo "mysqld is running." else echo "mysql

Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享_linux shell

环境: ssh server: 192.168.100.29  server.example.com ssh client: 192.168.100.30  client.example.com 通过root用户建立秘钥认证实现SHELL脚本管理,分发,部署 首先client端创建秘钥对,并将公钥分发给需要登录的SSH服务端 注:公钥相当于锁,私钥相当于钥匙,我们这里相当于在客户端创建一对钥匙和锁,想要做到SSH免密码登录,就相当于我们将锁分发到服务端并装锁,然后客户端就可以利用钥匙开锁. 一.

批量转换目录下文件编码的shell脚本代码_linux shell

一例批量转换目录下文件编码的shell脚本代码. 需求描述:由于从window转linux过来,很多原来win下的gbk文件需要转换成utf8. 以下脚本仅判断非utf8文件转换成utf8文件,并且默认非utf8文件为gbk,如果文件类型不一致需要修改. 例子: 复制代码 代码如下: #!/bin/bash# File Name: iconv.sh# Author: wanggy# site: www.jb51.net#show_file(){    for file in `ls $1`   

自己常用的一些shell脚本分享_linux shell

自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的,程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以就只能写linux的shell脚本了,呵呵,本文会陆续更新,给自己加油! 1.模拟linnux登录shell 复制代码 代码如下: #/bin/bash echo -n "login:" read name echo -n "password:" read passwd if [ $name = "cht&q

linux下使用rinetd来实现端口转发_linux shell

windows下的端口转发一般用的是自带的nat和porttunnel.portmap linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf  ,pkill rinetd  关闭进程 工具主页: http://www.boutell.com/rinetd/ 软件下载,解压安装 复制代码 代码如下: wget http://www.boutell.com/rinetd/http/rinetd.tar.gz tar zxvf rinetd.tar

一个简洁的全自动安装LNMP服务器环境的Shell脚本分享_linux shell

此脚本在生产服务器上使用了一年多,本脚本崇尚简单唯美,只需要一个脚本就可以在任何一台有网络的服务器上自动配置LNMP. 本脚本会在脚本执行目录下,建packages目录用于存放LNMP所需要的软件.大家安装完可以删除该目录. 使用方法: 1.把shell脚本的内容保存为nginx_php 2.root权限下运行: 复制代码 代码如下: chmod u+x nginx_php; ./nginx_php init; ./nginx_php ins_mysql-server; ./nginx_php

分享一个入门级可控多线程shell脚本代码_linux shell

说到shell可控多线程,网上分享的大部分是管道控制的方案.这种方案,张戈博客也曾经实战并分享过一次:<Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点>,感兴趣的朋友可以看看. 分享一个入门级可控多线程shell脚本方案 下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割.各个击破. 先来 1 段场景描述: 某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几千个IP进行一次Ping检测,只要取得ping可达的IP就好.如果单个IP去pi

CentOS 6.x系统升级Python到2.7版本的Shell脚本分享_linux shell

在CentOS 6.x上,默认自带的Python是2.6.x版本,这个版本的Python有点老了,比如"collections.OrderedDict"就是2.7才有的,而且著名的Python Web框架Django的新版(如:1.7)就不支持Python2.6,最低要求是2.7了.而一些公司或者共有云上的服务器就是使用CentOS6.x,所以也就有了升级Python到2.7的需求. 升级Python之前,需要先安装一些工具和软件库,否则后面安装Python或pip时可能出错. Pyt