2016.10.10 linux史+shell基本命令

Linux

Linux可以做什么

  • 个人桌面系统

    • 管理桌面
    • 听音乐,看视频
    • 使用文字处理,电子表格等文件
    • 使用网页,发送电子邮件
    • 网络聊天
    • 玩游戏
  • 系统服务器

    • 连接Internrt网络
    • 使用Linux作为防火墙,路由器和DHCP服务器来保护和管理专用网络
    • 运行WEB服务器(Apache,MySQL和PHP)
    • 运行邮件服务器(使用exim或其他邮件传输代理)
    • 运行邮件服务器(使用CUPS)
    • 运行文件服务器(使用FTP,samba,NFS)

嵌入式系统

  • 嵌入式系统是以应用为中心,以计算机为基础,并且硬件可裁剪,适用于对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统。

Linux的特性

  • 自由,免费,开源
  • 无需不停的重新引导
  • 在不干扰其他服务的情况下启动/停止服务
  • 软件的可移植性
  • 可下载的应用程序--绿色软件
  • 没有隐藏在代码或寄存器中的设置
  • 成熟的桌面系统:GNOME,KDE,X Windows
  • 不受病毒的困扰

流行的Linux版本

  • Red Hat
  • Fedora Core
  • SUSE
  • Ubuntu

Linux的市场

  • 汽车市场
  • 办公Office
  • 医疗器械
  • 飞机航空
  • 智能家居
  • 手机
  • 路由器
  • 办公设备

Linux下的操作系统组件

  • Linux内核

    • 内核是Linux系统的最底层,提供了系统的核心功能,并允许进程以一种有序的方式访问硬件
  • Shell

  • 文件系统

  • 实用程序

  1. LINUX启动过程
    • 设备加电————BIOS自检————Grub/Lilo引导启动————装载Linux内核————系统初始化————用户登录
  2. 系统初始化:内核的初始化将启动系统进程和脚本,INIT进程是系统开始的第一个工作,他是其他所有进程的父进程,并一直处于运行状态。使用top命令查看进程,可以发现init进程的id号永远是第一个。
  3. Linux文件系统类型
  • EXT2和EXT3都是操作系统默认使用的文件系统类型,EXT3属于日志文件系统,是EXT2文件系统的升级版,EXT4是EXT3的升级版
  • swap类型的文件系统在Linux系统的安装系统。
  1. Linux的目录结构
  • Linux目录使用树形目录结构,在整个系统中只存在一个根目录
  • /bin:存储用户命令,/usr/bin/存放用户命令。
  • /boot:Linux的内核及引导系统程序所需要的文件
  • /home:如果建立一个用户“XX”,那么在home下会出现一个对应的/home/XX路径,作为用户的主目录。
  • /root:根用户(超级用户的主目录)
  • /dev:储存设备文件
  • /mnt:系统引导后被挂载的文件系统的挂载点
  • /usr:系统中占用硬盘空间最大的目录,很多程序与文件都存放在该目录下
  • /tmp:用户程序的临时目录。
  • /:根目录
  • /etc:系统相关配置的文件
  • /lib:共享库目录

