shell脚本语言基本语法学习

Qiniu 七牛问题解答

shell脚本语言入门

问题解决方案

Shell日常学习

Cd / 进入到根目录

Pwd 当前目录结构

Tab 模糊查找补全命令

Ifconfg 查看当前网络的信息

*?[]  通配符 方便查询

星花* 匹配多个 ls *.tar
?匹配单个 ls m???
[  ]  ls  m* [od] 列出以m开头结尾为od 的目录火文件
    Ls  x* [0-9]
    Ls  g *[m-p]

目录操作命令:

当前工作目录:pwd

进入主目录:cd  ~

列出文件类型:ls -F

列出隐藏文件: ls  -a

或者 ls -aF

显示文件的各种属性:  ls  -l

显示目录下文件的信息: ls -aF /etc

或者显示目录:dir

或者显示文件的详细属性:vdir

显示文件行号: cat -n  filename

Cat 有缺陷。滚动显示

More +filename  下一页,分屏显示 按空格滚动

     或者用管道: cat -n  filename |more

查看文件的前五行: head  -n 5 filename

查看最后五行的内容: tail -n 5 filename

更为强大的 less

用方向键可以上下滚动,输入 q 可退出

查找文件的信息: grep  内容 文件名

在当前目录中查找文件名称中含有bash: find ./ -name *bash*

查看文件类型 type +文件名

查找某个目录下面名称为init.d 文件类型为目录的
:find /etc -name init.d -type  d -print

Type (c d f)
C 为链接
D 为目录
f为普通文件

指定时间在100天以内没使用过的命令:  find  /usr/bin/ -type f -atime +100 -print

指定最后修改时间为一天之内的普通文件 : find ./ -type f -mtime -1 -print

快速查找: locate filename
           Updatedb

打开火狐浏览器:firefox

Firefox & 在后台运行

Firefox www.baidu.com
查找程序文件: whereis find

查找find 命令的位置,和文档位置

查看命令存在的目录: which ls

查看当前系统中有哪些用户存在: who

查看当前系统的版本信息:uname - a

帮助命令: man find

简单帮助命令: whatis ls

正则表达式:

Nl  + filename : 以行查看文件,代替cat

列出文件中以a 开头,以t结尾的文本:点代表任意字符,*代表任意次数,¥代表结  尾,…^代表开头。

Egrep “^a.*t$” filename

查看刚才的输出有多少个:

加个| wc -w

示例:

Egrep “.at” filename

这个命令显示出来的是at前面至少一个单词
可能不会满足我们的需要,如果我们想要前面只有一个单词
那么我们只能这样

Egrep “\<.at\>”filename

字符集的概念:

以abc 其中一个开头的文件名
Egrep  “[abc]at” filename

列出文件中,所有以大写字母开头,小写字母t结尾的:

Egrep  “^[[:upper:]]t$” filename

Shell 编程

Vi helloword.sh

!/bin/bash

这是一个实例文件

Echo “helloword”

Chmod u+x helloword.sh

./helloword.sh

另一个示例:

!/bin/bash

Log =”monday”

Echo “this is monday”

Echo logEcho$Echo“logis(log)”

单引号括起来,所有都不解释

双引号。除了$,等不解释

!/bin/bash

Log=saturday

Echo “today is $log”

Echo ‘today is $log’

Echo “today is date

输出结果

Shell执行命令和循环执行和控制语句

If判断命令

Case:

if

有关循环重复的语句。

! /bin/bash

Sum=0

Number =1

While test number?le100DoSum=[ sum+number ]

Let nmber= number+1DoneEcho“thesummrryissum”

-le

-gt 大于

Cut命令

主要作用,从输入的行中,提取指定的部分

源文件:

Beijing 010

Shanghai 021

Tianjin 022

Hangzhou 0571

命令: cut -c 3-6 city

命令: cut -f1 city 提取输入行的第一列

Sort 命令:

Sort city: 对第一列进行排序

Sort -r city: 对第一列进行反序排序

Sort -k 2 city : 对第二列进行排序

如果有重复的行:

首先要先排序一下,才能用uniq命令

Sort city |uniq

将几个字符替换成小写,输入在city中

Tr “BHS” “bhs”

代码实践一

#!/bin/bash

function  gotoLogFile()
{

case   $1  in
"579" )
   echo $2 , $3;
   cd  ~/logs/$2/REQ/UP;
   timePoint=`echo $3 |sed ‘s/.$/0/‘`;
   echo "${timePoint}.log";
   cat   "${timePoint}.log"    | awk  -F ‘\t‘  ‘{if($8  == 579){print substr($0, index($0, "uid") + 5, 10)}}‘ | sort  -rn  | uniq -c  |sort -rn | head -20

   ;;
"4xx" )
   echo  "404";;
