Linux语法
命令 [选项] 参数
注意:[]内容是对命令的扩张
1、命令中单词之间空格隔开
2、单行命令最多256个字符
3、大小写区分

clear 清屏
pwd 查看当前目录
cd 切换目录
    .表示当前目录
    ..表示上级目录
    cd 目录名(目录的绝对位置)
        cd /opt 切换到根路径下的opt目录下
    cd ~ 切换到家目录下
ls 列出文件及目录
    ls -a 文件名
        ls -a 查看当前路径下的所有目录及文件,包含隐藏文件
        ls -a /opt 查看根路径下的opt目录下的所有目录及文件,包含隐藏文件
    ls -R 文件名 递归显示某个目录下的子目录、子文件以及子目录的子目录、子目录的子文件等等
    ls -t 文件名 表示对某个目录下的子目录以及子文件基于时间排序
    ls -l 列出文件的详细情况
    e.g:ls -alR
        d 表示目录
        - 表示文件
        l 表示快捷方式文件
    file 文件名 表示文件属于什么详细类型
    ls -F  显示文件的类型
        /表示目录
        *表示可执行文件
        什么都没有,普通的文件
    文件的权限
        r 读权限
        w 写权限
        x 可执行
        - 没有权限
        u 拥有者
        g 同组人
        o 其他人
        a 所有人
        注意:只能在新的Linux或Unix系统中使用,较早的版本不支持
修改权限的语法
chmod   mode   filename
    mode (who cp permissions)
        cp符号
        + 添加权限
        - 去掉权限
        = 覆盖原来的权限
    chmod u+x test.java 表示给test.java的拥有者添加执行权限
    chmod u-rw,go=rwx test.java 表示给test.java的拥有者去掉读写权限,同组人和其他人添加读写执行权限
    老的Linux和Unix只能通过数字赋权
    chmod -R 777 test 给指定目录及其子目录、子文件递归赋权
    注意:有时命令权限不允许
        1、切换到超级用户下执行
        2、命令前加sudo表示当前命令以管理员身份执行
    权限    二进制      数字
    r--     100       4        
    -w-      010       2
    --x      001       1
touch 文件名
    1、创建一个新的文件(前提:文件不存在)
    2、更改文件的修改时间(前提:文件存在)

mkdir 文件名 创建目录
    mkdir test 在当前目录下创建test目录
    mkdir -p 文件目录 级联创建目录
        mkdir -p hello/word/test
        -p 表示目录不存在逐级创建

cal 查看当前的日历
    cal 年份 查看某一年的日历
    cal 月份 年份  查看某一年某一月的日历

重定向:
    > 更改命令结果输出的目的地
        > 覆盖内容
        >> 追加内容
    < 更改标准输入位置(默认位置为键盘)
        
cp复制
    cp [-i] 源文件或目录 目标文件或目录
    文件到文件 cp a.txt c.txt
        1、如果c.txt不存在相当于复制粘贴
        2、如果c.txt存在覆盖目标文件
    注意:-i表示如果目标存在提示需不需要覆盖,默认覆盖。如果目标文件不存在直接复制粘贴
    文件到目录 cp a.txt [b.txt c.txt] test
    目录到目录 cp -r test1 test2
        源目录和目标目录有同名的文件则覆盖同名文件
        没有则合并
    注意:-r不能省略

mv
    文件到文件 mv a.txt d.txt
        如果目标文件不存在 重命名源文件;
        如果存在,覆盖目标文件内容删除源文件
    文件到目录
        如果目标目录中不存在同名文件,剪切复制
        如果存在相同文件,覆盖内容

rm 删除
    rm [-i] c.txt 删除一个文件
    rm [-i] a.txt b.txt 同时删除多个文件
    rm 目录名/* 删除某个目录下的所有文件
    rm -r test 删除test目录,目录中有没有文件不影响
    rmdir test1 删除test1目录,要求test1必须是空目录

man 帮助命令,用于查看命令手册
    man 命令
        man ls 显示内容较多
            空格:每次翻一个屏幕的内容
            回车:向下翻一行
            b:回退一屏
            f:向前翻一屏
            q:退出帮助手册
            /String 搜索某个内容,String表示要搜索的内容,一般和n连用
            n: 查找下一个内容

telnet ip 远程登陆,exit退出
ifconfig Linux查看网络配置信息
ipconfig Windows查看网络配置信息
ping ip 查看网络是否通畅

元字符:对命令功能的扩展
    键盘能敲出的具有特殊含义的字符,不包含.和_
    * 表示零个或者多个字符
        ls d* 列出以d开头的所有文件及目录中的子目录、子文件
    ? 表示单个字符
        ls d?
    ; 命令按照顺序执行
        cd;ls先执行cd再执行ls

| 管道
    把管道前面执行命令的结果交给管道后面的命令执行

vi编辑器
    vi filename 文件不存在,创建这个名字;存在,编辑文件
    vi 后面不跟名字 在内存中创建一个虚拟文件,保存时才会变成磁盘上存储的文件
    不建议使用,有些Linux没有保存,不提示,直接退出
    命令模式:刚进入vi所处的模式,该模式可以用简单的命令,一般情况下不会超过三个字符
    输入模式:可以在文件里面写内容
    底行模式:可以输入长命令
    命令模式下的方向控制
        方向键
        H(左)J(下)K(上)L(右)
    命令模式进入输入模式
        i 在光标停留位置前面插入内容
        a 在光标停留位置后面插入内容
        o 在光标所在行下插入一空行
    输入模式进入命令模式
        Esc键
    命令模式和底行模式的转换
        : / ?
    底行模式和命令模式的转换
        Enter键
    命令模式下的命令
        x 删除一个字符
        dw 删除一个单词(系统认为光标到后面空格的位置是一个词,删除时光标需要停留在单词开始位置)
        3dw 删除三个词
        dd 删除当前行
        5dd 删除五行
        r 替换一个字符
        cw 替换一个单词(删除当前单词并进入输入模式)
        cc 替换一行(删除一行并进入输入模式)
        C 替换从光标至行尾(删除光标到行尾的内容并进入输入模式)
        yw 拷贝单词
        yy(或Y) 拷贝行
        p 当前行下粘贴
        ~ 大小写转换
        J 当前行和下一行连成一行
        u 回退命令
        5G 光标跳到第五行
        n 查找下一个
    底行模式下的命令
        :5,10d 删除5到十行
        :set number(:set nu) 设置行号
        :1,2co3 拷贝1,2行在3行之后
        :4,5m6 移动4,5行在6行之后
        :w 保存前面写的内容
        :q 不保存直接退出vi编辑器
        :wq(或ZZ或:x) 保存并退出
        :w newfile 存成新文件
        :q! 不保存并强制退出
        :数字 直接跳到某一行
        /String 光标位置向下找
        ?String 光标位置向上找
        :r file2 在光标位置插入另一个文件
        :1,$s/旧串/新串/g(等价:%s/旧串/新串/g) 1表示第一行 $表示行末 g表示全文替换