1,准备ftp环境

下载最新的ftp客户端:https://filezilla-project.org/ftp/001.png,选择linux下面的版本,如002.png所示:

在window10下面下载,使用wget http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.26.1/FileZilla_3.26.1_i586-linux-gnu.tar.bz2在linux命令行里面下载。
解压缩,tar -xvf FileZilla_3.26.1_i586-linux-gnu.tar.bz2

安装ftp: yum install vsftpd -y
启动:service vsftpd start

尝试ftp命令,报错
[root@hch_test_dbm1_121_62 bin]# ftp
-bash: ftp: command not found
[root@hch_test_dbm1_121_62 bin]#

直接下载ftp安装包 wget http://mirror.centos.org/centos/6/os/x86_64/Packages/ftp-0.17-54.el6.x86_64.rpm
然后安装
[root@hch_test_dbm1_121_62 soft]# rpm -ivh ftp-0.17-54.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:ftp                    ########################################### [100%]
[root@hch_test_dbm1_121_62 soft]# 

安装报错libc.so.6 is needed by ftp-0.17-35.el5.i386
去安装rpm –Uvh http://mirror.centos.org/centos/6/os/x86_64/Packages/glibc-2.12-1.132.el6.x86_64.rpm

尝试ftp操作
[root@hch_test_dbm1_121_62 soft]# ftp
ftp> 

2,自动登录下载

#!/bin/bash
ftp -n<<!
open 120.132.27.91 10000
user downdata RakudespuH3bAk+ruy
binary
cd up
lcd /home/mysql/binlogs
prompt
mget mysql-bin*
close
bye
!

3,自动登录上传

#本地的/home/databackup to ftp服务器上的/home/data####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
close
bye
!

4,涉及的技巧

#!/bin/bash
#提取文件名,删除后缀。

file_name="text.gif"
name=${file_name%.*}
echo file name is: $name

输出结果:
file name is: test

从右边到左边的匹配操作 :% 和 %% 操作符的示例
[root@hch_test_dbm1_121_62 load_binlog]# filename=mysql-bin.000110.zip
[root@hch_test_dbm1_121_62 load_binlog]# name=${filename%.*}
[root@hch_test_dbm1_121_62 load_binlog]# echo $name
mysql-bin.000110
[root@hch_test_dbm1_121_62 load_binlog]# 

看到输出结果是没有.zip的文件名mysql-bin.000110

------------------------------------------------
有些脚本要根据文件名进行各种处理,有时候需要保留文件名抛弃文件后缀,也有时候需要文件后缀不要文件名,这类提取文件部分的操作使用shell的内建功能就能实现。需要用到的几个操作符有:%、%%、#、##。

从右向左匹配 :% 和 %% 操作符的示例

#!/bin/bash
#提取文件名,删除后缀。

file_name="text.gif"
name=${file_name%.*}
echo file name is: $name

输出结果:
file name is: test

# ${VAR%.* }含义:从$VAR中删除位于 % 右侧的通配符左右匹配的字符串,通配符从右向左进行匹配。现在给变量 name 赋值,name=text.gif,那么通配符从右向左就会匹配到 .gif,所有从 $VAR 中删除匹配结果。
# % 属于非贪婪操作符,他是从左右向左匹配最短结果;%% 属于贪婪操作符,会从右向左匹配符合条件的最长字符串。

file_name="text.gif.bak.2012"
name=${file_name%.*}
name2=${file_name%%.*}
echo file name is: $name
echo file name is: $name2

输出结果:
file name is: test.gif.bak    //使用 %
file name is: test            //使用 %%

操作符 %% 使用 .* 从右向左贪婪匹配到 .gif.bak.2012
从左向右匹配:# 和 ## 操作符示例

#!/bin/bash
#提取后缀,删除文件名。