"6xx" )

    echo $2, $3
    cd  ~/logs/$2/REQ/RS;
    timePoint1=`echo $3 |sed ‘s/.$/0/‘`;
    echo "${timePoint1}.log";
    cat   "${timePoint1}.log"  | awk  -F ‘\t‘
    cat   "${timePoint}.log"    | awk  -F ‘\t‘  ‘{if($8  == 579){print substr($0, index($0, "uid") + 5, 10)}}‘ | sort  -rn  | uniq -c  |sort
    cat  16-40.log  |   awk -F ‘\t‘ ‘{ if($8  ~/^4/){print $8, substr($0, index($0, "uid") + 5, 10) }}‘  | awk ‘{if( $1 == 404){a[$2] +=1 } else if($1 == 200){b[$2 +=1]} else{} } END{for (i in a) print a[i] " ==>" i ; for (i in b) print b[i] " ==>" i}‘
  ;;

esac

}

if [ $# -ne 3 ]; then

echo "Usage : $0  <错误码> <日期> <当天时间点>
 for  example  $0  519   2014-12-28  11-29
";

exit  1;

fi

gotoLogFile $1  $2  $3

代码实践二

#! /bin/bash
number=1
filenumber=1
length=200
cd /home/liuhanlin/test/qiushi/
totalfile=`ls -l |wc -l`
echo "$totalfile"
center=$totalfile
flag=-1
bound=$length
while test $flag -le 0
do
           mkdir "qiubai$filenumber"
           while test $number -le $bound
               do
                     mv "$number" "qiubai$filenumber"
                     let number=$number+1
               done
           let center=$[ $center - $length ]
           echo "$flag">config.txt
           echo "$center">config.txt
           let filenumber=$filenumber+1
           echo "$filenumber">config.txt
           let bound=$[ $length * $filenumber ]
           echo "$bound">config.txt
           if [ $center -le  $length ];
           then
              let flag=1
           fi
done
mkdir "qiubai$filenumber"
while test $number -le $totalfile
do
              mv "$number" "qiubai$filenumber"
              let number=$number+1
done
时间: 2024-09-30 18:16:51

shell脚本语言基本语法学习的相关文章

linux:shell脚本的一些语法

读取文件的第一行并赋值给变量 var=`head -1 filename` #`不是单引号,是Esc下方的一个按键,为命令替换符,将命令行执行结果赋给var 读取文件的第N行并赋值给变量 var=`sed -n Np filename` #把N替换成数字 逐行读取文件 while read line do echo $line done < filename linux:shell脚本的一些语法,布布扣,bubuko.com

如何在 Shell 脚本中执行语法检查调试模式

我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用shell调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. 在本系列的这一部分,我们将了解如何使用语法检查调试模式.记住我们之前在本系列的第一部分中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试. 启用 verbose 调试模式 在进入本指导的重点之前,让我们简要地探索下 verbose 模式.它可以用 -v 调试选项来启用,它会告诉 shel

shell脚本语言基本命令

shell脚本语言基本命令脚本:可运行,不需要编译 #vi 1.sh[编写:i(顶格)或o(换一行)]#! /bin/bash##this is a test shell script##Written by yuanting 2018-09-26echo "123456789"touch 2121.txtdate:wq 或 :x#ll 1.sh#bash 1.sh #运行#./1.sh #运行#chmod 777 1.sh #ll 1.sh #./1.sh#ls #sh -x 1.s

查看CentOS系统shell脚本语言支持的种类

1,使用cat /etc/shells 可以看到当前系统支持的shell脚本语言支持的种类 备注:Linux系统中的主流Shell是bash,bash是由Bourne Shell(sh)发展而来的,同时bash还包含了csh和ksh的特色,但大多数脚本都可以不加修改地在sh上运行,如果使用了sh后发现结果和预期有差异,那么可以尝试用bash替代sh. 2,查看当前系统默认使用的shell命令如下或者查看系统的用户信息文件也可以看到 原文地址:http://blog.51cto.com/13718

Shell脚本语言学习总结

Shell 是一种脚本程序,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了. 编写第一个Shell 程序 在linux命令行执行 [[email protected] test]# echo "我的第n个shell 程序" 我的第n个shell 程序 打开文本编辑器, 新疆一个名称为xxx.sh的文件,例如:test.sh #!/bin/bash echo "Hello Word !" #编辑完成后使用命令,使test.sh脚本具有执行权限:c

Shell 学习3 - Shell脚本语言与编译型语言的差异

大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作"编译". 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型

shell 脚本-符号-基础语法

为了便于识别  建议 以.sh 结尾 shell脚本 可以放上所有的命令行的指令(源于bash) shell脚本 是 解释型语言      c/c++ 是编译型语言 下面用到的 shell代码sh_1.sh #!/bin/bash cd ../ ls pwd 解释型脚本的执行过程: script.sh 是文本文件,根本没有代码段和 _start  函数 , exec 怎么执行. 解释: Shell会fork 一个子进程并调用 exec执行 ./script.sh这个程序,exec 系统调用应该把

什么是Shell?Shell脚本是什么?shell脚本执行过程?学习Shell编程必看!

1.什么是Shell? 首先请看图----自动略过各位都是新手(CaiJi) 聪明的你如图所得: Shell=命令解释器它的作用是执行并解释用户输入的命令及脚本,用户键入一条命令,Shell就执行并解释一条.键入命令,就可以立即得到回应的对话方式,被称之为为交互式.Shell它存在于操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户,当我们输入系统用户名和密码,登录到Linux后的所有操作都是由Shell解释并执行的. 所以

Shell脚本语言与编译型语言的差异

大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”. 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型语言多半运