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就介绍到这里
参考文章: