亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Linux中基本目錄操作命令詳解

 更新時(shí)間:2025年06月30日 10:22:57   作者:程序員岳彬  
作為 Java 程序員,在日常開發(fā)和運(yùn)維過程中,熟練掌握 Linux 命令是必不可少的技能,尤其是目錄操作命令,是我們與文件系統(tǒng)交互的基礎(chǔ),下面我們來看看這些命令的具體使用吧

簡介

在Java開發(fā)和運(yùn)維中,我們經(jīng)常需要與Linux文件系統(tǒng)進(jìn)行交互。掌握基本的目錄操作命令可以幫助我們高效地管理項(xiàng)目文件、查看目錄結(jié)構(gòu)、部署應(yīng)用程序等。本文將介紹Java程序員必須掌握的Linux目錄操作命令,分為以下幾個(gè)部分:

  • 基礎(chǔ)目錄操作命令(ls, cd, pwd)
  • 目錄創(chuàng)建與刪除命令(mkdir, rmdir, rm)
  • 文件與目錄操作命令(cp, mv)
  • 高級(jí)目錄操作命令(tree, find)
  • Java開發(fā)中的實(shí)用目錄操作技巧

一、基礎(chǔ)目錄操作命令

1.1 ls 命令:查看目錄內(nèi)容

ls命令用于列出當(dāng)前或指定目錄下的文件和子目錄。

語法

ls \[選項(xiàng)] \[路徑]

常用選項(xiàng)

  • -l:長格式顯示文件詳情
  • -a:顯示隱藏文件(以.開頭的文件)
  • -h:人性化顯示文件大?。ㄗ詣?dòng)轉(zhuǎn)換單位)
  • -R:遞歸顯示子目錄內(nèi)容
  • -t:按修改時(shí)間排序(最新文件排在前面)

實(shí)例代碼

ls -l  # 長格式顯示當(dāng)前目錄內(nèi)容

ls -a  # 顯示當(dāng)前目錄下的所有文件,包括隱藏文件

ls -lh # 長格式顯示并以易讀方式顯示文件大小

ls -R /etc # 遞歸顯示/etc目錄下的所有內(nèi)容

注釋

  • 長格式顯示的信息包括文件類型與權(quán)限、硬鏈接數(shù)、所有者、所屬組、文件大小、修改時(shí)間和文件名
  • 文件類型以第一個(gè)字符表示:-表示普通文件,d表示目錄,l表示符號(hào)鏈接
  • 使用-h選項(xiàng)可以將文件大小以 KB、MB、GB 等單位顯示,更直觀
  • -R選項(xiàng)適合查看整個(gè)目錄結(jié)構(gòu)

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目開發(fā)中,我們經(jīng)常需要查看項(xiàng)目目錄結(jié)構(gòu),確認(rèn)文件是否存在或正確生成。例如,在 Maven 項(xiàng)目中,可以使用ls -l target命令查看編譯生成的 class 文件和 jar 包

1.2 cd 命令:切換工作目錄

cd(Change Directory)命令用于在終端中切換當(dāng)前工作目錄。

語法

cd \[選項(xiàng)] \[目標(biāo)目錄]

常用選項(xiàng)

  • -L:如果目標(biāo)目錄是符號(hào)鏈接,切換到符號(hào)鏈接的目錄(默認(rèn)行為)
  • -P:如果目標(biāo)目錄是符號(hào)鏈接,切換到它指向的物理位置目錄

實(shí)例代碼

cd \~  # 切換到用戶主目錄

cd .. # 切換到上級(jí)目錄

cd /etc/yum.repos.d # 切換到絕對路徑目錄

cd -  # 返回上一次訪問的目錄

注釋

  • ~表示用戶主目錄,cdcd ~可快速回到用戶主目錄
  • .表示當(dāng)前目錄,cd .沒有變化;..表示父目錄
  • cd -是快速在兩個(gè)目錄間切換的高效方式
  • 使用 Tab 鍵可以自動(dòng)補(bǔ)全目錄名,避免拼寫錯(cuò)誤

Java 開發(fā)應(yīng)用場景

