别名tcsh到python脚本然后将结果返回到tcsh?

时间:2013-06-12 16:14:52

标签: python tcsh

我想创建一个cd版本,它将从目录结构中剥离文件名,然后cd到该目录。

例如,如果我放入(tc)shell

cd /net/homes/me/myfile.jpg 

它将剥离'myfile.jpg'并cd到目录结构。我试过这是我的.cshrc: -

alias ccd '/net/homes/me/scripts/getDir.py'

然后我的getDir.py文件读作: -

#! /usr/bin/python

import sys
import os

def get_dir():
    the_dir = sys.argv[1]
    dir_split = the_dir.split("/")
    dir_count = len(the_dir.split("/"))

    file_count = len(dir_split[dir_count-1])
    only_dirs = the_dir[:-file_count]
    #print only_dirs
    os.chdir(only_dirs)


get_dir()

这剥离了dir结构的文件名部分(我可以从print语句中告诉)但是chdir命令似乎不起作用。

谢谢!

2 个答案:

答案 0 :(得分:2)

chdir不会改变调用shell的状态。

您需要将别名更改为类似的内容(不确定tcsh的确切语法):

  alias ccd 'cd `getDir.py`'

然后你的getDir脚本什么也不做,只打印正确的路径字符串(不需要chdir)

答案 1 :(得分:2)

有一个名为dirname的标准二进制文件可以为您执行此操作,因此您可以使用...

alias ccd 'cd `dirname \!:1`'
  

这有效,你能解释一下语法吗?

嗯,dirname \!:1部分意味着运行dirname程序,第一个参数传递给别名命令,反引号将该程序的输出替换为cd命令。