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成功登陆代表建立成功