av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

對話 UNIX: 第 10 部分,定制您的 Shell

瀏覽:49日期:2024-06-18 13:35:02

如果您使用某種工具的時(shí)間足夠長,那么您就會很清楚它的用途。而且,這種工具將成為您的擴(kuò)展??梢钥紤] Gustav Klimt 的畫筆、Louis Armstrong 的小號和 Mark Twain 的文字表達(dá)能力。如果您是一位藝術(shù)品鑒賞家,您的“交易工具可以毫不費(fèi)力地引導(dǎo)您的意圖、精神、以及對媒介的表達(dá)。

到目前為止,我希望您已經(jīng)掌握了 Unix® 的基本技能。您能夠使用各種命令行技巧。當(dāng)渴望獲得相關(guān)知識的時(shí)候,您將向無所不知的專家 請教。并且您熟練地掌握了命令的組合,可以對數(shù)據(jù)進(jìn)行復(fù)雜的操作。您在命令行方面游刃有余,對于 Shell 也非常嫻熟。

下面的學(xué)習(xí)過程將指導(dǎo)你配置一個(gè)你自己的shell環(huán)境。

功能強(qiáng)大的 Shell

您已經(jīng)了解了許多用以自定義您的 Shell 環(huán)境的技術(shù):

您可以選擇希望使用的 UNIX Shell。Bourne Shell 是非??煽康模欢渌?Shell,如 Z Shell,提供了一些新奇的思想和便利的方法,而您將發(fā)現(xiàn)這些都是很有幫助的。

要了解您的 UNIX 系統(tǒng)中可用的 Shell,可以使用 cat /etc/shells 命令。要將您的 Shell 更改為所列出的任何 Shell,可以使用 chsh 命令。以下是更改為 /bin/zsh(即 Z Shell)的一個(gè)示例。(輸入粗體顯示的文本。)

$ cat /etc/shells/bin/bash/bin/csh/bin/ksh/bin/sh/bin/tcsh/bin/zsh$ chsh -s /bin/zsh

您可以創(chuàng)建簡短的別名 以代替冗長的命令。

環(huán)境變量,如 PATH(它用于控制搜索程序的位置)和 TZ(它用于指定您的時(shí)區(qū)),可以保存您的首選設(shè)置,并作用于您所啟動的所有的進(jìn)程。

PATH 是特別有用的。例如,如果您希望或者需要運(yùn)行 Perl 的本地增強(qiáng)版本,那么您可以將 PATH 更改為 /usr/local/bin/perl,以代替在 /usr/bin/perl 中找到的(典型的)標(biāo)準(zhǔn)版本。

Unix 應(yīng)用程序也經(jīng)常使用環(huán)境變量進(jìn)行自定義 的工作。例如,如果您的終端(或模擬器)允許,那么您可以使用環(huán)境變量 CLICOLOR 和 LSCOLORS 為 ls(列出目錄的內(nèi)容)的輸出定制顏色。

您可以通過 Shell 內(nèi)置的命令歷史,保留并且重新調(diào)用這些命令行。命令歷史保存了輸入的內(nèi)容,允許您再次運(yùn)行一個(gè)以前的命令。許多 Shell 還允許動態(tài)地修改以前的命令以創(chuàng)建新的命令。例如,Bash Shell 使用脫字符號(^)字符以執(zhí)行替換:$ ls -l heroes.txt-rw-r--r--  1 strike strike 174 Mar 1 11:25 heroes.txt$ ^heroes^villainsls -l villians.txtvillians.txt

在這個(gè)示例中,命令行 ^heroes^villains 看上去有些奇怪,它將前一個(gè)命令中的單詞 villains 替換為 heroes(如果沒有提供命令歷史列表中的命令編號,那么這是缺省的行為),并且運(yùn)行這個(gè)結(jié)果,即 ls -l villians.txt。有關(guān)命令行替換的語法,可以參考您的 Shell 文檔。

如果現(xiàn)有的 UNIX 實(shí)用工具和 Shell 的內(nèi)置特性中不包含您希望經(jīng)常使用的某項(xiàng)特性,那么您可以編寫 Shell 腳本 以便(再次)執(zhí)行復(fù)雜的操作。

