shell编程及小命令

1. ping 10.1.252.25d2 -c1 -w1 &> /dev/null && echo "The host is up" || echo "The host is down"

2. 在vim命令中, p或则P可以实现复制。

    p: 复制到下一行

    P: 复制到上一行

3. echo 如何不自动转行?

      echo -n "xxxxx"

      echo -e"xxxxxxx\c"

4. echo -e 选项可以实现字体颜色。

5. uname -m   //  硬件平台架构  

   X86表示CPU指令集方式

   64位表示64位操作系统

6. bash -n 脚本  //  可用来调试脚本,检测脚本中的语法结构, 只是检测语法结构, 具体命令不检查。

   bash -x 脚本   //  调试执行脚本

7. PATH的全局配置文件,/etc/profile中, 对所有用户都生效。

   每个用户都有自己的配置文件~/.profile, 这种文件只对当前系统有效。

8. 在运行窗口或则是dos窗口下, 输入calc可打开计算机功能。

9. Windows寻找命令的话,是先找当前目录下, 有没有这个命令, 再去path变量下找。 

   Linux下则不是这样, 不会在当前目录下找, 直接就在path变量下找。

10. 命令的优先级:

别名<内部命令<hash<外部命令

11. 在运行窗口或则是dos界面下, 输入notepad可以打开记事本。

12. set 命令可以查看系统所有的变量, 包括你自己定义的变量。

    unset 命令 可以撤销变量。

    echo $A  输出一个没有变量的话, 这样系统会创建这个变量, 但是这个变量为空。

13. 编程语言不仅可分为面向对象和面向过程, 还可以分为强类型和弱类型

    强类型:定义变量时必须指定类型、参与运算必须符合类型要求,调用未申明变量会产生错误。

    弱类型: 无需指定类型, 默认均为字符型; 参与运算会自动进行隐式类型转化,变量无需事先定义可直接使用。

14. 命名规则: 驼峰原则   小驼峰(首字母小写)    大驼峰(首字母大写)

15.在系统中如果自己定义的变量使用完之后, 尽量通过unset释放这个变量。如果这个变量自己无法释放的话,会占用内存空间。

理论上, 一个shell执行完之后, shell脚本中的变量空间会被释放。 则bash中是无法使用的。

16. sleep #   // 睡眠#秒

17. pstree tree  两个命令都是以树型结果显示, pstree 以树形结构显示进程

    tree  则以树形结果显示系统文件结构。

18. `命令`  和  $(命令)  效果是一样的。

19. 引用变量的时候, 可以使用$变量名  $(变量名)

    比如当$10  想要引用第10个参数的时候, 必须使用$(10)

    $(10)

    $10   ==  ($1)0

20. 内存   free    cat /proc/meminfo

    磁盘   cat /proc/partitions   fdisk -l  lsblk

    cpu   lscpu   

21. grep 引用扩展正则表达式时需要使用-E参数, 而sed使用扩展正则表达式的话, 使用-r选项。

22. sort的使用, 当sort后面不加参数的话,表示以先按名字首字母ANSCII码排序,首字母一样的话,再按下一个字母的ANSCII码排序。

-n  参数  //  将整个字符串看成整体, 以小到大排序。

23. uniq命令用来查看重复的记录。

    uniq -c    //  用来查看所有的重复记录

    uniq -c与sort排序一起搭配使用:

    sort | uniq -c 

24. export 变量名  

    declare -x  变量名

//  不仅可以定义变量,还可以将原有的局部变量转化为坏境变量。

25. export 和  env  都是可以查看坏境变量的。

26.cp命令:

