linux inode访问文件名,利用inode,可以不用tab文件名跳到中文目录中

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我有一个目录,里面装着很多不可名状的国外动作片,每个目录的名字都没有英文,怎么在不切换中文/日文/韩文的情况下,用 cd 命令跳到这些目录里?

最笨方法:用鼠标复制粘贴文件名代替输入。

最好方法:换终端,zsh终端听说补全功能很无敌。但作为一个新手我还是想用默认的bash。

所以选择一个折衷的方法:

原理:

linux系统每一个目录和文件都有一个节点(inode);

用 ls -i 命令,可以列出当前目录所有文件和目录的inode;

用 find -inum 命令,输入inode可查找对应文件的文件名;

再用 cd 命令跳到这个目录中。

例如,有一个目录名为 “一二三四 五六七八”

[------------ ~]$ ls -i

12345678 一二三四 五六七八

我们知道了这个目录的inode是12345678

然后就是

[------------ ~]$ cd “`find -inum 12345678`”

[------------ 一二三四 五六七八]$

就可以跳到目录里去了。之所以要在反引号外面再套多一层双引号,是因为这个目录中间有空格,所以要转义。

这样的命令有点长,所以可以用 alias 命令,自定义一个命令。

但是 alias 命令不支持传递参数,所以可以加上函数。

定义一个名为 icd 的命令:

[------------ ~]$ alias icd='cdtoinode_fun(){ pathforinode=$( find -inum $1); cd "$pathforinode" ;pathforinode=;}; cdtoinode_fun $1'

这个函数分为了三步:

第一步将 find -inum 找出的文件名存到一个自定义变量$pathforinode中;

第二步用cd命令跳到这个变量所代表的目录中;

第三步清空$pathforinode这个变量。主动清空,不留痕迹是一个好习惯。

然后就可以用以下两条命令跳进目录:

[------------ ~]$ ls -i

12345678 一二三四 五六七八

[------------ ~]$ icd 12345678

[------------ 一二三四 五六七八]$

可是这个只是跳进目录,如果我要打开一个文件呢?

自定义一个iop函数:

[------------ ~]$ alias iop='openinode_fun(){ pathforinode=$( find -inum $1); xdg-open "$pathforinode" ;pathforinode=;}; openinode_fun $1'

其实就是用xdg-open命令代替了cd命令。

xdg-open命令可以检测文件类型,自动以系统默认程序打开文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值