正如您將在以后的“對話 UNIX文章中看到的,您還可以下載并且構(gòu)建大量的附加 UNIX 實(shí)用工具,通常這些工具以開放源代碼的形式提供。事實(shí)上,使用 Google 或者 Yahoo!,您可以在很短的時(shí)間內(nèi)、輕松地找到并下載一個(gè)合適的解決方案,而不用自己動手創(chuàng)建。(這樣就可以忙中偷閑!而用多余的時(shí)間去看看天上的云彩,好好放松一下。)

當(dāng)然,可以通過許多選項(xiàng)對您的 Shell 進(jìn)行微調(diào),如果可以保持您的首選設(shè)置,并且一次又一次地重復(fù)使用這些設(shè)置,從一個(gè) Shell 到另一個(gè) Shell(比如,在不同的 X 終端窗口中)、在不同的會話中(當(dāng)您注銷登錄并再次登錄)、甚至跨計(jì)算機(jī)(假設(shè)您在多個(gè)平臺上使用相同的 Shell),那就太棒了。

Shell 啟動腳本 可以提供這種持久性。在 Shell 啟動和終止時(shí),將執(zhí)行一系列腳本,以便初始化和重新設(shè)置您的環(huán)境。有些啟動腳本是系統(tǒng)范圍的(由您的系統(tǒng)管理員來配置它們),而其他的一些腳本,您可以根據(jù)需要進(jìn)行自定義。

啟動腳本與微軟的 ®Windows® 中的 INI 文件有所不同。顧名思義,啟動腳本是真正的 Shell 腳本,即為實(shí)現(xiàn)某些工作而編寫的小程序。在這種情況下,無論何時(shí)啟動或終止 Shell,都將運(yùn)行這些 Shell 腳本,并對 Shell 環(huán)境產(chǎn)生影響。

由此開始!

通常,每種 Shell 都提供了一些 Shell 啟動腳本,并且每種 Shell 都規(guī)定了腳本運(yùn)行的順序。一般情況下,至少提供了一個(gè)系統(tǒng)范圍的啟動文件和一個(gè)個(gè)人(每個(gè)用戶的)的啟動文件。可以將整個(gè) Shell 啟動序列看作一種層疊的方式:運(yùn)行(潛在地)多個(gè)腳本,其效果是累積的,并且您可以在后續(xù)的腳本中否定或者改變序列中以前的參數(shù)設(shè)置。

例如,您的系統(tǒng)管理員可能在系統(tǒng)范圍的 Shell 啟動文件中為整個(gè)系統(tǒng)設(shè)置了一個(gè)很有幫助的缺省 Shell 提示符,例如,包括您的用戶名、當(dāng)前工作目錄和命令歷史編號。然而,通過在自己的啟動腳本中,根據(jù)您的喜好重新設(shè)置 Shell 提示,您可以覆蓋這個(gè)文件。否則,如果您不改變系統(tǒng)范圍的設(shè)置,那么它會在您的 Shell 和環(huán)境中生效。

通常,最先執(zhí)行的啟動腳本是系統(tǒng)范圍的,如 /etc/profile,并且由您的系統(tǒng)管理員對它們進(jìn)行管理。系統(tǒng)范圍啟動文件的目的不是干擾您的工作環(huán)境,而是簡化系統(tǒng)特定資源的使用。例如,如果您的系統(tǒng)管理員堅(jiān)持讓您使用安全 Shell(SSH)實(shí)用工具的更新的版本,因?yàn)樵鹊陌姹敬嬖诒娝苤陌踩毕?,他或者她可能將每個(gè)用戶的初始 PATH 變量設(shè)置為 /usr/local/bin:/bin:/usr/bin,這樣一來,將優(yōu)先執(zhí)行在 /usr/local/bin 中找到的可執(zhí)行文件。(如果在 /usr/local/bin 中沒有找到該命令,Shell 將在 /usr/bin 中繼續(xù)查找。)系統(tǒng)范圍的啟動文件也可用于命名打印機(jī),顯示關(guān)于計(jì)劃停機(jī)的公告,并為新用戶提供合理的 Shell 缺省值。(這樣就不會把新手給弄糊涂了。)

在運(yùn)行了系統(tǒng)范圍的腳本之后,Shell 將運(yùn)行用戶特定的啟動腳本。這些腳本文件非常適合保存您最喜歡的別名、環(huán)境設(shè)置和其他首選項(xiàng)。