cp 单文件  目录

      cp 多个文件  目录

      cp -r 目录 文件   ERROR

      cp -r 目录  目录  RIGHT   // 这种方式是将整个目录都拷贝到目录下

      cp -a 目录 目录  ===  cp -r 目录/* 目录   // 将目录下的文件拷贝到目录下,而不是将整个目录拷贝过去

27. 在shell编程中, 常量又被称为只读变量。

    如何定义常量、只读变量:

  readonly 变量名=变量值

declare -r 变量名=变量值

28. $*  $@  表示全部的参数。 而$*是将所有的参数都整合为一个字符串,而$@所有的参数任是独立的个体

文件 test1.sh

#!/bin/bash

#

/root/shell/f1.sh "$*"  // 必须用""双引号括起来

echo "———————"

/root/shell/f1.sh "$@"   // 必须用""括起来

文件f1.sh

#!/bin/bash

#

echo "1:$1"

echo "2:$2"

echo "3:$3"

echo "4:$#"

echo "5:$*"

echo "6:$@"

    

结果:

[root@centos6 shell]# ./test1.sh 1 2  3 4

1:1

2:2

3:3

4:4

5:1 2 3 4

6:1 2 3 4

———————

1:1

2:2

3:3

4:4

5:1 2 3 4

6:1 2 3 4

29. basename $0 会自动读取可执行文件名

30. 使用sed编辑的文档是不可以直接重定向到>  >>本身编辑的文档, 这样操作的结果很严重, 文件马上变空了。

31. shell 编程中, 运算的几种方法:

1>. let 运算表达式

       2>. 变量=$[运算表达式]

       3>.  ((运算表达式))  // 支持C语言的表达式

4>. expr  使用命令进行运算

expr 符号1 运算符 符号2 

*  需要转译

5>. 申明变量为整形, declare -i 变量名

   该变量在bash中可以直接运算。

      6>. bc(计算器支持标准的输入)

标准输入 | bc  将结算结果赋给变量值

比如:

[root@centos6 shell]# echo `seq 1 100 | tr "\n" "+" | sed -r 's@(.*)\+$@\1@'`  |bc

5050

32. 产生随机数:

在Linux系统下面, 有一个RANDOM变量, 这个变量不是坏境变量, 是个局部变量。每输出一次这个这个变量, 这个变量就会变一次。

echo $[$RANDOM%80]  对80求余,得到的是0–79

33. a++:  先引用再递增

    ++a:  先递增后引用

a=2   a++ 本身是2   ++a  则本身是3  这就是两者的区别

34. 短路与&&    短路或||

    实现条件判断的方式: 1>. &&  ||

2>. if 

3>. case

35. 聚集命令, 几个命令用  ; (分号)隔开。

36.在每条执行的命令都有一个返回的结果, 0表示命令执行结果, 1-255表示执行失败。 

37. 在shell编程中, 可以自己定义返回的结果, 根据返回的不同结果做不同的操作。

38. 在linux系统,ping 命令一旦执行, 会一直执行下去。

    —W timeout  延迟  等待时间, 一旦在指定时间内, 对方没有回应, 表示ping 不同

    -c count 表示我要ping的次数。

Windows系统系ping命令:

ping x.x.x.x -t  不停的ping

ping -n 10 x.x.x.x  ping10次

39. $? 只会保留最后一次命令的执行结果。

40. 测试命令:

test …

[] 两边必须有空格

[[]]  两边必须有空格

41. true false 其实是bash中的指令, true返回1  , false返回0, 这两个命令在死循环中非常有用。

42. grep -q === grep "xxx" file &> /dev/null

43.测试类型:

1>. 数字测试:  //  注意这些前面必须是有-的。

-gt : 是否大于

-ge : 

2>. 字符串测试:

3>. 文件测试

4>. 组合测试:

第一种方式: ||  &&  !

第二种方式:   -a(并且)  -o(或则)   !

 -a  and   -o or

 

44. 用 ==  !=  两边尽量要用空格

45. 判断一个字符串变量为空的话, [ -n $A ] 是不行的, 但是[[ -n $A ]]是可以的。

[[]]  更具有通用性。  []有时候是不能使用的。

46. test xxx 或则  []  或则  [[  ]]表示的都是就是一个结果, 根据这个我们去做相对应的操作。 

47. 当我们只是记得一些文件信息, 而忘了是哪个文件的时候, 我们可以使用grep正则表达式来寻找配置文件

比如: grep -R "^root.*" /etc/

50. 自己默认创建系统用户的时候,默认是可以登录的。 其实还是/etc/default/userdd文件

51. 只要在/etc/文件夹下创建nologin文件的话, 非root用户是不可以登录的。 通过su命令的话, 通过su到这些普通用户的。

52. read 命令, 编写脚本, 可以启动和用户更好的交互功能。

[root@centos6 ~]# read -p "please input your name:" name

please input your name:meng

[root@centos6 ~]# echo $name

meng

read 变量  

read -p "提示信息" 变量

    

    

原创文章,作者:458813466,如若转载,请注明出处:http://www.178linux.com/33406

(0)
458813466458813466
上一篇 2016-08-12
下一篇 2016-08-12

相关推荐

  • 复制多台虚拟机及简单的网络配置

    虚拟机的复制,网络地址的简单配置,图形化界面setup和system-config-network的使用

    2017-09-09
  • NoSQL—mongodb常见使用和入门

    NoSQL介绍: NoSQL数据管理系统是目前非常流行的一种非关系性、分布式、不支持ACID设计规范式的数据库;NoSQL简单的数据模型、元数据和数据分离、弱一致性、高吞吐量、高水平扩展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL数据库一种非常流行的实现方式。   常见的NoSQL数据存储模型 列式模型 文档类型 应用场景:…

    2015-09-01
  • rsyslog基于mysql的日志集中存储,及loganalyzer日志分析工具的web配置

    Rsyslog是Linux系统自带的一款强大的日志系统,在业务量不是很大的情况下,能够满足大部分客户的日志分类搜集功能,是广大运维同事进行系统监控、分析不可或缺的利器。而在运维自动化高速发展的今天,如果我们还要“人工”智能的去每一个服务器上查看系统日志就显得太LOW了,并且,对我们来说也是一个不小的负担。 基于此,我们就简单的来介绍一下,rsyslog结合m…

    系统运维 2017-02-05
  • 磁盘管理(二)之swap、dd工具使用

    磁盘管理(二)之swap、dd工具使用   一、挂载点和/etc/fstab   (1)配置文件/etc/fstab,当系统启动时,自动加载该文件,会把写在配置文件里面的所有挂载点全部自动挂载上去,只要按照格式写,就不会丢失。   (2)文件挂载配置文件,如下图:    &nbs…

    Linux干货 2016-08-29
  • 第六周总结

    请详细总结vim编辑器的使用并完成以下练习题 vim: 模块化的编辑器   基本模式: 编辑模式,命令模式 输入模式 末行模式: 打开文件: # vim [options] [file..] +#:打开文件后,直接让光标处于第#行的行首; +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首; 模式转换: 编辑模式:…

    Linux干货 2017-08-07
  • keepalive实验

    实验环境centos 7 server x2 做keepalived主备 地址分别是192.168.0.200 192.168.0.201 Centos 7 server x2 做real server 采用DR模型   yum -y install ntp#安装ntp client ntpdate 47.95.253.33#时间同步到自己的ntp…

    2017-12-11