身为一个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" "abcds" #从键盘输入
read PERSON #打印输入的内容
echo "hello $PERSON" #val是变量,expr是运算符,反引号表示val可以将内容先存到内存中,以后使用再将结果从内存中读出来;等号左右都不能有空格,expr后面空格不能少
val=`expr + ` #$引用变量,双引号和单引号用法相同,不过如果含有变量,要用双引号
echo "value : $val" #if语法,空格不能少;eq表示相等,fi表示if结束
if [ -eq ]
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::} name[]="a"
name[]="b"
name[]="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

bashell基础的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. java定时任务(三):timerTask定时任务

    这种方式是纯粹的java代码,需要继承timerTask接口并重写run方法,创建这个类的时候就会调用run方法. 基本的使用逻辑是: 把自己需要处理的业务逻辑放在自己写的这个继承了timerTask ...

  2. 【html5】html学习笔记1

    html5语法规则 1.标签要小写 2.省略标签 如 <tr> <td> <tr><td> 3.属性不加” 如 <div  id=div1> ...

  3. 安装STS报错(三)

    安装STS报错 1.具体报错如下 Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://repo.ma ...

  4. 百度地图JavaScript API本地搜索的结果面板

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. ATCA构架

    ATCA(Advanced Telecom Computing Architecture)标准即先进的电信计算平台,它脱胎于在电信.航天.工业控制.医疗器械.智能交通.军事装备等领域应用广泛的新一代主 ...

  6. xml字符串转为XmlDocument

    string xml = "<xml><logistics_express_get_respose><express_detail><company ...

  7. freemarker.template.TemplateException:Macro has no such argument:params

    1.错误描述 freemarker.template.TemplateException:Macro mainSelect has no such argument:params 2.错误原因 在宏定 ...

  8. 最小生成树 TOJ 4117 Happy tree friends

    链接http://acm.tju.edu.cn/toj/showp4117.html 4117.   Happy tree friends Time Limit: 1.0 Seconds   Memo ...

  9. VS2017 启动调试报错:ID为{....}进程未启动解决方案

    今天遇到这么一个问题,打开VS启动调试,始终报错,如下图: 我重启VS,甚至重启电脑都不得行,那个进程号还在变化,就在网上查找资料,各式各样的解决方案,这里我记录我成功的方案. 打开项目文件地址,在解 ...

  10. 【原】storm组件(架构层面)

    Strom集群遵循从主模式,主与从之间通过Zookeeper协作.架构层面上包括三个组件: 1) Nimbus Node 2)Supervisor Nodes 3)Zookeeper 其中Nimbus ...