為 Bash 做好準(zhǔn)備

對于不同的 Shell,啟動腳本的個(gè)數(shù)和名字也有所不同。讓我們來看看 Bash Shell(/bin/bash)的啟動順序。Bash Shell 建立于 Unix 和 Linux® 之上,并且 Bash Shell 通常是新的系統(tǒng)和用戶的缺省 Shell。它也是許多其他 Shell 的代表,因此在這里可以將它作為一個(gè)很好的示例。(如果您使用的是另一種 Shell,可以參考它的文檔或者手冊頁面,以獲取關(guān)于它的啟動腳本名字和處理順序的信息。)

Bash 將搜索六 個(gè)啟動腳本,但是所有這些腳本都是可選的。即使這六個(gè)腳本都存在并且可讀,但是在任何情況下,Bash 僅執(zhí)行這六個(gè)腳本的一個(gè)子集。

如果 /etc/profile 存在并且可以由該用戶進(jìn)行讀取,那么 Bash 將首先執(zhí)行它,這是系統(tǒng)范圍的啟動文件。在讀取了這個(gè)文件之后,Bash 按照順序?qū)ふ?~/.bash_profile、~/.bash_login、~/.profile 和 ~/.bashrc,其中 ~ 是表示該用戶 home 目錄的 Shell 縮寫(也可以表示為 $HOME)。如果您退出 Bash,那么 Shell 將查找 ~/.bash_logout。

究竟執(zhí)行這六個(gè)文件中的哪些,這取決于新的 Shell 的“模式。Shell 可以是登錄 Shell,是或者不是交互的。(登錄 Shell 也是一種交互的 Shell;然而,您可以強(qiáng)制非交互的 Shell 按照登錄 Shell 的方式工作。稍后將詳細(xì)介紹這一內(nèi)容。)

在 UNIX 的早期(二十多年以前),用戶通常通過一個(gè)啞終端來訪問 UNIX 計(jì)算機(jī)。您需要在登錄提示符處輸入用戶 ID 和密碼,而系統(tǒng)將為您的會話產(chǎn)生一個(gè)新的登錄 Shell。在這種環(huán)境中,登錄 Shell 和其他的 Shell 實(shí)例(比如那些運(yùn)行 Shell 腳本的 Shell)通過名字相互區(qū)別:每個(gè)登錄 Shell 的進(jìn)程名字都以一個(gè)連字符作為前綴,如 -bash。這個(gè)特殊的名字(歷史悠久的 UNIX 產(chǎn)物)可以告訴 Shell 為登錄工作運(yùn)行任何特殊的配置。

交互的 Shell 更容易解釋:如果 Shell 對您的輸入(標(biāo)準(zhǔn)輸入)作出反應(yīng)并顯示相應(yīng)的輸出(標(biāo)準(zhǔn)輸出),那么這個(gè) Shell 是交互的。現(xiàn)在,X 終端已經(jīng)取代了啞終端,但是 Shell 模式的約定和范例仍然保留了下來。通常,X 終端作為 -bash 產(chǎn)生 Bash,強(qiáng)制 Bash 執(zhí)行登錄啟動序列。

對于 Bash,交互的登錄 Shell 將運(yùn)行 /etc/profile,如果它存在。(如果使用 bash --login 調(diào)用 Bash,那么非交互的 Shell 也運(yùn)行 /etc/profile。)接下來,交互的登錄 Shell 尋找 ~/.bash_profile,如果這個(gè)腳本存在并且是可讀的,那么將執(zhí)行這個(gè)腳本。否則,Shell 將繼續(xù)嘗試執(zhí)行 ~/.bash_login。如果后面的那個(gè)文件不存在或者是不可讀的,那么 Bash 最后將嘗試執(zhí)行 ~/.profile。Bash 僅運(yùn)行一個(gè)針對個(gè)人的啟動文件,然后立即停止啟動序列。當(dāng) Bash 登錄 Shell 退出時(shí),它將執(zhí)行 ~/.bash_logout。

如果 Bash Shell 是交互的,但不是登錄 Shell,那么 Bash 將嘗試讀取 ~/.bashrc。并不執(zhí)行其他的文件。如果 Bash Shell 是非交互的,那么它將擴(kuò)展 BASH_ENV 環(huán)境變量的值,并執(zhí)行所指定的文件。

