请教在 shell 里把完整文件路径传入后,如何只取文件名?

2018-05-30 17:27:29 +08:00
 pppguest3962

原来我是这么干的。。。

[root@TeLinux /tmp/script]$ cat put2ftp.sh 
#!/bin/bash
FTILE_NAME=$1
ftp -n <<- EOF
open 192.168.89.36
user tartar tar123456
hash
bin
delete $FTILE_NAME
put $FTILE_NAME
bye
EOF

于是

sh put2ftp hellocat.tar.gz 

嗖一下就传过去了

如果我指定了完整路径

sh put2ftp /tmp/some/hellocat.tar.gz

在 delete $FTILE_NAME 这句,ftp 是不需要完整路径的,只需文件名, 求问,我应该如何单独提取出文件名呢?

2966 次点击
所在节点    Linux
6 条回复
hcymk2
2018-05-30 17:43:07 +08:00
man basename
spensersheng
2018-05-30 17:48:12 +08:00
ftp 交互中,很多 linux 命令都是无效的,推荐使用 ssh 或者 expect 来做这类文件传输。
你这里可以在 shell 脚本的 ftp 命令前,增加一个楼上所说的 basename 命令来获取传入的文件名。
a7a2
2018-05-30 21:11:24 +08:00
搜索一下“ shell split ”,然后使用“/”作为 split 字符。。。这个是我第一时间想到的

还是 1 楼精通 shell
my3157
2018-05-31 01:06:37 +08:00
ETiV
2018-05-31 01:51:17 +08:00
basename +1

弄路径的时候加个双引号

命令行 FTP 客户端我比较喜欢用 ncftp
randyzhao
2018-05-31 11:43:02 +08:00
楼上都答完了。

楼主 FILE 拼错了 看着蓝瘦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/458997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX