当前位置:  建站>运营/SEO
本页文章导读:
    ▪Linux Shell编程学习笔记——目录(附笔记资源下载)      写在前面   最近花了些时间学习Shell,视频学习过程中做了笔记,留给大家参考。   第一部分 Shell基础编程   第一部分 Shell基础编程——第一章 Shell简介 http://blog.csdn.net/wentasy/article.........
    ▪linux shell批量拷贝文件          有时候我们需要将一个文件拷贝好几分。批量添加用户也是同样的原理的。 使用到的知识: test 或 [ :可用来表示比较的 算数比较 -eq    相等 -ne    不等.........
    ▪第二部分 Linux Shell高级编程技巧——第四章 几个脚本例子——终结篇      笔记 #几个脚本例子 #kill_process.sh #编辑 [root@localhost 0421]# vi kill_processes.sh #查看内容 [root@localhost 0421]# cat kill_processes.sh #!/bin/bash #kill_process.sh current_PID=$$ #获得特定进程的进程号并重定向到一.........

[1]Linux Shell编程学习笔记——目录(附笔记资源下载)
    来源: 互联网  发布时间: 2013-10-27
写在前面

 

最近花了些时间学习Shell,视频学习过程中做了笔记,留给大家参考。

 

第一部分 Shell基础编程

 

第一部分 Shell基础编程——第一章 Shell简介

http://blog.csdn.net/wentasy/article/details/8702846

 

第一部分 Shell基础编程——第二章变量和运算符

http://blog.csdn.net/wentasy/article/details/8710837

 

第一部分 Shell基础编程——第三章 Shell输入和输出

http://blog.csdn.net/wentasy/article/details/8740922

 

第一部分 Shell基础编程——第四章控制流结构

http://blog.csdn.net/wentasy/article/details/8789222

 

第一部分 Shell基础编程——第五章文本过滤

http://blog.csdn.net/wentasy/article/details/8810755

 

第一部分 Shell基础编程——第六章 Shell函数

http://blog.csdn.net/wentasy/article/details/8810779

 

第一部分 Shell基础编程——第七章脚本参数传递

http://blog.csdn.net/wentasy/article/details/8816835

 

第二部分 Linux Shell高级编程技巧

 

第二部分 Linux Shell高级编程技巧——第一章深入讨论

http://blog.csdn.net/wentasy/article/details/8825727

 

第二部分 Linux Shell高级编程技巧——第二章 Shell工具

http://blog.csdn.net/wentasy/article/details/8825778

 

第二部分 Linux Shell高级编程技巧——第三章运行级别脚本介绍

http://blog.csdn.net/wentasy/article/details/8831883

 

第二部分 Linux Shell高级编程技巧——第四章几个脚本例子——终结篇

http://blog.csdn.net/wentasy/article/details/8851658

 

资源下载

 

Shell 编程笔记,点此下载。

 

 

 

  @Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
作者:Wentasy 发表于2013-4-25 21:04:19 原文链接
阅读:38 评论:0 查看评论

    
[2]linux shell批量拷贝文件
    来源: 互联网  发布时间: 2013-10-27

    有时候我们需要将一个文件拷贝好几分。批量添加用户也是同样的原理的。

使用到的知识:

test 或 [ :可用来表示比较的

算数比较
-eq    相等
-ne    不等
-gt    大于
-ge    大于等于
-lt    小于
-le    小于等于
!    取反

文件条件测试
-d  是否为目录
-f    是否为文件
-g    文件的set-group-id位是否被设置
-r    文件是否可读
-s    文件是否不为空白文件,文件大小不为零,结果为真。
-u    文件的set-user-id为是否被设置
-w    文件是否可写
-x    文件是否可以执行

获取运行时传递的参数
$1、$2....$n :表示得到第1个,第2个。。。。第n个参数。(不包括文件的名字)
$@   被扩展成 "$1" "$2" ... "$n"
$# 参数的个数


if 语句的格式
if condition
then
    statements
else
    statements
fi

while语句的格式
while condition
do
    statements
done


下面直接看代码吧。(由于使用了算数计算。我使用的是bash shell。在ubunut12.04中运行成功。)

#/bin/bash
argc=$#
if [ $argc -lt 2 ]
    then
        echo "请输入两个参数,依次为要拷贝的文件和次数"
        exit 0
    fi
file=$1
count=$2
left=${file%.*}  #取出文件的名字。如a.tar.gz 的结果为a.tar
right=${file##*.}  #得到文件的后缀。如a.tar.gz 的结果为gz
i=0
if [ -f "$file" ]   #判断文件是否存在。
    then
        while [ $i -le $count ]
        do
            cp $file "$left$i.$right"  #"$left$i.$right"组合出新的文件名字
            let "i=$i + 1" #对i的值加一
        done
    else
        echo "$file is not exist\n"
    fi

blog:http://blog.csdn.net/rentiansheng/article/details/8851684
作者:rentiansheng 发表于2013-4-25 21:02:57 原文链接
阅读:35 评论:0 查看评论

    
[3]第二部分 Linux Shell高级编程技巧——第四章 几个脚本例子——终结篇
    来源: 互联网  发布时间: 2013-10-27
笔记
#几个脚本例子

#kill_process.sh
#编辑
[root@localhost 0421]# vi kill_processes.sh
#查看内容
[root@localhost 0421]# cat kill_processes.sh 
#!/bin/bash
#kill_process.sh
current_PID=$$
#获得特定进程的进程号并重定向到一个临时文件中
ps -aux|grep "/usr/sbin/httpd"|grep -v "grep"|awk '{print $2}'>/tmp/${current_PID}.txt
#命令块开始
for pid in `cat /tmp/${current_PID}.txt`
do
{
echo "Kill -9 $pid"
kill -9 $pid
}
done
#命令块结束
#删除临时文件
#echo "rm -f /tmp/${current_PID}.txt"
rm -f /tmp/${current_PID}.txt

#cpdir.sh
[root@localhost 0421]# vi cpdir.sh
[root@localhost shell]# cat cpdir.sh 
#!/bin/bash
#cpdir.sh
#此脚本用于将源目录下的子目录全部复制到目的目录中,不复制源目录中的文件。确保目的目录中的子目录是空目录

#脚本用法函数
usage()
{
        echo "cpdir.sh 源目录 目的目录"
}
#判断是否为两个参数,否则提示脚本用法
if [ $# -ne 2 ]
then
{
        usage
        exit 0
}
fi
srcdir=$1
desdir=$2
#判断源目录${srcdir}是否为目录,否则提示错误信息和用法
if [ ! -d $srcdir ]
then
{
        usage
        echo "错误:源目录${srcdir}不是目录"
        exit
}
fi

#判断目的目录${descdir}是否为目录,否则提示错误信息和用法
if [ ! -d $desdir ]
then
{
        usage
        echo "错误:目的目录${desdir}不是目录"
}
fi
processid=$$;

#查找源目录下所有的子目录,输出并保存到/tmp/srcdir_进程号.txt文件中
echo "源目录下${srcdir}所有的子目录"
echo "-----------------------------"
find $srcdir/* -type d|/usr/bin/tee /tmp/srcdir_tmp_${processid}.txt
sed "s/^${srcdir}/${desdir}/g" /tmp/srcdir_tmp_${processid}.txt >/tmp/srcdir_${processid}.txt

#在目的目录下建立空子目录
rm -rf ${desdir}/*
for subdir in `cat /tmp/srcdir_${processid}.txt`
do
{
        mkdir ${subdir}
}
done
echo ""
echo "目标目录下${desdir}所有的子目录"
echo "------------------------------"
find $desdir/* -type d|/usr/bin/tee /tmp/desdir_${processid}.txt
#比较在目的目录下建立空子目录后的差异
echo ""
echo "比较目的目录和源目录的差异"
echo "-------------------------"
diff /tmp/desdir_${processid}.txt  /tmp/srcdir_${processid}.txt
rm -f /tmp/srcdir_${processid}.txt
rm -f /tmp/desdir_${processid}.txt
rm -f /tmp/srcdir_tmp_${processid}.txt
 [root@localhost shell]# ls -al test/
total 20
drwxr-xr-x    4 root     root         4096 Apr 21 17:33 .
drwxr-xr-x   17 root     root         4096 Apr 21 17:33 ..
drwxr-xr-x    2 root     root         4096 Apr 21 17:33 aa
drwxr-xr-x    2 root     root         4096 Apr 21 17:33 cc
-rwxr-xr-x    1 root     root          391 Apr 21 17:32 test.sh
[root@localhost shell]# ls -al  test/aa/bb/ 
total 8
drwxr-xr-x    2 root     root         4096 Apr 21 17:34 .
drwxr-xr-x    3 root     root         4096 Apr 21 17:34 ..
[root@localhost shell]# find test/* -type d
test/aa
test/aa/bb
test/cc
test/cc/ss
[root@localhost shell]# find test1/* -type d
find: test1/*: No such file or directory
[root@localhost shell]# ./cpdir.sh test test1
cpdir.sh 源目录 目的目录
错误:目的目录test1不是目录
源目录下test所有的子目录
-----------------------------
./cpdir.sh: line 43: usr/bin/tee: No such file or directory
./cpdir.sh: line 44: tmp/srcdir_5075.txt: No such file or directory
cat: /tmp/srcdir_5075.txt: No such file or directory

目标目录下test1所有的子目录
------------------------------
find: test1/*: No such file or directory
./cpdir.sh: line 57: usr/bin/tee: No such file or directory

比较目的目录和源目录的差异
-------------------------
diff: /tmp/desdir_5075.txt: No such file or directory
diff: /tmp/srcdir_.txt: No such file or directory
[root@localhost shell]# ./cpdir.sh test test1
源目录下test所有的子目录
-----------------------------
test/aa
test/aa/bb
test/cc
test/cc/ss

目标目录下test1所有的子目录
------------------------------
test1/aa
test1/aa/bb
test1/cc
test1/cc/ss

比较目的目录和源目录的差异
-------------------------
[root@localhost shell]# cd test
test   test1  
[root@localhost shell]# cd test  
[root@localhost shell]# cd test/cc/ss/
[root@localhost test1]# cd ..  
[root@localhost shell]# cd test
[root@localhost test]# ls
aa  cc  test.sh
[root@localhost test]# cd ../test1
[root@localhost test1]# ls
aa  cc
[root@localhost test1]# cd cc
[root@localhost cc]# ls
ss
[root@localhost cc]# ls -al 
total 12
drwxr-xr-x    3 root     root         4096 Apr 21 17:48 .
drwxr-xr-x    4 root     root         4096 Apr 21 17:48 ..
drwxr-xr-x    2 root     root         4096 Apr 21 17:48 ss

#menu.sh
#创建文件夹
mkdir 0425
#进入
cd 0425
#拷贝
cp ../0421/cpdir.sh .
#改名
mv cpdir.sh menu.sh
#编辑
vi menu.sh
#拷贝
cp awkif.sh ../0425
#改名
mv awkif.sh functions
vi搜索内容:/要匹配的内容
#致歉,menu.sh内容过多,此处省略,若读者感兴趣可以到我的资源下载。


 

附图

 

 

 

 

  @Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
作者:Wentasy 发表于2013-4-25 20:48:02 原文链接
阅读:38 评论:0 查看评论

    
最新技术文章:
▪SQVI和SAP查询QUERY的区别和使用注意事项    ▪彻底理解Cisco/Linux/Windows的IP路由    ▪Exchange 2010 处于禁止发送用户自动收到来自IT...
▪MB_CHANGE_DOCUMENT使用方法    ▪ALV的html表头    ▪【译】如何精确判断最终用户响应时间过长的...
▪apache2.4.4启用deflate压缩    ▪使用vmware 配置centos 6.0+ 网络出现的各种问题...    ▪十句话教你学会Linux数据流重定向
▪centos6.x已经安装的系统添加图形界面    ▪Linux查看CPU和内存使用情况    ▪win7问题解决,凭据管理器和无法访问,不允...
▪Dynamics CRM 2013 初体验(4):不再被支持的功...    ▪win7下制作ubuntu系统安装启动盘和U盘安装ubuntu...    ▪Linux cp -a用法
▪Windows Server时间服务器配置方法    ▪Tomcat+memcached实现Session共享    ▪Linux修改系统环境变量PATH路径的方法
▪Citrix 服务器虚拟化之二十七 XenApp6.5发布服务...    ▪搭建本地Ubuntu 镜像服务器    ▪Create local metadata resource of yum
▪tsm ANS0326E问题处理    ▪Windows SVN变化邮件通知(Python2.7实现)    ▪linux下的内核测试工具——perf使用简介
▪Nginx TCP Proxy模块的编译安装    ▪OSX: SSH密钥使用日记(2)    ▪OSX: SSH密钥使用日记(1)
▪Manually start and stop Oracle XE in Ubuntu    ▪Disable autostart of Oracle-xe in Ubuntu    ▪tar命令-linux
▪xtrabackup-2.1.2-611安装    ▪无废话ubuntu 13.4文件共享配置    ▪Unix文本处理工具之sed
▪hpux 操作系统 磁带备份与恢复    ▪HP DL360 G7通过iLO部署系统    ▪Redhat 6.0中VNC Server的配置方法
javascript开源软件 iis7站长之家
▪web集群时session同步的几种方法(统计)    ▪inux常用命令大全    ▪BAT 批处理实现循环备份N天文件夹
▪BIND9私有DNS服务器小环境搭建实验    ▪Exchange2013增量备份    ▪OSSEC Monitor your App log file
▪《深入理解Nginx》阅读与实践(三):使用upstre...    ▪如何给Fedora 15创建磁盘分区    ▪Packet Sniffer Code in C using sockets
▪Error, some other host already uses address    ▪修改uCOS_II以实现“优先级+时间片”联合调度    ▪weblogic开发模式与生产模式介绍
▪Wireshark 高级特性    ▪ubuntu13.04版本下安装RabbitVCS,类似windows的Tortoi...    ▪Apache 一台主机绑定多个域名及虚拟主机
▪linux安全设置    ▪RHEL双网卡绑定    ▪Linux shell if参数
▪Windows配置路由时可以指定源地址啦    ▪centos安装vim7.4    ▪S3C2410 实验三——块拷贝、字拷贝(寄存器的...
▪系统运维——日志处理    ▪ip_conntrack缓存neighbour    ▪关键在封装并发出了帧-IP冲突也无所谓
▪weblogic11g 安装——linux 无图形界面    ▪《数据通信与网络》笔记--SCTP    ▪《数据通信与网络》笔记--TCP中的拥塞控制
▪weblogic11g 安装集群 —— win2003 系统、单台主...    ▪weblogic11g 节点管理器 nodemanager    ▪Citrix 服务器虚拟化之二十六 应用程序虚拟化...
▪如何将windows下的文件夹挂载到linux虚拟机下    ▪在64位AIX6.1下安装SAP JCo    ▪Outlook启动时提示“找不到文件Outlook.pst文件”...
▪weblogic8.1 登陆5 ip 限制    ▪weblogic 内存 及 内存溢出    ▪手把手教你在Windows端搭建Redmine项目管理软件
▪启动及重新启动nginx,重启nginx后丢失nginx.pid问...    ▪Win7实现快速启动栏并实现靠左边的终极操作...    ▪《深入理解Nginx》阅读与实践(二):配置项...
▪显示grub引导菜单    ▪nagios监控主机    ▪linux各种数据流重定向
▪centOS安装chrome浏览器    ▪Slackware 14 安装完全指南    ▪SharePoint 2013的100个新功能之内容管理(三)
▪Citrix 服务器虚拟化之二十一 桌面虚拟化之部...    ▪[问,ask]ubuntu13.04安装vncserver后只显示桌面,不显...    ▪Win7中IIS出现“HTTP 错误 404.17 - Not Found 请求的...
▪CentOS快速安装最新版本的SaltStack    ▪CentOS 6.4 快速安装Nginx笔记    ▪磁盘管理——RAID 0
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3