学会用Linux sh脚本轻松取得文件,快捷高效! (linux sh脚本取文件)

在日常的工作和生活中,文件传输无处不在。无论是下载、上传、备份、同步,都需要频繁地进行文件的操作。而对于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系统的使用中占有十分重要的地位。

相关问题拓展阅读:

linux .sh脚本文件

之一个没用过,貌似是采集摄像头的东东;

第二个是编译/etc目录;

2>/dev/null你理解的正确;

你上面这两行应该是某个程序的信做消息采集配置桥胡敬敏慎。

TRISTREAM TI2A AEWB这几个是传给脚本的参数亏碧,你用cat查看你下脚本文件,看看是销洞举不是有脚本里面包含$1、$2等,这就是用来接收颤丛参数的。

最后一个符号&表示后台执行。

用shell的linux服务器 .sh插件怎么从远程ftp服务器下载文件

//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脚本取文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 学会用Linux sh脚本轻松取得文件,快捷高效! (linux sh脚本取文件)