zoukankan      html  css  js  c++  java
  • shell相关命令

    1.shell是什么?
    从用户角度:shell是用户与Linux沟通的桥梁
    从程序员角度:shell本身是一种用C语言编写的程序
    shell担任了翻译的角色,将用户输入的命令翻译成Linux能够识别的指令。
    shell是一个命令解释器。
    shell是一种编程语言。
    shell是内核的保护壳。

    2.shell类型
    cat /etc/shells 查看当前系统上的shell
    echo $SHELL 查看当前使用的shell

    3.bash优点:
    1.命令编辑
    记忆使用过的指令,上下键可以找到之前的指令

    history 查看历史指令

    vim .bash_history 历史指令保存在该文件中,默认保存2000条记录

    vim .bashrc -> HISTFILESIZE=200 可以修改最大保存记录的数

    2.补全功能(table)
    指令补全
    文件名补全

    3.命令别名(alias)设定功能
    ls -al ->lm
    设定别名:alias lm='ls -al'
    alias rm='rm -i'

    4.作业控制、前景背景控制 &
    ctrl + z 让正在运行的程序切换到后台运行
    jobs 查看正在运行的作业
    fg 1/2/3切回到前台运行

    使用前背景控制可以让工作更顺利

    5.shell script
    DOS 中有将一堆指令写一起的称为 批处理文件 (.bat)
    Linux中shell script 功能更强

    4.在bash中输入指令
    command [-options] parameter1,parameter2,...
    指令 选项 参数
    1.指令与选项、参数之间以空格,不论空几格shell都视为一格
    2.如果指令很长,可以用 符使指令连续到下一行
    3.一般来说,选项是 -选项,有时需要写完整的名称 --选项
    ls --help

    5.管道(|)
    一般用来连接进程
    把前一个命令的输出作为下一个命令的输入
    ps | sort | more

    6.重定向
    简单的说,就是将目前的所得数据转到其他地方
    大于号 > 就是将输出结果导向到“>”后面的文件中
    1.若文件不存在,会自动创建
    2.若存在,先清空,再将数据写入

    标准输入 代码0 stdin <
    标准输出 代码1 stdout 1>
    标准错误 代码2 stderr 2>

    基本指令格式:
    指令 > 设备/文件
    指令 1> 设备/文件
    指令 2> 设备/文件
    指令 < 设备/文件

    把正常输出和错误输出重定向到同一个文件中:
    ls -l file 1> out.txt 2>&1

    输入重定向<:
    简单的说,就是将原来 需要由键盘输入的数据经由文件读入
    more < err.txt
    wc err.txt
    输出行、单词数、字节数

    ls QQQQQ 2> /dev/null (空设备)

    ----------------------------
    shell语法:
    变量
    条件
    程序控制
    函数
    变量:
    1.环境变量
    一般指在操作系统中用来指定系统运行环境的一些参数
    PATH=$PATH:.
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    HOME
    PWD
    LANG
    OLDPWD (cd -)
    export PS1='[u@h:]$ '

    1.永久的
    使用export命令声明,并保存到配置文件中
    2.临时的

    2.自定义变量
    1.最简单常用的例子就是路径名称
    export myDir=/mnt/hgfs/中文路径
    cd $myDir
    2.另一个需要自定义变量的地方是脚本文件中(参考#define,修改维护更方便)
    3.特殊变量
    $? 表示上一个命令的退出码(返回值)

    设定变量的规则:
    1.变量与变量内容以"="连接
    2.等号两边不能直接 接空格符
    3.变量名只能是字母和数字,其中数字不能是开头字符
    4.若有空格符,可用双引号或单引号将变量内容结合起来
    5.可以通过在变量名前加一个$符号来访问它的内容
    6.通常大写字符是系统预设变量,自定义变量可以使用小写字符,方便判断

    条件:
    test 条件
    或 [ 条件 ]
    测试字符串:
    string1 = string2 相同
    string1 != string2 不同
    -n string 如果字符串不空,则结果为真
    -z string 如果字符串为空,则结果为真
    测试算术表达式:
    expression1 -eq expression2 等于
    -nq 不等于
    -gt 大于(greater)
    -lt 小于(little)
    -ge 大于等于
    -le 小于等于
    !expression 如果表达式为真,则结果为,假反之亦然
    测试文件条件:
    -d file 是目录则为真
    -f file 是普通文件则为真
    -e file 文件存在则为真
    -r file 文件可读则为真
    -w file 文件可写则为真
    -x file 文件可执行则为真

    程序控制:
    1.if语句
    if 条件
    then
    语句
    elif 条件
    then
    语句
    else
    语句
    fi
    注:if测试条件中 等号两边要有空格
    如果用[]来测条件 []与条件之间也要有空格
    第一个脚本程序:
    1.#!/bin/bash 告诉系统,用#!后面的程序来执行我的脚本文件
    2.其它行的#开头的是注释
    3.echo 用来输出 (相当于printf),read用来输入,相当于scanf
    4.脚本结束时,exit 0
    脚本程序的执行:
    1./bin/bash XXX.sh
    2.chmod +x XXX.sh
    ./xxx.sh

    2.for语句
    for 变量 in 值1,值2,...
    do
    语句
    done

    `指令`:获取指令的执行结果
    $(指令):获取指令的执行结果

    3.while语句
    while 条件
    do
    语句
    done


    #!/bin/bash

    #这是我的第一个脚本,就是用来输出hello wrold

    var="hello world"
    echo $var

    exit 0


    #!/bin/bash

    #这是用if语句来测试字符串
    echo "你饿了吗?请回答YES 或 NO"

    read var
    echo $var
    if [ "$var" = "YES" ]
    then
    echo "咱们等会就吃饭"
    elif [ $var = "NO" ]
    then
    echo "咱们再玩会"
    else
    echo "输入不正确,请重新输入"
    fi

    exit 0

    #!/bin/bash

    #这是用if来测文件

    read var
    if [ -f $var ]
    then
    echo "这是一个文件"
    elif [ -d $var ]
    then
    echo "这是一个目录"

    else
    echo 不支持这种格式
    fi
    exit 0


    #!/bin/bash


    #这是测试for循环

    for var in apple pear grape
    do
    echo $var
    done

    exit 0


    #!/bin/bash


    #打印当前目录下以.sh结尾的文件

    #for var in `ls *.sh` # `指令` :表示获取指令执行的结果
    for var in $(ls *.sh)
    do
    echo $var
    done

    exit 0


    #!/bin/bash
    #这是while语句示例
    #密码检查

    echo "请输入密码:"
    read var
    while [ $var != "123456" ]; do

    echo "密码不正确,请重新输入"
    read var

    done
    echo "密码正确,登录成功"
    exit 0

    作业:
    求和1-100
    学习for语句的第二种写法

    #! /bin/bash
    i=1
    j=0
    while :
    do
    j=$((j + i))
    ((i == 100 )) && break
    ((i++))
    done
    echo $j



    for 循环版本

    #! /bin/bash
    j=0

    for ((i=1 ; i<=100 ; i++))
    do
    j=$((j + i))
    done
    echo $j





    #!/bin/sh
    s=0
    for i in `seq 1 100`
    do
    s=`expr $s + $i`
    #s=$(expr $s + $i)
    done
    echo $s
  • 相关阅读:
    ubuntu环境下eclipse的安装以及hadoop插件的配置
    hadoop启动步骤
    Ubuntu下hadoop环境的搭建(伪分布模式)
    volatile关键字作用
    CyclicBarrier&CountDownLatch&Semaphore
    Callable、Future和FutureTask浅析
    Unsafe与CAS
    接口和抽象类的区别
    内部类
    泛型
  • 原文地址:https://www.cnblogs.com/liudehao/p/5811470.html
Copyright © 2011-2022 走看看