• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > 常用Linux Shell进阶部分小结

常用Linux Shell进阶部分小结

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了linux shell脚本,linux shell编程,linux shell脚本攻略,linux shell脚本实例,linux shell脚本编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

  # ls -l * |grep "^-"|wc -l ---- to count files
  
  # ls -l * |grep "^d"|wc -l ----- to count dir
</div>

   
    如何只列子目录?
   

  ls -F | grep /$ 
</div>

或者 

alias sub = "ls -F | grep /$"(linux)
</div>

   

  ls -l | grep "^d" 
</div>

或者

 ls -lL | grep "^d" (Solaris)
</div>

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

head -5 /etc/passwd
</div>

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

tail -10 /etc/passwd
</div>

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

sed -n '5,10p' /etc/passwd 
</div>

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

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

   
    如何列出目录树
   
    下面的短小的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"
</div>

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

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

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

  cut -c3-5 /etc/passwd
</div>

   
    就是输出/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]$
</div>

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

 program_name |tee logfile
</div>

   
    这样程序执行期间的显示都记录到logfile同时显示到标准输出(屏幕)。
   
    如何用sendmail给系统所有用户送信
   
    首先在aliases文件里面建立一个alias:
   

  alluser: :include:/etc/mail/allusers
</div>

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

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

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

  ldd /bin/ls
</div>

   
    即可得到/bin/ls命令的相关库文件列表。
  
    如何使用host命令获得更多信息
  
    Host能够用来查询域名,然而它可以得到

您可能想查找下面的文章:

  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • Linux shell脚本输出日志笔记整理(必看篇)
  • shell脚本 自动创建用户详解及实例代码
  • Linux Shell中三种引号的用法及区别
  • linux脚本判断条件总结(必看)
  • linux shell发送Email邮件的方法详解
  • Linux shell 之 提取文件名和目录名的一些方法总结
  • shell脚本实现输入密码显示星号
  • linux shell在while中用read从键盘输入的实现
  • shell脚本通过expect实现自动单边无密登录功能

相关文章

  • linux文件目录默认权限(详解)
  • UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
  • linux命令详解之挂载光驱的方法
  • linux下实现ftp自动备份shell脚本
  • shell脚本中常见的一些特殊符号和作用详解
  • 浅谈安装ORACLE时在Linux上设置内核参数的含义
  • linux下执行shell命令方法简介
  • linux shell进度条实现方法
  • Shell脚本实现线上服务器之间对比文件是否一致
  • 浅谈Linux 二进制包安装MySQL的一些问题

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Shell脚本实现apache日志中的状态码分析
    • shell替换文件中的文件路径脚本分享
    • Linux Shell脚本系列教程(六):数组和关联数组
    • CentOS 6.0 启动时出现fstab错误时的修复方法
    • Shell脚本实现把进程负载均衡到多核CPU中
    • Shell脚本字符串单引号和双引号的区别浅析
    • linux shell txt转换成html的实现代码
    • Linux更新Python版本及修改python默认版本的方法
    • 设置Linux系统的空闲等待时间TMOUT的方法
    • 实现释放CentOS系统内存的Shell脚本分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有