Linux介绍
Linux:在1991年10月被Linus Torvalds(林纳斯·托瓦兹)创建,并于1994年发布了Linux-v1.0。是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。

Linux特点
  Linux是一款完全免费的操作系统,用户可以通过各种渠道下载使用。
  Linux是一款完全开源的操作系统,用户可以任意修改其源代码。
  Linux支持多用户,多任务的使用方式,对不同的用户有着不同的权利。
  Linux具有良好的界面,同时具有字符界面和图形界面。
  Linux支持多平台,可以运行在多种硬件平台上。
  Linux内核高效稳定,可使用户方便地建立防火墙,服务器。
Linux注意事项
  Linux严格区分大小写,大小写不同,命令不同。
  Linux中所有内容以文件形式保存,包括硬件。
  Linux和Windows不同,不靠扩展名来区分文件类型。
  Linux所有的设备都需要先挂载之后才能使用。
  Windows下的程序不能直接在Linux中安装运行。
Linux常用命令
此命令都是运行在Ubuntu系统中,不同的Linux系列,如Debian系列和Redhat命令大同小异。
显示目录文件
| 命令 | 说明 | 
|---|---|
| ls -a | 显示所有的文件,包括隐含文件(以.开头) | 
| ls -l | 显示文件的详细信息,不包括隐含文件 | 
| ls -h | 以人性化形式显示文件,不包括隐含文件 | 
| ls -i | 查看文件的i结点,不包括隐含文件 | 

  文件信息字段
  第一项第一个字母:文件的类型,-代表二进制文件,d代表目录,l代表软连接文件
  第一项第二个字母到第四个字母:文件所有者可对文件的操作
  第一项第五个字母到第七个字母:组内成员可对文件的操作
  第一项第八个字母到第十个字母:其他用户可对文件的操作
  三个字母为一组,从左到右分别是读(r),写(w),执行(x)
  第二项:文件硬链接数
  第三项:文件的所有者
  第四项:文件的所属组
  第五项:文件所占用的字节空间
  第六项:文件最近的访问时间
  第七项:文件名
目录处理命令
| 命令 | 说明 | 
|---|---|
| mkdir -p dicname | 递归创建名为dicname的文件夹 | 
| mkdir dicname | 创建名为dicname的文件夹 | 
| cd dicname | 切换目录 | 
| cd .. | 返回上一级目录 | 
| pwd | 显示当前目录 | 
| rmdir dicname | 删除空目录 | 
| cp old new | 复制文件 | 
| cp -r old new | 复制目录 | 
| cp -p old new | 保留属性复制 | 
| mv old new | 剪切文件 | 
| rm filename | 删除文件 | 
| rm -r dicname | 删除目录 | 
| rm -f | 强制执行 | 

文件处理命令
| 命令 | 说明 | 
|---|---|
| touch filename | 创建名为filename的空文件 | 
| cat filename | 显示filename文件内容 | 
| cat -n filename | 显示filename文件内容,并显示行号 | 
| tac | 反向显示文件内容 | 
| less | 分页显示文件内容(pageup和pagedown) | 
| head -n m | 显示文件前m行 | 
| tail -n m | 显示文件后m行 | 

链接命令
| 命令 | 说明 | 
|---|---|
| ln filename hardlink | 生成链接到filename的硬链接 | 
| ln -s filename softlink | 生成链接到filename的软链接 | 
  硬链接
  硬链接除了文件名所在地,其余信息都相同。
  硬链接后,文件信息中的链接数会加1。
  硬链接文件的i节点和源文件相同。
  硬链接不能跨分区。
  硬链接不能针对目录。
  源文件丢失,仍然可以访问硬链接。
  软链接
  软链接类似于Windows中的快捷方式,有箭头指向。
  软链接后,文件信息中的链接数不变。
  软链接文件的i节点和源文件不同。
  软链接可以跨分区。
  软链接可以针对目录。
  源文件丢失,不能访问软链接。