在 Java 開發(fā)中,我們經(jīng)常需要在不同項(xiàng)目目錄之間切換。例如,使用cd /home/projects/spring-boot-demo切換到 Spring Boot 項(xiàng)目目錄,然后使用cd -回到上一個(gè)工作目錄

1.3 pwd 命令:顯示當(dāng)前工作目錄

pwd(Print Working Directory)命令用于顯示當(dāng)前工作目錄的完整路徑。

語法

pwd \[選項(xiàng)]

常用選項(xiàng)

-P:顯示當(dāng)前工作目錄的物理位置,而非符號(hào)鏈接路徑

實(shí)例代碼

pwd  # 顯示當(dāng)前工作目錄的完整路徑

pwd -P # 顯示當(dāng)前工作目錄的物理路徑(不包含符號(hào)鏈接)

注釋

  • 默認(rèn)情況下,pwd顯示的是邏輯路徑,可能包含符號(hào)鏈接
  • 使用-P選項(xiàng)可以獲取物理路徑,避免符號(hào)鏈接的干擾
  • 在腳本中,pwd命令可用于確定腳本的當(dāng)前工作目錄

Java 開發(fā)應(yīng)用場景

在編寫 Java 項(xiàng)目的部署腳本時(shí),使用pwd命令可以動(dòng)態(tài)獲取當(dāng)前腳本所在的目錄,確保文件路徑的準(zhǔn)確性。例如:

CURRENT\_DIR=\$(pwd)


echo "當(dāng)前腳本所在目錄:\$CURRENT\_DIR"

二、目錄創(chuàng)建與刪除命令

2.1 mkdir 命令:創(chuàng)建目錄

mkdir(Make Directory)命令用于創(chuàng)建新目錄。

語法

mkdir \[選項(xiàng)] 目錄名...

常用選項(xiàng)

  • -p:遞歸創(chuàng)建多級(jí)目錄
  • -m:設(shè)置目錄權(quán)限模式(類似chmod
  • -v:顯示詳細(xì)的創(chuàng)建過程信息

實(shí)例代碼

mkdir testdir # 創(chuàng)建單級(jí)目錄testdir

mkdir -p project/src/main # 遞歸創(chuàng)建多級(jí)目錄project/src/main

mkdir -m 755 logs # 創(chuàng)建權(quán)限為rwxr-xr-x的logs目錄

注釋

  • -p選項(xiàng)非常實(shí)用,可一次性創(chuàng)建多級(jí)目錄,避免因父目錄不存在而報(bào)錯(cuò)
  • 默認(rèn)權(quán)限為 rwxr-xr-x,可通過-m選項(xiàng)自定義權(quán)限
  • 權(quán)限模式中,r 表示讀,w 表示寫,x 表示執(zhí)行

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目開發(fā)中,我們經(jīng)常需要?jiǎng)?chuàng)建特定結(jié)構(gòu)的目錄。例如,使用mkdir -p project/src/main/java/com/demo創(chuàng)建符合 Maven 標(biāo)準(zhǔn)的項(xiàng)目目錄結(jié)構(gòu)

2.2 rmdir 命令:刪除空目錄

rmdir(Remove Directory)命令用于刪除空目錄。

語法

rmdir \[選項(xiàng)] 目錄名...

常用選項(xiàng)

  • -p:遞歸刪除目錄及其空的父目錄
  • --ignore-fail-on-non-empty:忽略因目錄非空導(dǎo)致的錯(cuò)誤
  • -v:顯示詳細(xì)的刪除過程信息

實(shí)例代碼

rmdir testdir # 刪除空目錄testdir

rmdir -p project/src/main/java/com/example # 遞歸刪除多級(jí)空目錄

注釋

  • rmdir只能刪除空目錄,非空目錄無法刪除
  • 若要?jiǎng)h除非空目錄,需使用rm -r命令
  • -p選項(xiàng)會(huì)遞歸刪除目錄,如果父目錄在刪除子目錄后變?yōu)榭漳夸洠矔?huì)一并被刪除

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目清理時(shí),使用rmdir命令可以刪除不需要的空目錄。例如,刪除測試生成的空目錄:

