20171123 Linux shell 基础学习笔记
1. shell 的开始
一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径
其他的 # 都表示注释.
2. shell 的变量
定义变量直接用 variablename= value 就可以 其中变量名与等号之间没有空格.
使用变量的时候 是 ${vairablename} 的方式进行使用 大括号可以有可以没有,但是建议有.
可以使用
for file in `ls /etc/` 的方式来循环取得文件名.
使用do done 的方式来进行循环处理.
#!/bin/bash
for file in `ls /etc`;do
echo ${file}
done
3. 可将变量设置为 只读变量 readonly variablename
unset 可以删除变量.
4. shell变成的参数部分
$1 表示第一个参数 $# 表示参数的个数 $$ 表示当前进程的ID $? 表示退出时是否有异常等.
5. shell 里面数组的概念:
shell 里面数组 用 () 来表示
arrayname=(A B C D )
注意事项: arrayname 等号 以及 括号中间不能有空格.
数组的下标从0 开始
{arrayname[@]} 或者 * 可以遍历出所有的数组元素
{#arrayname[*]} 可以返回数组的元素个数.

6. shell中的运算方法.
bash 中不支持运算 需要通过awk 或者expr 等方式来进行
val=`expr 2 + 2`
echo $val
注意乘法需要增加反斜线\* 来进行表示
使用的是反引号进行表示 而不是 单引号.

7. 比较方法
$a -eq $b 这种方式进行.
-eq -ne -ge -le -gt -lt
布尔运算符
! 非运算 -o 或运算 -a 与运算
逻辑运算符
&& 逻辑and || 逻辑或

文件测试运算符
-b 是否是块设备
-c 是否是字符设备
-d 是否是目录
-f 是否是普通文件
-r 文件是否可读
-w 文件是否可写
-x 文件是否可执行
-s 文件是否为空
-e 文件是否存在

8. shell 编写时容易出错的地方:
if 用[] 来表示bool预算部分
其中 -e 什么的需要有空格区别
if 和面先增加 then 最后增加fi 不能缺少.

9. echo 命令.
echo 用于字符串输出
echo "" 或者不加双引号 显示字符串
echo -e "" 内内容 进行转义
echo '' 原样输出不获取变量不进行转义
echo `date` 显示命令执行结果
echo > filename 将结果定位到文件
echo >>filename 增加到文件的最后一行
read something 将读入的数据作为变量something的value

10. printf的部分内容.
比echo 最大的好处是能够格式化输出字符串.
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
转义字符 使用反斜线.

11. shell 中的流程控制::::::::::::::::::::::::::::::::::::::::::
1)
if [ -e $filename]
then
echo # do something
elif [ ]
then
do something
else
do something
fi
2) for 循环
for some in many
do
do something
done

3) while 循坏
while (())
do
let i++ # for example
done

4) until 循坏
util (())
do
done

跳出循环使用 break
继续循环 使用 continue

12.shell 中的函数
function func()
或者是 func() 进行命令
可以有return语句 在执行完 function 之后通过 $? 来获取返回值.
调用函数时与python
不一样不需要增加() 记住以下.

13.
命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

14. 文件包含
source 或者是 直接点过来.

Linux shell 菜鸟学习笔记....的更多相关文章

  1. Linux Shell编程学习笔记——目录(附笔记资源下载)

    LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...

  2. Linux shell 重定向学习笔记

    在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读 ...

  3. Linux Shell 编程学习笔记

    1:Shell Script中if语句的条件部分要以分号来分隔 2:要注意条件测试部分中的空格.在方括号的两侧都有空格 3:echo "Hi, ${a}s" 单引号中的变量不会进行 ...

  4. linux shell脚本学习笔记一

    一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tm ...

  5. Linux shell command学习笔记(一)

    Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell.在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash). &l ...

  6. linux shell编程学习笔记(二) --- grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  7. linux shell编程学习笔记(一)---通配符,元字符

    linux通配符: 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不 ...

  8. Linux shell command学习笔记(二)

    <cut> 作用:从输入文件或者命令的输出中析取出各种域 用法:cut –c{字符串范围} –d{字段间分割符} –f{字段索引编号} 举例: (1)查看在线用户:who | cut –c ...

  9. Linux Shell编程学习笔记

    打算在学习过程中将每个写过的程序一个个的往上贴; 2015-07-03 1. 鸟叔第三版13.2.1节“利用日期进行文件的创建” 源代码 #!/bin/bashPATH=/bin:/sbin:/usr ...

随机推荐

  1. 【转】联想笔记本进入u盘启动项操作方法详解

    win7之家小编最近可是对联想笔记本进入u盘启动项的方法很有兴趣啊,那么联想进入u盘启动到底要怎么操作呢?其实方法是有的,因为小编就是研究联想进入u盘启动出身的,下面小编就给大家带来史上最详细的联想笔 ...

  2. php 怎么在foreach中循环数组的时候添加元素的属性

    foreach($arr as $key => &$vo){ //注意,由于上面遍历的时候写了地址传值符&, //所以下面可以直接给$vo 赋值;如果不写&符号,下面这样 ...

  3. redis类与用法

    <?phpnamespace app\common\model; class Cache { public $redis = null; public function __construct( ...

  4. fatal error LNK1169: 找到一个或多个多重定义的符号或多个.c/.cpp文件想同时调用定义在.h文件里面的全局变量,防止重定义变量问题。

    为什么.h文件中不能定义全局变量? 原因: 存在多次创建变量.如果头文件中可以定义全局变量,那么每个包含该头文件的文件里都会有该全局变量的定义.因为C语言的include是直接将文件嵌入到includ ...

  5. nodeJS之Cookie和Session(一)

    nodeJS之Cookie和Session(一) 一:Cookie   HTTP是一个无状态协议,客户端每次发出请求时候,下一次请求得不到上一次请求的数据,那么如何将上一次请求和下一次请求的数据关联起 ...

  6. 对 String 字符串的理解

    1.通过构造方法创建的字符串对象和直接赋值方式创建的字符串对象区别? 通过构造方法创建字符串对象是在堆内存. 直接赋值方式创建对象是在方法区的常量池. ==: 基本数据类型,比较的是基本数据类型的值是 ...

  7. SkylineGlobe 支持火狐和谷歌浏览器的可运行示例代码

    示例代码: <html> <head> <title>3dml的Feature对象选中和隐藏</title> <script type=" ...

  8. odoo系统中name_search和name_get用法

    自动带出工序和工序序号,两个条件都能搜索,并且两个都带出来显示在前端: # 输入工序序号会自动带出工序名// def name_search(self, cr,user,name='', args=N ...

  9. 3.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——检查文件开始与结尾

    检查文件两个互补的命令是head 和tail, 它们分别用于查看文件的开始(头部)和结束(尾部).head命令展示了文件的前10行.(Listing 11). ##Listing 11: 查看示例文件 ...

  10. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈

    传送门 题意:给出平面上$N$个点,求满足以下两个条件的矩形:①左下角与右上角各有一个点:②矩形内部没有点.$N \leq 2 \times 10^5$,所有数字大于等于$0$,保证坐标两两不同 最开 ...