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" "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基础的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
随机推荐
- FusionCharts中图的属性的总结归纳
FusionCharts中图的属性的总结归纳 1.横坐标label间隔显示 labelStep="4" 2.柱状图有椭圆角 useRoundEdges="1"
- Struts2实现文件上传报错(一)
1.具体报错如下 2014-5-1 23:02:38 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service( ...
- Flex内存泄露解决方法和内存释放优化原则
Flex内存泄露解决方法和内存释放优化原则 你对Flex内存泄露的概念是否了解,这里和大家分享一下Flex内存释放优化原则和Flex内存泄露解决方法,希望本文的介绍能让你有所收获. Flex内存释放优 ...
- hdu5945 Fxx and game
单调队列学习 其实和单调栈类似 都是因为有些元素是没有价值的可以舍去 #include<bits/stdc++.h> using namespace std; #define sz(X) ...
- ASP.NET WebAPI String 传值问题
如果我们再WebAPI中定义了只有一个string参数的WebAPI函数,如下所示: [HttpPost] public string TrackBill(string str) { return s ...
- ArcGIS API for JavaScript 4.4 版本加载谷歌地图
ArcGIS API for JavaScript 4.X 版本升级后,API发生了很大的变化. 其中就支持了WebEarth展示,主要是通过 esri/views/SceneView 实现的. 在新 ...
- 转:SQL进阶之变量、事务、存储过程与触发器
一.变量那点事儿 1.1 局部变量 (1)声明局部变量 DECLARE @变量名 数据类型 DECLARE @name varchar(20) DECLARE @id int (2)为变量赋值 SET ...
- java中垃圾回收机制和引用类型
在java中JDK1.2版本以后,对象的引用类型分为四种,从高到低依次为:强引用.软引用.弱引用.虚引用. ①强引用的特点:垃圾回收机制绝不会回收它,即使内存不足时,JVM宁愿抛出OutOfMemor ...
- 【BZOJ4650】【NOI2016】优秀的拆分(后缀数组)
[BZOJ4650][NOI2016]优秀的拆分(后缀数组) 题面 BZOJ Uoj 题解 如果我们知道以某个位置为开始/结尾的\(AA\)串的个数 那就直接做一下乘法就好 这个怎么求? 枚举一个位置 ...
- 【BZOJ2333】棘手的操作(左偏树,STL)
[BZOJ2333]棘手的操作(左偏树,STL) 题面 BZOJ上看把... 题解 正如这题的题号 我只能\(2333\) 神TM棘手的题目... 前面的单点/联通块操作 很显然是一个左偏树+标记 ( ...