rmdir build/test-reports

2.3 rm 命令:刪除文件或目錄

rm(Remove)命令用于刪除文件或目錄。

語法

rm \[選項(xiàng)]... 文件或目錄...

常用選項(xiàng)

  • -f:強(qiáng)制刪除,忽略不存在的文件和警告,不提示確認(rèn)
  • -i:交互式刪除,刪除前提示確認(rèn)
  • -r-R:遞歸刪除目錄及其內(nèi)容
  • -d:刪除空目錄(類似rmdir
  • -v:顯示詳細(xì)操作信息

實(shí)例代碼

rm file.txt # 刪除文件file.txt

rm -r project # 遞歸刪除目錄project及其內(nèi)容

rm -rf old\_files # 強(qiáng)制遞歸刪除目錄old\_files,不提示確認(rèn)

注釋

  • -r選項(xiàng)用于遞歸刪除目錄,是刪除非空目錄的必要選項(xiàng)
  • -f選項(xiàng)強(qiáng)制刪除,不會(huì)提示確認(rèn),使用時(shí)需謹(jǐn)慎
  • 組合使用-rf時(shí)要特別小心,因?yàn)樗鼤?huì)遞歸強(qiáng)制刪除,沒有恢復(fù)機(jī)會(huì)

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目構(gòu)建過程中,經(jīng)常需要?jiǎng)h除舊的編譯結(jié)果或臨時(shí)文件。例如,使用rm -rf target命令刪除 Maven 項(xiàng)目的 target 目錄

三、文件與目錄操作命令

3.1 cp 命令:復(fù)制文件或目錄

cp(Copy)命令用于復(fù)制文件或目錄。

語法

cp \[選項(xiàng)]... 源文件 目標(biāo)文件
cp \[選項(xiàng)]... 源文件... 目標(biāo)目錄

常用選項(xiàng)

  • -a:歸檔模式,相當(dāng)于-dR --preserve=all
  • -i:覆蓋前提示確認(rèn)
  • -n:不覆蓋已存在文件
  • -r:遞歸復(fù)制目錄
  • -u:只復(fù)制源文件中更新時(shí)間較新的文件
  • -v:顯示復(fù)制過程
  • -p:保留原始文件的屬性(權(quán)限、時(shí)間戳等)

實(shí)例代碼

cp file.txt backup.txt # 復(fù)制文件file.txt為backup.txt

cp -r project project\_backup # 遞歸復(fù)制目錄project為project\_backup

cp -v \*.java src/main/java # 復(fù)制所有.java文件到src/main/java目錄,并顯示過程

注釋

  • 復(fù)制目錄時(shí)必須使用-r選項(xiàng),否則會(huì)提示 "omitting directory"
  • -v選項(xiàng)顯示復(fù)制過程,讓操作更透明
  • -p選項(xiàng)保留文件屬性,在備份配置文件時(shí)特別有用

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目開發(fā)中,經(jīng)常需要復(fù)制配置文件或模板文件。例如,使用cp application.properties application-dev.properties復(fù)制開發(fā)環(huán)境配置文件

3.2 mv 命令:移動(dòng)或重命名文件 / 目錄

mv(Move)命令用于移動(dòng)文件或目錄,也可用于重命名。

語法

mv \[選項(xiàng)]... 源文件 目標(biāo)文件

mv \[選項(xiàng)]... 源文件... 目標(biāo)目錄

常用選項(xiàng)

  • -i:覆蓋前提示確認(rèn)
  • -n:不覆蓋已存在文件
  • -v:顯示詳細(xì)操作信息
  • -u:只移動(dòng)源文件中更新時(shí)間較新的文件
  • -f:強(qiáng)制覆蓋已存在文件

實(shí)例代碼

mv oldname.txt newname.txt # 重命名文件

mv file.txt documents/ # 移動(dòng)文件file.txt到documents目錄

mv -v project/ backup/ # 移動(dòng)目錄project到backup目錄,并顯示過程

