将tcsh别名为python脚本,然后将结果返回给tcsh?

将tcsh别名为python脚本,然后将结果返回给tcsh?,python,tcsh,Python,Tcsh,我想创建一个cd版本,它将从目录结构中删除一个文件名,然后将cd复制到该目录 举个例子,如果我把它放进tcshell 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_

我想创建一个cd版本,它将从目录结构中删除一个文件名,然后将cd复制到该目录

举个例子,如果我把它放进tcshell

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命令似乎不起作用


谢谢

chdir不会更改调用shell的状态

您需要将别名更改为以下内容不确定确切的tcsh语法:

  alias ccd 'cd `getDir.py`'

然后,getDir脚本只打印正确的路径字符串no chdir needed

chdir不会更改调用shell的状态

您需要将别名更改为以下内容不确定确切的tcsh语法:

  alias ccd 'cd `getDir.py`'

然后你的getDir脚本除了打印正确的路径字符串no chdir needed之外什么都不做

有一个名为dirname的标准二进制文件为你做这件事,所以你可以使用

alias ccd 'cd `dirname \!:1`'
这样行得通,你能解释一下语法吗


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

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

alias ccd 'cd `dirname \!:1`'
这样行得通,你能解释一下语法吗


好吧,这个名字\!:1 part意味着使用传递给别名命令的第一个参数运行dirname程序,反勾号将该程序的输出替换为cd命令。

我尝试了类似的方法,但也无法实现。我得到cd:太多的论点。不知怎的,python返回了多个参数?@user2479153这实际上不起作用,因为参数不在backticks范围内,所以它不会被传递到您的脚本。我尝试了类似的方法,但也无法实现。我得到cd:太多的论点。python返回了多个参数?@user2479153这实际上不起作用,因为参数不在反勾号范围内,所以不会传递给脚本。@user2479153请参阅更多示例。谢谢。为了便于学习,我如何让我的Python脚本将剥离的dir结构返回到tcsh?有什么想法吗?@user2479153让Python脚本打印到stdout的剥离路径,并用dirname替换到Python脚本的路径。@D_G哦,如果你想用Python来做,你可以使用。类似这样的脚本:import sys,os;打印os.path.dirnamesys.argv[1]就可以了。@user2479153请参阅更多示例。谢谢,太好了。为了便于学习,我如何让我的Python脚本将剥离的dir结构返回到tcsh?有什么想法吗?@user2479153让Python脚本打印到stdout的剥离路径,并用dirname替换到Python脚本的路径。@D_G哦,如果你想用Python来做,你可以使用。类似这样的脚本:import sys,os;打印os.path.dirnamesys.argv[1]就可以了。