Linux操作:

  • 打开终端

    1. ctrl+alt+t
    2. 点击左上角的搜索按钮,输入terminal,出来一个终端选项
      注意:点击左边图表终端,将终端锁定在桌面
  • 关闭终端

    1. exit/logout
  • 关机

    1. 右上角
    2. 在终端下怎么关机
      • sudo shutdown -h now
      • sudo init 0
  • 怎么获取超级管理员权限

    1. su+一个数:
      • 如果认证失败
      1. sudo passwd进行修改超级用户管理员权限的密码
      2. 从超级用户--普通用户exit
  • 修改登录/用户密码

    1. sudo passwd XXX用户
  • shell基本命令

    1. pwd:显示当前工作路径
    2. ls:list显示当前工作路径下的目录或文件
      • ls -l:显示当前目录下所有文件并且告知文件的相关属性。-l 加文件名。
      • ls -a:显示当前目录下所有文件(包括隐藏文件:点开头)
      • ls -al:上两种操作集合。
      • ls 具体路径:显示具体目录下的子文件或者子目录。
    3. 清屏
      • ctrl + l
      • clear
    4. 切换目录:
      • cd:change directory:改变当前的工作路径
      • cd +具体路径:切换到具体路径下面
      • cd :切换到用户主目录下面
      • cd .:代表当前路径
      • cd ..:代表当前目录的上级目录
      • cd 代表用户主目录/home/xx用户
      • cd -:代表回到上一次操作的目录
      • cd Tab:补全当前系统下已有的文件名,补全文件名
  • 新建目录

    1. mkdir:makedirectory:创建目录
    2. mkdir+文件名:在当前工作路径下进行创建目录文件
    3. mkdir -p 1010/1009:创建1010的同时创建1009(递归创建)
    4. 删除目录:
      • rmdir:remove directory:删除目录。
      • rmdir+目录名:删除空目录,不能删除非空目录。
      • rm -r +目录名:删除非空目录
    5. touch:创建普通文件
      • touch+文件名:在当前目录下创建普通文件
    6. 删除文件:
      • rm+文件名:在当前目录下删除对应的文件
    7. 拷贝文件
      • cp 要拷贝的文件 拷贝去的目录
    8. 移动或是重命名
      • mv:move移动文件
      • mv 要移动的文件 目标文件夹
      • mv 要修改的文件 新的文件名
    9. 查看文件却不打开文件
      • cat 文件名
    10. 文件权限的修改:
      • //- rw- r-- r--
      • 第一个字母决定文件是什么文件
        1. -代表是普通文件
        2. d代表是目录文件
      • 第2到第4个字母,决定文件属主用户对齐文件执行的权限rwx;r:可读,w:可写,x:可执行。
      • 第5到第七个,决定于属主用户同组的其他用户执行的权限
      • 最后几个决定与他不同组的其他用户执行的权限。
        -chmod的使用
        • Chmod 744 1.sh
        • chmod u+x 1.sh u+x1.sh——————u:user代表属主用户,g:group代表同组其他用户,o:other不同组的用户。a:代表所有用户。‘+’代表加某个权限,‘-’代表减某个权限。
        • chmod u+x,g+w,o+x 1.sh
  • shell操作

    1. 安装包

      • sudo apt-get install
    2. vi

      • vi是一个文本编辑器

      • vim是vi的升级版

      • sudo apt-get install vim

      • vim的使用

        • 打开文件 vim 1.sh
        • 插入数据 按下i键,等待左下角出现Insert,开始写数据
        • 保存:按下ESC进入非可编辑模式输入w:保存,q退出,q!不保存退出,wq!忽略前面内容,wq:保存退出。
        • vim的快捷键:
          1. dd删除光标所在的一行
          2. u撤销上一次的操作
          3. yy复制一行p粘贴刚才那一行
          4. 数字+yy或dd复制删除这么多行
          5. shift+v进入可视化模式上下键选择多行进行删除或复制
    3. gedit

      • gedit 是一个文本编辑器
    4. vim 的基本配置

      • cd/etc/vim

        sudo vim vimc

        set mouse=a /设置鼠标选中

        set nu/行号

        syntax on /语法高亮

        set autoindent/自动缩进

        set tabstop=4/设置tab宽度

    5. shell脚本执行

      • chmod +x 1.sh

      ./1.sh

      • sh 1.sh

      注意:最好用第一种

    6. :代表注释单行

      • shell脚本是一种弱类型语言,不需要指定数据类型。
      • 如果shell脚本某一行出错,不会影响我整个程序的运行。
    7. 标识符的硬性规范:

      • 不能由数字开头
      • 只能由字母,下划线,数字构成
      • 不能与shell脚本的关键字相同,如 if,printf,echo,case等。
      • 建议:
        1. 不准用拼音,多查字典
        2. 建议使用驼峰命名规范numOfStudent
        3. 见名知义
    8. 变量

      1. 变量的定义

      变量=值

      • 如果变量没有定义,那么这个变量默认为空

      注意点:
      1 变量一定以出来就要给他一个值,否则会语法错误。
      2 =左右两边不能由空格
      3 如果右边是字符串,用""栝起来

      1. 变量的使用

        以$符号开头

      2. 变量的删除

      value=9
      echo "$value"
      unset value
      echo "$value"
      
       - unset:删除变量,不要加$
       - 删除之后,默认为空
      
      1. 只读变量
        • readonly value=7表明这个变量不能再被赋值
        • readonly的变量修饰的变量不能被unset删除。
    9. echo简单用法

      value="hello"
      echo "$value",'$value',$value
      echo "{$value}1"可输出hello1
      
      • echo:表示输出命令,输出echo后面的内容,会自动换行。
      • echo后面加"",'',不加
        1. 'value',输出$value
        2. 不加,降低程序的可读性
        3. 加""能避免上面两个缺点
    10. shell转义字符

      • \n:代表换行
      • \t:相当于敲了tab的宽度
      • \c:关闭echo命令本身换行的功能
      • 如果是./XX.sh运行shell脚本,必须开启转义
      value="hello"
      echo "$value\n"是不会换行的
      开启转义字符对特殊字符的处理
      echo -e "${value}\n"
      
      • 如果是sh XX。sh运行shell脚本,必须开启转义
      value="hello"
      echo -e "${value}\n"
      
    11. 字符串相关处理

    value="hello"
    lengh=${#value}
    echo "${lengh}"
    
    1. 字符串拼接
    value="hello"
    value1="world"
    value2="${value} ${value1}"
    echo "${value2}"
    
    1. 字符串裁剪
    value="hello world"
    value1="${value:6:5}"(:6代表字符串从0开始数到了第6位开始裁,:5为截取的长度)
    
    1. printf
      • %s:是一个占位符,严格意义上是输出字符串类型的,但是在shell脚本里任何类型都能输出。
      • %f:也是一个占位符,如果是%f,后面必须是小数类型的占位。
        • %.3f代表小数点后面保存3位
        • %6.3符,6代表整个数据所占宽度为6个字符,如果不够,左边用空格补全。
        • %m.nf,如果m
        • %-m.nf:左对齐。
      • %d:也是一个占位符,如果是%d,后面必须是整数类型的占位。
      • %c:没错,还是一个占位符,后面必须是字符类型。
      • \n:转义字符
    value="hello"
    value1=999
    printf "value=%s\n" "${value}"//输出一行
    printf "value=%s\nvalue1=%d" "${value}" "${value1}"//输出多个变量的值
    用法:printf是输出""里面的内容
    
    1. read使用
    printf "请输入一个值:"
    read value
    printf "这个数为%s\n" "${value}"
    

    此处已经有点乱,和C语言差别好多

    • read 尽量不要同时输入多个值:如——read value value1
    1. 运算符的使用+ — * /
      1. expr是计算整数类型行的数据

      2. 运算符左右都要有空格

      3. ``和$()是取结果集

      4. 注意*必须要通过\转义,不然会出错

      5. ``与$()不但可以取整数运算的结果,还可以取shell命令的结果集,比如:result=
        ls或者$(ls)

      6. result='expr num1 % num2'=num1/num2商...余数

      num=1
      num1=2
      num2=`expr $num + $num1`
      //num2=`expr $num \* ¥num1`
      echo "${num2}"
      
    2. let关键字
    num1=1
    num2=2
    let num3=num1+num2
    echo "${num3}"
    
    • 可以用在 + - * / % ++ --
    1. ++ --(都只能用在let里,不能在expr里使用)
    • 后缀++
    num1=1
    let num2=num1++
    printf "num1=%s\n" "${num1}"
    printf "num2=%s\n" "${num2}"//num2=1,num=2
    
    • 前缀++
    num1=1
    let num2=++num1
    printf "num1=%s\n" "${num1}"
    printf "num2=%s\n" "${num2}"//num2=2,num=2
    
    • 后缀--
    num1=1
    let num2=num--
    printf "num1=%s\n" "${num1}"
    printf "num2=%s\n" "${num2}"//num2=1,num=0
    
    • 前缀 --
    num1=1
    let num2=--num
    printf "num1=%s\n" "${num1}"
    printf "num2=%s\n" "${num2}"//num2=0,num=0
    
    • +=
    num1=1
    let num2+=num1
    printf "num2=%s\n" "${num2}"//num2=3
    
    1. 整数之间的关系运算符
    • \ > \ < \ >= \ <= != ==
    • -gt -ge -lt -le -eq -nq
      • 在关系运算符中,运算结果是一个逻辑,如果关系表达式成立,逻辑值为1,否则为0。
      • 除!=,==都要用\转义
      • !=可以用\转义也可以不用\转义
      • \ =,=,==,==(由编译器决定,mac支持=,=)
    num1=1
    num2=2
    num3=`expr $num1 \> $num2`
    echo "${num3}"
    
    1. 如果一个数大于5,然后输出这个数,否则如果这个数小于5,然后说明这个数小于5
    if []
    then
        语句体
    elif
    then
        语句体
    else
        语句体
    fi
    注意点1. []左右两边都要有空格
          2. 关系运算符用-gt 等表示
    
    printf "请输入一个数:"
    read num
    if [ $num -gt 5 ]
    then 
        echo "${num}"
    elif [ $num -lt 5 ]
    then 
        printf "%s小于5\n" "${num}"
    else
        printf "这个数等于5" 
    fi
    
    • 总结:
      1. else可以没有,如果有else,必须放在最后面,else下面没有then
      2. elif可以没有,必须要放在if与else中间的位置
      3. if语句只能执行一个分支
      4. if结束的标志fi

你可能感兴趣的:(2016.10.10 linux史+shell基本命令)