Linux达人计划

Linux 达人计划

  • Linux 达人计划
    • Linux 应用领域
      • Linux 与 Windows 的不同
    • 系统分区类型
      • 分区设备文件名与挂载
        • Linux 树形结构
        • 挂载
      • CentOS 63
    • 常用命令
      • 查询目录中内容
      • 文件处理命令
        • 其他帮助命令
    • shell基础

1.Linux 应用领域

  • 企业服务器方面

    www.netcraft.com 检测网站后台服务相关信息 (国外站点)

  • 嵌入式应用方面

    Android XXXSSHd 远程安全管理 (QuickSSHd)

Linux 与 Windows 的不同

  • Linux 严格区分大小写
  • Linux 所有内容以文件形式保存, 包括硬件 永久存在
  • 不依靠扩展名区分文件 依靠权限
文件类型 扩展名
压缩文件 .gz .bz2 .tar.bz2 .tgz
二进制软件包 .rpm
脚本文件 .sh
配置文件 .conf
  • 应用程序不同环境

2. 系统分区类型

  • 主分区 : 最多只能有四个
  • 扩展分区 :
    最多只能有一个
    主分区加扩展分区最多有四个
    不能写入数据, 只能包含逻辑分区
  • 逻辑分区 :
    格式化 在磁盘的特定区域写入特定数据, 在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间

分区设备文件名与挂载

Created with Raphaël 2.1.0 分区 格式化 为每个分区起设备文件名 分配盘符

Linux 树形结构

/ 根目录 dev 硬件设备
hd[a-d]: IDE
sd[a-p]: SCSI/SATA/USB 磁盘
cdrom 或 hdc: 光驱
fd[0-1]: 软盘
lp[0-2]: 打印机 (25 针)
/usb/lp[0-15]: 打印机 (USB)
mouse: 鼠标

挂载

** 把盘符和分区连在一起的过程, 目录称为挂载点 (相当于 Windows 的盘符)** 目录作为盘符 / 根分区 swap 交换分区

CentOS 6.3

手动分区    home boot swap / 
安装方式    Basic Server
    推荐分区 /boot 启动分区(200M)
**Xshell**
  • 首先在 Linux 中使用 ifconfig eth0 down 关闭网卡
  • 再使用 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up 重启网卡 手动配置 IP
  • 或使用 setup 工具来配置 IP 地址

在 Xshell 中配置连接信息

vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes // 是否随着开机启动

3. 常用命令

命令基本格式

root 超级管理员 
localhost 主机名 
~ 当前所在目录 
# 管理员用户 
$ 普通用户
/root   /home/other

