所有的指令不要強制記憶,選項要多多查一下,多多練習使用即可,
文章目錄
- 一、Linux簡單介紹
- 1.1.Linux的目錄結構
- 1.2.常見的具體目錄結構
- /bin
- /sbin
- /root
- /lib
- /etc
- /usr
- /boot
- /tmp
- /dev
- /media
- /mnt
- /opt
- /usr/local
- /var
- 1.3.路徑
- 1.4.空檔案的大小
- 二、常用的指令
- whoami
- ls
- pwd
- cd
- touch
- mkdir
- rmdir
- rm
- man
- cp
- mv
- echo
- cat
- tac
- more
- less
- head
- tail
- date
- cal
- find
- which
- grep
- zip壓縮和unzip解壓
- tar
- bc
- uname
- file
- clear
- 三、高頻使用的按鍵(熱鍵)
- 四、關機和重啟命令
- 五、擴展命令
- 六、shell命令以及運行原理
一、Linux簡單介紹
Linux是一種自由和開放源代碼的類UNIX作業系統,該作業系統的內核由林納斯托瓦茲在1991年首次發布,之后,在加上用戶空間的應用程式之后,就成為了Linux作業系統,嚴格來講, Linux只是作業系統內核本身,但通常采用“Linux內核”來表達該意思,而Linux則常用來指基于Linux內核的完整作業系統,它包括GUI組件和許多其他實用工具,
linux是一個開源、免費的作業系統,其穩定性、安全性、處理多并發已經得到業界的認可,目前很多企業級的專案(c/c++/php/python/java/go)都會部署到Linux/unix系統上,
目前市面上常見的作業系統有Linux、Windows、iOS、Android等,
linux在服務器領域的應用是最強的,因為linux免費、穩定、高效等特點在這里得到了很好的體現,尤其在一些高端領域(C++/Java等)尤為廣泛,
同時在嵌入式領域、個人桌面領域、大資料/云計算也有廣泛的應用,
Linux安裝:Linux可以采用虛擬機或云服務器的方式來運行,并用Xshell遠程登錄,網上教程很多,在此省略,

1.1.Linux的目錄結構
不同于Windows,linux的檔案系統是采用級層式的樹狀目錄結構,在此結構中的最上層是根目錄“/”,然后在此目錄下再創建其他的目錄,這些目錄的名字是不可以更改的,

目錄結構和命令列對Linux的學習非常重要,因為在實際生產中是沒有圖形化界面的,只有一個控制臺視窗,如果對目錄結構不熟悉很容易蒙圈,
Linux下一切皆是檔案,對于硬體,Linux也會映射成檔案來進行管理,
1.2.常見的具體目錄結構
/bin
是binary的縮寫,這個目錄下存放著Linux下最經常使用的命令,
/sbin
s就是super user的意思,這個目錄下存放的是權限比較高的指令,也就是系統管理員(root)使用的指令,
/root
該目錄為系統管理員,也稱作超級權限者(root)的用戶主目錄,
/lib
系統開機所需要最基本的動態連接共享庫,其作用類似于Windows里的DLL檔案,幾乎所有的應用程式都需要用到這些共享庫,
/etc
所有的系統管理所需要的組態檔和子目錄,安裝的所有程式的組態檔默認放在這個目錄下面,
/usr
這是一個非常重要的目錄,用戶的很多應用程式和檔案都放在這個目錄下,類似與windows下的program files目錄,
/boot
存放的是啟動Linux時使用的一些核心檔案,包括一些連接檔案以及鏡像檔案
/tmp
用來存放一些臨時檔案,
/dev
類似于windows的設備管理器,把所有的硬體用檔案的形式存盤
/media
linux系統會自動識別一些設備,例如U盤、光驅等等,當識別I后,linux會把識別的設備掛載到這個目錄下.
/mnt
系統提供該目錄是為了讓用戶臨時掛載別的檔案系統的,我們可以將外部的存盤掛載在/mnt/上,然后進入該目錄就可以查看里的內容了,
/opt
這是給主機額外安裝軟體所存放的目錄,可以將安裝檔案放在這個目錄中,便于程式的管理,默認為空,
/usr/local
這是另一個給主機額外安裝軟體所安裝的目錄,一般是通過編譯原始碼方式安裝的程式,
/var
這個目錄中存放著在不斷擴充著的東西,習慣將經常被修改的目錄放在這個目錄下,包括各種日志檔案,
1.3.路徑
在Linux下目錄用分割符/分隔開來,就像Windows下用\將檔案夾分割開來,


同時,Linux下也存在絕對路徑和相對路徑,任何一個目錄都有從根目錄開始的唯一的絕對路徑,而相對路徑是有多個的,
1.4.空檔案的大小
空檔案也是占用磁盤空間的,檔案由檔案內容和檔案屬性(檔案大小,檔案名稱等)組成,對于一個空檔案,檔案屬性是存在的,所以這個空檔案也會占用磁盤空間,
所以,即使一個檔案的大小為0,它也是要占磁盤空間的,
二、常用的指令
whoami
語法: whoami
功能: 顯示用戶當前的身份,

ls
ls的作用是顯示當前目錄的檔案和子目錄,
語法: ls?選項?目錄或檔案
功能: 對于目錄,該命令列出該目錄下的所有子目錄與檔案;對于檔案,該命令列出檔案名以及其他資訊,
常用選項:
- -a 列出目錄下的所有檔案,包括以 . 開頭的隱含檔案,

每個目錄下默認存在兩個隱含檔案 . 和 . . ( . 代表當前目錄 . . 代表上級目錄),
- -d 將目錄像檔案一樣顯示,而不是顯示其下的檔案, 如:ls –d 指定目錄

- -i 輸出檔案的 i 節點的索引資訊,

- -l 列出檔案的詳細資訊,
ls -l可以簡寫為ll

- -n 用數字的 UID,GID 代替名稱,
UID和GID相當于用戶和所屬組的身份資訊,就像身份證一樣,在系統中是唯一的,

- -F 在每個檔案名后附上一個字符以說明該檔案的型別,(“*”表示可執行的普通檔案,“/”表示目錄,“@”表示符號鏈接,“|”表示FIFOs,“=”表示套接字sockets)

- -r 對目錄反向排序,

- -t 以時間排序,

在t前面加r即可實作正序排序

-
-s 在檔案名前輸出該檔案的大小,

-
-R 列出所有子目錄下的檔案,

-
-1 一行只輸出一個檔案,

pwd
語法: pwd
功能:顯示用戶當前從根目錄開始的所在目錄

cd
語法:cd 目錄名
功能:改變作業目錄,將當前作業目錄改變到指定的目錄下,
目錄名可以按照絕對路徑或者相對路徑來寫,例如:
cd .. : 回傳上一級目錄
/home/hjl/9.24_test : 絕對路徑
cd ../9.25_test/ : 相對路徑
cd ~:進入用戶家目錄(主作業目錄)
cd -:回傳最近訪問目錄
普通用戶的家目錄(主作業目錄)默認為 /home/xxx,root用戶的家目錄(主作業目錄)默認為 /root,
touch
該命令只能用來創建普通的文本檔案,其中檔案的后綴與檔案的屬性無關,但為了符合人的習慣還是應該加上檔案后綴,比如.c .txt等,
語法: touch?選項?檔案
功能: touch命令引數可更改檔案或目錄的日期時間,包括存取時間和更改時間,或者新建一個不存在的檔案,
常用選項:
- -a 更改Access和Change的時間,

其中stat命令可以顯示檔案或檔案系統的詳細資訊,
Access:表示最后一次訪問(僅僅是訪問,沒有改動)檔案的時間
modify:表示最后一次修改檔案的時間
change:表示最后一次對檔案屬性改變的時間,包括權限,大小,屬性等等,
- -c 或 --no-create 不建立任何檔案,
- -d 使用指定的日期時間,而非現在的時間,

- -f 此引數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題,
- -m 或 --time=mtime 或–time=modify 只更改變動時間,
- -r 把指定檔案或目錄的日期時間,統統設成和參考檔案或目錄的日期時間相同,
- -t 使用指定的日期時間,而非現在的時間,
mkdir
該命令可以用來創建目錄
語法: mkdir?選項?dirname
功能: 在當前目錄下創建一個名為“dirname”的目錄,
常用選項:
- -p dirname可以是一個路徑名稱,此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以遞回建立多個目錄,

rmdir
rmdir是一個與mkdir相對應的指令,mkdir是建立目錄,而rmdir是洗掉目錄,這個命令只能洗掉空目錄,
語法: rmdir?選項?dirname
功能: 洗掉空目錄,
常用選項:
- -p 當子目錄被洗掉后如果父目錄也變成空目錄的話,就連同父目錄一起洗掉,
rm
rm可以洗掉所有目錄和檔案,對于目錄一般加上-r才能洗掉,
語法: rm?選項?dirname
功能: 洗掉檔案或目錄,
常用選項:
-
-f 即使檔案屬性為只讀(即寫保護),也直接洗掉,不進行詢問,

