1. 程式人生 > 實用技巧 >Linux基本命令學習

Linux基本命令學習

對作業系統進行資訊查詢

硬碟大小

檢視磁碟資訊: fdisk -l
/dev/sda 作業系統中第一塊硬碟的名稱以及所在路徑
linux作業系統中一切皆檔案(檔名) sd(硬碟型別) a(第一塊)

為什麼很多時候實際容量比廠家標註的要小?
因為廠家按照1000作為進位制,而作業系統按照1024作為進位制

記憶體大小

cat /proc/meminfo 只需要關注第一行,Memtotal

CPU型號

cat /proc/cpuinfo

關機的命令

reboot  重啟
poweroff  關機

作業系統的目錄結構及檔案屬性

linux作業系統樹狀結構
目錄==資料夾
起始 / 是一切的起源
cd  change directory

cd .. 返回上一級目錄
pwd  顯示當前路徑
ls   list,列出當前目錄中的內容
/bin  普通使用者和管理員都可以執行的命令
/sbin  只有管理員才能執行的命令 關機重啟
/boot  引導 主引導目錄 獨立的分割槽 啟動選單 核心
/dev  device-裝置  裝置檔案存放目錄
/etc  配置檔案存放目錄
/home  普通使用者的家目錄
/root  管理員的家
/lib /lib64  一些庫檔案
/media  光碟機的掛載目錄
/mnt  臨時裝置掛載目錄
/proc  裡面的資料都在記憶體裡,程序的所在目錄
/tmp  臨時檔案存放目錄
/usr  軟體安裝目錄
/var  嘗變檔案存放目錄 日誌檔案 郵件檔案

快捷鍵使用及檔案系統分類

安裝vmware-tools 實現虛擬機器和真實機之間的檔案複製
進入資料夾,可以通過絕對路徑/相對路徑進入
Tab  可以補全命令字/路徑/檔案
Ctrl+L  清屏
Ctrl+C  終止當前程序

linux通過檔案顏色分辨檔案型別

藍色  目錄
黑色  普通檔案
淺藍色  符號連結(快捷方式)
黑底黃字  裝置檔案 硬碟 sda
綠色  可執行檔案
紅色  壓縮包
紫色  圖片&模組檔案

增刪改查基礎命令

檢視目錄下有哪些內容  ls
檢視檔案內容  cat
建立檔案  touch  echo "hello" > 檔案
建立目錄  mkdir 目錄名
改:剪下和複製  mv(也可以重新命名)  cp
建立符號連結

  ln -s /tmp/class1/class11.txt /root/Desktop/ [連結名字] (就是快捷方式,一定要用絕對路徑)
刪除  rm  可選項 -f (強制刪除,但是目錄下面有東西時不行)  -fr/-rf (r遞迴刪除,可以刪除目錄)

命令字幫助資訊查詢  

linux命令字格式 : 命令字 [選項] [檔案或者目錄]
那麼如何檢視一個命令字的幫助手冊
man  menu-選單
eg. man ls
退出這個詳細的檢視模式按q
查詢就輸入 /-l 就能查到很多包含 -l 的東西, 用 n 鍵跳下一個
ls -a  檢視隱藏檔案
ls -l  檢視檔案的詳細資訊
ls -lh  顯示檔案的大小
ls -R  遞迴顯示目錄中子目錄的內容


當前作業系統有內部命令和外部命令(安裝的第三方軟體帶來的,通常都帶有幫助手冊)
內部命令  命令直譯器自帶的命令  help cd (檢視cd的使用)

壓縮與解壓

/tmp 目錄中建立一個大小為100m的檔案bigfile
dd if=/dev/zero of=/tmp/bigfile bs=1M count=100

if = inputfile   of = outputfile   bs 單位  count 計數器

gzip bigfile (用來壓縮該檔案)

紅色代表是壓縮檔案.

用 file bigfile.gz 命令 分析該壓縮檔案

可以看出該檔案是gzip壓縮的

那麼怎麼解壓縮呢?

gunzip bigfile.gz

得到解壓檔案


還有個bzip2,壓縮與解壓縮命令分別如下:

root@ryan-virtual-machine:/tmp# bzip2 bigfile
root@ryan-virtual-machine:/tmp# bunzip2 bigfile.bz2

還有檢視目錄大小,一般不用ls

