shell编程

shell学习记录----初识sed和gawk

十年热恋 提交于 2020-01-17 06:51:18
Linux命令行与shell脚本编程大全中关于sed和gawk的介绍合在一起,而且结构有点乱。 不像之前的命令写的很清楚。所以这次我需要写下来整理一下。 一、sed部分 1.1 sed命令格式如下: sed option script file -e script:在处理输入时,将script中指定的命令添加到已有的命令中 -f file:在处理输入时,将file中指定的命令添加到已有的命令中 -n: 不产生命令输出,使用print命令来完成输出 -e: 执行多个命令 1.2 script里面又有一些命令: s/pattern/replacement/flags 替换命令 ,flags包括:数字(行号),g(替换所有),p(打印原先内容),w file(写进文件) 例子: sed 's/test/trial/' data4.txt sed 's/test/trial/2' data4.txt sed 's/test/trial/g' data4.txt sed -n 's/test/trial/p' data4.txt sed 's/test/trial/w test.txt' data5.txt 然后,s指令,又可以指定地址,格式如下: [address]command 或者 address {   command1   command2   command3 } 或者直接用

shell编程

心已入冬 提交于 2020-01-17 01:07:22
shell编程 shell是命令解释器,也可以编程,包含J过程诺言的诸多特性。常用的shell见下表 ash, 由Kenneth Almquist编写,是linux中占用资源最少的一种shell, 它只包含24个内部命令,因而使用起来很不方便 bash, 是Iinux的默认shell, 由Brian F ox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令- 共有40个,具有以下特点 a)可以使用类似dos下面的doskey功能, 用方向键查阅和快速输入并修改命令 b)自动通过查找匹配的方式给出以某字符串开头的命令 c)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助 ksh, 由Eric Gisim编写,是Korn Shell的缩写。共有42条内部命令。最大的优点是几乎和商业发行版的ksh完全兼容 csh,由以William Joy为代表的47位作者编写,共有52个内部命令。该shell其实指向/bin/tcsh这 个shel,也就是说:csh其实就是tcsh zch, 由Pua1 Falstad完成, 共有84个内部命令。如果只是一 般用途,没必要安装这种shell shell编程类似dos中的批处理文件,又叫shell script, shell程序 输入输出重定向 在Linux中

Linux下source命令详解

北慕城南 提交于 2020-01-15 18:41:05
source命令用法 source FileName source命令作用 在当前bash环境下读取并执行FileName中的命令。 *注:该命令通常用命令“.”来替代。 使用范例: source filename . filename #(中间有空格) source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。 同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 等等。 例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。比如您在一个脚本里 export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK ,发现没有值,假如您用source来执行 ,然后再echo,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是source不同他就是在本shell中执行的,所以能够看到结果。 source命令(从 C

Shell——你只需要了解这么多

丶灬走出姿态 提交于 2020-01-15 09:19:33
一.Shell简介 Shell是一个用C语言编写的程序,通过Shell用户可以访问操作系统内核服务,类似于DOS下的command和后来的cmd.exe。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量、参数、函数、流程控制等等。它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。 二.两类程序设计语言 我经常说道shell脚本,其实是因为Shell是一种脚本语言,也就是解释性语言。程序设计语言可以分为两类:编译型语言和解释型语言。 语言 区别 编译型语言 需要预先将我们写好的源代码转换成目标代码,这个过程被称作“编译”。运行程序时,直接读取目标代码。由于编译后的目标代码非常接近计算机底层,因此执行效率很高,这是编译型语言的优点 解释型语言 也叫做脚本语言。执行这类程序时,解释器需要读取我们编写的源代码,并将其转换成目标代码,再由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降 三.Shell脚本解释器 Linux的Shell脚本解释器种类众多,一个系统可以存在多个shell脚本解释器,可以通过cat /etc

初识Spark程序

狂风中的少年 提交于 2020-01-15 00:27:47
执行第一个spark程序 普通模式提交任务 : bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hdp-node-01:7077 \ --executor-memory 1G \ --total-executor-cores 2 \ examples/jars/spark-examples_2.11-2.0.2.jar \ 10 该算法是利用蒙特·卡罗算法求圆周率PI,通过计算机模拟大量的随机数,最终会计算出比较精确的π。 高可用模式提交任务 : 在高可用模式下,因为涉及到多个Master,所以对于应用程序的提交就有了一点变化,因为应用程序需要知道当前的Master的IP地址和端口。这种HA方案处理这种情况很简单,只需要在SparkContext指向一个Master列表就可以了, 如 spark://host1:port1,host2:port2,host3:port3 ,应用程序会轮询列表,找到活着的Master。 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hdp-node-01:7077,hdp-node-02:7077,hdp-node-03

Spark交互式工具spark-shell