-
-i 洗掉前逐一詢問確認

- -r 遞回式洗掉目錄及其下所有檔案和目錄
rm -rf /則是從根目錄下不詢問式遞回洗掉所有檔案和目錄,這是一條刪庫跑路的指令,一定要慎用,

man
man命令可以在man手冊中查看具體的命令用法,
語法: man?選項?指令
功能: 查看指令的使用規則等,
常用選項:
- -k 根據關鍵字搜索聯機幫助
- num 只在第num章節找
- -a 將所有章節的都顯示出來
man手冊是英文的,還有中文的手冊cman,man和cman都需要自己安裝,
手冊分為8章:
- 普通的命令
- 系統呼叫(內核提供的函式),如open,write之類的(通過這個,至少可以很方便的查到呼叫這個函式,需要加什么頭檔案)
- 庫函式,如printf,fread4是特殊檔案,也就是/dev下的各種設備檔案
- 特殊檔案設備檔案
- 檔案的格式,比如passwd, 就會說明這個檔案中各個欄位的含義
- 是給游戲留的,由各個游戲自己定義
- 雜項,是附件還有一些變數,比如向environ這種全域變數在這里就有說明
- 系統管理命令(通常僅限于root用戶),這些命令只能由root使用,如ifconfi
cp
cp指令可以將檔案或目錄拷貝到另一個地方,
語法: cp?選項?源檔案或目錄?目標檔案或目錄
功能: 復制檔案或目錄,
常用選項:
-
-f 或 --force 強行復制檔案或目錄, 不論目的檔案或目錄是否已經存在
-
-i 或 --interactive 如果檔案已經存在,則拷貝覆寫檔案之前先詢問用戶

-
-r或-R遞回處理,將指定目錄下的檔案與子目錄一并處理,若源檔案或目錄的形態,不屬于目錄或符號鏈接,則一律視為普通檔案處理

當拷貝的檔案為多個或者全部時,可以用到通配符進行拷貝,
通配符是一種特殊陳述句,主要有星號 (*)和問號 (?),用來模糊搜索檔案, 當查找檔案夾時,可以使用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字符,


mv
mv類似于剪切功能,講一個檔案或目錄移動到另一個目錄中,
語法: mv?選項?源檔案或目錄?目標檔案或目錄
功能:
(1)當第二個引數是不存在的名稱時,mv指令完成檔案重命名或目錄重命名,

(2)當第二個引數是已存在目錄名稱時,mv指令將檔案移動置該目錄中,

echo
這個指令可以將字串顯示到顯示幕或者重定向輸入到檔案中,
語法: echo 字符或字串

另外,在后面加上 >(格式化追加)檔案名或者 >>(在檔案末尾追加) 檔案名可以將字符或字串寫入檔案中:

cat
cat命令可以將檔案的內容顯示到顯示幕中,
語法: cat?選項?檔案
功能: 查看目標檔案的內容,
常用選項:
- -b 對非空輸出行編號,


- -n 對輸出的所有行編號

- -s 不輸出多行空行,只會保留一行空行

tac
tac與cat相反,tac可以方向查看檔案的內容,
語法: cat?檔案
功能: 反向查看目標檔案的內容,

注意: cat指令會將目標檔案內容全部列印到螢屏上,若是目標檔案內容過多,則會導致刷屏(直到將檔案內容全部列印到螢屏上),因此cat和tac指令一般僅適用于查看內容較少的檔案,
more
cat適合查看內容較少的檔案,而more適合查看內容較多的檔案,因為它不會一下子全部顯示出來,而是可以進行翻頁,
語法: more?檔案
功能: 查看目標檔案的內容,
常用選項:
- -n 對輸出的所有行編號
- q 退出more

