脚本文件的学习与编写以及字符截取命令的学习

u盘只读:

1 mount -o rw,remount /dev/sdb  #/dev/sdb为u盘在电脑上的名称,可用df进行查看    
2 umount /dev/sdb
3 df 
4 mount /dev/sdb  /mnt
5 cd /mnt
6 mv    文件     /mnt

shell的了解:

shell也是操作系统中的一个软件,它包含在linux内核的外面,为用户和内核之间的交互提供了一个接口。
系统中的命令用shell去解释shell接受系统回应的输出并显示其到屏幕中

shell脚本:

脚本是一种解释型语言,用shell脚本保存执行动作,用脚本判定命令的执行条件,用脚本来实现动作的批量执行

sh -x ip_show.sh      #查看脚本报错,+表示命令,命令下边是报错信息,没有就代表命令正确
+tail -n 1
+ifconfig
+head -n 2

.sh 为脚本文件

1.脚本的书写规则和执行

cd /mnt
vim ip_show.sh    #编写脚本文件

#!/bin/bash #幻数,使脚本运行时先运行第一行的程序,必须写,且不能写错
ifconfig eth0 | grep “inex ” #脚本要运行的命令,显示主机ip

sh ip_show.sh(/mnt/ip_show.sh)    #执行脚本文件,两种方式
vim /etc/vimrc

这里写图片描述
这里写图片描述
效果:

vim file.sh   #快捷键的效果,编辑脚本,按快捷键即可
vim file1.sh  #脚本里会自动出现

这里写图片描述

2.diff 命令的使用(用来打补丁 )

vim westos
vim westos1 

这里写图片描述

diff westos westos1  #比较两个文件的不同

这里写图片描述

diff -u westos westos1  > westos.path   #比较两个文件的不同,并把不同的地方写入补丁文件中,  .path为补丁文件
cat westos.path    #显示补丁过程

这里写图片描述

yum install patch -y       #下载补丁工具
patch -b westos westos.path   #保存原文件内容
patch westos westos.path     #对原文件进行补丁
cat westos.orig             #把保存的文件内容写入到了此文件中
cat westos

这里写图片描述

补充:比较两个目录的不同

mkdir linux
touch linux/file
mkdir unix
diff -r linux/ unix/  

这里写图片描述

4.cut命令的使用(多用于字符截取)

cut -d                 #指定分隔符
cut -f  1,7|1-7        #指定截取的列,第一列和第七列|一到七列
cut -c  1,4|1-4        #指定截取的字符位置
应用:运行脚本文件,使之只显示自己的ip
cd /mnt
vim ip_show.sh

这里写图片描述

sh ip_show.sh

这里写图片描述

5.&& 与 || 的应用

&&      #表示与
||      #表示或
应用:编辑一个脚本使得,如果可以ping通,就输出 $$1 up,如果不可以ping通,就输出 $1 down,$1表示输入的字符
cd /mnt
vim check_ip.sh

这里写图片描述

测试:
sh check_ip.sh   172.25.254.78
sh check_ip.sh 172.25.254.238

这里写图片描述

6.sort命令和uniq命令的使用(通常两个联合使用)

sort -n   #纯数字排序
sort -r   #倒序
sort -u   #去掉重复数字
sort -o   #输出到指定文件中
sort -t   #指定分隔符
sort -k   #指定要排序的列
uniq -u   #显示唯一的行
uniq -d   #显示重复的行
uniq -c   #每行显示一次并统计重复次数
举例:
vim westos

这里写图片描述

sort -n westos 

这里写图片描述

 sort -r westos 

这里写图片描述

vim westos1

这里写图片描述

sort -n westos1 #如果有两列的话,按照第一列进行排序
sort -t : -k 2  westos1 #以:为分隔符,对第二列进行排序
sort -urn  westos1 #去掉重复数字进行倒序排序
sort -n westos | uniq -c #每行显示一次并统计重复次数并排序
sort -n westos | uniq -d #显示重复的行并进行排序
sort -n westos | uniq -u #显示不重复的行并进行排序

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

应用:给/mnt下的文件排序,并编写脚本文件输出最大的文件
方法1:
ls -Sl /mnt    #排序并显示

这里写图片描述

ls -Sl /mnt/  | grep -v total   #显示且删除显示的第一行

