成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

對話 UNIX: !$#@*%

瀏覽:5日期:2024-06-13 18:24:32

現在,您已經在 IBM® AIX® 上工作了一段時間了。您已經學習了幾個基本命令,能夠在目錄結構中移動、創建和修改文件、查看正在運行的進程以及管理用戶和系統。這很不錯,但是您希望了解 Unix® 管理員輸入的命令是什么意思。這些命令中包含許多奇怪的符號。在本文中,了解 |、>、>>、<、<<、[[ 和 ]] 等符號在 UNIX 和 Linux® 中的意思,以及如何使用 &&、||、<、<= 和 != 操作符。

管道

如果您熟悉 UNIX,那么管道(或 pipe)會是每天都要接觸到的東西。管道最初是由 Malcolm McIlroy 開發的,可以使用管道把一個命令的標準輸出(stdout)定向到下一個命令的標準輸入(stdin),這樣就形成了連續執行的命令鏈。可以在一個命令行上使用多個管道。在許多時候,一個命令的 stdout 用作下一個命令的 stdin,第二個命令的 stdout 又被重定向到另一個命令的 stdin,依此類推。

例如,在排除故障或執行日常檢查時,大多數 UNIX 管理員首先做的事情之一是查看系統上當前正在運行的進程。清單 1 演示這樣的檢查。

清單 1. 日常進程檢查示例

# ps –ef UID PIDPPID  CSTIMETTY TIME CMDroot  1  0  0  Jul 27 - 0:05 /etc/initroot  53442 151674  0  Jul 27 - 0:00 /usr/sbin/syslogdroot  57426  1  0  Jul 27 - 0:00 /usr/lib/errdemonroot  61510  1  0  Jul 27 - 23:55 /usr/sbin/syncd 60root  65634  1  0  Jul 27 - 0:00 /usr/ccs/bin/shlap64root  82002 110652  0  Jul 27 - 0:24 /usr/lpp/X11/bin/X -x abx  -x dbe -x GLX -D /usr/lib/X11//rgb -T -force :0 -auth /var/dt/A:0-SfIdMaroot  86102  1  0  Jul 27 - 0:00 /usr/lib/methods/ssa_daemon -l ssa0root 106538 151674  0  Jul 27 - 0:01 sendmail: accepting connectionsroot 110652  1  0  Jul 27 - 0:00 /usr/dt/bin/dtlogin -daemonroot 114754 118854  0  Jul 27 - 20:22 dtgreetroot 118854 110652  0  Jul 27 - 0:00 dtlogin <:0>-daemonroot 131088  1  0  Jul 27 - 0:07 /usr/atria/etc/lockmgr  -a /var/adm/atria/almd -q 1024 -u 256 -f 256root 147584  1  0  Jul 27 - 0:01 /usr/sbin/cronroot 155816 151674  0  Jul 27 - 0:04 /usr/sbin/portmaproot 163968 151674  0  Jul 27 - 0:00 /usr/sbin/qdaemonroot 168018 151674  0  Jul 27 - 0:00 /usr/sbin/inetdroot 172116 151674  0  Jul 27 - 0:03 /usr/sbin/xntpdroot 180314 151674  0  Jul 27 - 0:19 /usr/sbin/snmpmibdroot 184414 151674  0  Jul 27 - 0:21 /usr/sbin/aixmibdroot 188512 151674  0  Jul 27 - 0:20 /usr/sbin/hostmibdroot 192608 151674  0  Jul 27 - 7:46 /usr/sbin/muxatmdroot 196718 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.mountdroot 200818 151674  0  Jul 27 - 0:00 /usr/sbin/biod 6root 213108 151674  0  Jul 27 - 0:00 /usr/sbin/nfsd 3891root 221304 245894  0  Jul 27 - 0:05 /bin/nsrexecd daemon 225402 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.statdroot 229498 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.lockdroot 241794 151674  0  Jul 27 - 0:51 /usr/lib/netsvc/yp/ypbindroot 245894  1  0  Jul 27 - 0:00 /bin/nsrexecdroot 253960  1  0  Jul 27 - 0:00 ./mflm_managerroot 274568 151674  0  Jul 27 - 0:00 /usr/sbin/sshd -Droot 282766  1  0  Jul 27  lft0 0:00 /usr/sbin/getty /dev/consoleroot 290958  1  0  Jul 27 - 0:00 /usr/lpp/diagnostics/bin/diagdroot 315646 151674  0  Jul 27 - 0:00 /usr/sbin/lpdroot 319664  1  0  Jul 27 - 0:00 /usr/atria/etc/albd_serverroot 340144 168018  0 12:34:56 - 0:00 rpc.ttdbserver 100083 1root 376846 168018  0  Jul 30 - 0:00 rlogindcormany 409708 569522  0 19:29:27 pts/1 0:00 -kshroot 569522 168018  0 19:29:26 - 0:00 rlogindcormany 733188 409708  3 19:30:34 pts/1 0:00 ps -efroot 749668 168018  0  Jul 30 - 0:00 rlogind

