Linux(1)基础知识

一.安装Linux

即可,设置的时候记得把图形界面打上勾(GUI),不然初学者碰见命令行会十分懵逼。

二.界面介绍

①隐藏文件很简单,只需要在文件名字前面加上点   .

②设置在这里

③图形界面和文字界面的切换  ctrl+alt+F(1-6).  但是需要保证下列几个事实:

  • 並沒有其他的 X window 被啟用;
  • 你必須要已經安裝了X Window system,並且X server是能夠順利啟動的;
  • 你最好要有視窗管理員,例如GNOME/KDE或者是陽春的TWM等;

④纯文字界面的时候,输入密码的时候,是不会有提示的。成功页面:

~指目前所在目录;$表示提示字元

~ 符號代表的是『使用者的家目錄』的意思,他是個『變數!』 這相關的意義我們會在後續的章節依序介紹到。舉例來說,root的家目錄在/root, 所以 ~ 就代表/root的意思。而dmtsai的家目錄在/home/dmtsai, 所以如果你以dmtsai登入時,他看到的 ~ 就會等於/home/dmtsai喔!

 三.简单命令

其實我們都是透過『程式』在跟系統作溝通的,本章上面提到的視窗管理員或文字模式都是一組或一隻程式在負責我們所想要完成的任務。 文字模式登入後所取得的程式被稱為殼(Shell),這是因為這支程式負責最外面跟使用者(我們)溝通,所以才被戲稱為殼程式!

指令形式:

  1. 一行指令中第一個輸入的部分絕對是『指令(command)』或『可執行檔案(例如批次腳本,script)』
  2. command 為指令的名稱,例如變換工作目錄的指令為 cd 等等;
  3. 中刮號[]並不存在於實際的指令中,而加入選項設定時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;
  4. parameter1 parameter2.. 為依附在選項後面的參數,或者是 command 的參數;
  5. 指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格。所以空格是很重要的特殊字元!;
  6. 按下[Enter]按鍵後,該指令就立即執行。[Enter]按鍵代表著一行指令的開始啟動。
  7. 指令太長的時候,可以使用反斜線 (\) 來跳脫[Enter]符號,使指令連續到下一行。注意!反斜線後就立刻接特殊字符,才能跳脫!
  8. 其他:
    1. 在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 並不同。
    2. 更多的介紹等到第十章 bash 時,再來詳述。

四.基础指令

①date

②cal

③bc----计算器

指令总结:

  • 一種是該指令會直接顯示結果然後回到命令提示字元等待下一個指令的輸入;
  • 一種是進入到該指令的環境,直到結束該指令才回到命令提示字元的環境。

五.常用快捷键

①tab键

  • [Tab] 接在一串指令的第一個字的後面,則為『命令補全』;

  • [Tab] 接在一串指令的第二個字以後時,則為『檔案補齊』!

  • 若安裝 bash-completion 軟體,則在某些指令後面使用 [tab] 按鍵時,可以進行『選項/參數的補齊』功能!

②.[Ctrl]-c 按鍵:强制中断程序;[Ctrl]-d 按鍵:鍵盤輸入結束(End Of File, EOF 或 End Of Input).可代替exit

③.Shift + PageUp/PageDown 屏幕显示不下的时候可以这样看以前的命令。

六.求助說明

①date --help

②man date (在执行man后,可以看man的东西属于哪一类)

在输入/date后,会搜索你查找的词date

man -f 指令 可以查看跟指令相关的指令:

③info xxx

查看xxx的info文件,xxx的info文件是很多节点(node)组成的。

  • File:代表這個info page的資料是來自info.info檔案所提供的;
  • Node:代表目前的這個頁面是屬於Top節點。 意思是info.info內含有很多資訊,而Top僅是info.info檔案內的一個節點內容而已;
  • Next:下一個節點的名稱為Getting Started,你也可以按『N』到下個節點去;
  • Up:回到上一層的節點總攬畫面,你也可以按下『U』回到上一層;
  • Prev:前一個節點。但由於Top是info.info的第一個節點,所以上面沒有前一個節點的資訊。

