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与数据库开 ...
随机推荐
- html标签自带样式总结
一.html标签自带样式 head { display:none; } body { margin:8px; line-height:1.12; } button, textarea, input, ...
- cookie的设置和获取
// 创建cookiefunction setCookie(name, value, expires, path, domain, secure) { var cookieText = encodeU ...
- Car HDU - 5935
Problem Description Ruins is driving a car to participating in a programming contest. As on a very t ...
- 求字符串空格、数字、字母个数--JAVA基础
相关内容:charAt()函数 package com.nxl123.www;public class NumString { public static void main(String[] arg ...
- 【BZOJ3295】动态逆序对(线段树,树状数组)
[BZOJ3295]动态逆序对(线段树,树状数组) 题面 Description 对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的 ...
- [Luogu2444][POI2000]病毒
Luogu sol 如果存在一个合法的无限长的串,那势必说明在\(AC\)自动机上存在一个合法的环.由此转化为判环,只要判断搜到的点是否已经在搜索栈中即可. code #include<cstd ...
- Bzoj4916: 神犇和蒟蒻
题面 传送门 Sol 第一问puts("1") 第二问,\(\varphi(i^2)=i\varphi(i)\) 设\(\phi(n)=\sum_{i=1}^{n}i\varphi ...
- Django的models实现分析
1 引子 1.1 神奇的Django中的models 我们先来看一段在Django项目中常用的代码: 设置数据库models代码: class Students(models.Mod ...
- 在不同环境下MD5加密相同字符串,密文不一样的问题
这是昨天做一个接口对接时遇到的一个问题.下面是md5加密的算法 public static String md555(String plainText) throws UnsupportedEncod ...
- systemd的作用
早上群上讨论了一下systemd的作用,还导致了一个人的直接退群,出于求知心理,搜索了一些systemd,对此也作出了一些相应的整理: 一.systemd的诞生: 学习嵌入式bootloader与ke ...