我想创建一个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命令似乎不起作用。
谢谢!
答案 0 :(得分:2)
chdir不会改变调用shell的状态。
您需要将别名更改为类似的内容(不确定tcsh的确切语法):
alias ccd 'cd `getDir.py`'
然后你的getDir脚本什么也不做,只打印正确的路径字符串(不需要chdir)
答案 1 :(得分:2)
有一个名为dirname
的标准二进制文件可以为您执行此操作,因此您可以使用...
alias ccd 'cd `dirname \!:1`'
这有效,你能解释一下语法吗?
嗯,dirname \!:1
部分意味着运行dirname
程序,第一个参数传递给别名命令,反引号将该程序的输出替换为cd
命令。