找到一个文件并打开它进行编辑.如何在bash shell中快速完成?

cor*_*cho 2 linux bash shell lamp drupal

我很多次面对这个简单而重复的任务配置LAMP或Ubuntu或Drupal中的一些东西:

我必须经常编辑配置文件(php.ini,httpd.conf,......等等),如果我不记得路径,我运行这两个命令:

locate php.ini
------- typing manually one of the paths that are shown in the list...
nano /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

我确信这可以改进(无需记住路径).有更好的方法吗?

我喜欢用命令解决这个问题的方法history:你可以用!32(例如)执行历史上的一个先前命令.有没有用类似的方式locatefind命令?

Pau*_*ce. 10

如果文件或目录的名称中有空格,这将不起作用,但制作一个版本并不会太难.

choose () {
    local PS3="Choose a file to edit: "
    select opt in $(locate "$1") quit
    do
        if [[ $opt = "quit" ]]
        then
            break
        fi
        ${EDITOR:-nano} "$opt"
    done
}
Run Code Online (Sandbox Code Playgroud)

演示:

$ choose php.ini
 1) /etc/php5/apache2/php.ini
 2) /etc/php5/apache2/php.ini.ucf-old
 3) /etc/php5/apache2/php.ini~
 4) /etc/php5/cli/php.ini
 5) /etc/php5/cli/php.ini~
 6) /home/dennis/Downloads/php.ini
 7) /usr/share/doc/php5-common/examples/php.ini-dist
 8) /usr/share/doc/php5-common/examples/php.ini-paranoid
 9) /usr/share/doc/php5-common/examples/php.ini-recommended
10) /usr/share/php5/php.ini-dist
11) /usr/share/php5/php.ini-dist.cli
12) quit
Choose a file to edit: 12
Run Code Online (Sandbox Code Playgroud)