系統上當前正在運行的進程的列表可能像 清單 1 這么簡單;但是,大多數生產系統運行的進程更多,這會使 ps 的輸出更長。為了把這個列表縮短到自己需要的范圍,可以使用管道把 ps –ef 的標準輸出重定向到 grep,從而搜索自己真正希望看到的結果。清單 2 把 清單 1 產生的進程列表重定向到 grep,搜索字符串 “rpc 和 “ksh。

清單 2. 把進程列表重定向到 grep

# ps –ef | grep –E "rpc|ksh"root 196718 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.mountd daemon 225402 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.statdroot 229498 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.lockdroot 340144 168018  0 12:34:56 - 0:00 rpc.ttdbserver 100083 1cormany 409708 569522  0 19:29:27 pts/1 0:00 -kshcormany 733202 409708  0 19:52:20 pts/1 0:00 grep -E rpc|ksh

當多次把 stdout 重定向到 stdin 時,管道的使用方法可以很復雜。在下面的示例中,擴展了前面的 ps 和 grep 示例,把它的 stdout 重定向到另一個 grep,其作用是排除包含 “grep 或 “ttdbserver 的字符串。當最后的 grep 操作完成時,再次使用管道把 stdout 重定向到一個 awk 語句,其作用是輸出進程標識符(PID)大于 200,000 的所有進程:

# ps –ef | grep –E "rpc|ksh" | grep -vE "grep|rpc.ttdbserver" |  awk -v _MAX_PID=200000 '{if ($2 > _MAX_PID) {print "PID for  process",$8,"is greater than", _MAX_PID}}'PID for process /usr/sbin/rpc.statd is greater than 200000PID for process /usr/sbin/rpc.lockd is greater than 200000PID for process -ksh is greater than 200000

圖 1 通過圖形說明命令的 stdout 重定向到后續命令的 stdin 的次序。

圖 1. 管道示例

用 >、>>、< 和 << 執行數據重定向

通過命令行界面(CLI)執行命令的另一個重要方面是,能夠把各種輸出寫到一個設備,或者把來自另一個設備的輸入讀取到命令中。要想寫一個命令的輸出,需要在執行的命令后面加上大于號(> 或 >>)和所需的目標文件名或設備。如果目標文件不存在,而且您對目標目錄有寫權限,那么 > 和 >> 會創建這個文件并根據您的 umask 設置權限,然后把命令的輸出寫到剛創建的文件中。但是,如果這個文件存在,> 會嘗試打開文件并覆蓋整個內容。如果希望在這個文件中追加內容,那么只需使用 >>。可以認為它的作用是把左邊命令的輸出數據流移動到右邊的目標文件中(即 <cmd> -> <output> -> <file>)。

下面的示例執行 “管道 一節中的 ps –ef 示例,并把輸出重定向到文件 ps_out:

# ps –ef | grep –E "rpc|ksh" > ps_out

下面的代碼執行前面擴展的管道示例并把輸出重定向到同一個文件(ps_out),但是追加到當前數據后面:

# ps –ef | grep –E "rpc|ksh" | grep -vE "grep|rpc.ttdbserver" |  awk -v _MAX_PID=200000 '{if ($2 > _MAX_PID) {print "PID for  process",$8,"is greater than", _MAX_PID}}' >> ps_out

清單 3 給出前兩個重定向的輸出。

清單 3. 重定向的輸出

# cat ps_outroot 196718 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.mountd daemon 225402 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.statdroot 229498 151674  0 11:00:27 - 0:00 /usr/sbin/rpc.lockdroot 340144 168018  0 12:34:56 - 0:00 rpc.ttdbserver 100083 1cormany 409708 569522  0 19:29:27 pts/1 0:00 -kshcormany 733202 409708  0 19:52:20 pts/1 0:00 grep -E rpc|kshPID for process /usr/sbin/rpc.statd is greater than 200000PID for process /usr/sbin/rpc.lockd is greater than 200000PID for process -ksh is greater than 200000