more指令只能通過按回車鍵進行下翻操作,無法進行上翻操作,并且more指令在查看之前會先加載整個檔案,
less
相比于more,less指令可以同時支持上翻和下翻操作,
語法: less?選項?檔案
功能: 既有查看目標檔案的內容的功能,又有搜索功能,
less指令可以通過按上下鍵進行上翻和下翻操作,并且less指令在查看之前不會加載整個檔案,
常用選項:
- -i 忽略搜索時的大小寫,
- -N 顯示每行的行號,
- /字串 向下搜索“字串”的功能,
- ?字串 向上搜索“字串”的功能,
- n 重復前一個搜索(與/或?有關),
- N 反向重復前一個搜索(與/或?有關),
head
從頭開始查看指定行數的文本,
語法: head?選項?檔案
功能: 用于顯示檔案的開頭至標準輸出中,默認head指令列印其相應檔案的開頭10行,
選項:
- -n<行數> 顯示的行數

tail
從尾開始查看指定行數的文本,
語法: tail?選項?檔案
功能: 用于顯示檔案的末尾至標準輸出中,默認tail指令列印其相應檔案的末尾10行,
選項:
- -n<行數> 顯示的行數

提取中間的行數:

|叫做管道,作用是將前面head -5010 file.txt的輸出寫到管道中,再將管道中的資料拿出來執行tail -10,這樣就可以輸出前5010行的后10行了,
date
date 指定格式顯示時間: date +%Y:%m:%d
1.在顯示方面,使用者可以設定欲顯示的格式,格式設定為一個加號后接數個標記,其中常用的標記串列如下
- %H : 小時(00…23)
- %M : 分鐘(00…59)
- %S : 秒(00…61)
- %X : 相當于 %H:%M:%S
- %d : 日 (01…31)
- %m : 月份 (01…12)
- %Y : 完整年份 (0000…9999)
- %F : 相當于 %Y-%m-%d

2.在設定時間方面
- date -s //設定當前時間,只有root權限才能設定,其他只能查看,
- date -s 20080523 //設定成20080523,這樣會把具體時間設定成空00:00:00
- date -s 01:01:01 //設定具體時間,不會對日期做更改
- date -s “01:01:01 2008-05-23″ //這樣可以設定全部時間
- date -s “01:01:01 20080523″ //這樣可以設定全部時間
- date -s “2008-05-23 01:01:01″ //這樣可以設定全部時間
- date -s “20080523 01:01:01″ //這樣可以設定全部時間
3.時間戳
- date +%s 顯示當前時間的時間戳,
- date -d @時間戳 將時間戳轉換為時間,

cal
cal指令可以用于顯示公歷(陽歷)日歷,
語法: cal?選項?月份?年份
功能: 用于查看日歷等時間資訊,如只有一個引數,則表示年份(1~9999),如有兩個引數,則表示月份和年份,
常用選項:
-
-3 顯示系統前一個月,當前月,下一個月的月歷,年份和月份不用輸入,

-
-j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數)

- -y 顯示當前年份的日歷

find
語法: find?路徑?選項?…
功能: 用于在檔案樹中查找檔案,并作出相應的處理(可能訪問磁盤->效率比較低),
路徑不寫默認為當前路徑
常用選項:
- -name 按照檔案名查找檔案,
- -size 按照檔案大小查找檔案,-50M 小于50M +50M 大于50M
- -ctime 按最新修改的時間查找 -5位最近五天
- -type 根據檔案型別查找

which
查找某一條命令所在的路徑,
語法: which?指令
功能: 用于查找某一指令的程式檔案所在路徑,
命令實際上也是一個可執行程式,它所在的目錄可以不用讓執行這些命令時加路徑,直接使用命令即可,

其中,alias的作用是起別名,ls是ls --color=auto的別名
因此如果把我們自己寫的可執行程式放到這個目錄下,也可以使用名字直接執行:


grep
grep是文本行過濾工具,它在過濾時以行為基本單位,將符合條件的行顯示出來,
語法: grep?選項?搜尋字串?檔案
功能: 在檔案中搜索字串,將找到的行列印出來,

常用選項:
- -i :忽略大小寫的不同,所以大小寫視為相同
- -n :順便輸出行號
- -v :反向選擇,顯示出沒有 ‘搜尋字串’ 內容的那一行

zip壓縮和unzip解壓
zip指令用于打包壓縮目錄或檔案,
語法: zip?選項?壓縮檔案 .zip?待打包目錄或檔案
功能: 將目錄或檔案打包壓縮成zip格式,
常用選項:
- -r 遞回處理,將指定目錄下的所有檔案和子目錄一并處理,

