linux --> shell --> script基础2

linux下的shell命令学习笔记010

#! /bin/bash

# Program:

#本脚本针对test的一些常用命令进行测试

#1.数值比较

#(单词:less than小于; greater than大于; equal相等)

# n1 -eq n2 # 检查n1n2是否相等

# n1 -ne n2 # 检查n1n2是否不相等

# n1 -ge n2 # 检查n1是否大于或等于n2

# n1 -le n2 # 检查n1是否小于或等于n2

# n1 -gt n2 # 检查n1是否大于n2

# n1 -lt n2 # 检查n1是否小于n2

#

#2.字符串比较

# str1 == str2 # 检查str1是否和str2相等

# str1 != str2 # 检查str1是否和str2不相等

# str1 < str2 # 检查str1是否小于str2

# str1 > str2 # 检查str1是否大于str2

# -n  str1 # 检查str1长度是否非0

# -z  str1 # 检查str1长度是否为0

#

#3.文件比较

#(并没有列举完毕,仅仅列举了常用的)

# -e file #判断file是否存在

# -d file #判断file是否存在并且是一个目录

# -f file #判断file是否存在并且是一个文件

#

# -r file #判断file是否存在并且可读

# -w file #判断file是否存在并且可写

# -x file #判断file是否存在并且可执行

# -s file #判断file是否存在并且非空

#

# -O file #判断file是否存在并属当前用户所有(Owner)

# -G file #判断file是否存在并且默认组和当前用户相同(Group)

#

# file1 -nt file2 #判断file1是否比file2(new)

# file1 -ot file2 #判断file1是否比file2(old)

#

#4.其他

#! #例如 test ! -e file file不存在时,该条件成立

# History:

# 2017/12/30 Orig Fisrt Release

 

read -t 3 -p "Please Write the Number: " num

 

# err1: 若超时,则退出

if [ $? != 0 ];then

echo "Error 1:输入超时!" | grep --color=auto 'Error 1:'

exit 1

fi

 

# err2: 若输入为空,则退出

if [ -z "$num" ];then

echo "Error 2:没有输入数据" | grep --color=auto 'Error 2:'

 

exit 2

fi

 

# err3: 若输入的内容不正确,则退出

if [ $(echo "$num" | grep -v '^[0-9][0-9]*\.\?[0-9]*$') ];then 

echo "Error 3:输入的数据不正确" | grep --color=auto 'Error 3:'

exit 3

fi

 

# succeed

# 数值计算相关笔记:(此处以命令行为例子,脚本该怎么写,自己想去吧)

# 1. expr 3 + 2  #注意:A.整数计算 B.相关参数和运算符号需要空格隔开

#expr $var1 + var2

# 2.$[$var1 + $var2] #注意:整数计算

# 3.echo $(($var1 + $var2)) #注意:整数计算

# 4.bc计算器#注意:除了位运算不支持以外,其他运算基本都支持(四则,幂,浮点等)

 

# 举例:

calc="$num / 5"

# reslut=$(expr $calc)# 1.在脚本中测试,一直不成功;不懂为什么,因此暂时抛弃该方法

#-------------------------------

# result=$(($calc))# 2.整数计算

#-------------------------------

# result=$[$calc]# 3.2

#-------------------------------

result=$(echo "scale=2; $calc" | bc) # 4.bc哈哈,很赞,好用!

#-------------------------------

#result=$(bc << eof

#scale=2

#$calc

#eof

#)#5.4,并且在除法中,可以用scale设置精度

 

echo "The \"$calc\"'s result is : $result" | grep -E --color=auto "($result|$calc)"

# ---------- END -----------

exit 0

 

 

 

 

#! /bin/bash

# Program:

#主要在上一个脚本基础上添加了一些重定向的学习内容

# History:

# 2017/12/30 Orig Fisrt Release

 

# ---------------------------------------

# 捕获脚本退出 信号

trap "echo The script $0 quit" EXIT

 

 

# ------------------------------------------

# 重定向相关学习

# echo "Error 1:..." 1>&2 #stdout的内容重点向到stderr