當只使用 > 重定向輸出時,只重定向命令的 stdout。但是,除了 stdout,還有 stderr 輸出:前者表示為 1,后者表示為 2。在 Unix 中輸出重定向沒有區別。只需在 > 前面加上所需的輸出類型(例如,1>、2>),告訴 shell 要把輸出路由到哪里。

清單 4 嘗試列出 fileA.tar.bz2 和 fileC.tar.bz2。但是,如第一個命令(ls)所示,fileC.tar.bz2 不存在。好在可以把 stdout 和 stderr 分別重定向到 ls.out 和 ls.err,這樣就能夠看到錯誤消息。

清單 4. 列出文件 fileA.tar.bz2 和 fileC.tar.bz2

# lsfileA.tar.bz2  fileAA.tar.bz2 fileB.tar.bz2  fileBB.tar.bz2# ls fileA.tar.bz2 fileC.tar.bz2 1> ls.out 2> ls.err# cat ls.outfileA.tar.bz2# cat ls.errls: 0653-341 The file fileC.tar.bz2 does not exist.

在 AIX 中,對 stdout 和 stderr 使用 > 和 >> 時應用相同的規則。例如,以后的測試可以使用相同的輸出文件,見 清單 5。

清單 5. 使用輸出文件進行以后的測試

# ls fileB.tar.bz2 fileD.tar.bz2 1>> ls.out 2>> ls.err# cat ls.outfileA.tar.bz2fileB.tar.bz2# cat ls.errls: 0653-341 The file fileC.tar.bz2 does not exist.ls: 0653-341 The file fileD.tar.bz2 does not exist.

有時候,可能需要把 stdout 和 stderr 寫到同一個文件或設備。這有兩種方法。第一種方法是把 1> 和 2> 重定向到同一個文件:

# ls fileA.tar.bz2 fileC.tar.bz2 1> ls.out 2> ls.out# cat ls.outfileA.tar.bz2ls: 0653-341 The file fileC.tar.bz2 does not exist.

第二個方法更簡單更快速,有經驗的 Unix 用戶更喜歡采用這種方法:

# ls fileA.tar.bz2 fileC.tar.bz2 > ls.out 2>&1# cat ls.outfileA.tar.bz2ls: 0653-341 The file fileC.tar.bz2 does not exist.

我們分解這個語句。首先,執行 ls fileA.tar.bz2 fileC.tar.bz2。然后使用 > ls.out 把 stdout 重定向到 ls.out,使用 2>&1 把 stderr 重定向到前面重定向的 stdout(ls.out)。

請記住,可以把輸出重定向到文件和其他設備。可以把數據重定向到打印機、軟盤、終端類型(TTY)以及各種其他設備。例如,如果希望把一個消息發送給所有會話(或 TTY)上的某個用戶,那么只需循環處理 who 并把一個消息重定向到 TTY(如果您有足夠的權限的話),見 清單 6。

清單 6. 把消息重定向到一個 TTY

# for _TTY in 'who | grep "cormany" | awk '{print $2}''> do>  _TTY="/dev/${_TTY}">  echo "Sending message to cormany on ${_TTY}">  echo "Test Message to cormany@${_TTY}" > ${_TTY}> doneSending message to cormany on /dev/pts/13Test Message to cormany@/dev/pts/13Sending message to cormany on /dev/pts/14

stdin 而不是 stdout

盡管使用 > 和 >> 對于大多數人是一個相當容易掌握的概念,但是有的人在使用小于號(< 和 <<)時常常有困難。在考慮 > 和 >> 時,認為它們把左邊命令的輸出數據流移動到右邊的目標文件中,這樣最容易理解。同樣的方法也適用于 < 和 <<。在使用 < 時,本質上是用一個已經提供的 stdin 執行一個命令。也就是說,把已經提供的數據提供給左邊的命令作為 stdin(即 <cmd> <- <data>)。

例如,假設希望把一個包含 ASCII 文本文件的電子郵件發送給另一個用戶。可以使用管道把 cat 的 stdout 重定向到 mail 的 stdin(即 cat mail_file.out | mail –s "Here's your E-mail!" acormany@yahoo.com),也可以把文件的內容重定向到 mail 命令的 stdin:

# mail –s "Here's your E-mail!" acormany@yahoo.com < mail_file.out

