zoukankan      html  css  js  c++  java
  • bashell基础

    身为一个iOS程序员,虽然iOS相关技术十分重要,但是bash也是不可不了解的,因为技能的成长,除了深度,还需要广度。下面就来介绍下bash。

    Shell是C语言编写的,所以他是解释性语言,运行在Linux系统下,在Mac下,一般使用的是bashell。

    bashell都是运行在Terminal下,本文的所有脚本也都是运行在Terminal下的。

    常用的命令行

    pwd         //当前路径
    ls -l          //列出当前目录下所有文件
    mkdir TestFolder           //创建文件夹
    touch file.txt file1.txt file2.txt           //创建3个文件,空格分隔
    ls -l | grep txt | wc -l            //列出所有文件,然后查找文件名包含txt的文件,然后计算总共有多少个结果

     注:|就是将左边的结果作为右边的输入

    man  command  //man后面接命令则显示该命令的所有帮助信息,再输入q则返回
    
    history  //显示之前输入的所有历史信息
    clear    //清空所有行
    du 文件    //显示文件大小
    cat 文件    //显示文件内容
    less 文件    //分页显示文件内容,适合大文件
    cp 文件  新文件    //复制文件到新文件
    mv 文件  目录    //移动文件到目录
    rm 文件1 文件2 文件3    //删除文件1,文件2,文件3
    rm -rf /* 或者 rm -rf /    //删除所有文件,千万不要执行这一句!!!!!千万不要!!!!
    sudo su   //成为root用户
    chomd +x 文件    //给文件执行权限,在做shell的时候十分有用
    wc -m << END    //从键盘读入数据并统计读入数据的大小,以END符号来结束
    ps -ef    //显示所有进程列表
    top       //显示进程动态列表
    kill 进程PID    //结束一个进程
    tar -cvf archive.tar file1.txt file2.txt file3.txt    //归档
    tar -xvf tutorial.tar    //解档
    
    gzip tutorial.tar    //压缩
    gunzip tutorial.tar.gz    //解压缩
    unzip archive.zip    //解压缩

    基础的命令行就介绍到这里,下面开始shell

    Shell基础

    在介绍shell之前,需要先了解vim

    输入vim,然后会进入操作界面,这个操作界面分三种模式:交互式,插入式,命令式。其中交互式和命令式我个人觉得比较接近,都是通过命令来作为输入,区别是命令式需要先输入:

    我们先输入

    vim 文件    //一般以.sh结尾,你用txt结尾也可以
    
    然后按下i,就进入插入模式了,就可以开始写shell了

    我们输入一些代码来分别讲讲基础shell语法:

    #指明运行shell的解释器
    #!/bin/bash        
    
    #输出文本
    echo "your name"     
    
    #格式化方式输入文本
    printf "%d %s" 123 "abcds"   
    
    #从键盘输入
    read PERSON        
    
    #打印输入的内容
    echo "hello $PERSON"       
    
    #val是变量,expr是运算符,反引号表示val可以将内容先存到内存中,以后使用再将结果从内存中读出来;等号左右都不能有空格,expr后面空格不能少
    val=`expr 2 + 2`    
    
    #$引用变量,双引号和单引号用法相同,不过如果含有变量,要用双引号  
    echo "value : $val"    
    
    #if语法,空格不能少;eq表示相等,fi表示if结束
    if [ 10 -eq 100 ]       
    then
            echo "equal"
    else
            echo "not equal"
    fi          
    
    file="test.sh"
    #-f 表示是否普通文件
    if [ -f $file  ]      
    then
            echo "ordinary file"
    else
            echo "not ordinary file"
    fi
    
    string="79838924kfdsldjslfjdslfs"
    #字符串长度
    echo ${#string}      
    
    #字符串第1到5位,输出98389
    echo ${string:1:5}   
    
    name[0]="a"
    name[1]="b"
    name[2]="c"
    #打印数组name的成员
    echo ${name[*]}   
    
    length=${#name[*]}
    #打印数组长度
    echo "array length is $length"    
    
    #for语法,./*是当前目录所有文件,mm表示循环体内单个文件
    for mm in ./*       
    do
            echo $mm
    done 
    
    count=0
    #while语法结构, -lt表示less than
    while [ $count -lt 5 ]     
    do
            count=`expr $count + 1`
            echo $count
    done 
    
    #case语法结构
    aNum=1
    case $aNum in
        1)  echo 'abc'
        ;;
        *)  echo 'default'
        ;;
    esac
    
    #shell函数,带参数的写法,$1表示第一个参数,$2表示第二个
    #注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数
    functionWithParam(){
            echo "first param $1"
            echo "second param $2"
            return 123
    }
    
    #函数传参
    functionWithParam 1 2
    #获取函数返回值
    ret=$?
    echo $ret
    
    #$#    传递给函数的参数个数
    #$*    显示所有传递给函数的参数
    
    #接收.sh的第一个参数
    option="${1}"    

    当这些脚本都输入完毕以后,按下esc键,然后输入:wq   表示保存并退出vim的意思

    然后输入:

    chmod +x test.sh   //给sh文件以执行权限

    ./test.sh    //开始执行脚本 ./为执行路径,如果你的脚本放在/bin, /sbin, /usr/bin,/usr/sbin等PATH里,才可以省略./

    如果想要调试执行,则输入:

    bash -x test.sh

    基本的命令行和基本的bash就介绍到这里

    参考文章:

    http://www.jianshu.com/p/7c3a4f56f671

    http://c.biancheng.net/cpp/view/6994.html

  • 相关阅读:
    [Linux] expect命令 (自动交互脚本)
    [MAC] 终端bash_profile配置不生效问题
    [IDEA] 开发常用插件
    [MAC] 环境常用工具
    [IDEA] 快捷键输出固定代码模板
    家庭网络-多无线路由器实现无缝漫游
    家庭网络-AP组网方案(POE供电)
    家庭网络-软路由搭建方案
    队列使用
    [多线程] 线程池的使用
  • 原文地址:https://www.cnblogs.com/lizheng114/p/6661492.html
Copyright © 2011-2022 走看看