Answers:
只是为了好玩,从字面上回答这个问题:
#!/usr/bin/env python3
import os
import subprocess
show_hidden = False
currfiles = os.listdir("./")
if not show_hidden:
currfiles = [f for f in currfiles if not f.startswith(".")]
n = 1
for f in currfiles:
print(str(n) + ". " + f)
n = n + 1
picked = int(input("Quick, quick, give me a number:\n"))
subprocess.run(["xdg-open", currfiles[picked - 1]])
...简单:
注销并重新登录,只需键入即可开始使用命令
$ o
在终端
如果您还想显示隐藏文件,请更改
show_hidden = False
变成:
show_hidden = True
~/bin
您的PATH中还没有,则必须添加它(例如,在或中export PATH="$PATH:~/bin"
插入一行。).bashrc
.profile
source ~/.profile
。
~/bin
完全没有内置。Ubuntu和Debian附带~/.profile
有行的自定义if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi
。在Mac OS X和CentOS上,您必须自行配置。一个很好的机会是,如果IT部门~/.profile
将Ubuntu提供给某人,则机会将与默认的Ubuntu不同,因此,始终提防~/bin
非标准是一个好习惯。~/.profile
如果您启动带有--no-profile
选项的外壳,Bash也可以忽略
在纯bash中,使用以下select
语句:
PS3='Quick, quick, give a number: '
select file in *
do
xdg-open "$file"
break
done
设置PS3实在令人难以置信。如果不进行设置,则只会显示默认提示。如果省略break语句,则select语句将一直循环直到您按CTRL-D或CTRL-C。
当然,您也可以单线运行它:
select file in *; do xdg-open "$file"; break; done
$ ls
results.log
string
Templates
textfile
time
time.save
vegetables
vegetablesbsh
怎么样
ls | sed -n 3p
打印第三个文件名
Templates
打开它-
xdg-open "$(ls | sed -n 3p)"
通常有效。
把它放在脚本中
#!/bin/bash
xdg-open "$(ls | sed -n "$1"p)"
脚本名称:打开
将其保存在主文件夹中。跑:
./open file_number
在Linux文件系统上,文件名具有一个非常有趣的属性,称为inode:目录(或folder)是inode的列表,并且哪些文件名指向这些inode。因此,如果您知道索引节点号,则可以尝试使用find
实用程序查找文件并对其执行某些操作。在处理具有不同语言环境,特殊字符的文件名时~
,或者在意外创建名为的目录时,此功能特别有用。
例如,
$ ls -i1
1103993 crs.py
1103743 foobar.txt
1147196 __pycache__
1103739 'with'$'\n''newline.png'
1103740 yellowstone.jpg
$ find . -type f -inum 1103743 -exec xdg-open {} \; -and -quit
这样做是遍历当前的工作目录(由表示.
),并查找目录入口,该目录入口是inode编号为1103743的文件。如果找到该文件,xdg-open
将使用默认应用程序打开该文件,然后find
退出。究其原因,额外的-and
,并-quit
为防止xdg-open
重新打开该文件,如果存在硬链接文件(这相当于打开同一个文件两次)。
制作一些文件:
$ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
$ ls
00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
$ cat 16.txt
This is file 16.
将文件放入变量,然后按索引打开文件。
$ files=(*)
$ xdg-open "${files[12]}"
# Opens 12.txt in a text editor, which reads "This is file 12."
用12
您要打开的索引替换。
这可能是直接回答问题的最简单答案。尝试以下方法:
touch file-1 file-2 file-3
假设我们要打开(或编辑)第二个文件,我们可以执行以下操作:
echo `ls` | cut -d' ' -f2
这将输出第二个文件的名称,我们可以将其用作我们要执行的命令的输入,例如:
cat $( echo `ls` | cut -d' ' -f2 )
将输出第二个文件的内容。
请注意,可以通过调整ls参数来更改ls打印文件的顺序,
man ls
有关详细信息,请参见。
[更新]假设您的文件名中没有空格,
感谢@wjandrea的注意。