shell编程---第一天

Linux下有没有和nbtstat一样的命令! 通过ip查看其他信息:主机名、mac等。

已搞定  用 nmblookup -A ip 可以

用 nbtscan  也可以

arp 命令:arp ipad.local  or  arp 192.168.1.108 or arp -a  or arp 

vi 查找字符串:切换到命令模式下,然后就那个打个/youstring


#!/bin/bash -e 脚本发生第一个错误时就中止脚本运行;-e的作用。

cat mirror_cache.conf | cut -f 3 -d,   以,为分隔符截取滴3个东东。

 ls -R doc/ | wc -l 

sudo mount -t smbfs -o codepage=cp936,username=tom,password=123456, -l //192.168.1.118/BU bu_mnt/

撕得粉碎的

递归的统计文件夹文件的个数。

linux常识:
1。遵循posix开发标准规范,unix也部分遵循了该规范。
2。版本 A.B.C ,A表示内核大幅度的提升  B表示内核重大修改  C轻微的修改了内核2.2.2 2.2.4 2.2.6,
 奇数版本为测试版本,偶数版本为稳定版本,所以我们看到的都是偶数版本。目前是:2.6版本。

shell简介:
1。可以驱动磁盘转动的程序叫驱动程序,也叫内核。 对内核公开的接口调用称为系统调用。ApI即函数罢了。
2。脚步:无需编译,可以直接运行的。
3。csh : 系统:/etc/.login   用户:~/.login   ~/.cshrc
  bash: 系统:/etc/profile   用户:~/.bash_profile   .bashrc   .bash_login .profile
  vi vim: .exrc  .vimrc
4。shell编程只适用于小工具小程序,不适合大程序。因为他所执行的每个命令都是一个新的进程。不像c语言,在一个进程里面运行。

shell编程:
1。脚步第一行:#!/bin/bash  #! 表示该shell脚本用bash来解释执行。
2。 #表示注释  exit 0 退出脚本     $取变量名  &后台运行   shleep 3 history查看你所做的操作
3。执行脚本:1. chomd +x xx.sh  2. bash xx.sh  3.exec xx.sh(会退出当前shell)  4. source xx.sh

4。比较杂的命令:
1。 cat << end ..........end 指定结束符为end进行输出。
2。指令 2> 文件:错误重定向。  ----a.out >a.txt 2>&1  a.out >& a.txt a.out &> a.t
3。C语言:字符串转换为数值用spfintf(),数值转换为字符串用atoi() atof()
4。():在当前shell下启动一个子shell来执行命令。(pwd)  \转义 续行 [ ] ls [a-f].*
 ls a.{txt,out}
5。变量的定义:1. x=x 2. declare -r a=100 -i -x ...    ${var1}避免歧义
6。read var1  从键盘读取一个数据                 man bash
7。环境变量(大写):ostype pwd lang path home seconds shlvl lineno machtype ps1ps2

特殊变量:export a=123  ; b=133 export b;设为系统变量
$@ ,$* 显示所有位置参数   $# 参数个数(除文件名) $$ 显示当前进程的pid号  $? 获取前一个命令的返回状态 0 成功 2 失败。

8。引用:单引号可辨别变量  双引号不可辨别   飘号:把字符当作命令来打====var=$(pwd)
*********
=号左右没有空格  :赋值    =号左右有空格:比较
*******
9。数组定义:abc[1]=1 abc[100]=099.....   b=(1 2 3 4 5)
10。运算符号:
 ${#变量名}:探测变量值的长度。
 替换运算符: ${变量名:-值}    + = ?
11。字符串处理:
 取子串:${str:3:5}
 删除字符串(不删除本体):${str#匹配模式}   ${str#*cwj}  ##全部  % %%从后往前。
 替换:${str/abc/ABC}   一次 ${str//abc/ABC} 所有
 比较:str==str -n "$str"  -z "$str" 不为空 ,为空
12。其他运算符:同c++的运算符一致,多了个 ** 表示求幂。  let  declare -i (())
13。bc ==>1000000*1000000  dc  用于计算大的数据。
14。程序控制: test [] 与 if 配合使用 =左右必须要有空格(比较) 
*****************:注意:记住使用字符串时,请务必要用 "  " 引起来,这样可以避免很多问题的出现。

比较大小表达式:  表达式 1    -xx  表达式2
-eq -ne -gt -ge -lt -le                    if test "$x" -eq "$y" ; then ; echo "xx" ; fi

15。文件测试:-f文件是否存在     -r 用户是否有读权限   -s 文件大小是否为0     !   逻辑非       []左右两边必须要有空格,同test。
16。set -o  环境测试,系统中的一些配置。 比如,同名文件是否采取覆盖。  set -o  colobber no / off  打开和关闭该选项。

case 语句:case语句注意的是双分号。    ----qu!老是忘记写esac作为结尾
case var in ; yes|YES) ....;; [nN]o)....;; *)....;; esac

17。 *一般情况下是表示:当前目录下的所有文件。
cwj:shell脚本中随处可见“通配符的使用”。很好。呵呵
   shell中if case 都是有结束符号的。呵呵
18。for语句:for var in * ; do xxxx; done xxxx;
    for ((i=0;i<10;i++)) ; do xxxx ; done xxxx;         //echo 回车   echo -n 不回车,同一行显示。


1.if [ ]/test  then  elif else fi //if语句
2.  # ##   % %% 删除掉。 :3:4  从3下标开始截取4个数字。  /abc/ABC  //a/A   :${str#*lala} ${str/a/A} ${str:3:5}
3.for ((i=0;i<10;i++)) do  done          for var in * do done
4. case var in x) echo ;; y) ;; c) ;; *)
  echo "plese inter a Var!"
  read inputVar
  case "$inputVar" in
   "a"|"A") echo "case a" ;;
   "b"*) echo "case b" ;;
   "c") echo "case c" ;;
   *) echo "other" ;;//最后一个;;可以加可以不加
  esac
作练习的时候发现的:

1。用#号的时候,我们的通配符要靠前,%号的时候,我们的通配符要靠后。  #*4  ky! #4* bu ky!  %4* ky!  %*4 bu ky !
str=01234567
echo ${str:2:4}
echo ${str#4*}
echo ${str%4*}

2.  a=100 b=200 c=((a+b)):这是错无的,应该这样子:((c=a+b))   或者 c=$((a+b))

3***********************我们经常这样子作:$((year%4==0&&year%100!=0||year%400==0))   : $((xxx))

-------------我的这些例子在我的资源里面有。呵呵

你可能感兴趣的:(编程,shell,测试,脚本,bash)