0、linux常用路径及说明:
/dev/null 回收站
1、
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
touch file 检查文件是否存在,不存在则创建它。
2、查看当前环境变量 echo $PATH
查看当前使用的shell echo $SHELL
3、进程相关命令:
ps: 查看瞬间进程状态;
kill:杀死进程
top :进程实时监控
4、文件描述符:
0:标准输入 与 stdin(FIEL *类型的变量) 对应
1、标准输出(默认) stdout
2、标准错误输出 stderr
5、重定向
输出:
> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节); >>这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
输入:<无太大意义
6、通配符扩展:
*匹配任何一个字符串
?匹配单个字符
[]允许匹配方括号内任何一个单个字符 [^]对方括号内字符取反
{}匹配集合中任何一个字符串
7、权限分配命令:
chown 改变文件的拥有者和群组
chgrp 采用群组名称或群组识别码的方式改变文件或目录的所属群组。使用权限是超级用户。
chmod ls -al查看目录下的权限,如下例子:
-rwxr-xr-x 1 root root 4961 11-19 09:41 program
第一个-表示为非目录文件,若为d则为目录文件
接着三个为一组,表示属主、属主同组、其它用户对该文件的读、写、执行权限。
每组权限对应一个8进制数字,如上例对应的权限为 755
此外 ,“+”增加权限 “-”取消权限
8、shell是一种程序设计语言。其基本语法有
- 变量
输入:read或直接给变量赋值(不用初始化);输出:echo $name || "$name"
- 环境变量
$HOME 家目录
$PATH 环境变量
$
0
脚本的名字
$$ 脚本的进程号
$# 传递给脚本的参数个数
$PS1 命令提示符:[\u@\h \W]\$ 用户名+机器名+当前目录名
$PS2 二级命令提示符 通常为>
$IFS 输入域分隔符
SHELL:指当前用户用的是哪种Shell。
修改和查看环境变量的命令!
下面通过几个实例来说明:
1.echo 显示某个环境变量值 echo $PATH
2.export 设置一个新的环境变量 export HELLO="hello" (可以无引号)
3.env 显示所有环境变量
4.set 显示本地定义的shell变量
5.unset 清除环境变量 unset HELLO
2.export 设置一个新的环境变量 export HELLO="hello" (可以无引号)
3.env 显示所有环境变量
4.set 显示本地定义的shell变量
5.unset 清除环境变量 unset HELLO
- 参数变量
$@ 所有参数,不使用IFS分隔(推荐使用)
$* 所有参数,使用IFS分隔
$1 $2... 表示具体的参数
- 条件判断
test和[]
example1:
if test -f bill.c
then
...
fi
example2;
if [ -f bill.c ](注意[与被检查的条件之间一定要有空格)
then
...
fi
条件类型归为三类:字符串比较,算数比较,文件有关的条件(比较符与表达式间一定要空格)
字符串比较:
str1 = str2
str2 != str2
-n str 不为空则为真
-z str 为空则为真
算数比较:
exp1 -eq exp2
exp1 -ne exp2
exp1 -gt exp2
exp1 -ge exp2
exp1 -lt exp2
exp1 -le exp2
!exp
文件相关的条件:
-d file file是一个目录则为真
-f file file是一个文件则为真
-g file set-group-id位被设置为真
-u file set-user-id位被设置为真
-s file 文件大小不为0为真
-r file 文件可读为真
-w file 文件可写为真
-x file 文件可执行为真
- 控制结构:
if
then elif then fi
for variable
in values
do statements
done
while condition do statement done
until condition do statement done
case variable in
pattern [ | pattern] ...) statements;;
pattern [ | pattern] ...) statements;;
esac
- AND列表和OR列表
AND列表格式:statement1 && statement2 && statement3
OR列表: statement1 || statement2 || statement3
- 函数
1、函数实现要放在调用之前,脚本是自上而下执行的。
实现:func(){...} 调用:func ;
2、bash下true和false是内建命令,
true命令啥都不做,只设置退出码为0,false命令只设置退出码 为1。
3、$?表示上一次程序退出值。
4、return返回一个数字值,让函数返回字符串的方法:
foo(){echo JAY;}
result = "$(foo)"
5、local关键自己可以定义shell函数中的局部变量
- 命令:
(1):冒号命令偶尔用于简化条件逻辑,相当于true,还用于变量的条件设置:$(var := value),如果没有冒号,shell会把$var当作一条命令来处理。
(2)echo 常用参数 -n不换行,-e确定了反斜杠转义字符。
(3)eval对参数进行求值:
foo = 10
x = foo
eval y='$'$x
echo $y 输出为10 若去掉eval则输出为$foo
(4
)export命令将作为他参数的变量导出到子shell中
(5
)expr将它的参数作为一个表达式来求值
(6
)printf与c语言的主要区别是不支持浮点数。
(7
)trap command signal command为收到signal信号时采取的行动。
(8)find命令:用于搜索文件的命令
find [paths] [options] [tests] [actions]
path很容易理解,相对路径和绝对路径都可以;
options 常用 -mount不搜索其它文件系统中的目录
-maxdepth N 最多搜索N层目录
tests 常用 -name pattern 名字查询
-newer file 比file新
-type f 或者 -type d 类型查询
命令之间可以用 -not -and -or来连接
举例: find . \( -name "f*" -and -newer bill.o \) -type f -exec ls -l {} \;
actions 常用 -exec 执行一条命令 以 \; 结束
-ok 与-exec一样 提示用户确认
-print 打印文件名
-ls 对当前文件使用ls-dils命令
(9)grep命令:通用正则表达式解析器 General regular expression parser
grep [options] Pattern [files]
-c 输出匹配行的数目,不输出匹配行
-h 取消输出行的前缀,即不显示匹配查询模式的文件名
-i 忽略大小写
-l 只列出包含匹配行的文件名,不输出真正的匹配行
-v 匹配模式取反
-E采用扩展表达式
(10)正则表达式基础:
正则表达式的特殊字符及其含义:
^ 指向一行的开头
$ 指向一行的结尾
.任意单个字符
[] 字符的范围 如[a-z] [^a-z]中的^指字符集取反。
对于grep命令,如果指定了-E选项,则有另一些字符会遵循正则表达式规则
? 匹配可选,最多匹配一次
*必须匹配0或者多次
+必须匹配1或者多次
{n} 必须匹配n次
{n,}必须匹配n次或以上
{n,m}匹配次数为n到m次
9、xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
举例:find /etc -name "*.conf" | xargs ls –l
10、$((...)) 算数扩展,表达式放在双括号内进行简单的算数运算
$() 命令的执行和获取输出
${...}参数的扩展
$(param:-default)与$(param:=default)作用一样,若param为空则将值赋为default,否则不变。
$(#param) 给出param的长度
$(param%word) 从param尾部删除与word匹配最小部分,并返回剩余部分。
$(param%%word) 从param尾部删除与word匹配最长部分,并返回剩余部分。
$(param#word) 从param头部删除与word匹配最小部分,并返回剩余部分。
$(param##word) 从param头部删除与word匹配最大部分,并返回剩余部分。
11、here文档常用于输出大量文本。格式:<<KEYWORD...KEYWORD