七.一个很方便的文件编辑器--nano

nano 文件名(存在就打开,不存在就创建)

其指令都是在下面,很容易使用。

八.开机方法

在 Linux 底下,由於每個程序 (或者說是服務) 都是在在背景下執行的,因此,在你看不到的螢幕背後其實可能有相當多人同時在你的主機上面工作。不能想关就关。

  • 觀察系統的使用狀態:
    如果要看目前有誰在線上,可以下達『who』這個指令,而如果要看網路的連線狀態,可以下達 『 netstat -a 』這個指令,而要看背景執行的程序可以執行『 ps -aux 』這個指令。使用這些指令可以讓你稍微瞭解主機目前的使用狀態!當然囉,就可以讓你判斷是否可以關機了 (這些指令在後面Linux常用指令中會提及喔!)
     
  • 通知線上使用者關機的時刻:
    要關機前總得給線上的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別指令來達到此一功能。
     
  • 正確的關機指令使用:
    例如 shutdown 與 reboot 兩個指令!

几个与开机关机、重新启动有关的指令

  • 將資料同步寫入硬碟中的指令: sync

因此在Linux系統中,為了加快資料的讀取速度,所以在預設的情況中, 某些已經載入記憶體中的資料將不會直接被寫回硬碟,而是先暫存在記憶體當中,如此一來, 如果一個資料被你重複的改寫,那麼由於他尚未被寫入硬碟中,因此可以直接由記憶體當中讀取出來, 在速度上一定是快上相當多的!但是如果掉电,那就gg。所以可以手动地把资料写入硬盘。

目前的 shutdown/reboot/halt 等等指令均已經在關機前進行了 sync 這個工具的呼叫

  • 慣用的關機指令: shutdown

  • 重新開機,關機: reboot, halt, poweroff

习题来源:

http://linux.vbird.org/linux_basic/0160startlinux.php

九.档案的权限

1.档案拥有者User:某些档案设定为“只有档案拥有者”可以看,那么其他用户就不能看。

2.群组Group:几个用户组成的集合,他们之间可以共享某些档案。

3.其他人Others:除非主任放你进来,否则你无法进来。

ls指令  查看档案的指令

       

       ls -a -l =ls -al 连写

1.档案权限

 

  • 當為[ d ]則是目錄,例如上表檔名為『.config』的那一行;
  • 當為[ - ]則是檔案,例如上表檔名為『initial-setup-ks.cfg』那一行;
  • 若是[ l ]則表示為連結檔(link file);
  • 若是[ b ]則表示為裝置檔裡面的可供儲存的周邊設備(可隨機存取裝置);
  • 若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠(一次性讀取裝置)。

2.连接数

每個檔案都會將他的權限與屬性記錄到檔案系統的i-node中,不過,我們使用的目錄樹卻是使用檔名來記錄, 因此每個檔名就會連結到一個i-node囉!這個屬性記錄的,就是有多少不同的檔名連結到相同的一個i-node號碼去就是了。

3.档案拥有者、档案所属群组

4.档案大小,默认单位是bytes

 drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/

   此时others其实是不能读的,因为这是一个文件夹,无法执行它,就无法进入文件夹。

改变文件的权限

  • chgrp :改變檔案所屬群組

  • chown :改變檔案擁有者

类似的,这是改变档案拥有者:

复制文件cp:

此时test.txt是root的

使用命令chown:

此时的test.txt:

  • chmod :改變檔案的權限, SUID, SGID, SBIT等等的特性这

方法一:使用数字来修改:

三个权限的代表数字      r:4    w:2     x:1

每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,例如當權限為: [-rwxrwx---] 分數則是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0

所以输入:

得到:

方法二:符号类型改变档案权限

将demo.txt的权限改成   -rwxr-xr-x

输入:

得到:

输入

使得user group 和 others 都加入w可读权限:

输入

使得others没有w权限:

权限的重要意义

