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与数据库开 ...
随机推荐
- Flex中的FusionCharts 3D柱形图
1.3D柱形图源码 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:f ...
- RAPIDIO高速串行协议
RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准.RapidI ...
- Linux显示使用者将不能利用交谈式指令来对行程
Linux显示使用者将不能利用交谈式指令来对行程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ top -s top - 19:23:34 up 52 min ...
- 用SpeedFan来控制CPU风扇转速
用SpeedFan来控制CPU风扇转速 浏览:63252 | 更新:2011-04-07 21:14 1 2 3 4 5 6 7 分步阅读 原创文章:看到SpeedFan,很多朋友最想要的是用Spee ...
- HDU5779 Tower Defence
dp[i][j][k] 已选i个人 选到第j层 第j层有k个人 讨论相邻层 上一层选了l人 那么共有 两层之间的方案数 以及这一层自己的方案数 #include<bits/stdc++.h&g ...
- 畅通工程 HDU - 1232
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接 ...
- (python)剑指Offer(第二版)面试题14:剪绳子
题目 给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少 ...
- AJAX的简洁写法
// ajax操作 $('#btn').on('click',function(){ var url = "{:url('confirm')}"; var actual_money ...
- CASE WHEN用法
问题:假如说这个条件有一条数据不满足,那么那条数据就不会读出来,,那么,我怎么才能把它读出并且赋值为空呢 方法: SELECT `s`.*, ( CASE THEN SUM(a.total_numbe ...
- 一个VB编写的俄罗斯方块
'VB语言版俄罗斯方块'Totoo.Aoo34智造(一个人的两个名字),一些方块,很多计算 Const WN As Integer = 10, HN As Integer = 20Const Boxl ...