97**国产露脸精品国产,国内精品免费一区二区三区,国产精品久久久久久久久妇女,国内一区二区三区精品视频

您現在所在的位置:首頁 >關于奇酷 > 行業動態 > 40 個簡單又有效的 Linux Shell 腳本示例

40 個簡單又有效的 Linux Shell 腳本示例

來源:奇酷教育 發表于:

40 個簡單又有效的 Linux Shell 腳本示例

  歷史上,shell 一直是類 Unix 系統的本地命令行解釋器。它已被證明是 Unix 的主要功能之一,并發展成為一個全新的主題。Linux 提供了各種功能強大的 shell,包括 Bash、Zsh、Tcsh 和 Ksh。這些外殼最令人驚訝的特性之一是其可編程性。創建簡單而有效的 Linux shell 腳本來處理日常工作非常容易。

 
  1.Hello World
  程序員經常通過學習 hello world 程序來學習新語言。這是一個簡單的程序,將字符串 “HelloWorld” 打印到標準輸出中。然后,使用 vim 或 nano 等編輯器創建 hello-world.sh 文件,并將以下行復制到其中。
 
  #!/bin/bash
  echo "Hello World"
  保存并退出文件。接下來,您需要使用以下命令使該文件可執行。
 
  $ chmod a+x hello-world.sh
  可以使用以下兩個命令中的任何一個來運行此命令。
 
  $ bash hello-world.sh
  $ ./hello-world.sh
  它將打印出傳遞給腳本內部回顯的字符串。
 
  2.使用 echo 打印
  echo 命令用于在 bash 中打印信息。它類似于 C 函數 “printf”,并提供了許多常見選項,包括轉義序列和重定向。將以下行復制到名為 echo.sh 的文件中,并使其可執行,如上所述。
 
  #!/bin/bash
  echo "Printing text"
  echo -n "Printing text without newline"
  echo -e "\nRemoving \t special \t characters\n"
  運行腳本以查看其功能。-e 選項用于告訴 echo 傳遞給它的字符串包含特殊字符,需要擴展功能。
 
  3.使用注釋
  注釋對文檔很有用,是高質量代碼庫的要求。將注釋放在處理關鍵邏輯的代碼中是一種常見的做法。要注釋掉一行,只需在其前面使用 #(hash)字符。例如,請查看下面的 bash 腳本示例。
 
  #!/bin/bash
 
  # Adding two values
  ((sum=25+35))
 
  #Print the result
  echo $sum
  此腳本將輸出數字 60。首先,在某些行之前使用 #檢查注釋的使用方式。不過,第一行是一個例外。它被稱為 shebang,讓系統知道在運行這個腳本時要使用哪個解釋器。
 
  4.多行注釋
  許多人使用多行注釋來記錄他們的 shell 腳本。在下一個名為 comment.sh 的腳本中檢查這是如何完成的。
 
  #!/bin/bash
  : '
  This script calculates
  the square of 5.
  '
  ((area=5*5))
  echo $area
  注意多行注釋是如何放置在內部的:“和” 字符。
 
  5.While 循環
  while 循環構造用于多次運行某些指令。查看以下名為 while.sh 的腳本,以更好地理解此概念。
 
  #!/bin/bash
  i=0
 
  while [ $i -le 2 ]
  do
  echo Number: $i
  ((i++))
  done
 
  因此,while 循環采用以下形式。
 
  while [ condition ]
  do
  commands 1
  commands n
  done
  方括號周圍的空格是必填的。
 
  6.For 循環
  for 循環是另一種廣泛使用的 bashshell 構造,它允許用戶高效地迭代代碼。下面演示了一個簡單的示例。
 
  #!/bin/bash
 
  for (( counter=1; counter<=10; counter++ ))
  do
  echo -n "$counter "
  done
 
  printf "\n"
  7.接收用戶輸入
  #!/bin/bash
 
  echo -n "Enter Something:"
  read something
 
  echo "You Entered: $something"
  8.If 語句
  if CONDITION 
  then
  STATEMENTS
  fi
  只有當條件為真時,才會執行這些語句。fi 關鍵字用于標記 if 語句的結尾。下面顯示了一個快速示例。
 
  > #!/bin/bash
  > echo -n "Enter a number:"
  > read num
  > if [[$num -gt 10]]
  > then
  > echo "Number is greater than 10."
  > fi
  如果通過輸入提供的數字大于 10,上述程序將僅顯示輸出。-gt 表示大于;類似地 - lt 表示小于 - le 表示小于等于;且 - ge 表示大于等于。此外,還需要 [[]]。
 
  9.使用 If Else 進行更多控制
  將 else 構造與 if 結合起來,可以更好地控制腳本的邏輯。下面顯示了一個簡單的示例。
 
  #!/bin/bash
 
  read n
  if [ $n -lt 10 ];
  then
  echo "It is a one digit number"
  else
  echo "It is a two digit number"
  fi
  其他部分需要放在 if 的動作部分之后和 fi 之前。
 
  10.使用 AND 運算符
  AND 運算符允許我們的程序檢查是否同時滿足多個條件。由 AND 運算符分隔的所有部分必須為 true。否則,包含 AND 的語句將返回 false。查看下面的 bash 腳本示例,以更好地了解 AND 的工作原理。
 
  #!/bin/bash
 
  echo -n "Enter Number:"
  read num
 
  if [[ ( $num -lt 10 ) && ( $num%2 -eq 0 ) ]]; then
  echo "Even Number"
  else
  echo "Odd Number"
  fi
  AND 運算符由 && 符號表示。
 
  11.使用 OR 運算符
  OR 運算符是另一個關鍵的構造,它允許我們在腳本中實現復雜、健壯的編程邏輯。與 AND 相反,當 OR 運算符的任一操作數為真時,由 OR 運算符組成的語句返回真。僅當由 OR 分隔的每個操作數為假時,它才返回假。
 
  #!/bin/bash
 
  echo -n "Enter any number:"
  read n
 
  if [[ ( $n -eq 15 || $n -eq 45 ) ]]
  then
  echo "You won"
  else
  echo "You lost!"
  fi
  這個簡單的示例演示了 OR 運算符如何在 Linuxshell 腳本中工作。只有當用戶輸入數字 15 或 45 時,它才會宣布用戶為獲勝者。|| 符號表示 OR 運算符。
 
  12.使用 El if
  elif 語句代表 else if,并為實現鏈邏輯提供了一種方便的方法。通過評估以下示例,了解 elif 的工作原理。
 
  #!/bin/bash
 
  echo -n "Enter a number: "
  read num
 
  if [[ $num -gt 10 ]]
  then
  echo "Number is greater than 10."
  elif [[ $num -eq 10 ]]
  then
  echo "Number is equal to 10."
  else
  echo "Number is less than 10."
  fi
  上面的程序是不言自明的,所以我們不會逐行剖析它。相反,更改腳本中的變量名稱和值等部分,以檢查它們如何一起工作。
 
  13.case 條件
  . switch 構造是 Linux bash 腳本提供的另一個強大功能。它可以用于需要嵌套條件的地方,但不希望使用復雜的 if-else elif 鏈。看看下一個例子。
 
  #!/bin/bash
 
  echo -n "Enter a number: "
  read num
 
  case $num in
  100)
  echo "Hundred!!" ;;
  200)
  echo "Double Hundred!!" ;;
  *)
  echo "Neither 100 nor 200" ;;
  esac
  條件寫在 case 和 esac 關鍵字之間。*)用于匹配除 100 和 200 以外的所有輸入。
 
  14.命令行參數
  在許多情況下,直接從命令 shell 獲取參數是有益的。下面的示例演示了如何在 bash 中執行此操作。
 
  #!/bin/bash
  echo "Total arguments : $#"
  echo "First Argument = $1"
  echo "Second Argument = $2"
  運行此腳本時,在其名稱后添加兩個附加參數。我將其命名為 test.sh,調用過程概述如下。
 
  $ ./test.sh Hey Howdy
  因此,1、用于訪問第一個參數;2、用于訪問第二個參數,依此類推。最后,3、用于獲取參數總數。
 
  15.使用名稱獲取參數
  下面的示例顯示了如何獲取帶有名稱的命令行參數。
 
  #!/bin/bash
 
  for arg in "$@"
  do
  index=$(echo $arg | cut -f1 -d=)
  val=$(echo $arg | cut -f2 -d=)
  case $index in
  X) x=$val;;
  Y) y=$val;;
  *)
  esac
  done
  ((result=x+y))
  echo "X+Y=$result"
  將此腳本命名為 test.sh,并按如下所示調用它。
 
  $ ./test.sh X=44 Y=100
  它應該返回 X+Y=144。這里的參數存儲在 “$@” 中,腳本使用 Linuxcut 命令獲取它們。
 
  16.連接字符串
  字符串處理對于廣泛的現代 bash 腳本來說非常重要。值得慶幸的是,它在 bash 中更加舒適,并允許以更精確、簡潔的方式實現這一點。請參見下面的示例,了解 bash 字符串連接。
 
  #!/bin/bash
 
  string1="Ubuntu"
  string2="Pit"
  string=$string1$string2
  echo "$string is a great resource for Linux beginners."
  17.字符串截取
  與許多編程語言不同,bash 不提供任何用于剪切字符串部分的內置函數。然而,下面的示例演示了如何使用參數展開來實現這一點。
 
  #!/bin/bash
  Str="Learn Bash Commands from UbuntuPit"
  subStr=${Str:0:20}
  echo $subStr
  該腳本應打印出 “學習 Bash 命令” 作為其輸出。參數展開形式為 ${VAR_NAME:S:L}。這里,S 表示起始位置,L 表示長度。
 
  18.使用 cut 做截取
  可以在腳本中使用 Linux cut 命令來截取字符串的一部分,也就是子字符串。下一個示例顯示了如何做到這一點。
 
  #!/bin/bash
  Str="Learn Bash Commands from UbuntuPit"
  #subStr=${Str:0:20}
 
  subStr=$(echo $Str| cut -d ' ' -f 1-3)
  echo $subStr
  19.添加兩個值
  在 Linux shell 腳本中執行算術運算非常容易。下面的示例演示了如何從用戶接收兩個數字作為輸入并將它們相加。
 
  #!/bin/bash
  echo -n "Enter first number:"
  read x
  echo -n "Enter second number:"
  read y
  (( sum=x+y ))
  echo "The result of addition=$sum"
  如您所見,在 bash 中添加數字相當簡單。
 
  20.添加多個值
  您可以使用循環獲取多個用戶輸入并將其添加到腳本中。以下示例顯示了這一點。
 
  #!/bin/bash
  sum=0
  for (( counter=1; counter<5; counter++ ))
  do
  echo -n "Enter Your Number:"
  read n
  (( sum+=n ))
  #echo -n "$counter "
  done
  printf "\n"
  echo "Result is: $sum"
  但是,省略 (()) 將導致字符串串聯而不是相加。所以,在你的程序中檢查類似的情況。
 
  21.Bash 中的函數
  與任何編程方言一樣,函數在 Linux shell 腳本中扮演著重要角色。它們允許管理員創建自定義代碼塊以供頻繁使用。下面的演示將概述函數如何在 Linux bash 腳本中工作。
 
  #!/bin/bash
  function Add()
  {
  echo -n "Enter a Number: "
  read x
  echo -n "Enter another Number: "
  read y
  echo "Adiition is: $(( x+y ))"
  }
 
  Add
  這里我們像以前一樣添加了兩個數字。但在這里,我們使用了一個名為 Add 的函數來完成這項工作。因此,每當您需要再次添加時,只需調用此函數,而不必再次編寫該部分。
 
  22.具有返回值的函數
  最神奇的功能之一是允許數據從一個函數傳遞到另一個函數。它在各種場景中都很有用。查看下一個示例。
 
  #!/bin/bash
 
  function Greet() {
 
  str="Hello $name, what brings you to UbuntuPit.com?"
  echo $str
  }
 
  echo "-> what's your name?"
  read name
 
  val=$(Greet)
  echo -e "-> $val"
  這里,輸出包含從 Greet()函數接收的數據。
 
  23.從 Bash 腳本創建目錄
  使用 shell 腳本運行系統命令的能力使開發人員的工作效率大大提高。下面的簡單示例將向您展示如何在 shell 腳本中創建目錄。
 
  #!/bin/bash
  echo -n "Enter directory name ->"
  read newdir
  cmd="mkdir $newdir"
  eval $cmd
  該腳本只需調用標準 shell 命令 mkdir,并在仔細查看時將目錄名傳遞給它。這個程序應該在文件系統中創建一個目錄。您還可以傳遞命令以在 backticks(“)內部執行,如下所示。
 
  `mkdir $newdir`
  24.確認存在后創建目錄
  如果當前工作目錄中已包含同名文件夾,則上述程序將無法運行。例如,下面的程序將檢查是否存在名為 $dir 的文件夾,如果找不到,則只創建一個。
 
  #!/bin/bash
  echo -n "Enter directory name ->"
  read dir
  if [ -d "$dir" ]
  then
  echo "Directory exists"
  else
  `mkdir $dir`
  echo "Directory created"
  fi
  使用 eval 編寫此程序以提高 bash 腳本編寫技能。
 
  25.讀取文件
  Bash 腳本允許用戶非常有效地讀取文件。下面的示例將展示如何使用 shell 腳本讀取文件。首先,創建一個名為 editors.txt 的文件,其中包含以下內容。
 
  1. Vim 
  2. Emacs 
  3. ed 
  4. nano 
  5. Code
  此腳本將輸出上述 5 行中的每一行。
 
  #!/bin/bash
  file='editors.txt'
  while read line; do
  echo $line
  done < $file
  26.刪除文件
  以下程序將演示如何在 Linux shell 腳本中刪除文件。程序將首先要求用戶提供文件名作為輸入,如果文件名存在,則將其刪除。Linux rm 命令在此處執行刪除操作。
 
  #!/bin/bash
  echo -n "Enter filename ->"
  read name
  rm -i $name
  讓我們輸入 editors.txt 作為文件名,并在要求確認時按 y。它應該刪除該文件。
 
  27.附加到文件
  下面的 shell 腳本示例將向您展示如何使用 bash 腳本將數據附加到文件系統上的文件。它向早期的 editors.txt 文件添加了一行。
 
  #!/bin/bash
  echo "Before appending the file"
  cat editors.txt
  echo "6. NotePad++" >> editors.txt
  echo "After appending the file"
  cat editors.txt
  現在您應該注意到,我們直接從 Linux bash 腳本使用日常終端命令。
 
  28.測試文件存在
  下一個 shell 腳本示例顯示如何檢查 bash 程序中文件的存在。
 
  #!/bin/bash
  filename=$1
  if [ -f "$filename" ]; then
  echo "File exists"
  else
  echo "File does not exist"
  fi
  我們直接從命令行傳遞文件名作為參數。
 
  29.從 Shell 腳本發送郵件
  從 bash 腳本發送電子郵件非常簡單。下面的簡單示例將演示一種從 bash 應用程序執行此操作的方法。
 
  #!/bin/bash
  recipient=”admin@example.com”
  subject=”Greetings”
  message=”Welcome to UbuntuPit”
  `mail -s $subject $recipient <<< $message`
  它將向收件人發送包含給定主題和消息的電子郵件。
 
  30.解析日期和時間
  下一個 bash 腳本示例將向您展示如何使用腳本處理日期和時間。同樣,Linuxdate 命令用于獲取必要的信息,我們的程序執行解析。
 
  #!/bin/bash
  year=`date +%Y`
  month=`date +%m`
  day=`date +%d`
  hour=`date +%H`
  minute=`date +%M`
  second=`date +%S`
  echo `date`
  echo "Current Date is: $day-$month-$year"
  echo "Current Time is: $hour:$minute:$second"
  運行此程序以了解其工作原理。此外,嘗試從終端運行 date 命令。
 
  31.sleep 命令
  sleep 命令允許 shell 腳本在指令之間暫停。它在許多場景中都很有用,例如執行系統級作業。下一個示例顯示了 shell 腳本中的 sleep 命令。
 
  #!/bin/bash
  echo "How long to wait?"
  read time
  sleep $time
  echo "Waited for $time seconds!"
  該程序暫停最后一條指令的執行,直到 $time 秒,在本例中,用戶提供了這一點。
 
  32.wait 命令
  wait 命令用于暫停 Linux bash 腳本中的系統進程。查看下面的示例,詳細了解這在 bash 中的工作方式。
 
  #!/bin/bash
  echo "Testing wait command"
  sleep 5 &
  pid=$!
  kill $pid
  wait $pid
  echo $pid was terminated.
  33.顯示上次更新的文件
  有時,您可能需要為某些操作查找最后更新的文件。下面的簡單程序向我們展示了如何在 bash 中使用 awk 命令執行此操作。它將列出當前工作目錄中最近更新或創建的文件。 #!/bin/bash
 
  ls -lrt | grep ^- | awk 'END{print $NF}'
  為了簡單起見,我們將避免在本示例中描述 awk 的功能。相反,您可以簡單地復制此代碼來完成任務。
 
  34.添加批處理擴展
  下面的示例將對目錄中的所有文件應用自定義擴展名。創建一個新目錄,并將一些文件放在其中以供演示。我的文件夾共有五個文件,每個文件名為 test,后跟(0-4)。我已將此腳本編程為在文件末尾添加(.UP)。您可以添加所需的任何擴展名。
 
  #!/bin/bash
  dir=$1
  for file in `ls $1/*`
  do
  mv $file $file.UP
  done
  首先,不要從任何常規目錄嘗試此腳本;相反,請從測試目錄運行此命令。此外,您需要提供文件的目錄名作為命令行參數。對當前工作目錄使用句點(.)。
 
  35.打印文件或目錄的數量
  下面的 Linuxbash 腳本查找給定目錄中存在的文件或文件夾的數量。它使用 Linux find 命令來執行此操作。首先,需要傳遞目錄名以從命令行搜索文件。
 
  #!/bin/bash
 
  if [ -d "$@" ]; then
  echo "Files found: $(find "$@" -type f | wc -l)"
  echo "Folders found: $(find "$@" -type d | wc -l)"
  else
  echo "[ERROR] Please retry with another folder."
  exit 1
  fi
  如果指定的目錄不可用或存在權限問題,程序將要求用戶重試。
 
  36.清理日志文件
  下一個簡單的示例演示了在現實生活中使用 shell 腳本的簡便方法。該程序只需刪除 / var/log 目錄中的所有日志文件。您可以更改保存此目錄的變量以清理其他日志。
 
  #!/bin/bash
  LOG_DIR=/var/log
  cd $LOG_DIR
 
  cat /dev/null > messages
  cat /dev/null > wtmp
  echo "Logs cleaned up."
  請記住以 root 身份運行此 Linuxshell 腳本。
 
  37.使用 Bash 備份腳本
  Shell 腳本提供了一種強大的方法來備份文件和目錄。以下示例將備份過去 24 小時內修改的每個文件或目錄。該程序使用 find 命令執行此操作。
 
  #!/bin/bash
 
  BACKUPFILE=backup-$(date +%m-%d-%Y)
  archive=${1:-$BACKUPFILE}
 
  find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"
  echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."
  exit 0
  備份過程成功后,它將打印文件和目錄的名稱。
 
  38.檢查你是否是 root 用戶
  下面的示例演示了通過 Linux bash 腳本快速確定用戶是否為 root 用戶的方法。
 
  #!/bin/bash
  ROOT_UID=0
 
  if [ "$UID" -eq "$ROOT_UID" ]
  then
  echo "You are root."
  else
  echo "You are not root"
  fi
  exit 0
  此腳本的輸出取決于運行它的用戶。它將根據 $UID 匹配根用戶。
 
  39.從文件中刪除重復行
  文件處理需要相當長的時間,并在許多方面阻礙了管理員的工作效率。例如,在文件中搜索重復項可能會成為一項艱巨的任務。幸運的是,您可以使用一個簡短的 shell 腳本來完成此操作。
 
  #! /bin/sh
 
  echo -n "Enter Filename-> "
  read filename
  if [ -f "$filename" ]; then
  sort $filename | uniq | tee sorted.txt
  else
  echo "No $filename in $pwd...try again"
  fi
  exit 0
  上面的腳本逐行遍歷文件并刪除所有重復的行。然后,它將新內容放入新文件,并保持原始文件的完整性。
 
  40.系統維護
  我經常使用一個小的 Linuxshell 腳本來升級我的系統,而不是手動升級。下面的簡單 shell 腳本將向您展示如何做到這一點。
 
  #!/bin/bash
 
  echo -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n"
 
  apt-get update
  apt-get -y upgrade
 
  apt-get -y autoremove
  apt-get autoclean
 
  echo -e "\n$(date "+%T") \t Script Terminated"
  該腳本還處理不再需要的舊包。您需要使用 sudo 運行此腳本,否則它將無法正常工作。