file_name="text.gif"
suffix=${file_name#*.}
echo suffix is: $suffix

输出结果:
suffix is: gif

# ${VAR#*.} 含义:从 $VAR 中删除位于 # 右侧的通配符所匹配的字符串,通配符是左向右进行匹配。
# 跟 % 一样,# 也有贪婪操作符 ## 。

file_name="text.gif.bak.2012.txt"
suffix=${file_name#*.}
suffix2=${file_name##*.}
echo suffix is: $suffix
echo suffix is: $suffix2

输出结果:
suffix is: text.gif.bak.2012     //使用 #
suffix2 is: txt                  //使用 ##

操作符 ## 使用 *. 从左向右贪婪匹配到 text.gif.bak.2012
示例2,定义变量 url="www.1987.name"

echo ${url%.*}      #移除 .* 所匹配的最右边的内容。
www.1987
echo ${url%%.*}     #将从右边开始一直匹配到最左边的 *. 移除,贪婪操作符。
www
echo ${url#*.}      #移除 *. 所有匹配的最左边的内容。
1987.name
echo ${url##*.}     #将从左边开始一直匹配到最右边的 *. 移除,贪婪操作符。
name

ftp上传下载记录的更多相关文章

  1. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

  2. windows系统下ftp上传下载和一些常用命令

    先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...

  3. windows下ftp上传下载和一些常用命令

    先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...

  4. FTP上传下载工具(FlashFXP) v5.5.0 中文版

    软件名称: FTP上传下载工具(FlashFXP) 软件语言: 简体中文 授权方式: 免费试用 运行环境: Win 32位/64位 软件大小: 7.4MB 图片预览: 软件简介: FlashFXP 是 ...

  5. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...

  6. C# -- FTP上传下载

    C# -- FTP上传下载 1. C#实现FTP下载 private static void TestFtpDownloadFile(string strFtpPath, string strFile ...

  7. Java.ftp上传下载

    1:jar的maven的引用: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  8. python之实现ftp上传下载代码(含错误处理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...

  9. python之模块ftplib(实现ftp上传下载代码)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ftplib(实现ftp上传下载代码) #需求:实现ftp上传下载代码(不含错误处理) f ...

随机推荐

  1. 20145321 《Java程序设计》第3周学习总结

    20145321 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 4.1 类与对象 1.定义类:类定义时用关键词 class. 一个原始码中可以有多个类定义,但只能有一个公开 ...

  2. 20145324 Java实验二

    实验1: 先建立.java 在建立test 测试正常情况 测试出错情况 错误 修改后的代码 正确 测试边界情况 100时出错 修改后的代码 测试 实验2: 先建test在写,java 实验3:建模 练 ...

  3. git操作方便,简单使用的客户端sourcetree 安装配置所遇问题总结

    常言道:工欲善其事,必先利其器. SourceTree是老牌的Git GUI管理工具了,也号称是最好用的Git GUI工具 这里先言言它的好: * 免费 * 功能强大:无论你是新手还是重度用户,Sou ...

  4. NOIP2014 T4 子矩阵 dfs+dp

    最近在狂补题啊QAQ... 打算先把NOIP的干掉吧... 点我看题 链接还是放洛谷的了... 题意:给一个n*m的矩阵,在这个矩阵里选 r 行 c 列,然后这 r 行 c 列所相交的格子为新矩阵的, ...

  5. 微服务(一)eureka

    Eureka概述 一个简单的服务注册,服务发现架构 在CAP理论中,eureka选择了ap,作为注册中心,数据可用比数据不一致更重要 逻辑架构图 Eureka特性 1.当注册中心挂了,客户端之间依然可 ...

  6. [PyTorch]PyTorch中反卷积的用法

    文章来源:https://www.jianshu.com/p/01577e86e506 pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d ...

  7. [源码解读] ResNet源码解读(pytorch)

    自己看读完pytorch封装的源码后,自己又重新写了一边(模仿其书写格式), 一些问题在代码中说明. import torch import torchvision import argparse i ...

  8. SpringMVC封装表单数据

    1.domain类 package com.xiaostudy.domain; public class User { private int id; private String username; ...

  9. Flume NG初次使用

    一.什么是Flume NG Flume是一个分布式.可靠.和高可用性的海量日志采集.聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据:同时Flume提供对数据的简单处理,并写到各种数 ...

  10. 01_MySQL DQL_基础查询

    DQL,Data Query Language,数据查询 # 基础查询/*语法:select 查询列表 from 表名: 特点:1.查询列表可以是:表中的字段,常量值.表达式.函数,也可以是多个组合2 ...