程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java應用Preference類保留上一次記載的辦法

Java應用Preference類保留上一次記載的辦法

編輯:關於JAVA

Java應用Preference類保留上一次記載的辦法。本站提示廣大學習愛好者:(Java應用Preference類保留上一次記載的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java應用Preference類保留上一次記載的辦法正文


在 Linux 體系中,當你輸出一個敕令,再按兩次TAB 鍵,就會列出一切以你輸出字符開首的可用敕令。這其實不新穎,能夠你曾經曉得了。這個功效被稱作敕令行補全bash completion。默許情形下,bash 敕令行可以主動補全文件或目次稱號。不外,我們可以加強 bash 敕令補全功效,經由過程 complete 敕令讓它到達新的高度。 

這個教程解釋了我們是如何應用可編程的敕令行補全功效(programmable completion)把主動補全功效運用於選項或許敕令行參數。 

例如:在輸出 write 敕令以後,假如你按兩次 TAB 按鍵,主動補全功效會供給可供履行 write 操作的用戶列表。

 $ write [TAB][TAB]
bala   raj
jason   randy
john   ritu
mayla   thomas
nisha   www-data 

鄙人面的例子中,可認為 telnet 敕令顯示可用的主機名:

$ telnet [TAB][TAB]
localhost dev-db fileserver 

要讓可編程敕令補全功效在你的終端起感化 ,你只須要以下履行/etc/bash_completion便可:
 # . /etc/bash_completion

你也能夠撤消/etc/bash.bashrc(來自 Ubuntu Linux 13.04 體系)中以下的正文,如許,你便可以不須要履行下面的敕令了:

 ### enable bash completion in interactive shells
if ! shopt -oq posix; then
 if [ -f /usr/share/bash-completion/bash_completion ]; then
  . /usr/share/bash-completion/bash_completion
 elif [ -f /etc/bash_completion ]; then
  . /etc/bash_completion
 fi
fi 

假如你沒有發明這些代碼,也沒有找到/etc/bash_completion文件,那末你只須要經由過程應用apt-get敕令來裝置bash_completion 包便可。 

1. 檢查已有的敕令行補全 

在啟用可編程的敕令行補全功效後,就曾經有了一些界說好的敕令補全功效。complete 敕令用於界說敕令行補全。
 要檢查已有的敕令行補全,以下應用 complete 敕令:
 complete -p | less
下面例子中的 -p 選項是可選的。 

2. 列出 bash 中尺度補全功效 

默許情形下,Bash 為 Linux 用戶供給了以下尺度補全功效。
 1.變量補全
 2.用戶名補全
 3.主機名補全
 4.途徑補全
 5.文件名補全 

我們在之前的  bash 尺度補全中評論辯論過這些。 

3. 界說一個敕令名補全 

經由過程 -c 選項可以將一切的可用敕令作為一個敕令的補全參數。鄙人面的例子外面,為 which 敕令界說了一個補全(LCTT譯注:在按兩下 TAB 時,可以列出一切敕令名作為可補全的參數)。

 $ complete -c which

$ which [TAB][TAB]
Display all 2116 possibilities? (y or n) 

如上,假如按下 ‘y',就會列出一切的敕令名。 

4. 界說一個目次補全 

經由過程選項 -d,可以界說一個僅包括目次名的補全參數。鄙人面的例子中,為 ls 敕令界說了補全。

 $ ls
countfiles.sh dir1/     dir2/     dir3/

$ complete -d ls

$ ls [TAB][TAB]
dir1/     dir2/     dir3/ 

如上,連按下 TAB 僅會顯示目次名。 

5. 界說一個後台義務名補全 

補全功效也可以或許以義務名作為補全參數。選項 -j 可以界說義務名作為傳遞給敕令的參數,以下:

 $ jobs
[1]- Stopped         cat
[2]+ Stopped         sed 'p'

$ complete -j ./list_job_attrib.sh

$ ./list_job_attrib.sh [TAB][TAB]
cat  sed 

關於後台義務,你可以參考 Linux 後台義務中的例子懂得若何治理後台義務。 

6. 帶有前綴和後綴的補全 

補全功效可認為現實的補全內容界說前綴和後綴。鄙人面的例子中,為 list_job_attrib.sh 界說了補全內容的前綴和後綴。

 $ jobs 
[1]+ Stopped         cat
$ complete -P '">' -S '<"' ./list_job_attrib.sh
$ ./list_job_attrib.sh [TAB][TAB]
$ ./list_job_attrib.sh ">cat<" 

7. 帶有消除的文件名和目次名補全 

假設劇本運轉完成後,輸入目次以下:

 $ cd output/

$ ls
all_calls.txt  incoming_calls.txt  outgoing_calls.txt  missed_calls.txt
parser_mod.tmp extract.o 

如上,假如你想要 ls 敕令的補全疏忽 .tmp 和 .o 文件:

$ export FIGNORE='.tmp:.o'
$ complete -f -d ls
$ cd output
$ ls [TAB][TAB]
all_calls.txt  incoming_calls.txt  outgoing_calls.txt  missed_calls.txt 

FIGNORE 是一個情況變量,它包括了主動補全所須要消除的文件名後綴。 

8. 經由過程 IFS 變量朋分字符串獲得補全值 
可以經由過程 -W 選項界說補全值列表,然後經由過程 IFS 情況變量停止切分。切分成果會睜開變量並作為補全顯示。

$ export IFS=" "
$ complete -W "bubble quick" ./sort_numbers.sh
$ ./sort_numbers.sh [TAB][TAB]
bubble  quick 

如上所述,字符通同過 IFS 分隔符停止切分後,內嵌的變量會被睜開為變量值,所以可以以下應用變量:

$ echo $SORT_TYPE1
bubble

$ echo $SORT_TYPE2
quick

$ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh
$ ./sort_numbers.sh [TAB][TAB]
bubble  quick 

9. 寫個函數來生成補全 

你可以引入一個函數來界說補全。應用 -F 選項將函數名傳給 complete 敕令,履行函數生成補全內容。例如,函數以下:

 _parser_options()
{
 local curr_arg;
 curr_arg=${COMP_WORDS[COMP_CWORD]}
 COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) );
} 

在上述函數中:
 1.COMPREPLY : 該數組掌握連按下 TAB 後顯示的成果
 2.COMP_WORDS : 該數組包括敕令行輸出的單詞
 3.COMP_CWORD : COMP_WORDS 數組的索引,應用它來辨別敕令行可以拜訪的單詞地位
 4.compgen : -W 基於 $current_arg 供給能夠的補全及其參數 

該函數放在 parser_option 文件中,並經由過程 source 敕令引入:
 $ source parser_option
將該函數和你的 parser.pl 劇本聯系關系起來:

$ complete -F _parser_options ./parser.pl
$ ./parser.pl [TAB][TAB]
-i    --incoming    -o    --outgoing    -m    --missed 

如上,parser.pl 的選項是由函數 _parser_options() 生成的。 

提醒: 檢查/etc/bash_completion 來懂得更多的可編程補全函數。 

10. 當第一個規矩沒有生成成果時,就應用第二個 

假如界說的補全規矩沒有生成婚配時,可使用 -o 選項生成補全。
 $ complete -F _count_files -o dirnames ./countfiles.sh
如上,為 ./countfiles.sh 界說了 _count_files 補全函數。 假如 the _count_files() 函數沒有生成任何婚配的話,就會觸發目次補全。

 $ ls 
countfiles.sh  dir1/   dir2/   dir3/

$./countfiles.sh [TAB][TAB]
dir1  dir2  dir3

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved