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与数据库开 ...
随机推荐
- java定时任务(三):timerTask定时任务
这种方式是纯粹的java代码,需要继承timerTask接口并重写run方法,创建这个类的时候就会调用run方法. 基本的使用逻辑是: 把自己需要处理的业务逻辑放在自己写的这个继承了timerTask ...
- 【html5】html学习笔记1
html5语法规则 1.标签要小写 2.省略标签 如 <tr> <td> <tr><td> 3.属性不加” 如 <div id=div1> ...
- 安装STS报错(三)
安装STS报错 1.具体报错如下 Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://repo.ma ...
- 百度地图JavaScript API本地搜索的结果面板
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- ATCA构架
ATCA(Advanced Telecom Computing Architecture)标准即先进的电信计算平台,它脱胎于在电信.航天.工业控制.医疗器械.智能交通.军事装备等领域应用广泛的新一代主 ...
- xml字符串转为XmlDocument
string xml = "<xml><logistics_express_get_respose><express_detail><company ...
- freemarker.template.TemplateException:Macro has no such argument:params
1.错误描述 freemarker.template.TemplateException:Macro mainSelect has no such argument:params 2.错误原因 在宏定 ...
- 最小生成树 TOJ 4117 Happy tree friends
链接http://acm.tju.edu.cn/toj/showp4117.html 4117. Happy tree friends Time Limit: 1.0 Seconds Memo ...
- VS2017 启动调试报错:ID为{....}进程未启动解决方案
今天遇到这么一个问题,打开VS启动调试,始终报错,如下图: 我重启VS,甚至重启电脑都不得行,那个进程号还在变化,就在网上查找资料,各式各样的解决方案,这里我记录我成功的方案. 打开项目文件地址,在解 ...
- 【原】storm组件(架构层面)
Strom集群遵循从主模式,主与从之间通过Zookeeper协作.架构层面上包括三个组件: 1) Nimbus Node 2)Supervisor Nodes 3)Zookeeper 其中Nimbus ...