首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

求教脚本无法运行的小问题

  •  
  •   bsns · 2017-06-05 08:04:56 +08:00 · 1971 次点击
    这是一个创建于 837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在利用 Nautilus Actions 搞一些右键功能,其中一个就是:右键->记录文件名到本地 txt 文件,于是问题来了,同样一条命令
    echo file > /home/.../getname.txt 在终端运行可以正常记录文件名。
    但是在 Nautilus Actions 中
    path:echo
    parameters:%w > /home/.../getname.tx
    而且它下方提示的输出样式也是 echo file > /home/.../getname.txt
    但是无法获得文件名,本地 txt 文件没有变化,何解?
    9 回复  |  直到 2017-06-05 16:22:48 +08:00
        1
    freedomSky   2017-06-05 08:15:54 +08:00 via iPhone
    没用过这个工具,看起来是你的参数是只传给 echo 的,而不是整个 cmd+para 在 shell 下执行,echo 只能接收到第一个空格前的参数( file ),后面的被忽略

    解决办法:写个 shell 脚本,接收一个参数,动作就是 echo $1 > /home....,然后 path 改成这个脚本,参数为%w

    希望对你有用:)
        2
    xiaket   2017-06-05 08:29:06 +08:00
    echo 是一个 bash 内建命令,不是系统命令.
        3
    araraloren   2017-06-05 08:38:11 +08:00
    @xiaket echo 是有对应的系统命令的
        4
    xiaket   2017-06-05 08:59:24 +08:00
    @araraloren 他直接写 echo 也肯定不会找到 /bin/echo 啊...
        5
    bsns   2017-06-05 09:37:51 +08:00
    @bsns /bin/echo 我也尝试了,同样不行
    @freedomSky 还是采用你的建议,调用本地 shell 脚本了,大致是 echo -n $1 > /home/.../getname.txt 这样,在我看起来语义没什么变化,但是确实可以记录了,缺点就是增加一个本地文件吧,thanks。
        6
    zhidian   2017-06-05 11:06:07 +08:00
    cat file > othername.txt
        7
    zhidian   2017-06-05 11:06:25 +08:00
    额……我错了,你要的是文件名啊……
        8
    freedomSky   2017-06-05 11:58:52 +08:00
    @bsns 这里的 echo 不是通过 shell 调用的,' > xxx' 重定向输出是 shell 做的工作,所以这里' > xxx'做为参数起不到重定向输出的作用, 实际执行效果也许是这个样子: echo 'file > /home/.../getname.txt'
        9
    oaix   2017-06-05 16:22:48 +08:00
    我猜这样可以
    path: bash
    parameters: -c "%w > /home/.../getname.txt"
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3355 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 05:16 · PVG 13:16 · LAX 22:16 · JFK 01:16
    ♥ Do have faith in what you're doing.