97**国产露脸精品国产,国内精品免费一区二区三区,国产精品久久久久久久久妇女,国内一区二区三区精品视频
国产探花视频在线| 欧美午夜精品一区二区| 国产精品99精品无码视亚| 国产精品久久免费观看| 亚洲av成人片色在线观看高潮| 波多野结衣久久久久| 国产精品视频在| 亚洲熟女少妇一区二区| 国产中文字幕久久| 国产大片免费看| 动漫美女无遮挡免费| 香港三日本8a三级少妇三级99| 久久免费精品国产| 中文文字幕文字幕高清| 天天躁日日躁aaaa视频| 手机免费观看av| 肉丝美足丝袜一区二区三区四| 美女又黄又免费的视频| 波多野结衣视频播放| 国产精品密蕾丝袜| 又黄又爽又色的视频| 欧美成人三级伦在线观看| 国产在线观看无码免费视频| 69精品无码成人久久久久久| 日韩在线一卡二卡| 无码av免费精品一区二区三区| 亚洲黄色免费在线观看| 国产一区二区三区精品在线| 日本在线视频播放| 亚洲成人av免费在线观看| 91成人在线免费视频| 无码人妻久久一区二区三区蜜桃| 国产制服丝袜在线| 久久黄色一级视频| 夫妇露脸对白88av| 无码人妻精品一区二区三| 免费成人深夜天涯网站| 国产免费一区二区三区最新6| 欧美做受高潮6| 亚洲婷婷在线观看| 超碰手机在线观看| 女女互磨互喷水高潮les呻吟| 91精品国产高清91久久久久久| 久久久视频6r| 国产chinese中国hdxxxx| 可以免费看av的网址| 日本r级电影在线观看| 真实乱偷全部视频| 人妻丰满熟妇aⅴ无码| 日韩亚洲欧美中文字幕| 色婷婷免费视频| 天堂网av2018| 欧美狂猛xxxxx乱大交3| 国产吃瓜黑料一区二区| 亚洲一级黄色录像| 国产黑丝在线观看| 国产探花在线播放| 欧美丰满少妇人妻精品| 亚洲视频天天射| 国产又粗又猛又爽又黄的视频小说| 大桥未久恸哭の女教师| 在线免费看av网站| 国产综合精品久久久久成人av| jjzz黄色片| a级片在线观看| 2025中文字幕| 一区二区视频免费看| 战狼4完整免费观看在线播放版| 日本在线不卡一区二区| 精品无码久久久久成人漫画| 五月婷婷欧美激情| 免费黄色在线视频| 成人午夜剧场视频网站| 欧美bbbbb性bbbbb视频| jizz日本免费| 国产 中文 字幕 日韩 在线| gogo亚洲国模私拍人体| 日本妇女毛茸茸| 波多野结衣一本| 国产高清视频免费在线观看| 中文字幕日韩三级片| 亚洲午夜福利在线观看| 色天使在线视频| 久久只有这里有精品| 欧美多人猛交狂配| 亚洲无人区码一码二码三码的含义 | 国产精品99精品无码视亚| 欧美高清精品一区二区| 中国男女全黄大片| 免费观看一级一片| 播金莲一级淫片aaaaaaa| 天天做夜夜爱爱爱| 扒开伸进免费视频| 国产色视频一区二区三区qq号| 精品人妻一区二区三区蜜桃视频| 三区四区在线观看| 亚洲国产综合av| 国产麻豆xxxvideo实拍| 嘿嘿视频在线观看| 亚洲丝袜在线观看| 国产全是老熟女太爽了| 三上悠亚作品在线观看| 国产人妖在线观看| 永久免费看片视频教学| 中文在线观看免费视频| 天堂网av2018| 日韩精品一区二区三区高清免费| 精品一区二区6| 黄色在线免费播放| 欧美视频一区二区在线| 日本不卡视频一区| 黑人狂躁日本娇小| 无码熟妇人妻av| 91香蕉视频污在线观看| ass精品国模裸体欣赏pics| 91社区视频在线观看| 国产又粗又长又爽| 欧洲猛交xxxx乱大交3| 久久久久久国产免费a片| 亚洲麻豆一区二区三区| 国产精品精品软件男同| 精品人妻一区二区三区蜜桃视频| 国产伦精品一区二区三区88av| 成人18视频免费69| 亚洲黄色在线网站| 一级片视频免费看| 三叶草欧洲码在线| 亚洲欧美日韩偷拍| 久久久久久久久久久久国产精品| 天天摸日日摸狠狠添| 少妇人妻好深好紧精品无码| 精品无码在线视频| 美国黄色a级片| 中文字幕一区二区久久人妻网站| jizz亚洲少妇| 午夜视频在线观看国产| 无码av免费精品一区二区三区| 韩国三级hd中文字幕有哪些| 婷婷国产成人精品视频| 手机看片国产日韩| 国产精品成人无码免费| a级黄色免费视频| 蜜桃视频最新网址| 亚洲色婷婷一区二区三区| 微拍福利一区二区| 三级影片在线看| 秘密基地免费观看完整版中文 | 亚洲国产精品成人综合久久久| 欧美性xxxx图片| 中文字幕在线免费看线人| 一区二区三区少妇| 国产黄色大片免费看| 国产黄a三级三级| 免费看的av网站| 亚洲の无码国产の无码步美| 97人妻精品一区二区三区免| 国产极品视频在线观看| 精品国产乱码久久久久久鸭王1| 熟女人妻在线视频| 日韩高清dvd碟片| 国产黄片一区二区三区| 成人免费视频国产免费观看| 91精品国产高清91久久久久久 | 日本一区二区三区网站| 公肉吊粗大爽色翁浪妇视频| 神马午夜精品91| 成人免费无码大片a毛片| 黑人と日本人の交わりビデオ| 一级黄色大片免费看| 日本精品在线观看视频| 在线观看xxx| 日韩av手机在线播放| 日本中文字幕有码| 黄色片在线观看免费| 老司机av网站| 麻豆网址在线观看| 国产全是老熟女太爽了| 中国特级黄色片| 波多野结衣一二三四区| 日本护士做爰视频| 五月综合色婷婷| xxxxx在线观看| 97人妻精品一区二区三区免| 久久发布国产伦子伦精品| 亚洲一级理论片| 久久国产精品影院| 国产精品91av| 欧美大波大乳巨大乳| 呻吟揉丰满对白91乃国产区| 亚洲综合网在线观看| 国产精品手机在线观看| 久久久国产精品久久久| 18岁成人毛片| 日本精品人妻无码77777| 69久久精品无码一区二区| 少妇人妻丰满做爰xxx| 黄色片在线观看网站| 亚洲精品国产精品乱码在线观看| 小早川怜子久久精品中文字幕| 网站免费在线观看|