當(dāng)然,您可以在 Bash 的標(biāo)準(zhǔn)腳本中調(diào)用自己的腳本,以便提供附加的設(shè)置。特殊的 Shell 縮寫 .(或者它的同義詞 source)表示執(zhí)行另一個(gè) Shell 腳本。例如,如果您希望在交互的登錄 Shell 和交互的非登錄 Shell 之間共享 ~/.bashrc 中的設(shè)置,可以使用下面的命令:

. ~/.bashrc

在 ~/.bash_profile 中。當(dāng) Shell 碰到點(diǎn) (.) 命令時(shí),它將立刻執(zhí)行指定的 Shell 腳本。

深入研究 Shell

研究啟動序列的最好的方法是創(chuàng)建一些簡單的 Shell 啟動文件。例如,如果您運(yùn)行 ssh farfaraway ls 命令,SSH 在遠(yuǎn)程系統(tǒng)上產(chǎn)生的名為 farfaraway 的遠(yuǎn)程 Shell 是一個(gè)登錄 Shell 嗎?是交互的 Shell 嗎?讓我們來找出答案。

清單 1、2、3、和 4 分別地顯示了示例 /etc/profile、~/.bash_ profile、~/.bashrc、和 ~/.bash_logout 文件。(如果這些文件已經(jīng)存在,在您繼續(xù)這個(gè)練習(xí)之前請進(jìn)行備份。要更改 /etc/profile,您需要在您的計(jì)算機(jī)上有超級用戶的權(quán)限。)使用您最喜愛的文本編輯器創(chuàng)建如下所示的文件。

清單 1 顯示了示例 /etc/profile 腳本。這個(gè)文件是第一個(gè)運(yùn)行的啟動文件(如果它存在并且是可讀的)。

清單 1. 示例 /etc/profile 文件

echo "Executing /etc/profile."PATH="/bin:/sbin:/usr/bin:/usr/sbin"export PATH

清單 1 回應(yīng)一條消息作為腳本的開始,并且設(shè)置最小限度的 PATH 變量。同樣地,如果 Shell 是交互的登錄 Shell,那么將運(yùn)行這個(gè)文件。例如,啟動一個(gè)新的 X 終端。您應(yīng)該看到與下面所示類似的內(nèi)容:

Last login: Tue Apr 17 21:06:23 on ttyp1Executing /etc/profile(Interactive, login shell)Executing /Users/strike/.bash_profile(Interactive, login shell)Including /Users/strike/.aliasesstrike @ blackcat 1 $

很好!當(dāng)您在 X 終端中啟動一個(gè)新的登錄 Shell 時(shí),將看到這個(gè)可預(yù)知的序列。請注意 Shell 提示符:它反映出了用戶名、簡寫的主機(jī)名(第一個(gè)點(diǎn)前面的部分)、以及命令編號。

如果您在提示符處輸入 logout 或者 exit,您應(yīng)該看到下面的信息:

strike @ blackcat 31 $ logoutExecuting /Users/strike/.bash_logout(Interactive, login shell)

如前所述,交互的登錄 Shell 將運(yùn)行 ~/.bash_logout。

清單 2 顯示了一個(gè)示例 ~/.bash_profile 文件。這個(gè)文件是用于在啟動時(shí)自定義您的 Shell 的一種可選的方法。

清單 2. 示例 ~/.bash_profile 文件

echo "Executing $HOME/.bash_profile"echo '(Interactive, login shell)'PS1='u @ h # $ 'export PS1PAGER=/usr/bin/lessexport PAGER. .aliases

接下來,讓我們看看當(dāng)您從提示符處啟動一個(gè)新的 Shell 時(shí)發(fā)生了什么。這個(gè)新的 Shell 是交互的,但它不是登錄 Shell。根據(jù)規(guī)則,~/.bashrc 是唯一等待運(yùn)行的文件。

strike @ blackcat 1 $ bashExecuting /Users/strike/.bashrc(Interactive shell)blackcat:~ strike$

并且事實(shí)上,~/.bashrc 是唯一需要執(zhí)行的文件。其證據(jù)就位于提示符中,底部的提示符是缺省的 Bash 提示符,而不是在 ~/.bash_profile 中定義的提示符。

