在日常的工作和生活中,文件传输无处不在。无论是下载、上传、备份、同步,都需要频繁地进行文件的操作。而对于Linux系统的用户来说,sh脚本的使用是必不可少的。通过编写简单的sh脚本,我们可以轻松取得需要的文件,大大提高了操作效率。本文将简要介绍如何使用sh脚本实现文件传输,让你的工作更加快捷高效!
创新互联建站专注于梅河口企业网站建设,自适应网站建设,商城建设。梅河口网站建设公司,为梅河口等地区提供建站服务。全流程定制网站,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
一、sh脚本的基础知识
sh脚本是一个文本文件,里面包含了一些Linux命令,可以用来自动化执行任务。因此,sh脚本是一种十分便捷的执行命令的方式。下面是一些sh脚本的基础命令:
1. #!/bin/bash:这一行是脚本声明你正在使用的Shell类型。可以使用/bin/bash、/bin/csh、/bin/ksh等等。在这里我们使用/bin/bash。
2. # 注释:在sh脚本中可以使用注释,用#作为开头。注释在脚本中是不会执行的。
3. 变量:在sh脚本中可以定义变量,可以使用变量表示文件名、目录名等。定义变量的语法如下:
“`
variable_name=value
“`
例如:
“`
FILE_NAME=test.txt
“`
4. echo:echo命令用来输出信息。例如:
“`
echo “Hello, Linux!”
“`
输出结果为: Hello, Linux!
5. 文件操作命令:Linux中有很多文件操作命令,这里列举一些常用的文件操作命令:
* cp:复制文件或目录
* mv:移动文件或目录
* rm:删除文件
* mkdir:创建目录
* chmod:修改文件权限
6. if语句:if语句用于排查表达式的结果。如果表达式结果为真,则执行if语句中的命令;否则跳过if语句。if语句的语法如下:
“`
if command
then
command
fi
“`
例如:
“`
if [ -f test.txt ]
then
echo “文件已经存在”
else
echo “文件不存在”
fi
“`
二、使用sh脚本实现文件传输
1. 使用scp命令传输文件
在Linux系统中,使用scp命令(Secure Copy)可以在不同主机之间传输文件,它是一种加密的远程传输方式,可以保证传输过程的安全。下面是scp命令的语法:
“`
scp [选项] 文件名 用户名@IP地址:目标路径
“`
例如,将本地文件test.txt传输到IP地址为192.168.1.1的主机上的/home/user目录,可以使用如下命令:
“`
scp test.txt user@192.168.1.1:/home/user/
“`
也可以将主机上的文件传输到本地,只需将命令中的源路径和目标路径调换即可。例如,将IP地址为192.168.1.1的主机上的/home/user/test.txt文件传输到本地的/tmp目录下,可以使用如下命令:
“`
scp user@192.168.1.1:/home/user/test.txt /tmp/
“`
对于频繁使用的传输任务,我们可以将其封装成一个sh脚本以提高操作效率。例如要将一个名为test.txt的文件上传到IP为192.168.1.1的主机上,我们可以编写如下脚本:
“`
#!/bin/bash
FILE=test.txt
HOST=user@192.168.1.1
DIR=/home/user/
scp $FILE $HOST:$DIR
“`
这样,当我们运行脚本时,test.txt文件就会被上传到192.168.1.1主机上的/home/user目录下。在脚本中定义文件名、主机地址和目标路径,可以有效地减少重复操作。
2. 使用rsync命令同步文件
与scp命令不同,rsync命令(Remote Sync)同步文件时,会比较源文件和目标文件的差异,只传输更改的部分,从而提高传输效率。rsync命令的语法如下:
“`
rsync [选项] 源路径 目标路径
“`
例如,将本地目录/tmp下的所有文件同步到IP地址为192.168.1.1的主机的/home/user/目录下,可以使用如下命令:
“`
rsync -avz /tmp/ user@192.168.1.1:/home/user/
“`
其中,-a表示同步所有文件,-v表示打印传输详情,-z表示压缩传输。
同样地,我们也可以将rsync命令封装成一个sh脚本。例如,一个每天将两个目录同步的脚本可以写成:
“`
#!/bin/bash
DIR1=/home/user1/
DIR2=/home/user2/
rsync -avz $DIR1 $DIR2
rsync -avz $DIR2 $DIR1
“`
将上述代码保存为sync.sh,每天运行一次即可实现两个目录的同步。
三、
通过本文的介绍,我们了解了sh脚本的基本知识,以及如何使用sh脚本轻松地实现文件传输任务。通过将复杂的传输任务封装成简单的脚本,我们可以让自己的工作变得更加快捷高效。当然,sh脚本也有其自身的缺点,例如语法比较严格、调试困难等。但sh脚本还是一个十分便捷的工具,在Linux系统的使用中占有十分重要的地位。
相关问题拓展阅读:
之一个没用过,貌似是采集摄像头的东东;
第二个是编译/etc目录;
2>/dev/null你理解的正确;
你上面这两行应该是某个程序的信做消息采集配置桥胡敬敏慎。
TRISTREAM TI2A AEWB这几个是传给脚本的参数亏碧,你用cat查看你下脚本文件,看看是销洞举不是有脚本里面包含$1、$2等,这就是用来接收颤丛参数的。
最后一个符号&表示后台执行。
//ftpput.sh
view plain copy
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客改拦消户端向ftp服务器上传一个文件
#Version:V0.
#Author:Sunrier
#Date:
#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if
then
echo “Usage $0 ”
exit 1
fi
#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME获取本地文件全路径名
FULLNAME=$1
#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2
#basename返回一个路径中的文件名部分
#如FULLNAME=”/home/Sunrier/Proj/log/test.log”;
#当local_filename=`basename $FULLNAME`
#最终local_filename=”test.log”
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP ”
exit 1
fi
#IP表示ftp的服务器ip地址
#IP=127.0.0.1
IP=192.168.6.1
#FULLNAME获取本地文件全路径名
FULLNAME=$1
#DESTDIR获取衡局需要上传的ftp远程目录路径
DESTDIR=$2
#basename返回一个核知路径中的文件名部分
#如FULLNAME=”/home/Sunrier/Proj/log/test.log”;
#当local_filename=`basename $FULLNAME`
#最终local_filename=”test.log”
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename
#-i表示在多个文件传输期间关闭交互提示
#-n表示禁止自动登录到初始连接
# ”
exit 1
fi
#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME获取从ftp服务器上下载的文件全路径名
FULLNAME=$1
#DESTDIR获取从ftp服务器上下载的文件所存放的本地计算机的目录路径
DESTDIR=$2
#remote_filename获取从ftp服务器上下载的文件名
remote_filename=`basename $FULLNAME`
#DESTFILE表示下载文件所存放的本地路径,以及本地保存后的文件名
DESTFILE=$DESTDIR/$remote_filename
#ftp -i -n $IP ”
exit 1
fi
#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME获取本地文件全路径名
FULLNAME=$1
#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2
#dirname返回路径中的目录部分
#DESTDIR=”/home/Sunrier/Proj/log/test.log”;
#当PREDESTDIR=`dirname $DESTDIR`
#最终PREDESTDIR=”/home/Sunrier/Proj/log”
PREDESTDIR=`dirname $DESTDIR`
SUFFIXDESTDIR=`basename $DESTDIR`
LOCALDIR=`dirname $FULLNAME`
#basename返回一个路径中的文件名部分
#如FULLNAME=”/home/Sunrier/Proj/log/test.log”;
#当local_filename=`basename $FULLNAME`
#最终local_filename=”test.log”
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP /dev/null 2>&1
#$?表示上一个命令的运行结果,0表示成功,其它值表示失败
#if
if
then
rm $LOCALDIR/tmp.txt
exit 1
fi
#mkdir创建远程目录
#mkdir $DESTDIR
#ftp -i -n $IP
ftp -i -n
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
rm $LOCALDIR/tmp.txt
exit 0
view plain copy
注:
FTP服务器的启动:
# service vsftpd start
为 vsftpd 启动 vsftpd:
FTP服务器的端口一般默认为21:
# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign AddressState
tcp 0 127.0.0.1: 0.0.0.0:* LISTEN
tcp 0 0.0.0.0:.0.0.0:* LISTEN
tcp 0 0.0.0.0:.0.0.0:* LISTEN
tcp 0 0.0.0.0:.0.0.0:* LISTEN
tcp 0 0.0.0.0:.0.0.0:* LISTEN
tcp 0 127.0.0.1: 0.0.0.0:* LISTEN
tcp 0 127.0.0.1: 0.0.0.0:* LISTEN
tcp 0 0.0.0.0:.0.0.0:* LISTEN
tcp 0 127.0.0.1: 0.0.0.0:* LISTEN
tcp 0 ::::::*LISTEN
#
在使用system执行Shell脚本时,如system(“ftpput.sh”),system返回值低8位为system执行脚本所接收到的信号值,9~16位为Shell脚本所设置的exit退出值
你是晌郑要下载.sh文件,还是要下载别的文件
linux服务器一般下载的时候,宴雀颂是用wget命令去下载的
关于linux sh脚本取文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
网页名称:学会用Linuxsh脚本轻松取得文件,快捷高效!(linuxsh脚本取文件)
本文链接:http://www.shufengxianlan.com/qtweb/news16/541666.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联