使用 <<(也稱為 here-document)可以節省格式化時間,并且使命令執行的處理更容易。通過使用 <<,文本字符串被重定向到執行的命令作為 stdin,但是可以繼續輸入信息,直到到達終止標識符。只需輸入命令,輸入 << 和終止標識符,然后輸入需要的任何內容,最后在一個新行上輸入終止標識符。通過使用 here-document,可以保留空格、換行等。

例如,Unix 必須單獨處理下面五個 echo 語句:

# echo "Line 1"Line 1# echo "Line 2"Line 2# echo "Line 3"Line 3# echo "Line 4"Line 4# echo "Line 5"Line 5

可以用以下代碼替換多個 echo 語句,UNIX 只需處理一次執行:

# cat << EOF> Line 1> Line 2> Line 3> Line 4> Line 5> EOFLine 1Line 2Line 3Line 4Line 5

還可以使用制表符讓 shell 腳本中的內容更整潔一點,這只需要在 << 和終止標識符之間放上一個連字符(-):

# cat <<- ATC>Line 1>Line 2>Line 3>Line 4>Line 5> ATCLine 1Line 2Line 3Line 4Line 5

清單 7 給出的示例演示如何結合使用本文到目前為止討論的東西。

清單 7. 組合 CLI

# cat redirect_example#!/usr/bin/kshcat <<- ATC | sed "s/^/Redirect Example => /g" >> atc.outThis is an example of how to redirectstdout to a file as well as pipe stdout into stdinof another command (i.e. sed), all done insidea here-document.Cool eh?ATC

現在,看看關于重定向和管道的腳本。

# ./redirect_example# cat atc.outRedirect Example => This is an example of how to redirectRedirect Example => stdout to a file as well as pipe stdout into stdinRedirect Example => of another command (i.e. sed), all done insideRedirect Example => a here-document.Redirect Example =>Redirect Example => Cool eh?

子 shell

有時候,需要一起執行幾個命令。例如,如果希望在另一個目錄中執行某一操作,可以使用 清單 8 中的代碼。

清單 8. 同時執行幾個命令

# pwd/home/cormany# cd testdir# tar –cf ls_output.tar ls.out?# pwd/home/cormany/testdir

這是有效的,但是要注意,在執行這些步驟之后,您就不再位于原來的目錄中了。通過把這些命令放在它們自己的子 shell 中,它們會作為子 shell 的實例執行。清單 9 演示如何使用子 shell 執行相同的代碼。

清單 9. 使用子 shell 同時執行幾個命令

# pwd/home/cormany# (cd testdir ; tar -cf ls_output.tar ls.out?)# pwd/home/cormany

test 命令、[ ] 和 [[ ]]

在編寫 shell 腳本或用任何現代語言編寫程序時,運算表達式或值的能力都很重要。Unix 一直通過 test 命令提供這一功能。正如 test 的手冊頁指出的,test 命令運算表達式參數的值,如果表達式的值是 True,就返回零(True)退出值。關于 test 的定義和所有可用條件的更多信息,請參見 test 手冊頁。

要想使用 test 命令,只需給這個命令提供適當的標志和文件名。當 test 運算完表達式時,返回到命令提示,可以在這里檢查返回碼,見 清單 10。

清單 10. 檢查返回碼

# ls –l-rwxr-xr-x1 cormany atc 786 Feb 22 16:11 check_file-rw-r--r--1 cormany atc  0 Aug 04 20:57 emptyfile# test -f emptyfile# echo $?0# test -f badfilename# echo $?1

根據定義,如果表達式值是 True,那么 test 返回零退出值,否則返回非零退出值(即 1)。在 清單 10 中,找到了文件 emptyfile,所以 test 返回 0;但是沒有找到文件 badfilename,所以返回 1。

使用 test 的另一種方法是把要運算的表達式放在單層方括號([ ])中。使用 test 命令或把它替換為 [ ] 會返回相同的值:

# [ -f emptyfile ]# echo $?0# [ -f badfilename ]# echo $?1

使用單層方括號([ ])還是雙層方括號([[ ]])是個人習慣問題,實際上取決于您如何學習命令和 shell 腳本編程。但是請記住,這兩者之間有一些差異。盡管 [ ] 和 [[ ]] 在運算期間使用相同的測試操作符,但是它們使用不同的邏輯操作符。

操作符

