前言,不論是原生APP(Android&IOS),還是大型架構級基礎環境(.NET&J2EE,或LAMP陣營等),
基本都不可避免的涉及到Linux(Unix),故還是覺得有必要把自己的一些相關知識歸納下。。
PS,Linux(Unix)更偏向程序(命令),而不是操作(界面)的系統。
給我感覺就像做事風格:踏實穩重,也有點簡單實在了,當然地就有點‘土’------不過我喜歡!哈哈~
首先,還是Linux系統一點情況介紹,這個有點。。。
Linux誕生的故事就不說了,其實就是用c山寨unix,也可認爲Liunx衍生至unix。所以Linux與unix的基礎命令幾乎一模一樣的,
最明顯的就是,IOS(越獄後的Unix)命令幾乎和Android(root後的Linux)是一個鳥語的---所以下面說道Liunx可等同unix。
不過,Liunx是開源的。當然地,和windows一樣,作爲操作系統必然有多任務、多用戶等特點,
以及包含自己系統運行的內核(核心程序)、文件系統(ext、nfs等)、還有調用的接口(shell、命令&圖形界面、應用程序等)。
與windows不同的:目錄只有一個盤(根目錄)、沒有圖形化的界面(當然也能用X-windows集成)、可移植等。
Linux有N多版本,其中以偏桌面的Ubuntu(源於Debian)與偏服務器的CentOS(源於redhat)爲主。
這裏也提下國內多用CentOS的幾個原因(本人比較認同的):1.國內網絡不行;2.基本教材、資料都是redhat的;3.發佈版本穩定性。
接着,就是Linux目錄結構,這是個基礎,不過~其實Linux就是個小基礎的東四。----下面用Ubuntu舉例,看圖
再者,就是Linux的常用命令,
1.文件目錄:mkdir 創建目錄;touch 生成文件;echo 生成待內容文件;cat/tac 現實文件內存
rm 刪除文件;cp 複雜文件;mv 移動文件;find 查找文件;grep 查找字符串
wc 統計文字;pwd 當前目錄;tree 顯示目錄樹;ln 連接文件;ls、cd。。。
2.系統管理:stat 顯示指定文件信息;netstat 網絡狀態;man 命令幫助;
who、w 在線用戶;whoami 用戶自身身份;ifconfig 網絡端口;
hostname 顯示主機名;uname 系統信息; top 系統資源使用信息(性能優化常用!);ps 瞬時進程;ping、clear、kill。。。
還有,就是有些常用操作,如VIM,軟件包管理(解/壓縮),用戶、文件(夾)權限,SSH等,
1.VIM:編輯模式-》插入模式(輸入i)-》命令模式(輸入:)
幾個保存命令:q直退;wq保退;q!強退;w file 保存成其他文件
2.壓縮/解壓文件、文件夾:
gzip(後綴gz)與bzip2(後綴bz2)
tar(可完全替換上兩個) [-cxzjvf],c壓縮&x解壓;z用gzip壓縮&j用bzip2壓縮;v顯示壓縮文件;f壓縮文檔
3.軟件包管理:
dpkg軟件包(.deb後綴文件,等同redhat的.rpm後綴文件): sudo dpkg -i pkg_file.deb 安裝;sudo dpkg -r pkg_file 卸載
APT自動處理依賴文件:sudo apt-get install pkgname 安裝;sudo apt-get remove pkgename 卸載;
sudo apt-get update 獲取包列表;sudo apt-get upgrade 升級更新;
4.用戶、文件(夾)權限:(ls -l 顯示)
su 切換用戶;id 顯示用戶id;groups顯示用戶組;
chmod 更改操作權限 [u 屬主 g 所屬組用戶 o 其他用戶 a 所有用戶][+ 加權限 – 減權限 =加權限同時將原有權限刪除] [rwx] 文件或目錄名,如 chmod g+w file。
chown&chgrp 更改屬主及屬組 [ -R ] 屬主 [ :所屬組 ] { 文件|文件夾},如:chown -R jiyilee:build /tmp/src, chgrp jiyilee test.txt。
5.SSH: 安全shell,遠程連接登錄用到的,其實就是個安全協議,裏面用到一些加密算法,不過一般都是用就行的。常用到一些工具,如putty、WinSCP等
最後,就是個shell,也就是linux下的腳本,類似windows的bat,有些js&Python等腳本特點。
其實蠻簡單的語言(基本能稱得上),有變量、函數、循環、控制等,一般起碼要能看懂及作小修改就行。
總結,用慣了windows就如習慣了C#的簡潔和靈活一樣,再看java就不順了,再用linux就不感冒,其實習慣就好~都是個操作系統,都是個開發語言而已。。。
真正熱愛技術的技術人員不應該偏執某一技術,可專注不應狹隘!所以玩.net也好,java也罷,
最好了解下Linux,瞭解下DBA與運維的也是很有必要的,瞭解大數據吧,瞭解Python,瞭解管理,瞭解...
當然不可能都用到,也不是要面面俱到、盲目追新,更不可能樣樣精!只是更好的都需要對比和借鑑,一旦需要時可以很快上手、不至於傻乎乎~
技術是純的、可確定的(不像管理等),應無界限,需點大氣纔是~~~