用 du -sh /tmp

root@ryan-virtual-machine:/tmp# ls -lhd /tmp
drwxrwxrwt 18 root root 4.0K 8月 31 19:48 /tmp
root@ryan-virtual-machine:/tmp# du -sh /tmp
101M /tmp

怎麼壓縮個目錄呢>>>這倆工具都不能壓縮目錄呀?

如何壓縮目錄

先進行打包(tar),再壓縮.

tar -cf /tmp/allfile.tar /tmp/allfile (c是create)

對allfile資料夾打包成allfile.tar

不開啟包的情況下看看包裡有啥: tar -tvf allfile.tar

怎麼解包呢?

tar -xf allfile.tar -C [目標目錄]

有沒有直接打包壓縮?

tar -zcf /tmp/allfile.tar.gz allfile

可以直接解壓解包?

tar -zxf allfile.tar.gz -C [目標路徑]

-z使用的gzip壓縮, -j 使用的是bzip2

vim編輯器使用

vi編輯器, vim的升級版

在/tmp目錄中建立一個名為test.txt的檔案並寫入hello

三種工作模式: 命令模式  輸入模式  末行模式

命令模式->輸入模式 : i

輸入模式->末行模式 : Esc到命令模式 ,然後輸入 : 再加命令 q (推出) / wq (儲存退出) / !q (不儲存退出)

:set nu  顯示行號

:% s/l/x/g  %代表每一行, s代表替換, g是代表無論出現多少的 l 都會被替換成 x :% s/old/new/g , 每一行中的old替換成new

命令模式有非常多的快捷編輯快捷鍵

2yy複製當前行及下一行

p為貼上到當前行下

dd 刪除當前行

gg回到第一行

G回到最後一行

50G去五十行

我想刪除50-60的所有行, 游標放在50行, 輸入50dd

想要刪除50-55行的資料  用 :50,55d

linux軟體安裝

軟體的分類:

原始碼包 :

程式碼公開,需要自己編譯安裝,一般以壓縮包形式提供,開源,可以進行二次編輯, 並且會有很多人維護

可以指定安裝的路徑和編輯所需要的功能

現在有一個 httpd-2.2.15.tar.gz

先解包 tar -zxfhttpd-2.2.15.tar.gz -C /usr/src (/usr/src是原始碼存放路徑)

README可以看到軟體功能, 安裝是哪個檔案指導我們呢? INSTALL

通過配置指令碼指定安裝路徑和功能, 並且聲稱makefile編譯指令碼檔案

/configure --prefix=/usr/local/webserver

通過make命令控制makefile檔案進行順序編譯

最後將編譯好的檔案拷貝到安裝路徑下 make install

封裝後的軟體包 :

原始碼包安裝步驟略顯繁雜,不同linux廠家對軟體進行了封裝.

特點字尾

rpm  red hat package manager

deb  debian

原始碼包可以不考慮系統的版本, 封裝後就不能無視啦  封裝好的軟體包都是壓縮檔案

ls | grep "tree"  解釋: | 是管道符, 作用是將前一個命令的輸出作為後一個命令的輸入, grep是過濾, .

安裝rpm包軟體步驟

針對軟體安裝,首先要確認有沒有安裝過該軟體.  (CentOS) rpm -qa  列出所有已經安裝過的rpm軟體包 (Ubuntu)dpkg -l

確認該軟體的作用 .   (CentOS)rpm -qpi [軟體名]  檢視軟體詳細資訊  

確認該軟體安裝的路徑  封裝後的軟體包安裝路徑固定

安裝軟體        (CentOS) rpm -ivh [軟體名]  (Ubuntu) apt-get installl

怎麼解除安裝  (CentOS) rpm -e [軟體名]  (Ubuntu) apt-get uninstall

通過yum安裝軟體

解除安裝軟體需要先解除安裝依賴它的軟體

安裝軟體需要先安裝依賴

不想這樣安裝解除安裝了, 想根據依賴關係表安裝、解除安裝軟體

linux作業系統中的使用者分類

ryan  普通使用者 比管理員低, 也可以呃登陸系統

root  超級管理員

使用者的分類和組

/etc/passwd  儲存了作業系統中所有使用者的資訊

使用者名稱

密碼佔位符

使用者的uid 0表示超級使用者 500-60000表示普通使用者 1-499表示程式使用者, 不允許登陸系統