打包壓縮目錄的時候要加通配符/*,要不然并不會打包壓縮目錄下的檔案,只是打包壓縮目錄,
語法: unzip?壓縮檔案.zip?選項?目錄
功能: 將壓縮檔案解壓到指定目錄當中,

如果要解壓到指定目錄必須帶上-d選項:

tar
tar指令也可以用來打包壓縮和解壓檔案,并且還可以實作不解開壓縮包,直接查看里面內容的操作,以及只打包不壓縮等操作,
語法: tar?選項?壓縮檔案?…
功能: 打包/解包,不解開壓縮包,直接查看里面內容,
常用選項:
- -c 建立一個壓縮檔案的引數指令(create的意思),
- -x 解開一個壓縮檔案的引數指令,
- -t 查看tarfile里面的檔案,
- -z 是否同時具有gzip屬性?即是否需要用gzip壓縮?
- -j 是否同時具有bzip2屬性?即是否需要用bzip2壓縮?
- -v 壓縮的程序中顯示檔案(常用),
- -f 使用檔名,請留意,在f之后要立即接檔名,不要再加引數,
- -C 解壓到指定目錄,



bc
bc相當于Linux下的計算器
語法: bc進入計算器 輸入運算式 按回車進行計算 Ctrl+C退出計算
功能: 進行運算,

uname
語法: uname?選項
功能: 用于獲取電腦和作業系統的相關資訊,可顯示linux主機所用的作業系統的版本、硬體的名稱等基本資訊,
常用選項:
- -a或–all 詳細輸出所有資訊,依次為內核名稱,主機名,內核版本號,內核版本,硬體名,處理器型別,硬體平臺型別,作業系統名稱

- -r 輸出電腦和作業系統相關資訊,內核版本+CPU架構

file
語法: file
功能: 查看檔案的更多屬性資訊,

clear
語法:clear
功能:清空螢屏,
三、高頻使用的按鍵(熱鍵)
- [Tab]按鍵—具有『命令補全』和『檔案補齊』的功能
- [Ctrl]-c按鍵—讓當前的程式『停掉』
- [Ctrl]-d按鍵—退出當前命令列,相當于exit
- 上下按鍵,上下按鍵在Linux當中存盤的是歷史命令,通過按上下鍵我們可以查看我們最近敲的命令,也可以使用history指令查看歷史命令,
四、關機和重啟命令
關機語法: shutdown?選項
重啟語法:reboot 選項
常見選項:
- -h 將系統的服務停掉后,立即關機,
- -r 將系統的服務停掉之后就重新啟動,
- -t sec 經過sec秒后關機,
注: 所有關機指令只能由root用戶執行,所有的指令必須要在開機的情況下輸入,所以沒有開機命令,
五、擴展命令
- 安裝和登錄命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last,
- 檔案處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln,
- 系統管理相關命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab,
- 網路操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup,
- 系統安全相關命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who,
- 其他命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode,
六、shell命令以及運行原理
Linux內核(kernel)有兩種理解:
- 廣義上的作業系統:shell+kernel+配套的軟體(應用、驅動等)
- 狹義上的作業系統:指的就是內核,是純粹的作業系統部分,
我們很難直接使用內核,因為學習成本太大,所以在內核外嵌套了一個“外殼程式”,幫助我們和內核進行互動,同時也可以保護內核,
Linux使用shell命令列界面,而在Windows下則使用圖形化界面,這兩者都是內核外的“外殼程式”,相當于用戶和作業系統之間的媒介,
從技術角度, Shell的最簡單定義:命令列解釋器(command Interpreter)主要包含:將使用者的命令翻譯給內核(kernel)處理,同時,將核心的處理結果翻譯給使用者,
對比windows GUI,我們操作windows 不是直接操作windows內核,而是通過圖形介面,點擊,從而完成我們的操作(比如進入D盤的操作,我們通常是雙擊D盤盤符.或者運行起來一個應用程式),
簡單來講,shell相當于內核的一層“外殼程式”,主要的功能是對我們的指令進行決議,決議指令完成后發給Linux內核,內核運行出結果后通過shell輸出給用戶,如果我們輸入的命令是錯誤的或者不存在的,那么就不會將決議指令發給Linux內核,
所以,shell相當于用戶和作業系統之間的媒介,用來和用戶互動,提升用戶的操作體驗,同時用來保護作業系統,

Shell運行原理:
- 創建子行程,讓子行程進行命令列解釋,
- 子行程出現任何問題,都不影響父行程Shell,
另外, Shell只是所有外殼程式的統稱,在centos 7當中的外殼程式名叫bash,bash相當于Shell的子集,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/303873.html
標籤:java
