1、編輯文件vi,按下i進行編輯,保存結束。編輯 ESC :wq回車,不保存結束。編輯 ESC :q回車。
2、在Linux系統下執行文件我們需要使用的的文件名sh,假如我們需要執行host.sh文件,我們需要進入文件所在目錄接著執行。
❷ linux必學的60條命令是什麼
前言
第1章 Linux命令行簡介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令幫助 / 4
1.3Linux shutdown reboot halt / 9
關機:
shutdown -h now
halt
init 0
第2章 文件和目錄操作命令 / 13
2.1pwd:顯示當前所在的位置 / 13
2.2cd:切換目錄 / 16
2.3tree:以樹形結構顯示目錄下的內容 / 18
2.4mkdir:創建目錄 / 22
2.5touch:創建空文件或改變文件的時間戳屬性 / 27
2.6ls:顯示目錄下的內容及相關屬性信息 / 30
2.7cp:復制文件或目錄 / 39
2.8mv:移動或重命名文件 / 42
2.9rm:刪除文件或目錄 / 45
2.10rmdir:刪除空目錄 / 48
2.11ln:硬鏈接與軟鏈接 / 49
2.12readlink:查看符號鏈接文件的內容 / 54
2.13find:查找目錄下的文件 / 55
2.14xargs:將標准輸入轉換成命令行參數 / 68
2.15rename:重命名文件 / 71
2.16basename:顯示文件名或目錄名 / 72
2.17dirname:顯示文件或目錄路徑 / 72
2.18chattr:改變文件的擴展屬性 / 73
2.19lsattr:查看文件擴展屬性 / 75
2.20file:顯示文件的類型 / 76
2.21md5sum:計算和校驗文件的MD5值 / 77
2.22chown:改變文件或目錄的用戶和用戶組 / 80
2.23chmod:改變文件或目錄許可權 / 81
2.24chgrp:更改文件用戶組 / 85
2.25umask:顯示或設置許可權掩碼 / 86
2.26老男孩從新手成為技術大牛的心法 / 90
第3章 文件過濾及內容編輯處理命令 / 91
3.1cat:合並文件或查看文件內容 / 91
3.2tac:反向顯示文件內容 / 103
3.3more:分頁顯示文件內容 / 104
3.4less:分頁顯示文件內容 / 107
3.5head:顯示文件內容頭部 / 109
3.6tail:顯示文件內容尾部 / 111
3.7tailf:跟蹤日誌文件 / 114
3.8cut:從文本中提取一段文字並輸出 / 115
3.9split:分割文件 / 117
3.10paste:合並文件 / 118
3.11sort:文本排序 / 123
3.12join:按兩個文件的相同欄位合並 / 127
3.13uniq:去除重復行 / 129
3.14wc:統計文件的行數、單詞數或位元組數 / 131
3.15iconv:轉換文件的編碼格式 / 133
3.16dos2unix:將DOS格式文件轉換成UNIX格式 / 134
3.17diff:比較兩個文件的不同 / 135
3.18vimdiff:可視化比較工具 / 138
3.19rev:反向輸出文件內容 / 139
3.20tr:替換或刪除字元 / 140
3.21od:按不同進制顯示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:純文本編輯器 / 147
3.24老男孩逆襲思想:做Linux運維的多個好處 / 152
第4章 文本處理三劍客 / 153
4.1grep:文本過濾工具 / 153
4.2sed:字元流編輯器 / 159
4.3awk基礎入門 / 165
第5章 Linux信息顯示與搜索文件命令 / 176
5.1uname:顯示系統信息 / 176
5.2hostname:顯示或設置系統的主機名 / 178
5.3dmesg:系統啟動異常診斷 / 179
5.4stat:顯示文件或文件系統狀態 / 181
5.5:統計磁碟空間使用情況 / 183
5.6date:顯示與設置系統時間 / 186
5.7echo:顯示一行文本 / 190
5.8watch:監視命令執行情況 / 193
5.9which:顯示命令的全路徑 / 195
5.10whereis:顯示命令及其相關文件全路徑 / 196
5.11locate:快速定位文件路徑 / 197
5.12updatedb:更新mlocate資料庫 / 199
5.13老男孩逆襲思想:新手在工作中如何問問題不會被鄙視 / 200
第6章 文件備份與壓縮命令 / 201
6.1tar:打包備份 / 201
6.2gzip:壓縮或解壓文件 / 208
6.3zip:打包和壓縮文件 / 211
6.4unzip:解壓zip文件 / 212
6.5scp:遠程文件復制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆襲思想:新手如何高效地提問 / 220
第7章 Linux用戶管理及用戶信息查詢命令 / 222
7.1 useradd:創建用戶 / 222
7.2usermod:修改用戶信息 / 227
7.3userdel:刪除用戶 / 229
7.4groupadd:創建新的用戶組 / 230
7.5groupdel:刪除用戶組 / 231
7.6passwd:修改用戶密碼 / 232
7.7chage:修改用戶密碼有效期 / 237
7.8chpasswd:批量更新用戶密碼 / 238
7.9su:切換用戶 / 240
7.10visudo:編輯sudoers文件 / 242
7.11sudo:以另一個用戶身份執行命令 / 244
7.12id:顯示用戶與用戶組的信息 / 248
7.13w:顯示已登錄用戶信息 / 249
7.14who:顯示已登錄用戶信息 / 250
7.15users:顯示已登錄用戶 / 252
7.16whoami:顯示當前登錄的用戶名 / 253
7.17last:顯示用戶登錄列表 / 253
7.18lastb:顯示用戶登錄失敗的記錄 / 254
7.19lastlog:顯示所有用戶的最近登錄記錄 / 255
第8章 Linux磁碟與文件系統管理命令 / 257
8.1fdisk:磁碟分區工具 / 257
8.2partprobe:更新內核的硬碟分區表信息 / 265
8.3tune2fs:調整ext2/ext3/ext4文件系統參數 / 266
8.4parted:磁碟分區工具 / 268
8.5mkfs:創建Linux文件系統 / 272
8.6mpe2fs:導出ext2/ext3/ext4文件系統信息 / 274
8.7resize2fs:調整ext2/ext3/ext4文件系統大小 / 275
8.8fsck:檢查並修復Linux文件系統 / 278
8.9dd:轉換或復制文件 / 281
8.10mount:掛載文件系統 / 284
8.11umount:卸載文件系統 / 288
8.12df:報告文件系統磁碟空間的使用情況 / 289
8.13mkswap:創建交換分區 / 293
8.14swapon:激活交換分區 / 294
8.15swapoff:關閉交換分區 / 295
8.16sync:刷新文件系統緩沖區 / 296
第9章 Linux進程管理命令 / 298
9.1ps:查看進程 / 298
9.2pstree:顯示進程狀態樹 / 305
9.3pgrep:查找匹配條件的進程 / 306
9.4kill:終止進程 / 307
9.5killall:通過進程名終止進程 / 310
9.6pkill:通過進程名終止進程 / 311
9.7top:實時顯示系統中各個進程的資源佔用狀況 / 313
9.8nice:調整程序運行時的優先順序 / 320
9.9renice:調整運行中的進程的優先順序 / 323
9.10nohup:用戶退出系統進程繼續工作 / 324
9.11strace:跟蹤進程的系統調用 / 325
9.12ltrace:跟蹤進程調用庫函數 / 332
9.13runlevel:輸出當前運行級別 / 334
9.14init:初始化Linux進程 / 335
9.15service:管理系統服務 / 335
第10章 Linux網路管理命令 / 338
10.1ifconfig:配置或顯示網路介面信息 / 338
10.2ifup:激活網路介面 / 343
ifup eth0
10.3ifdown:禁用網路介面 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整個網路,所有網卡。
10.4route:顯示或管理路由表 / 344
10.5arp:管理系統的arp緩存 / 350
10.6ip:網路配置工具 / 351
10.7netstat:查看網路狀態 / 358
10.8ss:查看網路狀態 / 362
10.9ping:測試主機之間網路的連通性 / 363
10.10traceroute:追蹤數據傳輸路由狀況 / 366
10.11arping:發送arp請求 / 367
10.12telnet:遠程登錄主機 / 369
10.13nc:多功能網路工具 / 370
10.14ssh:安全地遠程登錄主機 / 373
10.15wget:命令行下載工具 / 376
10.16mailq:顯示郵件傳輸隊列 / 379
10.17mail:發送和接收郵件 / 381
10.18nslookup:域名查詢工具 / 386
10.19dig:域名查詢工具 / 389
10.20host:域名查詢工具 / 393
10.21nmap:網路探測工具和安全/埠掃描器 / 394
10.22tcpmp:監聽網路流量 / 398
第11章 Linux系統管理命令 / 407
11.1lsof:查看進程打開的文件 / 407
11.2uptime:顯示系統的運行時間及負載 / 411
11.3free:查看系統內存信息 / 411
11.4iftop:動態顯示網路介面流量信息 / 413
11.5vmstat:虛擬內存統計 / 415
11.6mpstat:CPU信息統計 / 419
11.7iostat:I/O信息統計 / 420
11.8iotop:動態顯示磁碟I/O統計信息 / 423
11.9sar:收集系統信息 / 425
11.10chkconfig:管理開機服務 / 430
11.11ntsysv:管理開機服務 / 433
11.12 setup:系統管理工具 / 434
11.13ethtool:查詢網卡參數 / 436
11.14mii-tool:管理網路介面的狀態 / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自動化RPM包管理工具 / 446
top命令
第12章 Linux系統常用內置命令 / 450
12.1Linux內置命令概述 / 450
12.2Linux內置命令簡介 / 450
12.3Linux常用內置命令實例 / 452
Linux運維人員必會的120個命令
跟老男孩學Linux運維:核心系統命令實戰
❸ 如何查看linux系統中的所有命令
1、一般可以通過fdisk命令的-l參數,查詢到linux系統中分區信息: fdisk -l 或者 sudo fdisk -l 它的功能類似於windows下,打開我的電腦或者計算機 。 2、查看硬碟各分區使用情況可以使用df命令: df -h
❹ 如何為「Linux命令」設置快捷鍵
Linux的一個特色就是其命令多而且功能強大, 頻繁輸入命令不僅麻煩而且工作量較大,雖然可以使用TAB進行>命令補足,或者使用aliase來簡化某個命令的輸入,但這並不能從根本上解決敲擊鍵盤次數過多的問題。
可以把任何命令或命令的組合指定給鍵盤上的某個鍵,可以是Alt+[A-Z],
Ctrl-[A-Z], Alt+Shift+[A-Z], F1-F12, Ctrl-F[1-12], Alt-F[1-12], Alt+Shift+F[1-12],還有更不可思議的是甚至還可以為功能鍵加上「參數」,這樣你按下那個鍵的時候,它會等待你輸入相應的參數,並根據不同的參數運行不同的命令。
當然,有一些熱鍵會被終端所捕獲,如常見的Ctrl-D/C/Q/Z等,不過沒關系,可用的熱鍵還多著呢!
定義熱鍵的配置文件為:/etc/inputrc 或 ~/.inputrc,定義熱鍵的格式如下:
"<熱鍵對應的ASCII字元>":"<執行的命令>"
其中熱鍵對應的ASCII字元可以通過 "先按Ctrl-V, 然後按熱鍵" 的方式來輸入, 如Ctrl-G對應的字元為^G, Alt-P對應的字元為^[p, Ctrl-Alt-H對應的字元為^[^H.
可以用/C來代替Ctrl,/M來代替Alt, /M-/C來代替Alt-Ctrl, 如/C-M = Ctrl-M, /M-/C-H = Alt-Ctrl-M. 另外還可以用/e代表^[.
先來看一些基本的熱鍵定義,(這里熱鍵里的字母不區分大小寫):
"^[-":"su -/C-M" # 按Alt+- 執行su - 命令,末尾/C-M表示輸入完定義的命令後回車,也可以更簡潔地用一個/n來表示.
"/M-/C-G":"gaim & &>/dev/null && disown/C-M"
# 按Ctrl-Alt-g在當前shell打開gaim, 並脫離該shell獨立運行,即:即使你退出了該shell, gaim也不會關閉
其他一些組合鍵可以根據自己的需要配置,偶就不多說了.
大家也許會覺得這樣定義熱鍵太亂了,而且很難記住,還有一定的限制。這個問題在後面會得到解決。
一般情況下,我們可以使用上下方向鍵來查找命令歷史列表,以此重復輸入命令,但是方向鍵離主鍵盤區太遠,如>果頻繁使用的話,會耽誤不少時間,而且挪動右手時也不太方便,有沒有什麼辦法把方向鍵的功能轉移到我們經常>敲命令的地方呢?如使用Alt+J = Down Arrow 向下查找,Alt+K=Up Arrow 向下查找
通過定義熱鍵可以做到這點:
"/eh":"^[OD" # move left
# Alt-H 向左移一個字元, 相當於Left Arrowgh, 這里^[OD即向上方向鍵的ASCII字元,輸入方式與前面提到的類似
"/el":"^[OC" # move right
# Alt-L 向右移一個字元,相當於Right Arrow
"/ej":"^[OB" # move up
# Alt-J 向下移動,相當於Up Arrow
"/ek":"^[OA" # move down
# Alt-K 向上移動,相當於Down Arrow
"/ei":"^?" # left earse one character
# Alt-I 向左刪除一個字元,相當於Backspace
"/eo":delete-char # right earse one character
# Alt-O 向右刪除一個字元,相當於Delete
"/en":backward-kill-word # left kill one word
# Alt-N 向左刪除一個單詞
"/em":kill-word # right kill one word
# Alt-M 向右刪除一個單詞
"/ea":"^[n^[n^[n^[n^[n^[n^[n" # kill to the head
# Alt-A 刪除當前位置到開頭,也就是多Alt-N幾次(A--> ahead)
"/ee":"^[m^[m^[m^[m^[m^[m^[m" # kill to the head
# Alt-E 刪除當前位置到末尾,也就是多Alt-M幾次(E--> end)
"/ep": insert-last-argumem"
# Alt-P 插入上一個命令最後一個參數 (P--> Paste)
"/ew": forward-word
# 系統默認Alt-F (forward)跳到當前單詞詞尾,如果已在詞尾,則跳到下一個單詞(右邊一個單詞)詞尾
"/eq": backward-word
# 系統默認Alt-B (backward)跳到當前單詞詞首,如果已在詞首,則跳到上一個單詞(左邊一個單詞)詞首
發覺F和B鍵離得太遠,不方便,偶分別改作Alt-Q, Alt-W, 但是Alt-F/B照樣可以用
這樣輸入命令的時候幾乎可以不用離開主鍵盤區,而且移動游標,刪除字元,刪除單詞,上下歷史命令查找都集中>在一塊,比以前方便多了。不過開始可能有些不習慣,就跟使用vi一樣,但是多練幾次就熟練了。
Linux下絕大部分服務的配置是基於配置文件的,一般說來,更改了某個服務的配置文件,要使其立即生效,還需重啟該服務直接的或依附的守護進程才行。難道你就不覺得「每次 vi /etc/xxx.conf 完後又 service xxx restart/reload 或 killall -HUP xxx」這樣做很繁瑣么?如果要配置的服務較多而且要不停地調試呢?況且我們平常使用Linux時難免會不時地終止或啟動某個服務進程,輸入命令的次數也不少。如果為每個服務都指定一個熱鍵的話,似乎不大可能。如果我們賦予一個熱鍵為一個基本鍵,而相應的服務為其「參數」,那又如何呢?
舉個例子,賦予Alt-S (S-->Start)為啟動服務的基本鍵,服務名的前2個字元為啟動「參數」,那麼就可以像下面那樣隨意啟動某個服務了:
"/essm":"service smb start/n"
# /es=Alt-s, sm=smb,
# 即:按下Alt-s後緊跟著再輸入sm(這時輸入的sm並不會顯示在終端上),就可以啟動samba的服務進程了,不必擔心按下鍵與輸入「參數」間的時間延遲問題,你按下Alt-s,然後去外面兜一圈回來,再接著輸入sm,照樣可以。
"/esht":"service httpd start/n" # ht=httpd,啟動Apache服務
類似地,我們賦予
Alt-D(D--> shutDown) 為停止服務的基本鍵
Alt-R(R--> Restart) 為重啟服務的基本鍵
Alt-T(T--> Status) 為查看服務狀態的基本鍵
Alt-C(C--> Configure) 為打開服務對應的主配置文件的基本鍵
如:"/ecnf":"vi /etc/exports/n" # Alt-c+nf 打開NFS的配置文件
"/ecsm":"vi /etc/samba/smb.conf/n" # Alt-c+sm 打開smb的配置文件
如果某個服務(如ssh)有2個配置文件,可以在其後再加一個數字,如:
"/ecssh1":"vi /etc/ssh/sshd_config/n" # 打開sshd服務端配置文件
"/ecssh2":"vi /etc/ssh/ssh_config/n" # 打開sshd客戶端配置文件
如果要執行某個應用程序呢?可以用Alt-x做基本鍵(x--> eXeccute) 如:
"/exga":"gaim & &>/dev/null && disown && clean /n"
"/exxm":"xmms & &>/dev/null && disown && clean /n"
"/exvm":"vmware & &>/dev/null && disown && clean /n" "/exna":"nautilus & &>/dev/null && disown && clean /n"
等等....
到現在為止我們只要按1個組合鍵+2個字元就可以實現下面眾多的功能:
1. 執行指定的應用程序
2. 啟動|重啟|關閉|指定的服務進程
3. 查看指定服務的狀態
4. 打開指定服務的指定配置文件
❺ linux,unix常用基本命令
1.常用指令
ls 顯示文件或目錄
-l 列出文件詳細信息l(list)
-a 列出當前目錄下所有文件及目錄,包括隱藏的a(all)
mkdir 創建目錄
-p 創建目錄,若無父目錄,則創建p(parent)
cd 切換目錄
touch 創建空文件
echo 創建帶有內容的文件。
cat 查看文件內容
cp 拷貝
mv 移動或重命名
rm 刪除文件
-r 遞歸刪除,可刪除子目錄及文件
-f 強制刪除
find 在文件系統中搜索某文件
wc 統計文本中行數、字數、字元數
grep 在文本文件中查找某個字元串
rmdir 刪除空目錄
tree 樹形結構顯示目錄,需要安裝tree包
pwd 顯示當前目錄
ln 創建鏈接文件
more、less 分頁顯示文本文件內容
head、tail 顯示文件頭、尾內容
ctrl+alt+F1 命令行全屏模式
2.系統管理命令
stat 顯示指定文件的詳細信息,比ls更詳細
who 顯示在線登陸用戶
whoami 顯示當前操作用戶
hostname 顯示主機名
uname 顯示系統信息
top 動態顯示當前耗費資源最多進程信息
ps 顯示瞬間進程狀態 ps -aux
查看目錄大小 -h /home帶有單位顯示目錄信息
df 查看磁碟大小 df -h 帶有單位顯示磁碟信息
ifconfig 查看網路情況
ping 測試網路連通
netstat 顯示網路狀態信息
man 命令不會用了,找男人 如:man ls
clear 清屏
alias 對命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit
kill 殺死進程,可以先用ps 或 top命令查看進程的id,然後再用kill命令殺死進程。
3.打包壓縮相關命令
tar: 打包壓縮
-c 歸檔文件
-x 壓縮文件
-z gzip壓縮文件
-j bzip2壓縮文件
-v 顯示壓縮或解壓縮過程 v(view)
-f 使用檔名
例:
tar -cvf /home/abc.tar /home/abc 只打包,不壓縮
tar -zcvf /home/abc.tar.gz /home/abc 打包,並用gzip壓縮
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,並用bzip2壓縮
當然,如果想解壓縮,就直接替換上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的「c」 換成「x」 就可以了。
3.關機/重啟機器
shutdown
-r 關機重啟
-h 關機不重啟
now 立刻關機
halt 關機
reboot 重啟
4.Linux管道
將一個命令的標准輸出作為另一個命令的標准輸入。也就是把幾個命令組合起來使用,後一個命令除以前一個命令的結果。
例:grep -r "close" /home/* | more 在home目錄下所有文件中查找,包括close的文件,並分頁輸出。
5.Linux軟體包管理
dpkg(Debian Package)管理工具,軟體包名以.deb後綴。這種方法適合系統不能聯網的情況下。
比如安裝tree命令的安裝包,先將tree.deb傳到Linux系統中。再使用如下命令安裝。
sudo dpkg -i tree_1.5.3-1_i386.deb 安裝軟體
sudo dpkg -r tree 卸載軟體
註:將tree.deb傳到Linux系統中,有多種方式。VMwareTool,使用掛載方式;使用winSCP工具等;
APT(Advanced Packaging Tool)高級軟體工具。這種方法適合系統能夠連接互聯網的情況。
依然以tree為例
sudo apt-get install tree 安裝tree
sudo apt-get remove tree 卸載tree
sudo apt-get update 更新軟體
sudo apt-get upgrade
6.將.rpm文件轉為.deb文件
.rpm為RedHat使用的軟體格式。在Ubuntu下不能直接使用,所以需要轉換一下。
sudo alien abc.rpm
7.vim使用
vim三種模式:命令模式、插入模式、編輯模式。使用ESC或i或:來切換模式。
命令模式下:
:q 退出
:q! 強制退出
:wq 保存並退出
:set number 顯示行號
:set nonumber 隱藏行號
/apache 在文檔中查找apache 按n跳到下一個,shift+n上一個
yyp 復制游標所在行,並粘貼
h(左移一個字元←)、j(下一行↓)、k(上一行↑)、l(右移一個字元→)
8.用戶及用戶組管理
/etc/passwd 存儲用戶賬號
/etc/group 存儲組賬號
/etc/shadow 存儲用戶賬號的密碼
/etc/gshadow 存儲用戶組賬號的密碼
useradd 用戶名
userdel 用戶名
adser 用戶名
groupadd 組名
groupdel 組名
passwd root 給root設置密碼
/etc/profile 系統環境變數
bash_profile 用戶環境變數
.bashrc 用戶環境變數
su user 切換用戶,載入配置文件.bashrc
su - user 切換用戶,載入配置文件/etc/profile ,載入bash_profile
更改文件的用戶及用戶組
sudo chown [-R] owner[:group] {File|Directory}
例如:還以jdk-7u21-linux-i586.tar.gz為例。屬於用戶hadoop,組hadoop
要想切換此文件所屬的用戶及組。可以使用命令。
sudo chown root:rootjdk-7u21-linux-i586.tar.gz
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。
UNIX操作系統(尤尼斯),是一個強大的多用戶、多任務操作系統,支持多種處理器架構,按照操作系統的分類,屬於分時操作系統,最早由KenThompson、Dennis Ritchie和Douglas McIlroy於1969年在AT&T的貝爾實驗室開發。目前它的商標權由國際開放標准組織所擁有,只有符合單一UNIX規范的UNIX系統才能使用UNIX這個名稱,否則只能稱為類UNIX(UNIX-like)。
❻ linux指令大全
http://cache..com/c?m=&p=aa34c71485cc41ed08e2972351&user=
要注冊一下, 不過是免費下載的,我就是 用的這個書,挺不錯的 ,chm格式幫助文檔,正合樓主之意
已發,滿意給分,不滿意,只能再問了
❼ linux中如何使用命令
工具/材料:電腦、linux終端命令行
1、首先我們准備一個文件內容,供後面的操作。
❽ Linux命令echo -e
echo命令在linux中 可以用在shell腳本中 也可以做一個單獨的命令使用, 比如說你想往一個文件裡面寫一行東西, 可以通過命令:echo "需要寫的東西" >> /etc/passwd 這個命令也可以用在開機啟動rc.local啟動腳本裡面最方便了, 每次開機時都會往這個啟動腳本裡面寫命令然後可以達到想要的目的, 比如說每次開機啟動都在/etc/resolv .conf寫入DNS地址 就可以這樣寫:echo "210.22.70.3" >> /etc/resolv.conf 或者你在命令行下輸入echo命令 後面再跟你要寫的內容 點擊回車就會在屏幕上面顯示你寫的內容了