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

时间: 2024-11-02 02:50:55

bashell基础的相关文章

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

Java注解(1)-注解基础

注解(Annotation)是在JAVA5中开始引入的,它为在代码中添加信息提供了一种新的方式.注解在一定程度上把元数据与源代码文件结合在一起,正如许多成熟的框架(Spring)所做的那样.那么,注解到底可以做什么呢? 1.注解的作用. 提供用来完整地描述程序所需要的信息,如编译期校验程序信息. 生成描述符文件,或生成新类的定义. 减轻编写"样板"代码(配置文件)的负担,可以使用注解自动生成. 更加干净易读的代码. 编译期类型检查. 2.Java提供的注解 Java5内置了一些原生的注

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

NumPy基础:数组和失量计算

NumPy : Numerical Python,是高性能科学计算和数据分析的基础包. 部分功能: ndarray:一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组: 用于对整组数据进行快速运算的标准数学函数(无需编写循环): 用于读写磁盘数据的工具以及用于操作内存映射文件的工具: 线性代数.随机数生成以及傅里叶变换功能: 用于集成C.C++.Fortran等语言编写的代码工具: 大部分数据分析应用关注的功能: 用于

css基础

css绝对是一个能够写到爆炸的东西,so,机智的小北方才不会写各种css样式具体的效果,相比之下更推荐大家记一些常用的key,至于效果,每次用的时候百度下就可以了, css的作用是对符合条件的标签进行渲染,那么首先就要匹配到对应标签啦,我萌有三种基础的模式来匹配希望改变样式的标签 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8">

零基础的人该怎么学习JAVA

对于JAVA有所兴趣但又是零基础的人,该如何学习JAVA呢?对于想要学习开发技术的学子来说找到一个合适自己的培训机构是非常难的事情,在选择的过程中总是 因为这样或那样的问题让你犹豫不决,阻碍你前进的步伐,今天就让小编为您推荐培训机构新起之秀--乐橙谷Java培训机构,助力你成就好未来. 选择java培训就到乐橙谷 北京有什么好的Java培训机构?来乐橙谷北京学Java,零基础走起,乐橙谷Java基础班授课老师经验非常丰富,课程内容安排合理,适合于有一点点Java基础甚至一点都不会Java的同学学

linux+jmeter+python基础+抓包拦截

LINUX 一 配置jdk 环境 *需要获取root权限,或者切换为root用户 1.windows下载好,去 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 官方网站下载jdk(linux相应版本) 2.在usr目录下创建java路径文件夹 [root bin]cd /usr mkdir java 3.将jdk-8u60-linux-x64.tar.gz放到刚才创建的文件夹下

python基础之条件循环语句

前两篇说的是数据类型和数据运算,本篇来讲讲条件语句和循环语句. 0x00. 条件语句 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python interprets non-zero values as True. None and 0 are interpreted as False. Python 判断非0的值为 True, 而None和0被认为是 False.注意这里的True和False首字母大写,Py