命令 [选项] [参数]
... vi'''

1. 查询目录中内容

      ls [选项]
        -a 显示所有文件 *(包括隐藏文件 .开头文件)*
        -l 显示详细信息
                >- 第一列 权限*(10位基本权限)*
                    -文件类型 *(-文件 d目录 l软连接(快捷方式) )*
                        后九位分三组代表权限
                        所有者 u 
                        所属组 g *相同身份或相同权限的一类用户*
                        其他人 o 
                    r 读 w 写 x 执行
                    . 代表 ACL权限
            >- 第二列 引用计数(被调用 链接)
            >- 第三列 所属者用户
            >- 第四列 所属组
            >- 第五列 大小
            >- 第六列 最后一次修改时间
            >- 第七列 文件名

-d 查看目录属性
-h 显示文件大小
-i 显示 inode

2. 文件处理命令

  • 目录处理命令

        建立目录 mkdir
        mkdir 目录名
            -p 递归创建
            mkdir -p abc/def/ggg
    
  • 切换所在目录 cd

        cd 目录
            cd ~ / cd 切换家目录
            cd -      上次目录
            cd ..     上一级目录
            cd .      当前目录
    

相对路径: 参照当前所在目录
绝对路径: 从根目录开始指定, 一级一级递归查找
目录 / 命令补全 Tab 键

  • 查询所在目录 pwd (打印当前位置)

        删除空目录 rmdir
        rmdir 目录名
    
        删除文件或目录 rm
        rm -rf 文件或目录
            -r 删除目录
            -f 强制 
    
  • 复制命令 cp

        cp [选项] [原文件或目录] [目标目录] 目标目录后加文件名改名复制 不加名 原名复制
            -r 复制目录
            -p 连带文件属性复制
            -d 若原文件是链接文件 则复制链接属性
            -a 相当于 -pdr
    
  • 剪切命令 mv

        mv [原文件或目录] [目标目录]
            同目录下可以改名
    
        常见目录作用
            /       根目录
            /bin /sbin /usr/bin /usr/sbin   保存系统命令 (s* root用户打开)
            /boot   启动目录保存启动数据
            /dev    硬件文件
            /etc    配置文件
            /lib    函数库
            /media /mnt /misc   三个空目录 作为外接存放设备的挂载 (mnt)
            /proc /sys 内存的挂载点
            /tmp    临时目录
            /usr    系统软件资源目录
            /var    系统相关文档目录
    
  • 链接命令

        链接命令 ln
        ln -s [原文件] [目标文件]
            生成链接文件 (引用计数加1)
            -s 创建软链接
    
            硬链接
            (具有相同的i节点和存储block块,可以看成是同一个文件)
            一个文件的不同接入点
            通过i节点访问
            不能跨分区
            不能针对目录使用
    
            软链接
            (类似Windows快捷方式)
            拥有自己的i节点和block块 但数据块中只保存原文件的文件名和j节点号,没有实际的文件数据
            lrwxrwxrwx l软链接
                软链接权限都为 rwxrwxrwx
            修改任意文件,另一个都改变
            删除原文件,软链接不能使用
            软链接非当前目录,原文件要写绝对路径
    
  • 文件搜索命令

    locate 文件名
        在后台数据库中按文件名搜索,搜索速度快
        /var/lib/mlocate    后台数据库 
        updatedb            强制更新数据库
    
        /etc/updatedb.conf 配置文件
        PRUNE_BIND_MOUNTS = "yes"   筛选规则是否生效
        PRUNEFS = ""    筛选规则 (不搜索以下文件系统)
        PRUNENAMES = "" 筛选规则 (不搜索以下后缀名文件)
        PRUNEPATHS = "" 筛选规则 (不搜索以下目录中)
    
  • 命令搜索命令

    • whereis 命令名

      搜索系统命令所在路径 (及帮助文档)
      -b 只查看命令位置
      -m 只查看帮助文档位置

    • which 命令名

      除了命令所在位置还可以查看别名
      内置命令 (shell) 没有独立的执行文件 例如: cd
      环境变量 ($PATH) 内没有所搜索的命令文件, 就会报错 (未发现)

    • find 命令

      find [搜索范围] [搜索条件]
      find / -name install.log 根目录下按文件名搜索
      避免大范围搜索
      通配符匹配, 通配符是完全匹配 (双引号括起来)
      * 任意内容
      ? 任意一个字符
      [] 中括号内的任意一个字符 (或)
      find -iname #不区分大小写
      find -user #按所有者 -nouser 没有所有者的文件 (垃圾文件) 内核产生的文件

            find -mtime +10
             (查找十天前修改的文件)
              -10     10天内修改的文件
              10      10天当天修改的文件
              +10     10天前修改的文件
              atime   文件访问时间
              ctime   改变文件属性
              mtime   修改文件内容  
      
      
      
            find . -size 25k
              (查找大小为25K的文件)
              -25k    小于25K
              25k     大小为25K
              +25k    大于25K
              10M     大小为10M
      默认类型为扇区块(512K) \ 
      
      
            find . -inum 262421
              (查找i节点为262421)
      
      
            find /etc -size +20k -a -size -50k
          (查找/etc/目录下,大于20K并小于50K的文件)
              -a and  逻辑与
              -o or   逻辑或
      
      
            find /etc -size +20k -a -size -50k -exec ls -lh {} \;
          (将查找的结果用后面的命令来执行处理 -exec {} \;  固定格式)
      
    • grep 命令 字符串搜索

      grep [选项] 字符串 文件名
          gerp "size" anaconda-ks.cfg
              -v 取反
              -i 忽略大小写
      

      find 在系统当中搜索符合条件的文件名, 可以使用通配符来实现完全匹配
      grep 在文件当中搜索符合条件的字符串, 可以使用正则表达式来实现包含匹配
      文件名称 通配符 (完全匹配)
      文件数据 正则表达式 (包含匹配)

    • 帮助命令

      帮助命令 man
      (获取指定命令的帮助)
      man ls
      name 命令用途
      synopsis 格式
      description 选项 (简化)
      /d 可自动跳转到第一个 - d 选项上
      n 向下跳转 shift+n 向上跳转

      man -f 命令
      (查看命令级别)
      (相当于 whatis 命令)
          man -5 passwd
          man -4 null
          man -8 ifconfig
      默认打开最小等级的命令
      

      man -k 命令
      #找到和命令相关的所有相关信息
      #相当于 apropos 命令

    其他帮助命令

  • 命令名 –help
    获取命令选项的帮助

    help shell内部命令
        (获取shell内部命令的帮助)
            whereis cd
            #查看是否是shell内部命令 (无可执行文件)
            help cd
            #获取内部命令帮助   (内部命令无法使用man单独获取帮助)
    
    info
        (获取详细帮助文档)
        -回车     进入帮助子页面 (带*)
        -u      返回
        -n      下一个帮助小节
        -p      上一个帮助小节
    
  • 压缩与解压缩命令
    常用压缩格式 .zip .gz .bz2 | .tar.gz .tar.bz2

    .zip格式压缩
        zip 压缩文件名 源文件
        (压缩文件)
        不要求,但要使用扩展名,便于区分        
        zip -r 压缩文件名 目录
        (压缩目录)
    
    .zip格式解压
        unzip 压缩文件
        (解压缩.zip文件)
    
    
    .gz格式压缩
        gzip 源文件
        (压缩为.gz格式的压缩文件,源文件会消失)
    
        gzip -c 源文件 > 压缩文件
        (压缩为.gz文件,源文件保留)
    
        gzip -r 压缩目录
        (把目录当中的所有子文件压缩,但是不能压缩目录)
    
    .gz格式解压缩
        gzip -d 压缩包名
        (解压缩文件)
        gunzip 压缩包名
        gunzip -r 解压目录
    
    
    .bz2格式压缩
        bzip2 源文件
        (压缩为.bz2格式的压缩文件,不保留原文件)
            bzip2 -k 源文件
            (保留源文件)
            (不能压缩目录)
    .bz2格式解压缩
        bzip2 -d 压缩包名
        bunzip 压缩包名
        (-k 保留源文件)
    
    
    .tar 打包文件(解决目录压缩与解压缩)
        tar -cvf 打包文件名 源文件
            -c 打包文件
            -v 显示过程
            -f 指定打包后的打包文件名
    
        tar -xvf 打包文件名
        (解压缩)
    

    打包后压缩与解压缩
    tar -zcvf 压缩包名. tar.gz 源文件
    tar -zxvf 解压缩包名. tar.gz
    tar -jcvf 压缩包名. tar.bz2 源文件
    压缩多个文件后用空格分隔
    在压缩文件名前加路径可指定压缩位置
    tar -jxvf 解压缩包名. tar.bz2
    -C 指定解压位置

    tar -ztvf 压缩包名
    tar -jtvf 压缩包名
        可查看压缩包
    
  • 关机和重启命令

    shutdown命令
        shutdown [选项] 时间
        -c 取消前一个命令
        -h 关机
        -r 重启
        (可以正确保存服务与文件 )
    
        shutdown -r 05:30 &
        放在后台运行
    
    其他关机命令
        halt
        poweroff
        init 0
    
    其他重启命令
        reboot
        init 6
    

    系统运行级别
    0 关机
    1 单用户
    2 不完全多用户, 不含 NFS 服务 (文件共享服务)
    3 完全多用户 (字符界面)
    4 未分配
    5 图形界面 (X)
    6 重启
    runlevel #查看之前级别和当前级别
    cat /etc/inittab
    id:3:initdefault: // 定义系统默认的运行级别

    退出登录命令
        logout
        #注销
    
  • 其他常用命令

    • 挂载命令

      mount
      #查看系统中已经挂载的设备
      mount -a
      (根据配置文件 /etc/fstab (自动挂载) )
      (如果将光驱和U盘写入文件 光驱内没有光盘,U盘没有插入系统 启动就会不成功)
      
      mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
          -t 文件系统:加入文件系统来指定挂载的类型 ext3 ext4 iso9660(光盘)等文件系统
          -o 特殊选项:可以指定挂载的额外选项
              exec/noexec 是否可以执行可执行文件 默认允许
              remount 重新挂载已经挂载的文件系统 一般用于指定修改特殊权限
          默认已经挂载好的分区 可以省略 设备文件名
      
      挂载光盘
          mkdir /mnt/cdrom
          (建立挂载点)
          mount [-t iso9660] /dev/sr0 /mnt/cdrom
          (挂载光盘 将设备文件挂载到盘符)
          (默认读写权限,光盘不可写 提示权限被迫改变)
      
      卸载光盘
          (必须卸载才可取出光盘)
          umount 设备文件名或挂载点
          umount /mnt/cdrom/
      
      挂载U盘
          fdisk -l
          (查看设备文件名)
          mount -t vfat /dev/sdb1 /mnt/usb/
          (vfat (fat32)文件系统 Linux默认是不支持NTFS文件系统)
      
      用户登录查看命令
           w  
           (查看用户登录信息 (系统资源情况) )
      
          who 
          (查看当前登录用户)
      
          last
          (查看系统中所有已登录的信息 (历史记录) )
          (日志文件 /var/log/wtmp (二进制文件) 不可用vi查看 )
      
          lastlog
          (系统当中的用户最后登录时间 )
          (日志文件 /var/log/lastlog )
      

4.shell基础

  • shell概述

    系统命令行解释器(二进制语言) | 接受输入命令 编译二进制传输给内核
    还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.

  • 分类

    • Bourne Shell : 从1979起Unix就开始使用 主文件名为 sh ksh Bash psh zsh Linux中标准版为 Bash
    • C Shell : 主要在BSD版的Unix系统中使用,与C语言类似 csh tcsh
      Bash兼容 /etc/shells
  • 脚本执行方式


    echo输出命令
    echo [选项] [输出内容]
    空格需要加入双引号
    -e 控制字符(转义字符) \a 警告音 \b 退格键
    可输入十六进制制表符ASCII \x
    #输出颜色 “\e[1;31m ……. \e[0m”
    31m 红色 35m 杨红 32m 绿色 33m 黄色
    echo -e “\e[1;31m 哈哈哈 \e[0m”

    第一个脚本
        hello.sh
        #!/bin/bash
        echo -e "\e[1;36m 天上掉下个林妹妹  \e[0m"
    执行权限
        通过Bash调用执行脚本
            bash hello.sh
        赋予权限,直接执行
            chmod 755 hello.sh
            ./hello.sh
    
  • Bash的基本功能
    命令别名与快捷键
    ( 操作简化,便于记忆 )

    alias
    (查看系统中默认生效的别名 )
    alias ls=’ls –color=never’
    (设定别名(临时生效) alias 别名=’原命令’ )
    vi ~/.bashrc
    (永久生效 写入环境变量配置文件 )
    source ~/.bashrc 重新调用配置文件,使设置生效

    unalias 别名
    (删除别名 (临时生效) )

    生效顺序
    1. 用绝对路径或相对路径执行的命令
    2. 执行别名
    3. 执行Bash的内部命令
    4. 按照$PATH环境变量定义的目录查找顺序找到的第一个命令

  • 常用快捷命令
    ctrl+c 强制终止当前命令
    ctrl+l 清屏
    ctrl+a 光标移到行首
    ctrl+e 光标移到行尾
    ctrl+u 从光标所在位置删除到行尾
    ctrl+z 把命令放入后台
    ctrl+r 在历史命令中搜索

  • 历史命令

        history 历史命令
            history [选项] [历史命令保存文件]
            -c 清空历史命令
            -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
        #默认保存1000条
            HISTSIZE=1000
            #vi /etc/profile 环境变量配置文件
    
        基本调用
            上下箭头来重复调用
            !n      来执行第n条历史命令
            !!      重复执行上一条命令
            !字符串 重复执行后一个该串开头的命令
    
        Tab键
            进行命令(环境变量)和目录补全(操作路径)
    
  • 输出重定向
    (显示电脑处理的结果)
    标准输入输出
    键盘 /dev/stdin 0 标准输入
    显示器 /dev/sdtout 1 标准输出
    显示器 /dev/sdterr 2 标准错误输入

    • 输出重定向

      • 标准输出重定向
        命令 > 文件
        以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中.
        命令 >> 文件
        以追加的方式

      • 标准错误输出重定向
        错误命令 2>文件
        以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中.
        错误命令 2>>文件
        以追加的方式

      • 正确输出和错误输出同时保存
        命令 > 文件 2>&1
        命令 &> 文件
        以覆盖的方式,把正确的输出和错误输出都保存到一个文件当中
        命令 >> 文件 2>&1
        命令 &>> 文件
        以追加的方式
        ls &> /dev/null (回收站)
        命令 >> 文件1 2>> 文件2
        正确的追加到文件1,错误的追加到文件2

    • 输入重定向
      wc [选项] [文件名]
      -c 统计字节数
      -w 统计单词数
      -l 统计行数
      ctrl+d 中断统计

      命令 < 文件
      (把文件作为命令的输入)
      命令 << 标识符
      (标识符其中的内容作为该命令执行的内容)

  • 管道符
    多命令顺序执行
    ; 命令1;命令2 多个命令顺序执行(无论中间是否保存)
    && 命令1&&命令2 逻辑与 当命令1正确执行,则命令2才会执行
    || 命令1||命令2 逻辑或 当命令1正确执行,则命令2不执行
    # ls && echo yes || echo no

  • 管道符
    命令1 | 命令2
    #将命令1的正确输出作为命令2的操作对象
    # ll /etc | more
    # netstat -an | grep ESTABLISHED (服务器显示连接人数)
    # netstat -an | grep ESTABLISHED | wc -l (处理行号)

  • 通配符
    ? 匹配一个任意字符
    * 0个或任意多个
    [] 匹配中括号内其中一个字符
    [-] -代表一个范围 [a-z]代表匹配一个字母
    [^] 逻辑非 表示匹配不上中括号内的一个字符 [^0-9]代表匹配一个不是数字的字符

  • 其他特殊符号

            ''  特殊符号都没有特殊意义,原样输出        
            ""  $ ` \ 都具有特殊意义
            ``  包含系统命令 执行后赋值给变量 等同于 $()
            $  用于调用变量的值 (变量名=变量值)
            #   shell脚本中,#开头的行代表注释
            \   转义符 跟在\之后的特殊符号失去意义,变为普通字符
    
1
  1. 来源 慕课学习笔记 ↩

你可能感兴趣的:(linux,shell)