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