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
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。