Shell编程常用命令

shell:简单、易用、高效,是一个内置的脚本,不需下载

什么是脚本:一条一条命令的堆积

shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。

在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。 所谓的符号链接就是软连接。

如果你希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量。

书写shell脚本

vim 自定义(做到见名知意).sh

#!/bin/bash  指定解释器类型,如何查看解释器类型,echo $SHELL

命令

命令

执行shell脚本的三种方法

第一种:正规方式:添加可执行权,我们可以先查看我们编写的shell脚本,它是没有执行权的,那么我们要赋予它执行权

chmod +x 脚本

然后执行shell脚本

./ 脚本 

如果不加./直接输入脚本可不可以执行呢,是不可以的,因为root的路径没有写入$PATH这个里面。

只要执行

vim /etc/profile.d/自定义名字.sh

export PATH=/root:$PATH

而后同步

source /etc/profile.d/自定义.sh

再去直接执行脚本的名字即可成功

第二种

直接用bash解释器去执行shell脚本。当前终端会新生成一个子 bash 去执行脚本。

第三种

source 脚本

source filename 与 bash filename 及./filename执行脚本的区别

当shell脚本具有可执行权限时,用bash filename与./filename执行脚本是没有区别得。

./filename

是因为当前目录没有在PATH中,所以”.”是用来表示当前目录的。

source filename

这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

bash filename

重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell。

什么是子shell:

利用pstree查看。

第一个bash就是父,第二个就是子,第三个也是子,第二对于第三个而言,是第三个的父。

shell编程常用命令

grep:过滤 结合 wc  -c  -w  -l  

表示不区分大小写,将你填加的选项的大小写都筛选出来

-i 

比如

echo “this is Is Sm”| grep –i "i"

它将i的大写小写都用红颜色标注了出来

你n后头跟什么筛选的字符,那么含有此字符的所在行会被晒选出来,并显示行号。

-n 

比如:我想查看/etc/passwd 这个文件含有数字7的是哪几行

cat /etc/passwd | grep -n 7 

只打印匹配的内容

-o 

比如:我想查看/etc/passwd 这个文件含有的数字7。

cat /etc/passwd | grep –o 7 

只打印每个文件匹配的行数

 -c 

比如:我想查看/etc/passwd 这个文件含有的数字7的有几行。

cat /etc/passwd | grep –c 7 

打印匹配的前几行

-B(before)

打印匹配的后几行

-A(after)

打印匹配的前后几行

-C

打印不匹配的行

-v 

打印空白行

^$ 空格

cut:cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

定点分割截取

-c 

比如说

echo "this is ken"| cut -c 4 

那么显示的结果是s,意思是你使用-c后,后面数字跟几,它就把这段话中的第几个字符给你截取输出到屏幕上来。也可以指定几到几,比如第一个到第四个。那就是this。

两个结合使用,d为选参照物(选定的参照物),f为定点(以参照物开始的第几列),两者结合截取输出

-d  -f 

比如

echo "root/ok/pl/cd/ed"| cut -d "/" -f2 

意思是说,参照物选择的是/,2是以第一个/开始的第二列

$RANDOM是生成随机数

结合md5sum加密

$RANDOM | md5sum | cut 1-6

sort:排序

可直接用来排序,它是从小到大排序。按照数字的第一个的大小排序。

sort

根据数值大小进行排序

-n 

从数值的最大到最小排序

-r 

uniq:去除重复的行(相邻且相同,认定为重复)

在行首用数字表示该行出现了多少次

-c

仅仅显示那些没有出现重复过的行

-u

tr:转换或转出文件中的字符

指定字符,并删除

-d 
原文地址:https://www.cnblogs.com/shuaiyin/p/10916865.html