# echo "Error 2:..." 1> err.log#stdout的内容重定向到文件err.log

#

# 此处介绍一种,脚本中全部重定向的方式

# exec 1> err.log#将本行以下的所有stdout都重定向到err.log

#exec 3>&1#若后续想要恢复,则临时重定向输出,到则临时重定向

#exec 1>err.log

 

 

# ----------------------------------------

# 注意:脚本中的alias别名命令是无效的

# 需要添加如下的命令,使其在脚本中也同样有效

shopt -s expand_aliases

alias grep='grep --color=always' #color修改为always,是为了让重定向之后的内容也有颜色

 

# 若想要直接使用~/.bashrc中的alias配置

# 也可以通过直接通过source该脚本来测试,不过我试过,出现过一些很奇怪的现象。

# 暂不理会,先学会shopt -s expand_aliases这种方式。我觉得方便而且修改了什么一看脚本就明白了

 

# ----------------------------------------

# read 学习

# -t等待超时时间

#-s隐藏输入

#-p显示输入的提示

read -t 3 -p "Please Write the Number: " num

# err1: 若超时,则退出 ; 该命令必须紧接着read命令,因为用到了$?

if [ $? != 0 ];then

echo "Error 1:输入超时!" | grep 'Error 1:'

exit 1

fi

 

# err2: 若输入为空,则退出

if [ -z "$num" ];then

echo "Error 2:没有输入数据" | grep 'Error 2:'

exit 2

fi

 

# err3: 若输入的内容不正确,则退出

if [ $(echo "$num" | grep -v '^[0-9][0-9]*\.\?[0-9]*$') ];then 

echo "Error 3:输入的数据不正确" | grep 'Error 3:'

exit 3

fi

 

# succeed

# 数值计算相关笔记:(此处以命令行为例子,脚本该怎么写,自己想去吧)

# 1. expr 3 + 2  #注意:A.整数计算 B.相关参数和运算符号需要空格隔开

#expr $var1 + var2

# 2.$[$var1 + $var2] #注意:整数计算

# 3.echo $(($var1 + $var2)) #注意:整数计算

# 4.bc计算器#注意:除了位运算不支持以外,其他运算基本都支持(四则,幂,浮点等)

 

# 举例:

calc="$num / 5"

# reslut=$(expr $calc)# 1.在脚本中测试,一直不成功;不懂为什么,因此暂时抛弃该方法

#-------------------------------

# result=$(($calc))# 2.整数计算

#-------------------------------

# result=$[$calc]# 3.2

#-------------------------------

result=$(echo "scale=2; $calc" | bc) # 4.bc哈哈,很赞,好用!

#-------------------------------

#result=$(bc << eof

#scale=2

#$calc

#eof

#)#5.4,并且在除法中,可以用scale设置精度

 

 

# -----------------------------------------------

# 将上面临时保存的

# exec 1>&3

alias grep='grep -E --color=auto '

echo "The \"$calc\"'s result is : $result" | grep  "($result|$calc)"

 

 

# ---------- END -----------

exit 0

 

 

 

 

 

 

#! /bin/bash

# Program:

#本函数学习修改字段分隔符

#用来将文件中的标准的带有分隔的内容处理一下

# History:

# 2017/12/31 Orig Fisrt Release

 

# ---------------------------------------

# 捕获脚本退出 信号

trap 'echo the script $0 Quit! | grep --color=auto "$0" ' EXIT

 

# 1.修改字段分隔符

# IFS

# --------------------

# 这里面是a.txt的内容

# aston,2017 .12.20

# root,2017 .12.25

# alex,2017 .12.15

# arond,2017 .12.15

#

# 我期待

# This is aston

# This is 2017.12.20

# This is root

# ...

# -------------------

IFS_OLD=$IFS

# IFS=$,'\n'# 失败01,现象像是把逗号和n当成了分隔符

# IFS=$,"\n"# 失败02,现象同上

# IFS=,$"\n"# 失败03,现象同上

# IFS=$"\n",# 失败04,现象同上

# IFS=,$'\n'# 成功

IFS=$'\n', # 成功