注釋

  • mv命令既可以移動(dòng)文件 / 目錄,也可以重命名文件 / 目錄
  • 移動(dòng)文件時(shí),如果目標(biāo)路徑是目錄,源文件將被移動(dòng)到該目錄下
  • 重命名文件時(shí),目標(biāo)路徑應(yīng)為新的文件名,而非目錄

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目重構(gòu)時(shí),經(jīng)常需要重命名文件或移動(dòng)目錄。例如,使用mv com/example/oldpackage com/example/newpackage重命名包目錄

四、高級(jí)目錄操作命令

4.1 tree 命令:以樹形結(jié)構(gòu)顯示目錄內(nèi)容

tree命令用于以樹形結(jié)構(gòu)顯示目錄下的內(nèi)容,直觀展示目錄結(jié)構(gòu)。

語法

tree \[選項(xiàng)] \[目錄]

常用選項(xiàng)

  • -a:顯示所有文件(包括隱藏文件)
  • -d:只顯示目錄
  • -l:顯示鏈接文件的原始文件
  • -f:顯示完整目錄路徑
  • -i:不以階梯形式顯示文件或目錄名稱
  • -q:將控制字符以?字符代替
  • -N:直接顯示文件或目錄的名稱
  • -p:顯示每個(gè)文件的權(quán)限信息

實(shí)例代碼

tree # 以樹形結(jié)構(gòu)顯示當(dāng)前目錄內(nèi)容

tree -d # 只顯示目錄結(jié)構(gòu)

tree -L 2 # 顯示目錄下兩層內(nèi)容

tree -f # 顯示完整路徑的樹形結(jié)構(gòu)

注釋

  • 默認(rèn)情況下,tree命令需要單獨(dú)安裝,不是系統(tǒng)預(yù)裝命令
  • 使用-d選項(xiàng)可以只顯示目錄,隱藏文件
  • -L選項(xiàng)指定顯示的層級(jí)深度,避免內(nèi)容過多
  • -f選項(xiàng)顯示完整路徑,便于識(shí)別文件位置

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目開發(fā)中,使用tree命令可以快速查看項(xiàng)目目錄結(jié)構(gòu),確認(rèn)文件是否正確放置。例如,檢查 Maven 項(xiàng)目結(jié)構(gòu)是否符合標(biāo)準(zhǔn):

tree -d src/main

4.2 find 命令:查找文件或目錄

find命令用于在文件系統(tǒng)中查找符合條件的文件或目錄。

語法

find \[路徑] \[選項(xiàng)] \[條件] \[操作]

常用選項(xiàng)

  • -name:按文件名查找
  • -type:按文件類型查找(f 表示普通文件,d 表示目錄)
  • -size:按文件大小查找
  • -mtime:按修改時(shí)間查找
  • -perm:按權(quán)限查找
  • -exec:對找到的文件執(zhí)行指定命令

實(shí)例代碼

find . -name "\*.java" # 查找當(dāng)前目錄下所有.java文件

find /opt/java -type d -name "maven\*" # 查找/opt/java目錄下所有名稱以maven開頭的目錄

find . -size +100M # 查找當(dāng)前目錄下大于100MB的文件

find . -mtime -7 # 查找最近7天內(nèi)修改過的文件

注釋

  • .表示當(dāng)前目錄,是find命令最常用的起始路徑
  • 使用-name選項(xiàng)時(shí),支持通配符(如*.java表示所有以.java 結(jié)尾的文件)
  • -type選項(xiàng)中,f表示普通文件,d表示目錄,l表示符號(hào)鏈接
  • -exec選項(xiàng)可以對找到的文件執(zhí)行命令,格式為-exec command {} \;

Java 開發(fā)應(yīng)用場景

在 Java 項(xiàng)目維護(hù)中,經(jīng)常需要查找特定類型的文件。例如,查找項(xiàng)目中所有未提交的測試文件:

find . -name "Test\*.java" -not -path "./.git/\*"

五、Java 開發(fā)中的實(shí)用目錄操作技巧

5.1 項(xiàng)目目錄結(jié)構(gòu)管理

