linux:获取一个脚本,以便能够向用户询问文件名,然后打开该文件

时间:2014-09-30 09:45:40

标签: linux bash shell

我需要一个linux脚本来询问用户是否要使用该程序,如果是,则需要询问用户他们想要搜索哪个文件。目前,我创建了两个名为terminalpi的文件来测试我的脚本。

该计划的预期结果将是:

welcome
would you like to find a file?(if yes type 'y' if no type 'n'

如果是,它应该继续询问他们想要找到哪个文件,然后它应该打印该文件。

到目前为止,我有这个:

#!/bin/bash

hello "welcome!"
while [ "$hello" != "n" ]

do
    echo "would you like to find a file?(if yes type 'y' if no type'n'"
    read hello
    case $hello in
        y)      echo "what is the name of the file?"
                    read option
                    ***this is where the code i dont know should theroecticaly be***
        n)      echo "goodbye"
    esac
done

就像我说的,预期的结果是它会打印文件。怎么办呢?

3 个答案:

答案 0 :(得分:1)

尝试使用find命令。阅读find命令的man页面。

find <dir_name> -name ${option}

如果您想find该文件并显示其内容:

find <dir_name> -name ${option} | xargs cat

答案 1 :(得分:1)

首先,你有一个错误:

hello "welcome"

除非您的系统上有一个名为hello的命令,否则无法执行任何操作。要打印信息,请使用

echo "welcome"

要在打印消息后获得用户的输入,请使用read。由于您使用的是bash,因此可以使用-p选项显示消息并使用一个命令保存用户输入:

read -p message" variable

要查找并显示文件的内容,可以使用find命令及其-exec选项。例如,-exec less使用less显示文件。

然后,您还有其他各种错误。脚本的工作版本类似于:

#!/usr/bin/env bash

echo 'Welcome!'

while [ "$response" != "n" ]
do
    read -p "Would you like to find a file? [y/n]:" response
    case $response in
        y) read -p "What is the name of the file? " file
            find . -type f -name "$file" -exec less {} \;
                    ;;

        n)     
            echo "goodbye" 
            exit ;;
    esac
done

答案 2 :(得分:0)

或者

find . -name "<filename>" | xargs vim