# 培训
## 第一周
### 周三
* git
* 步骤
* 把仓库克隆到本地
* git clone
* 进入到克隆下的仓库
* cd campus2019-homework/
* 建立自己名字命名的分支
* git checkout -b xue.yu
* 查看是否克隆成功
* git branch -vv
* 建立子分支
* git checkout -b
* 提交
* git push --set-upstream origin xue.yu
* linux系统
* 简介
* 开源
* 发行版
* debian/ubuntu
* redhat/fedora/centos
* 文件管理
* ls
* -a:隐藏文件
* -l:更多信息
* 排序显示
* cd
* .当前目录
* ..
* cd -上次目录
* cd /
* cd ~home目录
* pwd
* cp
* -r
* 文件夹
* mv
* rm
* -v显示删除
* 链接
* ln
* 硬链接
* 只能对文件使用
* ln start.sh a.sh
* 软连接
* ln -s
* df
* 查看磁盘盘大小
* du
* 文件大小
* du -sh *
* 查找
* find
* find . -name "*.xml"
* whereis
* 查看可执行文件在哪个目录下
* which
* 权限管理
* 基本概念
* User
* Group
* root
* 文件系统
* 进程
* 权限信息
* 后三位
* 所有用户
* 读
* 写
* 目录下创建,修改删除文件
* 可执行
* 可以cd,ls
* 中间三位
* 小组内用户
* 前三位
* owner
* 特殊权限
* suid
* sgid
* sticky
* 修改权限
* chown
* chgrp
* chmod
* 切换身份
* su
* sudo
* sudo -u
* 指定用户
* 文本管理
* cat
* 输出文件内容
* head
* 只看前几行
* tail
* -f
* 在不断写入新内容时输出新内容
* more
* less
* g最开始
* shift+g最后
* 跳到指定行
* 200+g
* 搜索
* /+关键字
* n跳到下一个匹配
* shift+n到上一个匹配
* Ctrl+u往上翻页
* ctrl+d往下翻页
* grep
* grep+关键字+文件名
* grep color=auto
* sort
* 按照字典顺序排序
* -k
* 某列
* -n
* 按照数字
* -r
* 倒序
* uniq
* 去掉相同的行
* wc
* 统计行数,单词数,字节
* -l
* 行数
* -c
* 字节
* awk
* sed
* vim
* dd
* 删除一行
* 放到剪切板
* u
* 撤销操作
* d
* 删除一个单词
* p
* 粘贴
* ai
* 插入
* esc
* 退出编辑
* 底行命令模式
* w
* 保存
* q
* 退出
* !
* 强制
* 打包和压缩
* tar
* 打包命令
* linux网络
* 常用命令
* curl #在视频8和视频9没看懂
* 获取传输数据
* -x:指定request的method
* -H:指定request的header
* -d:指定post的data
* -b:指定请求的cookie
* -c:输出响应的set-cookie内容到文件
* -i:指定输出去response的header信息
* -w:指定输出部分格式化的数据如请求时间等
* http请求
* wget
* 下载文件
* 进程与系统
* ps
* free
* 查看系统内存使用情况
* -b-k-m设置单位
* -h根据数值大小自动选择单位
* top
* 查看cpu使用率、内存信息、进程情况、CPU load等重要信息
* load
* 等待cpu处理任务数
* load average
* cpu的负载情况
* top -H -p 76357
* 查看某个进程的线程
* kill
* 强制杀死进程
* kill -9 pid
* 强制终止,杀死进程
* kill -l
* 中断、正常退出、暂停、继续
* kill -2 = ctrl+c
* 网络常用工具命令
* ping
* 基于icmp协议
* hostname
* ifconfig
* 虚拟网卡ip地址
* nc
* -t:tcp数据包
* -u:udp数据包
* -l:监听服务端口
* 实例
* 查询本地ip
* nc -l 10.64.9.94 6666
* 连接任意一台服务器
* 在服务器端输入nc -t 10.64.9.94 6666
* 可以发消息
* telnet
* 远程登录和tcp连接测试
* telnet聊天工具
* telnet 10.64.9.94 6666
* netstat
* 查看网络端口使用情况
* 远程命令
* scp
* ssh
* shell脚本编写
* 编写规则
* 第一行指定脚本编辑器
* 生成shell_test文件
* 数组
* 定义数组
* array_name = (a b c d)
* 读取数组
* value1 = ${array_name[1]}
* 获取数组中的所有元素
* @ ×
* 示例
* echo "第一个元素为:${myarray[0]}"
* echo ${my_array[@]}
* 输出数组全部元素
* echo ${#my_array[@]}
* 获取数组长度
* echo ${#my_array[2]}
* 获取数组元素长度
* 传递参数
* $n
* n表示一个数字,0的位置是执行的文件名,1是执行脚本的第一个参数,以此类推。
* $#
* 传递到脚本的参数个数
* $*
* 以一个单字符串显示所有向脚本传递的参数,输出所有参数
* $@
* 和*相似,但是使用时加引号,并在引号中返回每个参数。
* 运算符
* 算数
* 关系运算符
* -eq,-ne,-gt,-lt,-ge,-le
* 布尔运算符
* !否 -o或 -a AND
* 逻辑运算符
* && ||
* 字符串运算符
* = != -z -n str
* 文件测试运算符
* 流程控制
* if
* if [ $a == $b ]
* then
* elif
* elses
* fi
* for
* for loop in 1 2 3 4 5
* do
* 循环处理语句
* done
* while
* utile
* case
* 跳出循环
* break
* continue
* 跳出本次循环
* 自定义函数
* [function] funname[()]
* [return int;]
* 基本语法
* 变量
* 定义变量名时,不加$
* 变量名和等号之间不能有空格
* 命名规范
* 可以用语句给变量赋值
* for file in "ls /etc"
* for file in $(ls /etc)
* 使用定义过的变量在变量名前加$
* 定义过的变量可以被重新定义
* readonly
* unset
* 删除变量
* 三种变量
* 局部变量
* 环境变量
* shell变量
* 字符串
* 定义
* 单引号
* 单引号里面的任何字符都会原样输出,内部字符串中的变量是无效的
* 单引号子串中不能出现单一一个的单引号,可成对出现,作为字符串拼接使用
* 双引号
* 双引号里可以有变量
* 双引号里可以有转义字符
* 相关操作
* 获取字符串长度
* echo $(#str)
* 提取子字符串
* string="my name is yuxue"
* echo $(string:3:4)
* 从第三个字符开始,截取4个字符
* 查找子字符串
* echo 'expr index "$string" xy'
* 查找x和y的位置,哪个字母先出现就计算哪个
* 提高命令
* xargs
* 把参数列表转换成小块分段传递给其他命令
* -n2每两个一行
* 子主题 3
* alias
* 设置命令的别名
* crontab
* 定时安装、卸载或者列出定时任务列表的命令
* rsync
* 文件同步
* 只传输变化的数据
* iostat
* vmstat
* atnodes
* 集群上运行指定命令
* tonodes
* 上传本地文件到集群上
* 练习部分要点
* 域名解析ip地址
* nslookup www.qunar.com
* ping www.qunar.com
* host www.qunar.com
* 查看某个进程的线程信息
* top -H -p PID
* 连续ping
* ping -c 3 www.qunar.com
* 软链接和硬链接
* 硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.
* 软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.
* tar
* -t查看内容
*XMind: ZEN - Trial Version*