常用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}'`
(0)

相关推荐

  • linux Shell学习笔记第四天

    本节课的脚本也同样共享在share中了. 第四天:循环结构 内容大纲: 应用实例分析 for循环 while循环 for循环的原理 达到效果 根据昨天的菜单修改. 选择1.2.3后还会提示是否继续选择的功能.选择4仍然是退出操作. for variable in list list 变量列表池 do command1 command2 done 实例一 forlist.sh #!/bin/bash #for with list for loop in 1 2 3 4 5 定义loop的变量 1

  • linux shell数组深入学习理解

    bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 数组赋值:(1) array=(var1 var2 var3 ... varN)(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)(3) array[0]=var1    arrya[1]=var2    ...    array[n]=varN 计算数组元素个数:${#

  • 常用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

  • 开发者常用及实用Linux Shell命令备忘录(小结)

    最近都需要在 Linux 系统下开发,所以经常需要在终端中进行操作.Linux 有很多 shell 命令可以帮助我们完成任务,但不常使用的话就会忘记掉. 本篇作为命令备忘录,我会将实际工作当中用到的命令记录下来,并长期保持更新. 1.which which 用于查找一个文件,并返回绝对路径,查找的目录范围由系统的 PATH 指定. 由于 Linux 中一切皆文件,所以 which 指定更多的是查找系统中有没有这个命令. 比如,查找 ls 命令,我们可知它的可执行文件的位置 which ls /b

  • 分享9个实战及面试常用Linux Shell脚本编写

    注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规则:变量名大写.局部变量小写,函数名小写,名字体现出实际作用. 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域. 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程. 6)写脚本一定先测试再到生产上. 1 获取随机字符串或数字 获取随机8位字符串: 获取随机8位数字: cksum:打印CRC效验和统计字节 2 定

  • 常用Linux发行版镜像源配置小结

    最近研究Linux,试了一些Linux发行版,但是大多数发行版的软件源速度都不是很理想.所以我这里干脆做了一个收集,把我用过的一些常用发行版的软件源设置方法做个总结,大家也可以做个参考. Ubuntu 18.04 18.04是目前Ubuntu最新的长期支持版.当然我非常期待4月份推出的20.04长期支持版,支持wireguard这一点就非常吸引人. # 备份官方镜像 cp /etc/apt/sources.list /etc/apt/sources.list.backup # 使用清华镜像源 t

  • linux shell 解析命令行参数及while getopts用法小结

    目录 linux shell 解析命令行参数|getpots getpots linux shell 解析命令行参数|getpots demo: #!/bin/bash func() { echo "Usage:" echo "test.sh [-j S_DIR] [-m D_DIR]" echo "Description:" echo "S_DIR,the path of source." echo "D_DIR,

  • Linux shell常用的73条命令总结

    前言 使用Linux shell是一些程序员每天的基本工作,但我们经常会忘记一些有用的shell命令和技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.需要注意一点的是,有些用法需要在你的Linux系统里安装额外的软件.下面话不多说了,来看看详细的内容吧. 检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo "open" 让进程转入后台: Ctrl + z 将进程转到前台: fg 产生随机的十六进

  • 一篇教会你写90%的shell脚本(入门小结)

    shell脚本? 在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls.cd.pwd等等.总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动.暂停.停止程序的运行或对计算机进行控制. shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效.安全.低成本地使用 Linux 内核,这就是 Shell 的本质.

  • Linux shell知识点汇总

    实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核.不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果. 引言 SHELL在处理一些问题的时候有得天独厚的优势,快捷方便,学会了还可以显摆显摆,当然了,shell的语法有点坑爹,没有系统的学过,只能一点一点的积累. 今天这个是在实现一个刷

  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试.难以阅读. 这些特殊符号罗列出来大致如下: 复制代码 代码如下: # ; ;; . , / / 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || &~ ~

  • Linux shell实现HTTP服务示例代码

    一.前言 使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断了,最好可以让 HAProxy 马上知道,然后停止向其转发请求 HAProxy 如何知道 Mysql 是否有问题呢? 二.解决思路 (1)编写一个shell脚本,检查 mysql 的状态,然后输出结果,例如状态正常时,返回状态码200及正确信息,否则返回状态码503及错误信息 (2)实现一个HTTP服务,有请求连接后,调用上面的检查脚本,

随机推荐