ls文件名在lftp中不起作用(ls filename does not work in lftp)

I created an lftp script to upload single files to a web hosting provider.

The use case is that I call it from the repository root, so the relative path is the same here and in the remote server.

#!/bin/bash

DIRNAME=$(dirname $1)
FILENAME=$(basename $1)
REPO_ROOT=$(pwd)
ABSOLUTE_PATH=${REPO_ROOT}/$1

lftp -u user,passwd -p port sftp://user@hosting <<EOF
cd $DIRNAME
put  $ABSOLUTE_PATH 
ls -l $FILENAME
quit 0
EOF

It works, with one small but annoying bug. To check that it really uploads the file, I have put an ls -l at the end. It fails and I do not understand why:

ls: Access failed: No such file(functions.php)   

I tried to use rels and cache flush but in vain. I'm using lftp 4.0.9.

解决方案

Some googling at last gave a result in mail-archive

It is a limitation of SFTP protocol implementation in lftp. It cannot list a single file, only a specific directory.

Fortunately, lftp allows pipes, so

ls -l | grep  "$FILENAME"

注意:"$FILENAME" 不能包含 通配符,但可以用多次grep来解决。

solves the problem.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值