假設『檔案是一堆文件資料夾』,所以你可能可以在上面寫/改一些資料。而『目錄是一堆抽屜』,對一般檔案來說,rwx 主要是針對『檔案的內容』來設計權限,對目錄來說,rwx則是針對『目錄內的檔名列表』來設計權限。 其中最有趣的大概就屬目錄的 x 權限了!『檔名怎麼執行』?沒道理嘛!其實,這個 x 權限設計,就相當於『該目錄,也就是該抽屜的 "鑰匙" 』啦! 沒有鑰匙你怎麼能夠打開抽屜呢?對吧!

①权限对档案的重要意义

檔案是實際含有資料的地方,包括一般文字檔、資料庫內容檔、二進位可執行檔(binary program)等等。 因此,權限對於檔案來說,他的意義是這樣的:

  • r (read):可讀取此一檔案的實際內容,如讀取文字檔的文字內容等;
  • w (write):可以編輯、新增或者是修改該檔案的內容(但不含刪除該檔案);
  • x (eXecute):該檔案具有可以被系統執行的權限。

windows下文件有没有执行力是看他的后缀。而linux下的文件能否执行是根据他是否具有x权限。

基本上,Linux的檔案是沒有所謂的『副檔名』的,我們剛剛就談過,一個Linux檔案能不能被執行,與他的第一欄的十個屬性有關, 與檔名根本一點關係也沒有。這個觀念跟Windows的情況不相同喔!在Windows底下, 能被執行的檔案副檔名通常是 .com .exe .bat等等,而在Linux底下,只要你的權限當中具有x的話,例如[ -rwxr-xr-x ] 即代表這個檔案具有可以被執行的能力喔!x代表這個檔案具有可執行的能力, 但是能不能執行成功,當然就得要看該檔案的內容囉~

②权限对目录的重要意义

  • r (read contents in directory):

    表示具有读取文件内部清单的权限。可以把它底下的文件清单列出。
  • w (modify contents of directory):

    這個可寫入的權限對目錄來說,是很了不起的! 因為他表示你具有異動該目錄結構清單的權限,也就是底下這些權限:
    • 建立新的檔案與目錄;
    • 刪除已經存在的檔案與目錄(不論該檔案的權限為何!)
    • 將已存在的檔案或目錄進行更名;
    • 搬移該目錄內的檔案、目錄位置。
    總之,目錄的w權限就與該目錄底下的檔名異動有關就對了啦!
  • x (access directory):

    具有x权限,才能进入该目录内部,否则只具有r权限,只能看到目录内部文件的清单。
例題:假設有個帳號名稱為dmtsai,他的家目錄在/home/dmtsai/,dmtsai對此目錄具有[rwx]的權限。 若在此目錄下有個名為the_root.data的檔案,該檔案的權限如下:
-rwx------ 1 root  root  4365 Sep 19 23:20  the_root.data
請問dmtsai對此檔案的權限為何?可否刪除此檔案?答:

如上所示,由於dmtsai對此檔案來說是『others』的身份,因此這個檔案他無法讀、無法編輯也無法執行, 也就是說,他無法變動這個檔案的內容就是了。

但是由於這個檔案在他的家目錄下, 他在此目錄下具有rwx的完整權限,因此對於the_root.data這個『檔名』來說,他是能夠『刪除』的! 結論就是,dmtsai這個用戶能夠刪除the_root.data這個檔案!

 

十.档案的类型

