1、常规命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
cd 切换目录
ls 查看当前目录下的内容
cp 复制
head、tail 显示文件头、尾内容
cat 查看文件内容
more、less 分页展示文件内容
rm 删除
tar 解、压缩
touch 创建文本
mv 移动或重命名
find 在文件系统中搜索某文件 如find . -name filename 支持正则
wc 统计
grep 查找某个字符串
pwd 显示当前目录
|
2、系统管理命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
su 切换用户
ps 查看进程
kill 根据pid号杀进程
who 显示在线账号
whoami 显示当前操作账号
hostname 显示主机名
uname 显示系统信息
top 动态显示当前资源消耗
du 查看目录大小
df 查看磁盘大小
ping 测试网络是否连通,丢包
ifocnfig 查看网卡
man 帮助
clear 清屏
alias 对命令重命名 如:alias showmeit=”ps -aux” ,另外解除使用unaliax showmeit
netstat 显示网络状态
free 显示内存使用情况
sar 1 20 以20次显示当前系统资源占用情况,最终显示这20次的平均值
export 设置环境变量
|
3、Linux管道
1
2
|
将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。
例:grep -r “close” /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。
|
4、用户及用户组管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/etc/passwd 存储用户账号
/etc/group 存储组账号
/etc/shadow 存储用户账号的密码
/etc/gshadow 存储用户组账号的密码
useradd 用户名
userdel 用户名
groupadd 组名
groupdel 组名
passwd root 给root设置密码
/etc/profile 系统环境变量
bash_profile 用户环境变量
.bashrc 用户环境变量
su user 切换用户,加载配置文件.bashrc
su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
|
5、更改文件的用户及用户组
1
|
chown [-R] owner[:group] {File|Directory}
|
6、文件权限管理
1
2
3
4
|
三种基本权限
R 读 数值表示为4
W 写 数值表示为2
X 可执行 数值表示为1
|
7、更改权限
1
|
chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录/文件名
|
8、vim使用
vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
命令模式下:
1
2
3
4
5
6
7
8
|
:q 退出
:q! 强制退出
:wq 保存并退出
:set number 显示行号
:set nonumber 隐藏行号
/apache 在文档中查找apache 按n跳到下一个,shift+n上一个
yyp 复制光标所在行,并粘贴
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
|
9、shell script使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# 注释
$? 前一个命令执行结果,0成功 1失败
$# 统计传递的参数个数
$0 在脚本中获取当前脚本名称
$$ shell本身的processid
$1 ~ n 获取第1 ~ n个参数
$@ 所有参数
sh -n 检测脚本是否有错,语法错或者字符错
sh -x 调测模式
tee 将数据输出到标准输出设备(屏幕) 和文件比如:command | tee outfile
> 覆盖输出
>> 追加输出
expr 进行数学运算 如:expr $n + 1
read 输入,如read a
basename file 返回不包含路径的文件名比如: basename /bin/tux将返回 tux
dirname file 返回文件所在路径比如:dirname /bin/tux将返回 /bin
sort 默认以第一个数据来排序,而且默认是以字符串形式来排序,所以由字母 a 开始升序排序
uniq 可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的
awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符
sed 一个基本的查找替换程序
怎么让脚本后台执行 ./test.sh &
nohup 永久执行
EOF 通常与”<<”结合使用,”<<EOF”表示后续的输入作为子命令或子shell的输入,直到遇到”EOF”,再次返回到主调shell
如:
sqlplus testuser/testpwd <<EOF
select sysdate from dual;
EOF
$SHELL 查看当前的shell语法类型 如:bash ksh csh
$home 当前用户的家目录,就是创建用户时制定的根目录,如:root的是~
$PATH 环境变量,每个目录中间以“:”分割
./test.sh、test.sh、sh test.sh 3种方式执行脚本的区别,为什么会这样?
脚本中的交互:
send 用于向进程发送字符串
expect 从进程接收字符串
spawn 启动新的进程
interact 允许用户交互
如:
#!/usr/bin/expect
spawn ssh sshuser@192.168.22.194
expect "*password:"
send "123\r"
expect "*#"
interact
|
10、判断
通常用” [ ] “来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
1
2
3
|
[ -f “somefile” ] :判断是否是一个文件
[ -x “/bin/ls” ] :判断/bin/ls是否存在并有可执行权限
[ -n “$var” ] :判断var变量是否有值[“$a”=“$b”]:判断a和$b是否相等
|
10.1 检查文件类型
1
2
3
4
5
6
7
8
|
-e 文件是否存在 test -e filename
-f 文件是否存在,且为文件 file
-d 文件是否存在,且为目录 directory
-b 文件是否存在,且为block device设备
-c 文件是否存在,且为character device设备
-S 文件是否存在,且为Socket文件
-p 文件是否存在,且为FIFO(pipe)文件
-L 文件是否存在,且为连接文件
|
10.2 检查文件权限
1
2
3
4
5
6
7
|
-r 文件是否存在,且可读权限
-w 文件是否存在,且可写权限
-x 文件是否存在,且可执行权限
-u 文件是否存在,且具有SUID属性
-g 文件是否存在,且具有SGID属性
-k 文件是否存在,且具有 Sticky bit 属性
-s 文件是否存在,且为 非空白文件
|
10.2 两个文件比较
1
2
3
|
-nt newer than 判断file1是否比file2新 如:test file1 -nt file2
-ot older than 判断file1是否比file2旧
-ef 判断是否为同一文件,可用在判断hard link上,判定两个文件是否指向同一个inode
|
10.3 两个整数的判断
1
2
3
4
5
6
|
-eq equal 相等, test n1 -eq n2
-ne not equal 不相等
-gt greater than 大于
-lt less than 小于
-ge greater than or equal 大于等于
-le less than or equal 小于等于
|
10.4 判定字符串
1
2
3
4
|
test -z string 判断字符串是否为0, string为空,返回true, test -z string
test -n string 判断字符串是否非为0, string 为空, 返回false, -n可省略
test str1 = str2 是否相等
test str1 != str2 是否不相等
|
10.5 多重条件
1
2
3
|
-a 同时成立,and , test -r file -a -x file : file同时具有rx权限时,返回true
-o 任意一个成立, or
! 取反
|
11、流程控制
11.1 if
“if” 表达式 如果条件为真则执行then后面的部分:
1
2
3
4
5
6
7
|
if ….; then
….
elif ….; then
….
else
….
fi
|
11.2 case
case表达式可以用来匹配一个给定的字符串,而不是数字。
1
2
3
|
case … in
…) do something here ;;
esac
|
11.3 select
select结构从技术角度看不能算是循环结构,只是相似而已,它是bash的扩展结构用于交互式菜单显示,功能类似于case结构比case的交互性要好
1
2
3
4
5
|
select color in “red” “blue” “green” “white” “black”
do
break
done
echo “You have selected $color”
|
12、loop
12.1 while-loop
while-loop 将运行直到表达式测试为真。will run while the expression that we test for is true.
关键字”break” 用来跳出循环。而关键字”continue”用来不执行余下的部分而直接跳到下一个循环。
1
2
3
4
5
6
|
while …; do
….
done
进入循环:满足
退出循环:不满足
|
12.1 until-loop
1
2
3
4
5
6
7
|
until …; do
….
done
进入循环:不满足
退出循环:满足
退出值不为0
|
12.2 for-loop
for-loop表达式查看一个字符串列表 (字符串用空格分隔) 然后将其赋给一个变量:
1
2
3
|
for var in ….; do
….
done
|
13、抓包
13.1 Linux
tcpdump
1
2
3
4
|
-i 监听的网口,比如eth0
-w 写文件,带文件名
-s 设置缓存字节数
-c 抓包次数
|
13.2 windows
fiddler wireshark(同时可以看包的报文)