在 Java 開發(fā)中,良好的目錄結(jié)構(gòu)管理至關(guān)重要。以下是一些實(shí)用技巧:

創(chuàng)建標(biāo)準(zhǔn) Maven 項(xiàng)目結(jié)構(gòu)

mkdir -p project/src/{main,test}/{java,resources}

清理項(xiàng)目臨時(shí)文件

rm -rf target # 刪除Maven項(xiàng)目的target目錄


find . -name "\*.class" -delete # 刪除所有.class文件

5.2 日志文件管理

在 Java 應(yīng)用程序的運(yùn)維中,日志文件管理是重要工作:

查找最近修改的日志文件

ls -lt /var/log | head -n 5 # 顯示最近修改的5個(gè)日志文件

按大小排序日志文件

du -sh /var/log/\* | sort -rh | head -n 10 # 顯示最大的10個(gè)日志文件

清理舊日志文件

find /var/log -type f -name "\*.log" -mtime +30 -delete # 刪除30天以上的日志文件

5.3 項(xiàng)目部署與發(fā)布

在 Java 項(xiàng)目部署過程中,以下命令非常實(shí)用:

打包項(xiàng)目目錄

tar -czvf project.tar.gz project # 打包項(xiàng)目目錄為project.tar.gz

解壓到指定目錄

tar -xzvf project.tar.gz -C /opt/deploy # 解壓到/opt/deploy目錄

創(chuàng)建發(fā)布目錄結(jié)構(gòu)

mkdir -p /opt/apps/myapp/{current,previous,logs}

六、總結(jié)與最佳實(shí)踐

6.1 命令速查表

命令作用常用選項(xiàng)
ls查看目錄內(nèi)容-l, -a, -h, -R
cd切換目錄-, ~, ..
pwd顯示當(dāng)前目錄-P
mkdir創(chuàng)建目錄-p, -m
rmdir刪除空目錄-p
rm刪除文件或目錄-r, -f
cp復(fù)制文件或目錄-r, -p, -v
mv移動(dòng)或重命名-i, -v
tree樹形顯示目錄結(jié)構(gòu)-d, -L, -f
find查找文件或目錄-name, -type, -size

6.2 最佳實(shí)踐建議

1.安全刪除:使用rm命令時(shí),特別是rm -rf,一定要確認(rèn)目標(biāo)路徑正確,避免誤刪系統(tǒng)文件。

2.路徑管理

  • 盡量使用絕對路徑,避免路徑混亂
  • 使用cd -在最近兩個(gè)目錄間快速切換
  • 善用 Tab 鍵自動(dòng)補(bǔ)全路徑,減少拼寫錯(cuò)誤

3.命令組合

  • 使用管道符|組合命令,例如ls -l | grep .log
  • 結(jié)合findxargs執(zhí)行批量操作

4.腳本編寫

  • 在腳本中使用pwd -P獲取物理路徑,避免符號(hào)鏈接干擾
  • 使用mkdir -p創(chuàng)建多級(jí)目錄,確保目錄存在
  • 使用rm -rf前先檢查目錄是否存在

5.權(quán)限管理

  • 使用chmod命令設(shè)置合適的文件和目錄權(quán)限
  • 避免使用chmod 777,應(yīng)根據(jù)需要設(shè)置具體權(quán)限

七、附錄:常見錯(cuò)誤及解決方法

7.1 權(quán)限相關(guān)錯(cuò)誤

錯(cuò)誤信息

rm: cannot remove 'file.txt': Permission denied

原因:當(dāng)前用戶沒有刪除該文件的權(quán)限。

解決方法

  • 使用ls -l查看文件權(quán)限
  • 使用sudo rm file.txt以管理員權(quán)限刪除
  • 或使用chmod修改文件權(quán)限后再刪除

7.2 目錄操作錯(cuò)誤

錯(cuò)誤信息

cp: omitting directory 'dir'

原因:嘗試復(fù)制目錄時(shí)未使用-r選項(xiàng)。

解決方法

使用cp -r dir dir_copy遞歸復(fù)制目錄。

7.3 文件查找問題

