Shell书籍资料

1.[高级Bash脚本编程指南》Revision 10中文版](https://imcmy.gitbooks.io/advanced-bash-scripting-guide-in-chinese/content/\)

2.[修订中文版本](http://www.linuxplus.org/kb/\)

3.[pdf](http://download.csdn.net/detail/loveofmaster/3869902\) 及[读书笔记](http://www.pythoner.com/122.html\)

4.[Linux命令大全/Bash](http://www.linuxplus.org/kb/cmdindex.html\)

5.Awesome Shell

6.Shell十三问?Markdown版

常用命令

本地文本编辑

o nano $filename

 ctrl + o 保存

 ctrl + x 退出

o vi

o vim $filename

 移动:kljh(上右下左)

 插入:ioIOaA

 离开编辑状态:按esc

 保存::w

 退出::q

 保存并退出::wq 或者 shift+z+z

 复制:yy

 粘贴:pP

 删除行:dd

 向后出单词:dw

 向前删除单词:db

o echo

o touch

o >

o >>

o 查看文本内容

 cat

 less

 more

 head

 tail

• 文件相关

o ls -alhtr

o find /tmp -name *.php

o 文件属性/属主

 chmod 600 ~/.ssh/test_rsa

 chown vagrant:vagrant ~/.ssh/test_rsa

o 创建目录

 mkdir /tmp/test

 mkdir -p /tmp/x/y

o 删除目录

 rm -rf /tmp/x

o 改名/移动

 mv /tmp/a /tmp/b

• 查找定位命令、文件

o whereis git # /usr/bin/git

o which git # /usr/local/bin/git

o type git # git is hashed (/usr/local/bin/git)

o locate git # N 多文件

o find

• sed # 文本流或字符串处理

• awk # 独立命令语言

• 时间/日期

o date

o time # 用来计时

• 网络

o ifconfig

 ifdown

 ifup

 ip

o ping

o traceroute

o dig

o whois

o nslookup

o ss

o netstat

o ip

• 下载网络文件

o curl -o x.txt http://domain/x.txt

o wget -O x.txt http://domain/x.txt

• 发邮件

o mail

 例子:echo 'email content' | mail -s 'email title' [email protected]

o mutt(可以发送附件)

 例子:echo 'email content' | mutt -s 'email title' [email protected] -a $attachment_filename

• 逻辑、流程处理

o seq

o while

o if

• 多窗口工具

o screen

o tmux

• 其他

o history # 查看历史命令

o !123 # 再次执行第123个命令,123这个编号通过history命令可以看到

o ctrl + r # 输入并匹配历史命令,可以直接或者修改执行

o top

o ps -aux | grep php

o ps -ef | grep nginx

tree

o tree

o tree /tmp

o tree -d # 只显示目录

o tree -L 2 # 最多显示两级

o tree -f # 显示完整路径

o tree -P *php # 目录匹配,只显示文件名以php结尾的文件

注意shell内部变量的特殊使用方式:

表示方法 描述

$n $1 表示第一个参数,$2 表示第二个参数 ...

$# 命令行参数的个数

$0 当前程序的名称

$? 前一个命令或函数的返回码

$* 以"参数1 参数2 ... " 形式保存所有参数,使用时需要引号"$*"

$@ 以"参数1" "参数2" ... 形式保存所有参数,使用时需要引号"$@"

$$ 本程序的(进程ID号)PID

________________________________________

命令学了不少了,接下来我们开始写脚本

## 基础:

# Sha-bang 形式和作用

#! /bin/bash # debian/ubuntu系列
#!/bin/bash # redhat系列及其他

#! /usr/bin/env python # 使用 "#!/usr/bin/env 脚本解释器名称" 是一种常见的在不同平台上都能正确找到解释器的办法。

#! /usr/local/bin/php
#!/usr/bin/perl -w

* 如果没指定,则使用默认 $SHELL 变量的值指定的shell去执行

* 不要指定一个不存在的可执行文件,如下

$ cat d.sh
#! /bin/bashx
ls
$ ./d.sh
-su: ./d.sh: /bin/bashx: bad interpreter: No such file or directory

results matching ""

    No results matching ""