基本組的gid 先有組, 才有使用者

使用者資訊記錄欄位

使用者的家目錄

使用者登陸系統後使用的命令直譯器

/etc/shadow 儲存了使用者密碼資訊

使用者名稱

使用者的密碼加密後的字串

距離1970/1/1 密碼最近一次的修改時間

密碼的最短有效期

密碼的最長有效期

密碼過期前7天警告

密碼的不活躍期

使用者的失效時間

調整及建立使用者屬性

建立一個class1的組,組id為1005,class2的組id 2000
建立tom使用者要求其基本組是class1組, 附加組為class2組, tom使用者的uid為600
建立一個程式使用者uid為250 使用者名稱為testuser 沒有家目錄
將tom使用者設定密碼為123 並設定密碼最長有效期為90天 將使用者密碼進行鎖定使其無法登陸系統
刪除tom使用者和testuser使用者 刪除class1組和2組

groupadd class1
cat /etc/group  發現建立的組id不符合要求

groupmod -g 1005 class1  我改!

groupadd -g 2000 class2  這次直接幹!

useradd -g class1 tom  還要uid?還要附加組

usermod -G 2000 -u 600 tom

useradd -u 250 -M -s /sbin/nologin testuser  -M是沒有家目錄, -s /sbin/nologin 是不能登入

chage -M 90 tom

passwd -l tom  鎖定tom

passwd -u tom  解鎖tom

passwd -S tom  檢視使用者密碼資訊

userdel -r testuser

userdel -r tom

groupdel class1

groupdel class2

調整檔案及目錄許可權

直接檢視檔案許可權的命令

root@ryan-virtual-machine:/tmp# ls -l test.txt
-rw-r--r-- 1 root root 6 8月  31 20:25 test.txt

檢視資料夾許可權呢

-rw-r--r-- 1 root(所屬者) root(所屬組) 6(關聯的資料 / 目錄中的子目錄格式) 8月 31 20:25 test.txt

許可權一共10個字母 : d rwx --- ---

欄位1 : 檔案型別 -普通檔案 d目錄 l符號連結 b塊裝置

欄位2 : 檔案所屬者對該檔案的許可權

    r          w        x

檔案 讀取        寫入      執行

目錄 可以檢視目錄內容 可以增刪檔案  可以進入目錄

欄位3 : 檔案所屬組的許可權

欄位4 : 其他使用者的許可權(既不是檔案所有者也不是檔案所屬組中的使用者)


chmod 使用者 算數運算子 許可權檔案

使用者 : u(所屬者)   g(所屬組)   o(其他使用者的許可權)   a(all)

算術運算子 : -去除許可權  +新增許可權  =指定許可權

許可權 : rwx


改變所屬者為tom 所屬組改為tom組

chown tom /tmp/test.txt

chgrp tom /tmp/test.txt

7代表 111 , 是4+2+1 ,代表 rwx全有


粘滯位針對目錄進行授權, 目錄中建立的檔案只有建立者可以刪除

chmod o+t test  這個 t

tmp資料夾就有粘滯位, 每個程序只能刪除自己的檔案


sgid是針對目錄建立的許可權, 在該目錄中建立的檔案所屬組繼承父目錄的屬組

chmod g+s test


suid針對可執行檔案建立.執行這個程式的使用者就會繼承這個檔案所屬者的許可權, 這個跟系統的安全有很大關係

chmod u+s [檔名]

不再允許新增新使用者的請求

建立新使用者時候, 沒有指定組的話, 先在 /etc/group建立一個使用者同名組

再在/etc/passwd註冊使用者資訊

再在/etc/shadow註冊密碼資訊

在/home下生成家目錄檔案

只要/etc/passwd和/etc/shadow目錄鎖定 ,就可以不再新增新使用者.

chattr +i/etc/passwd /etc/shadow  這就成啦  i 就是不可變屬性

解除的話就 -i 即可

umask值

目錄的最高許可權 0777-0022 = 0755

檔案 666 - 022 = 644

umask值最好是027, 讓其他使用者沒有任何許可權

在作業系統裡怎麼修改這個值呢??

一個是在 /etc/profile

還有一個在  /etc/bashrc

建立使用者預設密碼有效期90天

還在  /etc/profile 檔案裡修改 PASS_MAX_DAYS