在 ksh(AIX 中使用的默認 shell)中,以及 Unix 和 Linux 使用的其他 shell 中,一定要知道如何使用測試、邏輯和替換操作符。

測試操作符

在編寫 shell 腳本時,測試操作符對于檢查錯誤和檢查文件狀態很重要。下面只是可以在 ksh 和其他標準 UNIX shell 中使用的一部分測試操作符:

-d <file>:<file> 是一個目錄

-e <flle>:<file> 存在

-f <file>:<file> 是一個常規文件

-n <string>:<string> 不是 NULL

-r <file>:用戶對 <file> 有讀權限

-s <file>:<file> 的大小大于 0

-w <file>:用戶對 <file> 有寫權限

-x <file>:用戶對 <file> 有執行權限

-z <string>:<string> 是 null

-L <file>:<file> 是一個符號鏈接

請記住,在 Unix 目錄中,設備、符號鏈接和其他對象都是文件,所以上面的測試操作符適用于所有類型的文件。

每個人都有自己的 shell 腳本編程風格。無論在測試語句中使用 [[ ]] 還是 [ ],上面的測試操作符的作用是相同的。本文使用 [[ ]]。清單 11 演示如何使用上面列出的幾個測試操作符。

清單 11. 使用測試操作符

#!/usr/bin/kshwhile truedo echo "nEnter file to check: c" read _FNAME if [[ ! -e "${_FNAME}" ]] thenecho "Unable to find file '${_FNAME}'"continue fi if [[ -f "${_FNAME}" ]] thenecho "${_FNAME} is a file." elif [[ -d "${_FNAME}" ]] thenecho "${_FNAME} is a Directory." elif [[ -L "${_FNAME}" ]] thenecho "${_FNAME} is a symbolic link." elseecho "Unable to determine file type for '${_FNAME}'" fi [[ -r "${_FNAME}" ]] && echo "User ${USER} can read '${_FNAME}'" [[ -w "${_FNAME}" ]] && echo "User ${USER} can write to '${_FNAME}'" [[ -x "${_FNAME}" ]] && echo "User ${USER} can execute '${_FNAME}'" if [[ -s "${_FNAME}" ]] thenecho "${_FNAME} is NOT empty." elseecho "${_FNAME} is empty." fidone