要測試注銷腳本,可以輸入 exit(您不能在非登錄 Shell 中輸入 logout)。您應(yīng)該看到:

blackcat:~ strike$ exitexitExecuting $HOME/.bash_logout(Interactive, login shell)strike @ blackcat 2 $

當(dāng)一個(gè)交互的登錄 Shell 終止的時(shí)候,它將執(zhí)行 ~/.bash_logout。您可以使用這一特性以刪除臨時(shí)文件、復(fù)制文件作為一種簡單備份方法、或者甚至啟動 rsync 以便傳播當(dāng)前會話中所做的任何更改。

清單 3 顯示了一個(gè)示例 ~/.bashrc 文件。這個(gè)文件是用于非交互的 Bash Shell 實(shí)例的初始化文件。

清單 3. 示例 ~/.bashrc 文件

echo "Executing $HOME/.bashrc"echo "(Interactive shell)"PATH="/usr/local/bin:$PATH"export PATH

下面是另一個(gè)實(shí)驗(yàn):當(dāng)您運(yùn)行 SSH 時(shí),會得到哪一種 Shell 呢?讓我們試試兩種變體。(您可以簡單地使用 SSH 以返回到您的本地計(jì)算機(jī),這就好像您從遠(yuǎn)程計(jì)算機(jī)上運(yùn)行 SSH 一樣。)首先,使用 SSH 登錄到遠(yuǎn)程計(jì)算機(jī):

strike @ blackcat 1 $ ssh blackcatLast login: Tue Apr 17 21:17:35 2007Executing /etc/profile(Interactive, login shell)Executing /Users/strike/.bash_profile(Interactive, login shell)Including /Users/strike/.aliasesstrike @ blackcat 1 $ 

正如您所預(yù)期的,運(yùn)行 SSH 以訪問遠(yuǎn)程計(jì)算機(jī)將啟動一個(gè)新的登錄 Shell。接下來,當(dāng)您在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行一個(gè)命令時(shí),又會發(fā)生什么事情呢?答案如下:

strike @ blackcat 3 $ ssh blackcat lsExecuting /Users/strike/.bashrc(Interactive shell)villians.txtheroes.txt

使用 SSH 遠(yuǎn)程地運(yùn)行一個(gè)命令將產(chǎn)生非登錄的交互 Shell。它為什么是交互的呢?這是因?yàn)檫h(yuǎn)程命令的標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出都綁定到了您的鍵盤和顯示器,這正是 SSH 的神奇之處。

清單 4 顯示了 ~/.bash_logout。這個(gè)文件將在 Shell 終止的時(shí)候運(yùn)行。

清單 4. 示例 ~/.bash_logout 文件

echo "Executing $HOME/.bash_logout"echo "(Interactive, login shell)"

關(guān)于啟動文件的有價(jià)值的技巧

您使用 Shell 的次數(shù)越多,那么您就越能夠從在啟動文件中保存您的首選設(shè)置中獲利。下面是一些用于組織您的 Bash 設(shè)置的有價(jià)值的技巧和建議。(您可以在其他的 Shell 中應(yīng)用相似的策略。)

如果您希望在每個(gè) Shell(不管它是什么模式的)中使用的設(shè)置(例如,PATH),那么您可以把這些設(shè)置放入到 ~/.bashrc 中,并在 ~/.bash_profile 中使用 source 訪問文件。

如果您擁有多臺計(jì)算機(jī)(并且您的 home 目錄沒有在它們之間通過網(wǎng)絡(luò)文件系統(tǒng) [NFS] 共享)上的帳號,那么可以使用 rsync 將網(wǎng)絡(luò)上所有計(jì)算機(jī)中的啟動文件保持同步。

如果您需要根據(jù)正在使用的主機(jī)來應(yīng)用某些首選設(shè)置(也就是說,如果系統(tǒng)有特殊的資源,將使用不同的 PATH),那么可以將那些設(shè)置放在一個(gè)單獨(dú)的文件中,并且在 Shell 啟動的過程中使用 source 來訪問它。如果您選擇使用 rsync 來管理您的文件,那么可以在從文件分發(fā)列表中省略主機(jī)特定的文件。