分类

  • 正規檔案(regular file ):
    就是一般我們在進行存取的類型的檔案,在由 ls -al 所顯示出來的屬性方面,第一個字元為 [ - ],例如 [-rwxrwxrwx ]。另外,依照檔案的內容,又大略可以分為:
    • 純文字檔(ASCII):這是Linux系統中最多的一種檔案類型囉, 稱為純文字檔是因為內容為我們人類可以直接讀到的資料,例如數字、字母等等。 幾乎只要我們可以用來做為設定的檔案都屬於這一種檔案類型。 舉例來說,你可以下達『 cat ~/.bashrc 』就可以看到該檔案的內容。 (cat 是將一個檔案內容讀出來的指令)
    • 二進位檔(binary):還記得我們在『 第零章、計算機概論 』裡面的軟體程式的運作中提過, 我們的系統其實僅認識且可以執行二進位檔案(binary file)吧?沒錯~ 你的Linux當中的可執行檔(scripts, 文字型批次檔不算)就是這種格式的啦~ 舉例來說,剛剛下達的指令cat就是一個binary file。
    • 資料格式檔(data): 有些程式在運作的過程當中會讀取某些特定格式的檔案,那些特定格式的檔案可以被稱為資料檔 (data file)。舉例來說,我們的Linux在使用者登入時,都會將登錄的資料記錄在 /var/log/wtmp那個檔案內,該檔案是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼~因為他是屬於一種特殊格式的檔案。瞭乎?
  • 目錄(directory):
    就是目錄囉~第一個屬性為 [ d ],例如 [drwxrwxrwx]。
  • 連結檔(link):
    就是類似Windows系統底下的捷徑啦! 第一個屬性為 [ l ](英文L的小寫),例如 [lrwxrwxrwx] ;
  • 設備與裝置檔(device):
    與系統周邊及儲存等相關的一些檔案, 通常都集中在/dev這個目錄之下!通常又分為兩種:
    • 區塊(block)設備檔 :就是一些儲存資料, 以提供系統隨機存取的周邊設備,舉例來說,硬碟與軟碟等就是啦! 你可以隨機的在硬碟的不同區塊讀寫,這種裝置就是區塊裝置囉!你可以自行查一下/dev/sda看看, 會發現第一個屬性為[ b ]喔!
    • 字元(character)設備檔:亦即是一些序列埠的周邊設備, 例如鍵盤、滑鼠等等!這些設備的特色就是『一次性讀取』的,不能夠截斷輸出。 舉例來說,你不可能讓滑鼠『跳到』另一個畫面,而是『連續性滑動』到另一個地方啊!第一個屬性為 [ c ]。
  • 資料接口檔(sockets):
    既然被稱為資料接口檔, 想當然爾,這種類型的檔案通常被用在網路上的資料承接了。我們可以啟動一個程式來監聽用戶端的要求, 而用戶端就可以透過這個socket來進行資料的溝通了。第一個屬性為 [ s ], 最常在/run或/tmp這些個目錄中看到這種檔案類型了。
  • 資料輸送檔(FIFO, pipe):
    FIFO也是一種特殊的檔案類型,他主要的目的在解決多個程序同時存取一個檔案所造成的錯誤問題。 FIFO是first-in-first-out的縮寫。第一個屬性為[p] 。

后缀

我們仍然希望可以藉由副檔名來瞭解該檔案是什麼東西,所以, 通常我們還是會以適當的副檔名來表示該檔案是什麼種類的。底下有數種常用的副檔名:

  • *.sh : 腳本或批次檔 (scripts),因為批次檔為使用shell寫成的,所以副檔名就編成 .sh 囉;
  • *Z, *.tar, *.tar.gz, *.zip, *.tgz: 經過打包的壓縮檔。這是因為壓縮軟體分別為 gunzip, tar 等等的,由於不同的壓縮軟體,而取其相關的副檔名囉!
  • *.html, *.php:網頁相關檔案,分別代表 HTML 語法與 PHP 語法的網頁檔案囉! .html 的檔案可使用網頁瀏覽器來直接開啟,至於 .php 的檔案, 則可以透過 client 端的瀏覽器來 server 端瀏覽,以得到運算後的網頁結果呢!

基本上,Linux系統上的檔名真的只是讓你瞭解該檔案可能的用途而已, 真正的執行與否仍然需要權限的規範才行!例如雖然有一個檔案為可執行檔, 如常見的/bin/ls這個顯示檔案屬性的指令,不過,如果這個檔案的權限被修改成無法執行時, 那麼ls就變成不能執行囉!

档案名

單一檔案或目錄的最大容許檔名為 255bytes,以一個 ASCII 英文佔用一個 bytes 來說,則大約可達 255 個字元長度。若是以每個中文字佔用 2bytes 來說, 最大檔名就是大約在 128 個中文字之譜!

十一.Linux目录配置