权限管理命令
| 命令 | 说明 | 
|---|---|
| chmod op filename | 修改filename文件的权限 | 
| chmod -R op dicname | 修改dicname目录下所有文件的权限 | 
| chown own filename_or_dicname | 修改文件或目录的所有者 | 
| chgrp grp filename_or_dicname | 修改文件或目录的所属组 | 
| umask | 查看当前用户新建文件的缺省权限 | 
  文件权限
  r:读权限,可以查看文件内容,如cat, tac, less, head, tail等
  w:写权限,可以修改文件内容,如vi, vim等
  x:执行权限,可以执行文件,如script, command等
  目录权限
  r:读权限,可以列出目录内容,如ls等
  w:写权限,可以在目录中创建删除文件,如touch, mkdir, rmdir, rm等
  x:执行权限,可以进入目录,如cd等
  修改权限两种操作
  u/g/o/a +/-/= r/w/x对所有者/所属组/其他用户/所有人 加/减/赋值 读/写/执行权限
  如 chmod g+w, o-r filename 对filename的所属组添加写权限,对其他用户删除读权限
  直接利用数字进行赋值权限
  如 chmod 644 filename 对filename的所有者添加读写权限,对所属组和其他用户添加读权限
文件搜索命令
| 命令 | 说明 | 
|---|---|
| find range condition | 查找range范围内符合条件的文件或目录 | 
| locate filename | 从文件资料库中查找文件 | 
| which command | 搜索命令所在目录及别名信息 | 
| whereis command | 搜索命令所在目录及帮助文档路径 | 
| grep string file | 在文件中搜索字符串匹配的行并输出 | 
| grep -i string file | 不区分字符串大小写搜索匹配的行并输出 | 
| grep -v string file | 在文件中排除与字符串匹配的行并输出 | 
| grep -n string file | 在文件中搜索字符串匹配的行并输出,并显示行数 | 
  find搜索匹配条件
  *:匹配字符多个
  如*init指以init结尾的文件名,*init*指包含init的文件名
  ?:匹配单个字符
  如???init指以init结尾长度为7的文件名
帮助命令
| 命令 | 说明 | 
|---|---|
| man command | 获得命令的帮助信息 | 
| whatis command | 查看命令的功能 | 
| apropos filename | 查看配置文件的简要信息 | 
| command –help | 查看命令的常见选项 | 
| help command | 查看shell内置命令的帮助信息 | 
|  | 
网络命令
| 命令 | 说明 | 
|---|---|
| write username | 给用户发信息 | 
| wall | 发广播信息 | 
| ping ip | 对ip地址发数据包检测网络连通性,一直在发送 | 
| ping -c n ip | 对ip地址发数据包检测网络连通性,发送n次 | 
| ifconfig net_card ip | 配置网卡的ip地址 | 
| mail username | 查看发送的电子邮件 | 
| last | 列出登录系统的用户信息 | 
| lastlog | 查看所有用户最后一次登录的时间 | 
| lastlog -u userid | 查看用户id为userid(不是用户名)的用户最后一次登录时间 | 
| traceroute url | 查看数据包到主机间的路径 | 
| netstat -t | 显示网络中的TCP协议 | 
| netstat -u | 显示网络中的UDP协议 | 
| netstat -l | 监听网络服务 | 
| netstat -r | 查看路由表 | 
| netstat -n | 显示ip地址和端口号 | 
|  | 
关机重启命令
| 命令 | 说明 | 
|---|---|
| shutdown -c | 取消上一个关机命令 | 
| shutdown -h +n | n分钟后关机 | 
| shutdown -h time | 到达时间time关机 | 
| shutdown -h now | 现在关机 | 
| shutdown -r +n | n分钟后重启 | 
| shutdown -r time | 到达时间time重启 | 
| shutdown -r now | 现在重启 | 
修改系统默认运行级别
| 命令 | 说明 | 
|---|---|
| vim /etc/inittab | 修改系统默认运行级别 | 
| runlevel | 查看系统运行级别 | 
  系统运行级别
  0:关机
  1:单用户模式
  2:不完全多用户模式,不含 NFS服务
  3:完全多用户模式务
  4:未分配
  5:图形界面
  6:重启
用户配置文件
| 命令 | 说明 | 
|---|---|
| less /etc/passwd | 查看用户信息文件 | 
| less /etc/shadow | 查看用户影子文件 | 
| less /etc/group | 查看组信息文件 | 
| less /etc/gshadow | 查看组影子文件 | 
  用户信息文件字段
  第一个字段:用户名称
  第二个字段:密码标志
  第三个字段:用户ID(UID)
  第四个字段:用户初始组ID(GID)
  第五个字段:用户说明
  第六个字段:家用户
  第七个字段:登录后的shell
  用户影子文件字段
  第一个字段:用户名称
  第二个字段:加密密码
  第三个字段:密码最后一次修改时间
  第四个字段:两次密码修改间隔
  第五个字段:密码有效期
  第六个字段:密码到期前的警告天数
  第七个字段:密码过期后的宽限天数
  第八个字段:账号失效时间
  第九个字段:保留字段
  组信息文件字段
  第一个字段:组名称
  第二个字段:组密码标志
  第三个字段:组ID(GID)
  第四个字段:组中附加用户
  组影子文件字段
  第一个字段:组名称
  第二个字段:组密码
  第三个字段:组管理员用户名
  第四个字段:组中附加用户
