美文网首页我爱编程
2016.10.10 linux史+shell基本命令

2016.10.10 linux史+shell基本命令

作者: I踏雪寻梅 | 来源:发表于2016-10-10 18:46 被阅读0次

    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<n+1+小数点前面的数字个数,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基本命令

        本文链接:https://www.haomeiwen.com/subject/ohdvyttx.html