一些零碎的基础知识

一、认识Shell脚本

一)相关概念

Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序。

Shell脚本语言是弱类型语言,与其他脚本语言相比的优势是可以处理偏操作系统底层的业务。

查看系统默认Shell:

#方法一:
echo $SHELL
#方法二:
grep root /etc/passwd

二)开发规范

1)脚本第一行指定解释器

#!/bin/bash 

2)开头添加版本、版权等信息

3)脚本中尽量不要用中文

4)扩展名为.sh

5)脚本应放在固定路径下

三)执行方法

1)bash script-name或者sh script-name: 脚本没有x权限或者脚本开头没有指定解释器时,可用此方法,此方法也是常见的方法。

2)path/script-name:当前路径下执行脚本,脚本要有x权限。

3)source script-name 或者 . script-name:在当前shell中直接运行脚本(其他方式会开启新的shell),因此可将该脚本中的变量或者函数传递到当前shell中。

四)重定向和管道

1)输出重定向

将命令的输出发送到一个文件中(每次都会新创建文件):

ls -al > list.txt

如果不想每次都新建文件,可以追加:

date >> list.txt

2)输入重定向

将文件内容发送给命令,当做相关参数:

ls -al < in.txt

内联输入重定向:

无需文件中的数据,将标记中的数据重定向给命令,其语法格式为:

command << MARKER
data
MARKER

3)管道

使用管道将一个命令的输出当做另一个命令的输入,其语法格式为:

command1 | command2

五)脚本调试

1)用bash命令参数调试

sh [-nvx] script.sh

-n:不执行脚本,仅检查脚本语法,并给出错误提示

-v:执行脚本前,先将脚本内容输出到屏幕上,并给出错误提示

-x:将脚本内容及输出显示到屏幕上,逐行追踪脚本执行

2)使用set命令进行调试

与bash命令相比set命令可以控制追踪范围

set -n:读命令但不执行

set -v:显示读取的所有行

set -x:显示所有的命令及其参数

# !/bin/bash
echo
set -x #开启脚本调试
echo
echo
echo
set +x #关闭脚本调试
exit

运行结果:

+ echo 

+ echo 

+ echo 

+ set +x

六)其他

执行多个命令:

放在同一行用分号隔开

ls ; date ; who

命令替换:

从命令输出中提取信息,并将其赋值给变量。

方法一:

d=$(date)

方法二:

d=`date`

Shell脚本笔记(一)一些零碎的基础知识的更多相关文章

  1. php面试笔记(5)-php基础知识-自定义函数及内部函数考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...

  2. 《Programming Hive》读书笔记(两)Hive基础知识

    <Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...

  3. tensorflow笔记(一)之基础知识

    tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...

  4. php面试笔记(3)-php基础知识-运算符

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而运算符相关的考 ...

  5. shell脚本笔记(原创不断记录)

    今天开始自己的shell脚本练习,刚好公司有太服务器,要时间对数据的cp是按月的: 考虑:首先寻找规律,发现都放置在/opt/www/aaa/  里面有很多的2级和3级目录和文件,但我追踪要备份的是年 ...

  6. Shell脚本笔记

      如何查询文件里的某个字符串? grep “字符串” 文件 例:grep "abc" tmp.txt   如何将查询出来的内容赋给变量? str=$(grep "abc ...

  7. Shell脚本笔记(七)控制Shell脚本

    控制Shell脚本 一.处理信号 1) SIGHUP本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. ...

  8. Shell脚本笔记(二)Shell变量

    Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...

  9. 写shell脚本需要注意哪些地方----零基础必看

    shell脚本是完全靠自学的,每一步需要注意的问题都是我自己亲自实践出来的,对于大神可能看来是小儿科,但是对于新手,是必须注意的 一.首先执行 echo $SHELL查看本机的解释器, 二.开始写脚本 ...

随机推荐

  1. 如何让谷歌浏览器支持跨域访问(AJAX) AJAX调试跨域接口

    以谷歌最新版本为例(2018) 1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData 2.在属性页面中的目标输入框里加上   --disable-web-security -- ...

  2. 饮冰三年-人工智能-linux-05 Linux进程

    1:top 命令,查看cpu使用情况.(由于top是实时刷新,占用内存比较大) P:按照cpu使用率降序排列 M:按照内存使用率降序排列 2:free 命令,查看内存使用情况 free -m 以M为单 ...

  3. 如何查看响应端口号被个程序占用(Windows)

        我们以80端口为例,在dos输入命令“ netstat  -aon|findstr  "80" 后按回车显示如下,可以看到占用80端口对应的程序的PID号为1752     ...

  4. 让simplejson支持datetime类型的序列化

    simplejson是Python的一个json包,但是觉得有点不爽,就是不能序列化datetime,稍作修改就可以了: 原文:http://blog.csdn.net/hong201/article ...

  5. k8s 1.12.6版的kubeadm默认配置文件

    这个对于提高安装配置的便捷性,相当有帮助. 命令如下: kubeadm config print-default 输出如下: apiEndpoint: advertiseAddress: 1.2.3. ...

  6. C# 会话,进程,线程,线程安全

    会话->进程->线程 b/s网站中,每个用户的访问为一次会话,会话中包含CPU为用户在内存中开辟空间存储的会话信息, 如Session,进程,会话拥有一个进程,同一进程下可以拥有多个线程. ...

  7. Multi label 多标签分类问题(Pytorch,TensorFlow,Caffe)

    适用场景:一个输入对应多个label,或输入类别间不互斥 调用函数: 1. Pytorch使用torch.nn.BCEloss 2. Tensorflow使用tf.losses.sigmoid_cro ...

  8. la4394

    题解: 首先区间dp是比较好想到的 然后我感觉接下来就是乱搞... 我们会发现接下来的操作 无非就是 用一种颜色去覆盖这整个区间 然后在做 于是我用了比较暴力的做法,f[i][j][k]表示i-j这段 ...

  9. python的paramiko模块

        paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, ...

  10. Python连接mysql出错,_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")