OP的解决方案
在此找不到内置命令。但是最后我能够编写一个使用cd的C程序(让我使用icd ==(inode cd)调用我的程序)以使用inode值进入文件夹。我在这里发布原始代码。
但是,我在这里面临一个基本问题。从bash编码执行C代码时,需要在bash进程(父进程)下创建子进程。在子进程中,目录空间是新的,我无法从那里访问父进程的目录空间。因此,除了从此处调用新的bash窗口外,什么也做不了。如果人们对此感兴趣,将来我将尝试实现新的标签功能。但是我相信我在这样做方面面临很多批评。因此人们可能不感兴趣。我只是为了娱乐而做。
RAW代码在这里共享,
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include<dirent.h>
#include <unistd.h>
#include <grp.h>
#include<pwd.h>
using namespace std ;
int main(int argc , char *argv[] ) {
struct stat ITR ;
if( argc != 2 ) {
printf("\nWrong Command\n\n") ;
return 1 ;
}
long long given_inode = 0 ;
for( int i =0 ; argv[1][i] ; i++ ){
given_inode *= 10 ;
given_inode += (argv[1][i]-'0') ;
}
// if (stat(argv[1], &ITR) == -1) {
// perror("stat");
// return 1 ;
// }
printf("%s\n",argv[0]) ;
char PWD[1000] ;
getcwd( PWD , 1000 ) ;
DIR *d;
struct dirent *p;
char path[100000] ;
d = opendir(".");
if( d != NULL ) {
while( (p = readdir(d))!= NULL ) {
strcpy( path , "./" ) ;
strcat( path, p->d_name ) ;
stat(path, &ITR) ;
//printf("%s --> ",path) ;
//printf("%ld\n",ITR.st_ino) ;
if( ITR.st_ino == given_inode ) {
strcpy( path , "gnome-terminal --working-directory=" ) ;
strcat( path, PWD ) ;
strcat( path, "/" ) ;
strcat( path, p->d_name ) ;
system(path) ;
//printf("%s\n",path) ;
return 0 ;
}
}
}
printf("icd %lld:No such file or directory\n",given_inode) ;
return 0 ;
}
我在这里使用gnome终端。显然,对于其他发行版,代码将被更改。
zsh
而不是bash