錯(cuò)誤信息

find: paths must precede expression

原因find命令的參數(shù)順序錯(cuò)誤。

解決方法

確保路徑參數(shù)在條件參數(shù)之前,例如find /path -name "*.txt"

7.4 符號(hào)鏈接問題

錯(cuò)誤信息

pwd: error retrieving current directory: getcwd: cannot access parent directories: Permission denied

原因:當(dāng)前目錄是符號(hào)鏈接,且基礎(chǔ)目錄不可訪問。

解決方法

使用pwd -P獲取物理路徑,或確保符號(hào)鏈接指向的目錄可訪問。

到此這篇關(guān)于Linux中基本目錄操作命令詳解的文章就介紹到這了,更多相關(guān)Linux目錄操作命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shell中if的基本語法和常見判斷用法

    Shell中if的基本語法和常見判斷用法

    這篇文章主要介紹了Shell中if的基本語法和常見判斷用法,本文講解了if的基本語法、對字符串的判斷、對數(shù)字的判斷、對文件屬性的判斷、邏輯判斷等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • Linux 命令每天必學(xué)(34)之du命令

    Linux 命令每天必學(xué)(34)之du命令

    Linux du命令是查看使用空間的,本文給大家介紹linux du命令的參數(shù),格式,功能等相關(guān)資料,對linux du命令感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • 關(guān)于SSH 遠(yuǎn)程執(zhí)行命令你要知道的二三事

    關(guān)于SSH 遠(yuǎn)程執(zhí)行命令你要知道的二三事

    SSH 是 Linux 下進(jìn)行遠(yuǎn)程連接的基本工具,但是如果僅僅用它來登錄那可是太浪費(fèi)啦!SSH 命令可是完成遠(yuǎn)程操作的神器啊,下面這篇文章主要給大家介紹了關(guān)于SSH 遠(yuǎn)程執(zhí)行命令的一些相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • Linux常用命令之性能命令

    Linux常用命令之性能命令

    這篇文章主要介紹了Linux常用命令之性能命令,文章講解的很清楚,有對于這方面不了解的同學(xué)可以研究下
    2021-02-02
  • linux中kvm的安裝及快照管理

    linux中kvm的安裝及快照管理

    這篇文章主要介紹了linux中kvm的安裝及快照管理的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • shell腳本編程之case語句學(xué)習(xí)筆記

    shell腳本編程之case語句學(xué)習(xí)筆記

    這篇文章主要介紹了shell腳本編程之case語句學(xué)習(xí)筆記,本文代碼中包含注釋來說明case語句的使用,需要的朋友可以參考下
    2014-09-09
  • shell中刪除文件中重復(fù)行的方法

    shell中刪除文件中重復(fù)行的方法

    這篇文章主要介紹了shell中刪除文件中重復(fù)行的方法,需要的朋友可以參考下
    2014-03-03
  • Shell腳本實(shí)現(xiàn)服務(wù)器多臺(tái)免密登錄操作

    Shell腳本實(shí)現(xiàn)服務(wù)器多臺(tái)免密登錄操作

    本文介紹了auto_ssh_batch.sh腳本,用于在多臺(tái)RHEL/CentOS7主機(jī)之間快速配置SSH免密登錄,并支持遠(yuǎn)程傳輸腳本/文件及執(zhí)行命令,腳本通過pass文件提供統(tǒng)一認(rèn)證憑據(jù),nodes文件定義目標(biāo)主機(jī)列表,實(shí)現(xiàn)批量自動(dòng)化操作,感興趣的朋友一起看看吧
    2025-03-03
  • Linux查看端口占用lsof -i:port的方法

    Linux查看端口占用lsof -i:port的方法

    下面小編就為大家?guī)硪黄狶inux查看端口占用lsof -i:port的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • shell腳本遞歸遍歷目錄及子目錄的例子分享

    shell腳本遞歸遍歷目錄及子目錄的例子分享

    這篇文章主要介紹了shell腳本遞歸遍歷目錄及子目錄的例子,需要的朋友可以參考下
    2014-04-04

最新評論