用户管理命令
| 命令 | 说明 | 
|---|---|
| useradd username | 添加新用户 | 
| useradd -u username | 添加新用户,手动指定用户id | 
| useradd -d username | 添加新用户,手动指定家目录 | 
| useradd -c username | 添加新用户,手动指定用户说明 | 
| useradd -G username | 添加新用户,手动指定附加组 | 
| useradd -g username | 添加新用户,手动指定初始组 | 
| useradd -s username | 添加新用户,手动指定登录shell | 
| passwd username | 设置用户密码 | 
| passwd -s username | 查询用户密码状态 | 
| passwd -l username | 暂时锁定用户 | 
| passwd -u username | 解锁用户 | 
| userdel username | 删除用户 | 
| change -l username | 列出用户的详细密码状态 | 
| change -d username | 修改密码最后一次更改日期 | 
| change -m username | 修改两次密码修改间隔 | 
| change -M username | 修改密码有效期 | 
| change -W username | 修改密码过期前警告天数 | 
| change -I username | 修改密码过期后宽限天数 | 
| change -E username | 修改账号失效时间 | 
用户组管理命令
| 命令 | 说明 | 
|---|---|
| groupadd groupname | 添加新用户组 | 
| groupadd -g groupname | 添加新用户,手动指定组id | 
| groupmod -g groupname | 修改组id | 
| groupmod -n groupname | 修改组名 | 
| groupdel groupname | 删除用户组 | 
| gpasswd -a groupname | 将用户加入用户组 | 
| gpasswd -a groupname | 将用户从用户组删除 | 
文件系统管理命令
| 命令 | 说明 | 
|---|---|
| df -a dirname | 显示文件的系统信息 | 
| df -h dirname | 以人性化方式显示文件的系统信息 | 
| df -a dirname | 显示文件的系统类型 | 
| du -a dicname | 显示每个子文件的磁盘占用量 | 
| du -h dicname | 以人性化方式显示每个子文件的磁盘占用量 | 
| du -s dicname | 统计总占用量 | 
| fdisk -l | 查看u盘的设备文件名 | 
| mount -t vfat device dicname | 将u盘文件名device挂载到dicname文件名中 | 
| umount device | 卸载挂载device | 
终端常用命令
| 命令 | 说明 | 
|---|---|
| Ctrl + Alt +t | 打开终端 | 
| Ctrl + d | 退出终端 | 
| Ctrl + c | 终止正在运行的程序 | 
| Ctrl + l | 清屏 | 
| Ctrl + s | 锁住终端 | 
| Ctrl + q | 解锁终端 | 
| Ctrl + r | 查找历史命令 | 
| ^up | 查看上一个历史记录 | 
| ^down | 查看下一个历史记录 | 
| su | 切换到root用户 | 
| su username | 切换到username用户 | 
| sudo command | 以root权限执行命令 | 
| TAB | 命令与文件补全 | 
| alias | 查看命令的别名 | 
| alias newname command | 给原命令起一个别名 | 
重定向命令
| 命令 | 说明 | 
|---|---|
| command > filename | 将正确命令的结果覆盖到filename文件中 | 
| command >> filename | 将正确命令的结果追加到filename文件中 | 
| command 2> filename | 将错误命令的结果覆盖到filename文件中 | 
| command 2>> filename | 将错误命令的结果追加到filename文件中 | 
| command &> filename | 将命令的结果覆盖到filename文件中(无论正确与否) | 
| command &>> filename | 将命令的结果追加到filename文件中(无论正确与否) | 
| command >> filename1 &>> filename2 | 将正确的命令结果追加到filename1,错误命令的结果追加到到filename2 | 
多命令
| 命令 | 说明 | 
|---|---|
| command1 ; command2 ; … | 多个命令顺序执行,命令1出错命令2也会执行 | 
| command1 && command2 && … | 逻辑与,命令1正确执行,命令2才会执行 | 
| command1 ll command2 ll … | 逻辑或,命令1不正确执行,命令2才会执行 | 
| command 2>> filename | 将错误命令的结果追加到filename文件中 | 
| command &> filename | 将命令的结果覆盖到filename文件中(无论正确与否) | 
| command &>> filename | 将命令的结果追加到filename文件中(无论正确与否) | 
| command >> filename1 &>> filename2 | 将正确的命令结果追加到filename1,错误命令的结果追加到到filename2 | 
| command1 l command2 | 管道符,命令1的正确输出作为命令2的操作对象 | 
|  | 
特殊符号
| 符号 | 说明 | 
|---|---|
| ? | 匹配一个任意字符 | 
| * | 匹配任意多个字符 | 
| [] | 匹配[]中任意一个字符 | 
| [-] | 匹配[]中任意一个字符,-代表范围,如0-9 | 
| [^] | 匹配不在[]中的任意一个字符 | 
| ‘’ | 单引号将其作为一个整体,其中的所有特殊符号都是普通符号 | 
| “” | 双引号中$调用变量的值,`引用命令,\转义字符 | 
| `` | 反引号中的内容为系统命令 | 
| $ | 美元符号调用变量的值 | 
| \ | 反斜杠指转义符 | 
| # | 注释符 | 
正则表达式
  在Linux中,正则表达式是用来在文件中匹配符合条件的字符串,正则是包含匹配,grep,awk,sed等命令支持正则表达式。
  在Linux中,通配符是用来匹配符合条件的文件名,通配符是完全匹配,ls,find,cp等命令不支持正则表达式,只能使用通配符进行匹配。
| 符号 | 说明 | 
|---|---|
| * | 前一个字符匹配0次或任意多次 | 
| . | 匹配除换行符外任意一个字符 | 
| ^ | 匹配行首 | 
| $ | 匹配行尾 | 
| [] | 匹配括号中指定的任意一个字符 | 
| [^] | 匹配除了括号中指定的任意一个字符 | 
| \ | 转义字符 | 
| {n} | 表示前面的字符出现n次 | 
| {n,} | 表示前面的字符出现不小于n次 | 
| {n,m} | 表示前面的字符至少出现n次,至多m次 | 
字符处理命令
|  符号   | 说明  |
|  cut -f n filename  |  提取文件第n列  |
|  cut -d interval -f n filename   |  设定分隔符提取文件第n列  |
|  printf “type_and_format” content  |  格式化输出  |
|  awk “condition1 {action1} condition2 {action2} …” filename  |  对filename中符合condition的进行action操作  |
|  awk “BEGIN{action} condition1 {action1} condition2 {action2} …” filename  |  在对filename操作之前进行action操作  |
|  awk “BEGIN{FS=’c’} condition1 {action1} condition2 {action2} …” filename  |  以c为分隔符进行操作,默认分隔符为制表符  |
|  awk “END{action} condition1 {action1} condition2 {action2} …” filename  |  在对filename操作之后进行action操作  |
|  sed -n  |  把只经过sed处理的输出,原文件不变化  |
|  sed -e  |  允许对输入数据应用多条sed命令  |
|  sed -i  |  直接对文件进行修改,不显示输出  |
|  sed a  |  在当前行后添加一行或多行  |
|  sed c  |  对当前行替换  |
|  sed i  |  对当前行插入  |
|  sed d  |  删除指定的行  |
|  sed p |  打印指定的行  |
|  sed s  |  字符替换,格式为”行范围/s/old_str/new_str/g”  |
|  sort  |  以数值型排序  |
|  sort -f  |  忽略大小写排序  |
|  sort -n |  以数值型排序  |
|  sort -r  |  反向排序  |
|  sort -t |  指定分隔符,默认为制表符  |
|  sort -k n[,m]  |  按照指定的字段,从n开始到m结束  |
|  wc  |  输入字符串,Ctrl+d结束,统计行数,单词数和字符数  |
|  wc filename  |  统计filename文件中的行数,单词数和字符数  |
|  wc -c  |  输入字符串,Ctrl+d结束,统计字符数  |
|  wc -w  |  输入字符串,Ctrl+d结束,统计单词数  |
|  wc -l  |  输入字符串,Ctrl+d结束,统计行数  |
系统管理
| 命令 | 说明 | 
|---|---|
| ps aux | 查看系统中的所有进程 | 
| top | 查看系统的健康状态,默认每3秒更新一次 | 
| top -d | 设置更新的秒数 | 
| top P | 以CPU使用率排序 | 
| top M | 以内存使用率排序 | 
| top N | 以进程号(PID)排序 | 
| q | 退出top | 
| pstree | 查看进程树 | 
| pstree -p | 查看进程树,并显示进程号 | 
| pstree -u | 查看进程树,并显示所属用户 | 
| kill -l | 查看可用的进程信号 | 
| kill PID | 正常关闭进程号为PID的进程 | 
| kill -n PID | 对进程号为PID的进程进行n操作,n可以通过kill -l查询 | 
| killall p_name | 杀死进程名为p_name的进程 | 
| killall p_name | 杀死进程名为p_name的进程 | 
| killall p_name | 杀死进程名为p_name的进程 | 
| command & | 将命令放在后台执行 | 
| command + Ctrl + z | 将命令放在后台,且不执行 | 
| jobs | 显示后台的进程 | 
| jobs -l | 显示后台的进程,并显示PID | 
| fg | 恢复第一个后台暂停的进程到前台执行 | 
| fg %work_id | 恢复工作号为work_id后台暂停的进程到前台执行,注意工作号和PID不同 | 
| bg | 恢复第一个后台暂停的进程到后台执行 | 
| bg %work_id | 恢复工作号为work_id后台暂停的进程到后台执行,注意工作号和PID不同 | 
| vmstat flu_time flu_num | 查看系统资源,间隔为flu_time,次数为flu_num | 
| free -b | 以字节为单位查看内存使用状态 | 
| free -k | 以KB为单位查看内存使用状态,默认以KB为单位 | 
| free -m | 以MB为单位查看内存使用状态 | 
| free -g | 以GB为单位查看内存使用状态 | 
| free -b | 以字节为单位查看内存使用状态 | 
| cat /proc/cpuinfo | 查看CPU的详细信息 | 
| uptime | 显示系统的启动时间和平均负载 | 
| uptime -a | 查看系统所有相关信息 | 
| uptime -r | 查看内核版本 | 
| uptime -s | 查看内核名称 | 
| file /bin/ls | 查看操作系统的位数 | 
| lsb_release -a | 查询Linux的发行版本 | 
| lsof -c string | 列出以字符串开头的进程打开的文件 | 
| lsof -u username | 列出某个用户的进程打开的文件 | 
| lsof -p pid | 列出某个PID进程打开的文件 | 
|  | 
定时任务
| 命令 | 说明 | 
|---|---|
| crontab -e | 编辑定时任务 | 
| crontab -l | 查询定时任务 | 
| crontab -r | 删除所有定时任务 | 
  编辑定时任务格式
  * * * * * 执行的任务
  第一个*:一小时当中的第几分钟(0-59)
  第二个*:一天当中的第几小时(0-23)
  第三个*:一个月当中的第几天(1-31)
  第四个*:一年当中的第几月(1-12)
  第五个*:一周当中的星期几(0-7)
  编辑定时任务特殊符号
  *:代表任何时间
  ,:代表不连续时间
  -:代表连续的时间范围
  */n:代表每隔多久执行一次
  编辑定时任务例子
  45 22 * * * command:每天的22:45执行命令
  30 12 * * 1 command:每周一的12:30执行命令
  0 8,12,16 * * * command:每天的8:00,12:00和16:00都执行命令
  0 5 * * 1-6 command:每周一的5:00执行命令
  0/10 4 * * * command:每天的凌晨4点,每隔10分钟执行一次
  0 0 1,15 * 1 command:每周一的0:00和每个月的1号和15号都会执行命令,尽量不要这样写
备份与恢复
| 命令 | 说明 | 
|---|---|
| dump -level | 设定level备份级别,0为完全备份,1-9为增量备份,对分区可以增量备份,对于文件或目录只能完全备份 | 
| dump -f b_file o_file | 将o_file备份到b_file中 | 
| dump -u | 备份成功后,把备份时间记录在/etc/dumpdates文件 | 
| dump -v | 显示备份过程中更多的输出信息 | 
| dump -j | 调用bzlib库压缩备份文件,将备份文件压缩为.bz2格式 | 
| dump -W | 显示允许被dump的分区的备份等级及备份时间 | 
| restore -C | 比较备份数据和实际数据的变换 | 
| restore -i | 进入交互模式,手工选择需要恢复的文件 | 
| restore -t | 查看模式,用于查看备份文件中拥有哪些数据 | 
| restore -r | 还原模式,用于数据还原 | 
| restore -f | 指定备份文件的文件名 | 
Shell基础
Shell是一个命令行解释器,为用户提供一个向Linux内核发送请求以便运行程序的系统级程序,用户可以用Shell启动,挂起,停止甚至编写程序
Shell是一个功能强大的解释性脚本语言,易编写,易调试,灵活性强,且在Shell中可以直接调用Linux系统命令。
Bash是Linux的基本Shell,执行时使用/文件名或者bash 文件名
定义变量
| 命令 | 说明 | 
|---|---|
| var_name=’xxx’ | 定义变量,等于号前后不要加空格 | 
| $var_name | 调用变量 | 
| unset var_name | 删除变量 | 
| set | 查看所有变量 | 
| echo | 输出 | 
| read -t n var_name | 给var_name读入一个值,等待n秒 | 
| read -p str var_name | 显示str字符串,再给var_name读入一个值 | 
位置参数变量
| 命令 | 说明 | 
|---|---|
| $n | 0代表命令本身,1-9代表第一到第九个参数,10以上要用{}括起来 | 
| $* | 所有参数,看作一个整体 | 
| $@ | 所有参数,每个参数分开对待 | 
| $# | 所有参数的个数 | 
预定义变量
| 命令 | 说明 | 
|---|---|
| $? | 判断最后一次执行命令的返回状态,为0则正确,否则错误 | 
| $$ | 当前进程的进程号(PID) | 
| $! | 后台运行的最后一个进程的进程号 | 
声明变量类型
| 命令 | 说明 | 
|---|---|
| declare - var_name | 给变量设定类型属性 | 
| declare + var_name | 取消变量的类型属性 | 
| declare -i var_name | 将变量声明为整型 | 
| declare -x var_name | 将变量声明为环境变量 | 
| declare -p var_name | 显示变量的类型 | 
  Linux中的变量都默认为字符串型,数值运算时要采用var_name=$((运算式))的格式。
条件判断
| 命令 | 说明 | 
|---|---|
| [ -d filename ] | 注意中括号前后都有空格,判断文件是否存在,并且是否为目录文件,是目录文件为真 | 
| [ -e filename ] | 判断文件是否存在,存在为真 | 
| [ -f filename ] | 判断文件是否存在,并且是否为普通文件,是普通文件为真 | 
| [ -r filename ] | 判断文件是否存在,并且是否具有读权限(无论是拥有者还是所属组还是其他用户,只要有就为真) | 
| [ -w filename ] | 判断文件是否存在,并且是否具有写权限 | 
| [ -x filename ] | 判断文件是否存在,并且是否具有执行权限 | 
| [ filename1 -nt filename2 ] | 判断文件1是否比文件2新(修改时间) | 
| [ filename1 -ot filename2 ] | 判断文件1是否比文件2旧 | 
| [ filename1 -ef filename2 ] | 判断文件1和文件2的i节点是否一致,可以判断硬链接 | 
| [ int1 -eq int2 ] | 判断整数1是否等于整数2 | 
| [ int1 -ne int2 ] | 判断整数1是否不等于整数2 | 
| [ int1 -gt int2 ] | 判断整数1是否大于整数2 | 
| [ int1 -lt int2 ] | 判断整数1是否小于整数2 | 
| [ int1 -ge int2 ] | 判断整数1是否大于等于整数2 | 
| [ int1 -le int2 ] | 判断整数1是否小于等于整数2 | 
| [ -z str ] | 判断字符串是否为空 | 
| [ -n str ] | 判断字符串是否非空 | 
| [ str1==str2 ] | 判断字符串1是否等于字符串2 | 
| [ str1!=str2 ] | 判断字符串1是否不等于字符串2 | 
| [ judge1 -a judge2 ] | 逻辑与,判断1和判断2都为真则为真 | 
| [ judge1 -o judge2 ] | 逻辑或,判断1和判断2都为假则为假 | 
| [ !judge ] | 逻辑非,判断取反 | 
|  | 
流程控制
Linux中Shell脚本的第一句为#!bin/bash,说明下面的内容都是Shell脚本。
执行脚本时,先将文件的权限变为可执行文件,然后./filename或者直接使用bash filename
if条件流程控制
| 1 | # 单分支if条件语句格式 | 

case条件流程控制
| 1 | # 多分支case条件语句 | 

for循环流程控制
| 1 | # for 变量 in value1 value2 ... | 

while循环流程控制
| 1 | # while [ condition ] | 

until循环流程控制
| 1 | # until [ condition ] | 

Linux小结
因为Linux的安全性和开源特性,使得Linux受到广泛的青睐,尤其是在公司层面。在个人机上,多数人为了使用方便,采用Windows系统。但是为了公司服务器运维稳定,可靠,方便,Linux是使用最广泛的操作系统。因此学会Linux是程序员的必修课之一。