# IFS=$' \n',# 把空格也分隔了

# 通过以上测试:

# 将给IFS赋值回车,必须使用$'\n'的形式 ------ 注意!!!

 

# 2.需要使用新的IFS的命令

file=a.txt

# 测试分隔符的作用

for msg in $(cat $file)

do

printf "This is $msg!\n" | grep --color=auto "$msg"

done

 

# 3.恢复IFS

# IFS=IFS_OLD

 

# 4.其他命令...

 

# 列举并判断当前目录下的文件类型

for file in ./*

do 

if [ -d "$file" ];then

echo "The name is $file is directory" | grep --color=auto "$file" 

elif [ -f "$file" ];then

echo "The name is $file is regular file" | grep --color=auto "$file" 

else

echo "Judge file Error!" | grep --color=auto '.*'

fi

done

 

# ---------- END -----------

exit 0


#/bin/bash

#

# 笔记:

# grep 上色用法,(注:虽然没什么用,但是看着好看,哈哈)

# 例如你要查看两个文件对比之后的效果

diff sh7.sh sh8.sh | grep -n --color=always "^[+-<>]*" | less -r

 

# "^[+-<>]*"

# 注意正则表达式中*的好处,这样可以显示所有内容

# 但是带有+-<>开头的将被上色

# 若直接使用"^[+-<>]"则把符合该正则表达式的内容筛选出来了,并不会显示全部内容

# 这样就达不到你上色的目的了,哈哈哈哈哈

 

# less直接使用不能带有颜色,more可以

# less 需要加上 -r

 

 

 

# -----------------------------------

# vim 学习记录

# -----------------------------------

 

# 多窗口记录

#

# 0.:new 新建一个窗口

# 1.:sp file2 在现有的窗口基础上分割出一个新的窗口,用来显示新文件

#若直接使用:sp 则也分出一个窗口,但仍然显示当前已经打开的文件的内容

# 2.Ctrl+w,r/R 调整当前窗口的位置,焦点不变(R是逆向的) ----(焦点:指光标所在文件)

# 3.Ctrl+w,x   和上一个焦点的窗口互换位置(注意和Ctrl+w,r的区别)

# 4.Ctrl+w,w   切换焦点位置(在所有窗口中循环)

# 5.Ctrl+w,j/k 切换焦点到下/上窗口---当然后面接上下箭头也可以

# 6.Ctrl+w,h/l 切换焦点到左/右窗口---...

# 7.Ctrl+w,H/J/K/L 水平/垂直分割的切换,同时确定当前窗口所在的位置

 

 

# 在当前文件中追加另一个文件的内容

# :r file2

 

 

#! /bin/bash

# Note:

# 记录tar打包,和gzip等压缩/解压缩命令

 

# ------------------------------------------

# 常用的2()压缩命令

# ------------------------------------------

# gzip #压缩后缀.gz

# -d #解压缩

# -v #显示压缩比等信息

 

# bzip2 #压缩后缀.bz2

# -d #解压缩

# -z #压缩

# -k #压缩的同时会保留原文件

# -v #显示压缩比

 

 

# ------------------------------------------

# linux 上经典的打包命令tar

# ------------------------------------------

# tar

# -c #新建打包文件

# -v #()压缩过程中,将正在处理的文件名称显示出来

#

# -t #查看打包文件中有哪些文件名

#

# -j #通过bzip2()压缩,建议后缀:*.tar.bz2

# -z #通过gzip()压缩,建议后缀:*.tar.gz

#

# -f filename #filename是被处理的文件名称

# -C directory #(应用在解压缩时)设置目标路径

# -x #解打包或解压缩功能

#注:-c-t-x不可同时出现在同一个tar命令中

#

# -p #保留备份数据原本的权限和属性(常用于备份-c 重要的配置文件)

# -P #保留绝对路径(允许备份路径含有根目录存在)

 

# 常用命令:

# 1.压缩:

#tar -jcv -f newfile.tar.bz2 file/directory

# 2.解压缩

#tar -jxv -f file.tar.bz2 (-C directory)

# 3.查询

#tar -jtv -f file.tar.bz2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值