Deadly 提交于 2020-01-14 21:41:16
REPL Read-Eval-Print-Loop,即交互式shell,以交互式方式来编程 Spark REPL $SPARK_HOME/bin/spark-shell(scala) $SPARK_HOME/bin/pyspark(python) 其他 Spark shell Spark的scala REPL,支持使用scala语言来进行Spark的交互式编程 支持Spark的local,standalone,yarn client模式 启动./bin/spark-shell 内置实例化一个SparkContex对象,可以通过sc来调用 内置实例化一个SQLContext对象,可以使用sqlContext来调用查看帮助sc.\t spark-shell运行在YARN上 登陆安装Spark那台机器 .bin/spark-shell --master yarn (注意,这样也是yarn client模式) spark-shell运行在YARN上(这是Spark on YARN模式) (包含YARN client和YARN cluster)(作为补充) 登陆安装Spark那台机器 bin/spark-shell --master yarn-client 或者 bin/spark-shell --master yarn-cluster   包括可以加上其他的,比如控制内存啊等。这很简单

shell学习-常用语句

随声附和 提交于 2020-01-14 16:14:03
为什么使用shell 可以快速、简单的完成编程,实现自己的想法。Shell非常适合编写小的工具,因为小工具更强调的是易于配置、维护、移植等,而不是执行效率。 当自己的想法确实有必要进行优化,有必要让它更容易修改以及修正设计目的时,可以将shell编写的工具重新用C、C++/python等语言重新实现。 常见的shell有bash/csh/sh等 管道和重定向 ls -al > lsoutput.txt #将ls命令输出的内容重定向到txt文件 在>前加数字 0 1 2 分别代表输入、标准输出、错误输出 参数2可以将错误输出到文件 而标准输出的内容将显示在屏幕上 >> #将输出添加到文件 丢弃不需要保存的输出的方法 Kill -l 1234 >/dev/null 2>&1 #将标准输出与错误输出都丢弃到系统垃圾箱 | 管道 用来连接进程 通过管道连接的进程可以同时运行,并自动协调数据流 1 Ps > psout.txt #输出ps内容到psout.txt 2 Sort psout.txt > psout.out #对psout.txt内容进行排序 输出到psout.out中 管道写法 1 Ps | sort | pssort.out #将ps内容排序后输出 自动搜索文件夹下 所有文件中包含的 某字符串 More $(grep -l POSIX *) #在当前文件夹下的文件中

shell练习题

雨燕双飞 提交于 2020-01-14 00:19:40
计算器 calc.sh #!/bin/bash echo " $* = $(( $ * )) " 比较整数大小 #!/bin/bash read -a num -p "请输入两个整数: " [ ${#num[*]} -eq 2 ] || { echo "参数不是两个" exit 5 } [ [ " ${num[0]} " = ~ ^ [ 0-9 ] +$ ] ] || { echo " ${num[0]} 不是数字" exit 1 } [ [ " ${num[1]} " = ~ ^ [ 0-9 ] +$ ] ] || { echo " ${num[1]} 不是数字" exit 2 } if [ ${num[0]} -gt ${num[1]} ] ; then echo " ${num[0]} > ${num[1]} " elif [ ${num[0]} -eq ${num[1]} ] ; then echo " ${num[0]} = ${num[1]} " else echo " ${num[0]} < ${num[1]} " fi 判断输入是整数 function isnum ( ) { NUM = $1 if [ [ $NUM = ~ ^ [ 0-9 ] +$ ] ] ; then echo $NUM is num else echo $NUM is not num fi }

shell编程tips

爱⌒轻易说出口 提交于 2020-01-13 14:15:04
https://www.linuxprobe.com/shell-script-variable.html 系统变量 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2 $? 上个命令的退出状态,或函数的返回值。成功返回0,失败返回1 $# 传递给脚本或函数的参数个数 $* 所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2 $0 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径 $@ 被双引号(” “)包含时,与 $* 稍有不同。若一个脚本接收到两个参数,$@等价于$1$2 $$ 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID $! 前一个后台命令的进程号 文件或目录判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f file 若文件存在且是一个规则文件,则为真 -g file 若文件存在且设置了SGID位的值,则为真 -h file 若文件是软链接,则为真 -k file 若文件存在且设置了”sticky”位的值 -L file 若文件为符号链接,则为真 -p file 若文件存在且为一已命名管道,则为真 -r

Linux基本命令学习(一)

谁说我不能喝 提交于 2020-01-13 07:56:14
<1>login 1.作用:login的作用是 登录系统 ,它的使用权限是所有用户。 2.格式:login [name][-p ][-h 主机名称] 3.主要参数:       -p:通知login保持现在的环境参数。       -h:用来向远程登录的之间传输用户名。 如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: ###################################### Manddrake Linux release 9.1(Bamboo) for i586 # 第一行是Linux发行版本号 renrel 2.4.21-0.13mdk on i686 / tty1 # 第二行是内核版本号和登录的虚拟控制台 localhost login:root password: ###################################### 我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。 出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也不移动。 登录后会看到下面这个界面(以超级用户为例): [root@localhost root]# last login:Tue ,Nov 18 10:00:55 on vc/1 上面显示的是登录星期、月、日