2013-06-12 23 views
1

我想創建一個cd版本,它將剝離目錄結構中的文件名,然後cd到該目錄。將python別名tcsh然後將結果返回給tcsh?

因此,例如,如果我把在(TC)殼

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() 

這剝除的目錄結構精細的文件名部分(我可以告訴大家,從打印語句)但chdir命令似乎不起作用。

謝謝!

回答

2

有一個叫dirname它可以實現這個要求,所以你可以使用標準的二進制...

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

這個工作,你能解釋語法嗎?

那麼,dirname \!:1部分是指與傳遞給別名命令的第一個參數運行dirname程序和反引號替換從該程序的輸出入cd命令。

+0

這個工作,你能解釋語法嗎? 謝謝! –

+0

@ user2479153查看[本頁](http://home.adelphi.edu/sbloch/class/archive/271/fall2005/notes/aliases.html)瞭解更多示例。 – Aya

+0

非常感謝。僅用於學習目的,我如何讓我的Python腳本將剝離的目錄結構返回給tcsh?有任何想法嗎? –

2

chdir不會更改調用shell的狀態。

你需要改變你的別名是這樣的(不知道確切的tcsh語法):

alias ccd 'cd `getDir.py`' 

然後你GETDIR腳本什麼也不做,但顯示了正確的路徑字符串(沒有CHDIR需要)

+0

我試過這樣的事情,但無法得到這個工作。我得到CD:太多的論據。 不知何故python返回多個參數? –

+0

@ user2479153這實際上不起作用,因爲參數在反引號之外,所以不會傳遞給腳本。 – Aya