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)
上一篇 2016-08-12 09:01
下一篇 2016-08-12 09:01

相关推荐

  • Linux基础 & bash相关

    Q1:Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令: cd, ls, touch, cp, mv, rm, cat, tac, more, less, tail, head; 详细介绍以上命令: cd: 在Linux文件系统上,可以使用切换目录命令cd将shell会话切换到另一个目录。 命令格式: ~]#&nbsp…

    Linux干货 2016-11-06
  • rpm软件包管理

    一:二进制应用程序组成部分 二进制文件(which command)、库文件(ldd `which command`)、配置文件(.conf)、帮助文件(.README)等 二:rpm包文件的组成 rpm文件、rpm元数据(如名称、依赖性关系等)、安装或卸载时运行的脚本 三:rpm包数据库: 1.组成部分(通过 ls /var/lib/rpm 来查…

    2017-08-13
  • 如何查找Ubuntu系统中占用磁盘最大的那些文件夹

    根据马哥的指导,我们需要用df和du两个磁盘管理命令来查看 先用df来了解磁盘大致的空间情况: 然后用du -sh 某个folder来查看哪个文件夹占用多少空间 然后我们可以用du /homewebown | sort -nr | more 可来定位具体是哪个文件夹占用空间过大。

    Linux干货 2016-11-06
  • 马哥Linux第五周作业

    at,cron,rpm,yum,sed

    2018-01-12
  • Sed简介

    Sed简介    一、简介   sed全称是:Stream EDitor。sed命令的功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。  sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern s…

    Linux干货 2015-05-11
  • 马哥教育21期网络班—第15周课程+练习—-sed 总结

    sed:编辑器 流编辑器,文本流编辑 ed: Stream EDitor, 行编辑器; 介绍:sed是 一个非交换性文本流编辑器,它编辑文件或标准输入导出的文本拷贝。标准输入可能来自键盘、文件重定向、字符串或变量,或者管道的文本。 sed可以干什么? 别忘了vi也是一个文本编辑器。sed可以随意编辑小或大的文件,有许多…

    Linux干货 2016-11-14