Filesystem Hierarchy Standard (FHS)標準。根據FHS(註2)的標準文件指出,他們的主要目的是希望讓使用者可以瞭解到已安裝軟體通常放置於那個目錄下, 所以他們希望獨立的軟體開發商、作業系統製作者、以及想要維護系統的使用者,都能夠遵循FHS的標準。 也就是說,FHS的重點在於規範每個特定的目錄下應該要放置什麼樣子的資料而已。 這樣做好處非常多,因為Linux作業系統就能夠在既有的面貌下(目錄架構不變)發展出開發者想要的獨特風格。

  • 可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行檔與使用者的郵件等資料, 是能夠分享給網路上其他主機掛載用的目錄;
  • 不可分享的:自己機器上面運作的裝置檔案或者是與程序有關的socket檔案等, 由於僅與自身機器有關,所以當然就不適合分享給其他主機了。
  • 不變的:有些資料是不會經常變動的,跟隨著distribution而不變動。 例如函式庫、文件說明檔、系統管理員所管理的主機服務設定檔等等;
  • 可變動的:經常改變的資料,例如登錄檔、一般用戶可自行收受的新聞群組等。

事實上,FHS針對目錄樹架構僅定義出三層目錄底下應該放置什麼資料而已,分別是底下這三個目錄的定義:

  • / (root, 根目錄):與開機系統有關;
  • /usr (unix software resource):與軟體安裝/執行有關;
  • /var (variable):與系統運作過程有關。

根目录

根目录是系统最重要的一个目录,所有目录都是由根目录衍生出来的。根目录与开机、还原、系统修复有关,当系统出现问题时,根目录必须包含能够恢复档案的程序。

因為根目錄是這麼的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分割槽內, 因為越大的分割槽妳會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會,因此FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。 如此不但效能較佳,根目錄所在的檔案系統也較不容易發生問題。

  • /etc/:幾乎系統的所有設定檔案均在此,尤其 passwd,shadow
  • /boot:開機設定檔,也是預設擺放核心 vmlinuz 的地方
  • /usr/bin, /bin:一般執行檔擺放的地方
  • /usr/sbin, /sbin:系統管理員常用指令集
  • /dev:擺放所有系統裝置檔案的目錄
  • /var/log:擺放系統登錄檔案的地方
  • /run:CentOS 7 以後才有,將經常變動的項目(每次開機都不同,如程序的PID)移動到記憶體暫存,所以 /run 並不佔實際磁碟容量

/usr的意义与内容

很人都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦!這點要注意。 FHS建議所有軟體開發者,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。

因為是所有系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:\Windows\ (當中的一部份) + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。一般來說,/usr的次目錄建議有底下這些:

/var的意义与内容

如果/usr是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。 因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案, 包括程序檔案(lock file, run file),或者例如MySQL資料庫的檔案等等。常見的次目錄有:

目录树

进入根目录:     cd ..

  • 目錄樹的啟始點為根目錄 (/, root);
  • 每一個目錄不止能使用本地端的 partition 的檔案系統,也可以使用網路上的 filesystem 。舉例來說, 可以利用 Network File System (NFS) 伺服器掛載某特定目錄等。
  • 每一個檔案在此目錄樹中的檔名(包含完整路徑)都是獨一無二的。

绝对路径和相对路径

  • 絕對路徑:由根目錄(/)開始寫起的檔名或目錄名稱, 例如 /home/dmtsai/.bashrc;
  • 相對路徑:相對於目前路徑的檔名寫法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正開頭不是 / 就屬於相對路徑的寫法

而你必須要瞭解,相對路徑是以『你當前所在路徑的相對位置』來表示的。舉例來說,你目前在 /home 這個目錄下, 如果想要進入 /var/log 這個目錄時,可以怎麼寫呢?

  1. cd /var/log   (absolute)
  2. cd ../var/log (relative)

因為你在 /home 底下,所以要回到上一層 (../) 之後,才能繼續往 /var 來移動的! 特別注意這兩個特殊的目錄:

  • .  :代表當前的目錄,也可以使用 ./ 來表示;
  • .. :代表上一層目錄,也可以 ../ 來代表。

猜你喜欢

转载自blog.csdn.net/weixin_38967434/article/details/83089281
今日推荐