Shell笔记
来源:互联网 发布:打车软件 技术方案 编辑:程序博客网 时间:2024/06/05 07:47
1. #!, 内核会扫描该行的其余部分,看是否存在可用的执行程序的解释器的完整路径,中间如果出现任何的空白符号都会略过,此外,内核还会扫描是否有一个选项要传递给解释器。内核会以指定的选项来执行解释器,再搭配命令行的其他部分。
#! /bin/csh -f
#! /bin/sh
2. #!这行的限制可能是63~1024, 所以尽量不要超过64, 解释器尽量用完整路径
3. 分号(;)可用来分隔同一行的多条命令, 如果使用&而不是分号,则shell将在后台执行前面的命令,这意味这shell不用等到该命令的完成就可以继续执行下一条命令
4.shell识别的三种基本命令:内建命令,shell函数和外部命令
5. 变量的使用
myvar = "this is a srting"
echo $myvar
fulename = "$first $middle $last"
6. printf "Hello, workd\n"
7. 改变标准输入与输出
tr -d '\r' < dos-file.txt > Unix-file.txt
8. >>附加到文件
9. | 建立管道(pipeline)
program1 | program2可将program1的标准输出改为program2的标准输入
10. 构造管道时,应该让每个阶段的数据量变得更少,就是说如果有两个要完成的步骤与先后次序无关,可以包会让数据量变少的那个步骤放在前面.
11. 特殊文件: /dev/null和/dev/tty
/dev/null: 传送到此文件的数据都会被系统丢掉
/dev/tty: unix会自动把文件重定向到一个终端,这在读取人工输入是特别有效
例如:
printf "Enter new password:"
stty -echo 关闭自动打印输入字符功能
read pass < /dev/tty
printf "Enter again: "
read pass2 < /dev/tty
stty echo 打开自动打印输入字符功能
...
12. 访问shell脚本的参数, 基于历史原因,当表示参数的整数大于9的时候,就应该用大括号把数字框起来。
echo tenth arg is ${10}
13. finduser例子
14. 简单的执行跟踪: 这会是shell显示每个被执行的命令,并在前面加"+"
#! /bin/sh
set -x
echo 1st echo
set +x
echo 2nd echo
15. 查找与替换
16. sort latin-numbers | uniq -c 计数唯一的,排序后的记录
17. echo Testing one two three | wc -c 计算字节数
echo Testing one two three | wc -l 计算行数
echo Testing one two three | wc -w 计算字数
18. wc /ect/passwd /etc/group 计算两个文件的数据
19. 打印
20. readonly可以把变量改为制度模式
hours_per_day=24
readonly hours_per_day
21. export将变量添加到环境中, env初始话变量, unset删除变量
22. 替换运算符 ${varname:=word}, ${varname:?message}, ${varname:+word}
23. 模式匹配 ${variable#pattern}
24. 位置参数
filename=${1:-/dev/tty} 如果给定参数则使用它,如果无参数就使用/dev/tty
25. 退出状态
26. test命令
if test "$str1"="$str2" 和 if [ "$str1"="$str2"] 作用相同
27. 函数
wait_for_user(){
until who | grep "$1" > /dev/null
do
sleep ${2:-30}
done
}
调用: wait_for_user tolstoy 60
带返回值的函数
equal() {
case "$1" in
"$2") return 0;;
esac
return 1
}
28. read读入数据
while read ... do ... done < file
cat /etc/passwd |
while IFS=: read user pass uid gid fullname homedir shell
do
...
done
29. 命令行处理步骤
30.
- [shell]shell脚本笔记
- shell笔记
- shell笔记
- shell笔记
- shell笔记
- Shell笔记
- Shell笔记
- shell笔记
- Shell 笔记
- shell 笔记
- shell笔记
- Shell 笔记
- shell笔记
- shell笔记
- shell笔记
- shell笔记
- shell笔记
- Shell笔记
- 关于overload和override的区别 (重载和重写)
- QT学习笔记(九):创建QT的共享库
- 开发与研发:区别很大(上)
- automake创建静态库
- 项目规划管理 - 1
- Shell笔记
- 解决Android网络编程中的connection refused--Android开发经验
- fwrite();用'\r\n'不能换行
- XP安装ArcGIS中的ArcServer注意事项
- 抽象工厂模式
- MFC内单选按钮的实现
- 观察getpid和getppid
- poj 3469 Dual Core CPU (最小割->最大流)
- DWR框架在SHH中的配置说明