这里写图片描述

ls -Sl /mnt/  | grep -v total | awk -F " " 'NR==1{print $9}'     #输出第九列,即文件名,awk报告生成器

这里写图片描述

方法2:
ls -l /mnt | grep total -v | awk -F " " '//{print $5,$9}' |   sort -nr  #排序并输出第五列(大小)和第九列(文件名)

这里写图片描述

ls -l /mnt | grep total -v | awk -F " " '//{print $5,$9}' | sort -nr |  head -n 1  #在上一个输出的基础上选择输出第一行

这里写图片描述

ls -l /mnt | grep total -v | awk -F " " '//{print $5,$9}' | sort -nr | head -n 1  | cut -d " " -f 2  #剪切文件名输出

这里写图片描述

7.test命令的使用

test命令和 [] 等同
test "$1" == "s2"  等同 [ "$1" == "$2" ]
[ "$1"  = "$2" ]    #判断$1是否等于$2
[ "$1" != "$2" ]    #判断$1是否不等于$2
[ "$1" -eq "$2" ]   #判断$1是否等于$2
[ "$1" -ne "$2" ]   #判断$1是否不等于$2
[ "$1" -le "$2" ]   #判断$1是否小于等于$2
[ "$1" -lt "$2" ]   #判断$1是否小于$2
[ "$1" -ge "$2" ]   #判断$1是否大于等于$2
[ "$1" -gt "$2" ]   #判断$1是大于$2  
[ "$1" -ne "$2" -a "$1" -gt "$2" ]    #判断$1是否不等于且大于$2
[ "$1" -ne "$2" -o "$1" -gt "$2" ]    #判断$1是否不等于或者大于$2  
[ -z "$2" ]         #判断$2是否为空
[ -n "$2" ]         #判断$2是否不为空
实验:
编辑脚本文件,判断输入数字的大小是否小于10
vim num_check.sh    #编写脚本文件,执行命令更方便

这里写图片描述

sh num_check.sh  1
sh num_check.sh  23
sh num_check.sh  

这里写图片描述

[ "file1" -ef "file2" ]     #判断file1是否与file2互为硬链接
[ "file1" -nt "file2" ]     #判断file1与file2哪个出现的晚
[ "file1" -ot "file2" ]     #判断file1与file2哪个出现的早
实验:
touch file
ln /mnt/file /mnt/file1   #建立硬链接
ls -li /mnt               #节点是否相同,即是否互为硬链接
[ "/mnt/file" -ef  "/mnt/file1" ]&& echo yes || echo no  #判断/mnt/file和/mnt/file1互为硬链接
[ "/mnt/file" -ef  "/etc/passwd" ]&& echo yes || echo no  #判断/mnt/file和/etc/passwd互为硬链接

这里写图片描述

[  -e "file2" ]             #判断文件是否存在
[  -f "file2" ]             #判断文件是否为普通文件
[  -L "file2" ]             #判断文件是否为软链接
[  -S "file2" ]             #判断文件是否为套接字
[  -b "file2" ]             #判断文件是否为块设备
[  -d "file2" ]             #判断设备是否为文件
[  -c "file2" ]             #判断是否为字符设备
实验2:编辑一个脚本文件,判断/mnt/file的文件类型
vim file_check.sh

这里写图片描述
这里写图片描述

sh file_check.sh  
sh file_check.sh   file
sh file_check.sh   /dev/vdb
sh file_check.sh   /etc/system-release

这里写图片描述

8.tr(转换) 命令的使用

vim test.sh

这里写图片描述

sh test.sh  hello
sh test.sh  HELLO   #只是大小写的区别,输出结果就不同

这里写图片描述

用tr命令解决这个问题
tr 'a-z' 'A-Z' < test.sh

这里写图片描述
vim test.sh
这里写图片描述
sh test.sh hello
sh test.sh HELLO
这里写图片描述

写一个脚本:当输入一个用户时,当该用户存在,则提示用户已存在,当该用户不存在时,则建立该用户,并设置该用户密码
vim user_create.sh 

这里写图片描述

sh user_create.sh  root redhat
sh user_create.sh  unix 123
id unix

这里写图片描述

su - unix   #用密码123成功登陆代表建立成功

没有更多推荐了,返回首页