我有一个目录,里面装着很多不可名状的国外动作片,每个目录的名字都没有英文,怎么在不切换中文/日文/韩文的情况下,用 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命令可以检测文件类型,自动以系统默认程序打开文件。
最笨方法:用鼠标复制粘贴文件名代替输入。
最好方法:换终端,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命令可以检测文件类型,自动以系统默认程序打开文件。