標簽: Unix系統
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美日高清视频| 欧美激情一区二区三区全黄| 日韩免费看网站| 天天操天天综合网| 日韩视频一区| 成人欧美一区二区三区1314| 国产精品xnxxcom| 久久久久久久电影| 成人免费毛片a| 欧美日韩mp4| 精品写真视频在线观看 | 欧美阿v一级看视频| 欧美电视剧在线看免费| 国产乱码精品一区二区三区忘忧草 | 日韩美一区二区三区| 国产精品99久| 精品精品欲导航| 不卡视频一二三| 欧美精品一区二区三区很污很色的 | 欧美午夜精品电影| 蜜桃一区二区三区在线| 欧美影院一区二区三区| 麻豆精品一二三| 欧美图区在线视频| 久久97超碰国产精品超碰| 在线观看亚洲成人| 九一久久久久久| 欧美精品777| 成人免费高清在线| 国产片一区二区| 一二三区精品| 午夜精品久久久久久久99樱桃| 欧美亚洲一区| 日本视频免费一区| 欧美日韩国产乱码电影| 成人美女视频在线观看18| 国产午夜亚洲精品羞羞网站| 亚洲黑丝一区二区| 亚洲sss视频在线视频| 91久久一区二区| 国产精品小仙女| 久久人人爽爽爽人久久久| 黄色精品一区| 亚洲成a人片在线不卡一二三区| 久久久精品日韩| 国产综合色精品一区二区三区| 久久综合九色欧美综合狠狠| 韩国在线视频一区| 五月婷婷久久丁香| 欧美一区二区三区视频在线 | 国产日产精品一区二区三区四区的观看方式 | 日本高清不卡视频| 国产99久久久久| 中文字幕亚洲精品在线观看| 国产日韩一区二区三区在线| 秋霞av亚洲一区二区三| 欧美一级日韩一级| 黄色日韩在线| 琪琪一区二区三区| 26uuu亚洲婷婷狠狠天堂| 激情综合中文娱乐网| 午夜久久久久久| 欧美一区二区三区日韩| 欧美日韩妖精视频| 亚洲妇女屁股眼交7| 91麻豆精品国产91久久久资源速度| 99久久久久久| 一区二区三区不卡在线观看| 在线视频国内自拍亚洲视频| 成人av在线一区二区三区| 中文字幕一区二区三区视频| 老牛国产精品一区的观看方式| 国产91对白在线观看九色| 国产精品美女久久久久高潮| 在线观看网站黄不卡| 99久久99久久精品免费看蜜桃| **性色生活片久久毛片| 色菇凉天天综合网| eeuss鲁一区二区三区| 一区二区在线观看视频在线观看| 欧美日韩国产高清一区| 欧美私人啪啪vps| 久久激五月天综合精品| 国产日韩欧美精品综合| 久久精品网址| 91丨porny丨中文| 天堂va蜜桃一区二区三区| 日韩亚洲欧美成人一区| 国产精品午夜av在线| 国产成人免费视频精品含羞草妖精| 国产精品成人午夜| 欧美日韩一级片网站| 欧美日韩一区自拍| 蜜桃在线一区二区三区| 国产精品无人区| 欧美日韩免费观看一区二区三区| 国产精品地址| 国产伦精品一区二区三区免费| 亚洲精品国产成人久久av盗摄| 日韩欧美一区二区视频| 亚洲中字黄色| 牛夜精品久久久久久久99黑人 | 91精品国产美女浴室洗澡无遮挡| 亚洲黄色av| 成人av免费网站| 日韩精品国产精品| 国产精品嫩草影院com| 在线综合视频播放| 久久国产成人| 欧美国产专区| 国产高清无密码一区二区三区| 亚洲免费毛片网站| 91精品黄色片免费大全| 亚洲一区二区四区| 欧美激情aⅴ一区二区三区| 老色鬼精品视频在线观看播放| 亚洲色图在线视频| 精品欧美乱码久久久久久| 91久久精品一区二区三| 亚洲欧洲三级| 成+人+亚洲+综合天堂| 日韩av中文字幕一区二区三区| 国产精品欧美综合在线| 欧美一区二区在线看| 麻豆精品视频| 黄色成人在线网址| 99精品在线免费| 国产原创一区二区| 日韩国产高清在线| 亚洲欧美日韩在线| 国产欧美日产一区| 日韩精品专区在线| 欧美日韩一区二区三区不卡| 国产精品一国产精品k频道56| 欧美激情视频一区二区三区在线播放 | 成人avav在线| 老司机精品视频一区二区三区| 亚洲精品成人少妇| 国产欧美一区二区精品仙草咪 | 欧美日韩国产综合草草| 亚洲一区二区免费看| 亚洲天堂久久| 99久久国产免费看| 成人午夜视频在线| 久久99精品国产.久久久久久| 视频一区免费在线观看| 一区二区三区在线观看动漫 | 久久久夜色精品亚洲| 欧美一级日韩一级| 欧美日韩国产欧美日美国产精品| 免费在线播放第一区高清av| 亚洲高清在线播放| 韩国欧美一区| 欧美私人啪啪vps| 欧美成人日韩| 91香蕉视频黄| 91偷拍与自偷拍精品| av资源网一区| 国产高清视频一区| 国产一区二区影院| 精品中文字幕一区二区| 免费人成精品欧美精品| 天天色图综合网| 日本最新不卡在线| 美脚の诱脚舐め脚责91| 日欧美一区二区| 丝袜诱惑亚洲看片| 香蕉影视欧美成人| 亚洲地区一二三色| 亚洲韩国精品一区| 亚洲国产精品一区二区久久恐怖片 | 一区二区三区产品免费精品久久75| 亚洲欧洲精品天堂一级| 日韩毛片一二三区| 亚洲女与黑人做爰| 亚洲免费观看高清完整 | 国产一区二区三区精品视频| 国产精一品亚洲二区在线视频| 国内成人免费视频| 国产精品99久| 成人精品一区二区三区四区| 成人精品一区二区三区中文字幕| 成人午夜私人影院| 91最新地址在线播放| 99国产欧美另类久久久精品 | 在线观看一区不卡| 欧美精品一二三| 欧美丰满高潮xxxx喷水动漫| 欧美日本一道本在线视频| 欧美浪妇xxxx高跟鞋交| 日韩一级大片在线观看| 久久久亚洲精华液精华液精华液| 国产午夜精品在线观看| 中文字幕在线观看不卡| 亚洲综合在线视频| 日本不卡不码高清免费观看| 久久se精品一区精品二区| 国产精品一区专区| 91在线免费视频观看| 伊人精品在线|