2008-12-19 47 views
5

問題:客戶X是一個Windows用戶,希望能夠通過使用助記符關鍵字或「標記提示」觸發預打包的bash命令通過shell登錄到她的RedHat框。bash腳本顯示基於「Windows說話」的兼容命令

示例:客戶X使用ssh登錄到主機,並且想要執行一些常規文件操作。她希望能夠輸入

copy file 

,並取回預晶圓廠填充式的空白的bash命令從

cp <@[email protected]> <@[email protected]>    ### simple copy 
cp -R <@[email protected]> <@[email protected]>  ### recursive copy 

然後,她希望能夠選擇到選擇的列表其中一個項目,填寫空白(s),然後按Enter鍵以運行該命令。

客戶X願意提前指定她希望使用哪些命令(用windows說話),然後聘請開發人員將這些命令翻譯成bash命令,然後將它們放在一個腳本中她會說話,說話,然後找回命令列表。

注:客戶X不喜歡apropos,因爲它假定您熟悉bash中使用的術語,而不是windows說話。例如:

apropos shortcut 

不給她有關創建符號鏈接(即使是自己想要的到底是什麼),因爲她不知道什麼窗口的快捷方式被稱爲在linux什麼。很顯然,windows概念並沒有超過100%,所以她最終必須學習,但是她是一個忙碌的人,並且正在尋求這個方法來讓她「理解」到linux的理解中。

問題:什麼是開始這樣的事情的最佳方式?是否有perl,python,ruby腳本在那裏做了這樣的事情? bash中是否有可以模擬這種功能請求的東西?

+0

對於一個非常合適的問題。一個很好的例子。 (爲了想學習而不是想要複製,向您的客戶+1) – 2009-04-23 21:09:30

回答

5

你可能想要的是重寫bash的command-not-found處理程序。以下是在一個標準的Ubuntu在/etc/bash.bashrc部分安裝用於安裝處理程序:

... 
# if the command-not-found package is installed, use it 
if [ -x /usr/lib/command-not-found ]; then 
     function command_not_found_handle { 
       # check because c-n-f could've been removed in the meantime 
       if [ -x /usr/lib/command-not-found ]; then 
        /usr/bin/python /usr/lib/command-not-found -- $1 
        return $? 
       else 
        return 127 
       fi 
     } 
fi 
... 

實際上,如果沒有找到一個命令,用戶指定的程序與命令作爲參數執行。在Ubuntu的情況下,它是一個Python程序,用於檢查用戶輸入的命令是否是可以安裝的有效應用程序,如果是,則通知用戶他/她可以安裝它。

您可能想要做的就是將它與您的命令和用法字符串hashref進行比較,並在出現匹配時顯示相應的字符串。