當(dāng)然,您還可以創(chuàng)建一個(gè)全局的腳本,并使用條件和環(huán)境變量 HOSTNAME 以選擇合適的設(shè)置。(Shell 將自動地設(shè)置 HOSTNAME,并且 HOSTNAME 將捕獲完全限定的主機(jī)名。)例如,下面是啟動文件中常見的代碼片段:

case $HOSTNAME in lab.area51.org) PATH=/opt/rocketscIEnce/bin:$PATHPS1='u @ h # $ 'export $PS1;;  alien.area51.org)PATH=/opt/alien/sw/bin:$PATH;; saucer*)PATH=/opt/saucer/bin:$PATHPAGER=lessexport $PAGER;; *)PATH=/usr/local/bin:$PATHesac export $PATH

這里采用了一個(gè) switch 語句,以便將 $HOSTNAME 的值與四個(gè)可能的值進(jìn)行比較:lab.area51.org、alien.area51.org,匹配任何以字符串 saucer* 開頭的主機(jī)名的模式(如 saucer-mars 這樣的主機(jī)名將匹配;如 sauce.tomato.org 這樣的主機(jī)名將不能匹配),以及匹配所有其他內(nèi)容的條件。在這個(gè)示例中,Bash 將星號(*)解釋為 Shell 運(yùn)算符,而不是正則表達(dá)式運(yùn)算符。當(dāng)匹配到某種模式時(shí),將執(zhí)行與該模式相關(guān)聯(lián)的語句。與其他的 switch 語句不同的是,Bash 的case 僅運(yùn)行一組語句。

最后,再來看看其他用戶的 Shell 啟動文件,從中得到一些靈感同時(shí)得到一些經(jīng)驗(yàn)。(某些用戶對這些文件和他們的 home 目錄進(jìn)行了保護(hù),這將使得您無法瀏覽到這些內(nèi)容。)Joe 是否有一個(gè)非常好的、有用的提示符呢?咨詢他如何實(shí)現(xiàn)相同的事情。Jeanette 是否有很多加速鍵或者大量的環(huán)境變量集合,以便從實(shí)用工具方面補(bǔ)充一些特殊的特性呢?與她聊聊關(guān)于她的配置秘訣。最有效的得到思想和代碼的途徑就是咨詢那些在命令行方面具有豐富經(jīng)驗(yàn)的行家。

自定義您的 Shell

喜歡修改軟件和創(chuàng)作修改版本的人,聯(lián)合起來!您可以自定義您的 Shell,在您找到了某個(gè)設(shè)置或者一系列您所喜歡的設(shè)置后,將其保存到啟動文件中,并重復(fù)地使用它們。使用 rsync 或者類似的工具,將您的環(huán)境從一臺計(jì)算機(jī)傳播到另一臺計(jì)算機(jī)。

您的課程到此全部完成。請多花些時(shí)間練習(xí)相關(guān)的技能。

標(biāo)簽: Unix系統(tǒng)
主站蜘蛛池模板: 亚洲综合在线视频 | 久久免费观看视频 | 九一视频在线播放 | 宅女噜噜66国产精品观看免费 | 亚洲a毛片 | 91 在线| 欧美日韩一区二区三区四区 | 不卡一二三区 | 久草高清视频 | 国产一级影片 | 欧美精品久久久久久久久老牛影院 | 亚洲成人精品国产 | 欧美成人二区 | 国产精品久久久久久久久久久久午夜片 | 亚洲精品电影在线观看 | 成人精品一区二区户外勾搭野战 | 毛片免费在线观看 | 久久精品国产亚洲a | 九九久久精品视频 | 亚洲狠狠爱一区二区三区 | 精品国产伦一区二区三区观看体验 | 日韩欧美国产一区二区三区 | 看一级毛片视频 | 蜜桃视频一区二区三区 | 凹凸日日摸日日碰夜夜 | 日本黄色片免费在线观看 | 午夜精品一区二区三区在线视频 | 91精品国产一区二区三区 | 日韩成人av在线播放 | 国产成人99久久亚洲综合精品 | 羞羞视频在线观看免费观看 | 亚洲精品在线视频 | 自拍偷拍第一页 | 日韩免费一区二区 | 日韩91在线 | 在线观看中文字幕 | 九九热这里只有精品6 | 亚洲人人 | 国产在线视频一区 | 在线午夜电影 | 国产久视频 |