一、文件管理
1.1快捷鍵
編輯命令:
Ctrl + a :移到命令行首
Ctrl + e :移到命令行尾
Ctrl + u :從光標處刪除至命令行首
Ctrl + k :從光標處刪除至命令行尾
Ctrl + w :從光標處刪除至字首
Ctrl + d :刪除光標處的字符
Ctrl + h :刪除光標前的字符
?
重新執行命令:
Ctrl + p:歷史中的上一條命令
ESC + .:打印之前執行過的命令的最后一部分 以空格為分隔符
?
控制命令:
Ctrl + l:清屏
Ctrl + c:終止命令
?
Tab鍵: 自動補全
1.2歷史命令
上下箭頭
history
ctrl + r
!命令行號
1.3Linux目錄結構
在linux系統中一切皆文件
2. WINDOWS/LINUX 對比
Windows: 以多根的方式組織文件 C:\ D:\ E:\
Linux: 以單根的方式組織文件"/"
2.2 簡介
/目錄結構:
FSH (Filesystem Hierarchy Standard):標準的目錄結構
[root@qfedu ~]# ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
2.2.1 圖示
2.2.2 目錄功能
bin 普通用戶使用的命令 /bin/ls, /bin/date
sbin 管理員使用的命令 /sbin/service
案例:
[root@qfedu ~]# which ls
[root@qfedu ~]# which useradd
/usr/sbin/useradd
?
dev 設備文件 /dev/sda,/dev/sda1
[root@qfedu ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 31 14:16 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 31 14:16 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 31 14:16 /dev/sda2
?
目錄介紹:
/root #root用戶的家目錄
/home #存儲普通用戶家目錄
lost+found 這個目錄平時是空的,存儲系統非正常關機而留下“無家可歸”
的文件
/usr #系統文件,相當于C:\Windows
/usr/local #軟件安裝的目錄,相當于C:\Program
/usr/bin #普通用戶使用的應用程序
/usr/sbin #管理員使用的應用程序
/usr/lib #庫文件Glibc 32bit
/usr/lib64 #庫文件Glibc 64bit
/boot #存放的系統啟動相關的文件,例如kernel
/etc #配置文件(系統相關如網絡/etc/sysconfig/network)
/tmp #臨時文件(系統:程序產生的臨時文件)
/opt #空目錄
/media #用于掛載u盤,光驅等自動識別的設備
/srv #存放服務啟動后產生的數據目錄
/var #存放的是一些變化文件,比如數據庫,日志,郵件....
/proc #虛擬文件系統,系統程序文件所處目錄 。虛擬文件系統:只要關機就會沒有。
/mnt #系統提供這個目錄是讓用戶臨時掛載其他的文件系統
2.2.3 路徑詳解
所謂路徑即目錄組成結構 一個linux路徑由"/"和目錄(文件)名稱兩部分組成 比如:/etc/passwd如果"/"出現在路徑開頭,則其表示根目錄,在路徑中間出現"/",其含義是某一個目錄下,那么上面所示路徑的意思就是"根目錄下的etc目錄下的passwd文件"如果路徑最后出現"/",則表示這是一個目錄
2.2.4 路徑分類
絕對路徑:從根開始的路徑是絕對路徑。案例:/home/alice/file1 /etc/grub.conf 相對路徑:凡是非根開始的路徑 比如:etc var/ftp/pub ./test.sh ? 使用pwd命令查看當前所在的絕對路徑: 比如:[root@qfedu etc]# pwd /etc
2.2.5 絕對路徑實例
[root@qfedu ~]# touch /opt/file1
2.2.6 相對路徑示例
[root@qfedu ~]# pwd
/root
[root@qfedu ~]# mkdir abc #創建目錄
[root@qfedu ~]# touch abc/file3
2.2.7 查看歷史命令
[root@qfedu ~]# history
[root@qfedu ~]# clear #清屏
快捷鍵:ctrl+l #---清屏
3.文件管理
3.1 文件類型(理解即可)
- 普通文件(文本文件,二進制文件,壓縮文件,圖片。。。)d 目錄文件(藍色)b 設備文件 block device 設備文件,如硬盤,U盤;c 設備文件 字符設備文件,比如我們的終端tty1,打印機。l symbolic link 即符號鏈接文件,又稱軟鏈接文件 (淺藍色)s socket 即套接字文件,用于實現兩個進程進行通信p 管道文件
3.2 示例1
查看各式各樣的文件類型。你能找出幾種呢?
[root@qfedu ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x. 1 root root 117656 Nov 6 2016 /bin/ls
srw-rw-rw-. 1 root root 0 Oct 31 14:16 /dev/log
brw-rw----. 1 root disk 8, 0 Oct 31 14:16 /dev/sda
crw--w----. 1 root tty 4, 1 Oct 31 14:42 /dev/tty1
lrwxrwxrwx. 1 root root 22 Oct 31 12:11 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jun 7 2013 /etc/hosts
drwxr-xr-x. 2 root root 6 Nov 5 2016 /home
prw-------. 1 root root 0 Oct 31 14:16 /run/dmeventd-client
注意
通過顏色判斷文件的類型是不一定正確的!!!
4.文件管理命令
4.1 切換目錄
# . ? ? 表示當前目錄 # cd .. 回到上一級目錄等同于相對路徑 # cd 或者 cd ~ 直接回到家目錄 # cd /home/alice 切換目錄=絕對路徑 # cd - 回到原來目錄
4.2 創建文件
[root@qfedu ~]# touch file1.txt #無則創建,如果存在修改時間
[root@qfedu ~]# touch /home/file10.txt
[root@qfedu ~]# touch /home/{zhuzhu,gougou} #{}集合
[root@qfedu ~]# touch /home/file{1..20} #批量創建
echo 加內容 ? > 加文件名 ? ?#覆蓋:把之前的內容替換掉 # echo 123 > a.txt echo 加內容 >> 加文件名 ? ? #追加:保留之前的內容,在后面添加新內容 # echo 345345 >> a.txt ? 當使用echo 123 >> a.txt 這個命令的時候在文件不存在的時候會創建該文件并將內容追加到改文件中
4.3 創建目錄
語法:mkdir -v 詳細 -p 遞歸 目錄
# mkdir dir1
創建兩個目錄:
# mkdir /home/dir2 /home/dir3
# mkdir /home/{dir4,dir5}
# mkdir -v /home/{dir6,dir7} #-v :verbose 冗長的。顯示創建時的詳細信息
# mkdir -p /home/dir8/111/222 #-p 創建連級目錄,一級一級的創建
*4.4.復制**
==復制 cp -r 目錄 -v 詳細 -f 強制 -n 靜默
Usage: cp [OPTION]... [-T] SOURCE DEST
# mkdir /home/dir{1,2} #創建目錄
# cp -v anaconda-ks.cfg /home/dir1/ #-v 顯示詳細信息
# cp anaconda-ks.cfg /home/dir1/test.txt #復制并改文件名
# cp -r /etc /home/dir1 #-r 拷貝目錄使用,連同目錄里面的文件一塊拷貝
# cp -r /etc /tmp
?
語法: cp -r 源文件1 源文件2 源文件N 目標目錄 #將多個文件拷貝到同一個目錄
# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hosts .
4.5 移動
1.創建一個新文件file1
[root@qfedu ~]# touch /root/file1
2.把file1文件移動到/tmp目錄中。
[root@qfedu ~]# mv /root/file1 /tmp/
[root@qfedu ~]# ls /tmp/file1
/tmp/file1
3.把file1文件更名為file2
[root@qfedu ~]# mv /tmp/file1 /tmp/file2
4.觀察file1文件已經更名為file2
[root@qfedu ~]# cd /tmp/
[root@qfedu tmp]# ls
file2
4.6 刪除
==刪除 rm -r 遞歸刪除目錄 -f force強制 -v 詳細過程 *通配符
實例1:刪除/home/dir1# cd /home/
# rm -rf dir1/
?
-r 遞歸,刪除目錄時
-f force強制
-v 詳細過程
示例2:
[root@qfedu ~]# mkdir /home/dir10
[root@qfedu ~]# touch /home/dir10/{file2,file3,.file4}
[root@qfedu ~]# rm -rf /home/dir10/* //不包括隱藏文件
[root@qfedu ~]# ls /home/dir10/ -a
. .. .file4
示例3:
[root@qfedu ~]# touch {1..10}.txt
[root@qfedu ~]# touch file{1..20}.txt #創建file1-10的txt文件
[root@qfedu ~]# rm -rf file1*
4.7 查看文件內容
cat---查看一個文件的全部內容
[root@qfedu ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...
?
參數:
-n 顯示行號
-A 包括控制字符(換行符/制表符)
head頭部
[root@qfedu ~]# head /etc/passwd #默查看前十行
[root@qfedu ~]# head -2 /etc/passwd #默認查看前兩行
tail尾部
[root@qfedu ~]# tail /etc/passwd #默認查看文件的后十行
[root@qfedu ~]# tail -1 /etc/passwd #查看文件最后一行
[root@qfedu ~]# tail /var/log/messages
[root@qfedu ~]# tail -f /var/log/secure #-f 動態查看文件的尾部
[root@qfedu ~]# tailf /var/log/secure #功能同上
grep過濾關鍵字 grep 針對文件內容進行過濾
過濾文件中帶有root的內容:
[root@qfedu ~]# grep 'root' /etc/passwd
過濾以root開頭的行:^ --以什么開頭
[root@qfedu ~]# grep '^root' /etc/passwd
過濾以bash結尾的行:$ --以什么結尾
[root@qfedu ~]# grep 'bash$' /etc/passwd
less --分頁顯示
[root@qfedu ~]# less /etc/makedumpfile.conf.sample
1.空格鍵是翻頁 回車鍵是翻行
2.上下箭頭可以來回翻
3. /關鍵字 #搜索 (n按關鍵字往下翻 N按關鍵字往上翻)
4.快捷鍵:q -quit 退出
more --分頁顯示文件內容
[root@qfedu.com ~]# more 文件名
空格鍵是向下翻頁 回車鍵是翻行
Ctrl+B 向上翻頁
?
二、文件編輯器
打開文件
[root@qfedu.com ~]# vim 文件名
工作模式
vi與vim的四個模式
進入編輯模式
i #在光標所在處進入編輯模式 a #在當前光標后面進入編輯模式 o #在光標的下一行進入編輯模式 I #在光標所在處行首進入編輯模式 A #在光標所在處行尾進入編輯模式 O #在光標的上一行進入編輯模式 ?# 從編輯模式進入命令模式:ESC
命令模式
光標定位鍵盤: 0 $ ? ? ? ?#行首行尾 gg ? ? ? ?#頁首--文本頂端 G(shift+g) ?#頁尾--文本底部 3G ? ? ? ? ? #進入第三行 /string ? ? #查找字符,n下一個,N上一個 ? (n N 可以循環的)
文本編輯
yy ? ? ?#復制 3yy ? ? #從光標開始復制3行。在最后粘貼ygg ? ? #從當前光標復制到頁首yG ? ? ?#從光標開始復制到頁尾dd ? ? ?#刪除一行3dd ? ? #從光標開始刪除3行dgg ? ? #從光標開始刪除到頁首 dG ? ? ?#從光標開始刪除到頁尾d^ ? ? ?#刪除當前光標之前的內容p ? ? ? #粘貼到本行的下一行 大P ? ? ?#粘貼到本行的上一行x ? ? ? #刪除光標所在的字符D ? ? ? #從光標處刪除到行尾u ? ? ? #undo撤銷r ? ? ? #可以用來修改一個字符
擴展命令(尾行)模式:
shift+: ? ?#進入尾行模式(擴展命令模式):10 ? ? ? ?#進入第10行 :w ? ? ? ? #保存 :q ? ? ? ? #退出 :wq ? ? ? ?#保存并退出 :q! ? ? ? ?#不保存并退出 :wq! 強制保存退出
進入其他模式
ctrl+v ? ? #進入可視塊模式 ctrl+v 選中 shift+i 輸入替換文字 兩次esc 選中部分全部替換 shift+v ? ?#進入可視行模式 ?
查找替換
語法----> :范圍 s/old/new/選項 :s/world/nice/ ? ? ? ? #替換當前光標所在行 :3s/sbin/nice/ ? ? ? ? #替換指定行 :1,5 s/nologin/soso/ ? #從1-5行的nologin 替換為soso :%s/bin/soso/ ? ? ? ? ?#替換所有行 :%s/sbin/nice/g ? ? ? ?#替換行內所有關鍵字 ? 注釋:%表示替換所有行 g表示行內所有關鍵字 ? 將文件另存(另存為) 語法----> :w 存儲到當前文件 :w /tmp/aaa.txt ? ?#另存為/tmp/aaa.txt :1,3 w /tmp/2.txt ?#從1-3行的內容另存為/tmp/2.txt
設置環境 :
:set nu ? ?#設置行號 :set list ?#顯示控制字符 :set nonu ?#取消設置行號
文件基本信息
時間類型
訪問時間:atime,查看內容 修改時間:mtime,修改內容 改變時間:ctime,文件屬性,比如權限,mv改名
查詢示例
[root@qfedu ~]# ls -l passwd
-rw-r--r--. 1 root root 839 Oct 31 21:29 passwd
?
[root@qfedu ~]# stat passwd File: ‘passwd’Size: 839 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33583688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-10-31 21:29:40.750993492 +0800
Modify: 2019-10-31 21:29:36.449993550 +0800
Change: 2019-10-31 21:29:36.452993550 +0800Birth: -
ls -l 文件名 僅看的是文件的修改時間
三、Linux用戶管理
理解用戶和組的意義
Linux的一大特性:
多用戶、多任務。
所謂多用戶多任務就是指可以在同一時間,有多個用戶登錄同一個系統執行不同的任務而互不影響。
假設現在有三個用戶:root、lbb、mvv,三個用戶同一時間登錄了同一個系統,root去修改配置文件了,lbb去創建目錄了,mvv去訪問數據庫了,每個用戶互不干擾的獨立執行自己的任務,并且每個用戶不能夠越線去訪問其他用戶正在操作的目錄或執行其他用戶下的任務,由此可見,不同的用戶是擁有各自不同的權限的,Linux通過權限的劃分和管理來實現多用戶、多任務的運行機制。
Linux中的用戶及其角色劃分
賬戶為分三類: 超級用戶(管理員):享有最高權限,具備系統中的所有權限(一般為root),UID為0 系統用戶 :別稱“偽用戶”,無法登錄系統,其主要作用是支撐系統運行,方便系統管理。uid號碼小于1000. 普通用戶:有權限限制,只能對自己目錄下的文件進行操作,可以登錄系統。uid 大于1000,登陸shell是bin/bash。 任何一個賬戶在創建的同時都會在系統里面創建一個同名的組。
用戶概覽
用戶/組基本概念!
Users and groups: 系統上的每個進程(運行的程序)都是作為特定用戶運行的 . Every file is owned by a particular user. 每個文件是由一個特定的用戶擁有 . . Access to files and directories are restricted by user. 訪問文件和目錄受到用戶的限制
用戶管理
用戶組
創建組
[root@qfedu ~]# groupadd hr #創建一個用戶組叫hr
[root@qfedu ~]# groupadd it #創建一個用戶組叫it
[root@qfedu ~]# groupadd net01 -g 2000 #創建組叫net01,并指定gid為2000
[root@qfedu ~]# grep 'net01' /etc/group #查看/etc/group中組net01信息
net01:x:2000:
?
刪除組
*[root@qfedu ~]# groupdel net01 #刪除組net01
注意:用戶的主屬組不能刪除
/etc/group ?----->查看組的文件
/etc/group文件詳解:
查看組
*[root@qfedu ~]#cat /etc/group
組名:代表組密碼:gid:組員
用戶
==創建用戶 未指定選項==
[root@qfedu ~]# useradd user01 //創建用戶
/etc/passwd ---->查看賬戶是否存在的文件
/home/ ---->用戶的家目錄,每創建一個用戶會在/home目錄下面創建對應的家目錄
/etc/shadow --->用戶的密碼文件
/etc/passwd文件詳解--案例:
此文件里面除了密碼字段能刪除不能直接修改之外,其他字段全部都能直接修改
[root@qfedu ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 分隔符:: 第一列:用戶名 第二列:密碼 第三列:用戶標識號--->(uid)是一個整數,系統內部用它來標識用戶。通常用戶標識號的取值范圍是0~65535。0是超級用戶root的標識號 第四列:gid 第五列:描述信息。 第六列:家目錄 第七列:是用戶登陸到界面的第一個命令,開啟一個shell。登陸shell
1.判斷用戶是否存在: [root@qfedu ~]# id user01 ? //查看用戶的uid、gid、和所在組 uid=1001(user01) gid=1003(user01) groups=1003(user01)主屬組 ? ? ? ? ? ? ? ? ? 附屬組 uid 系統用來識別賬戶的user identify gid 系統用來識別組的group identify ? 2.查看現在所使用的的賬戶: [root@qfedu ~]# whoami 查看我現在所使用的賬戶
創建用戶(帶有選項)
[root@qfedu ~]# useradd user02 -u 503 #指定uid為503
*[root@qfedu ~]# useradd user05 -s /sbin/nologin #創建用戶并指定shell
[root@qfedu ~]# useradd user07 -G it,fd #創建用戶,指定附加組
[root@qfedu ~]# useradd user10 -u 4000 -s /sbin/nologin
刪除用戶
[root@qfedu ~]# userdel -r user02 //刪除用戶user2,同時刪除用戶家目錄
用戶密碼
[root@qfedu ~]# passwd alice #root用戶可以給任何用戶設置密碼
[root@qfedu ~]# passwd #root用戶給自己設置密碼
[root@qfedu ~]# su - alice
[alice@qfedu ~]$ passwd #普通用戶只能給自己修改密碼,而且必須提供原密碼
用戶操作
1.修改UID
-u
[root@qfedu ~]# usermod -u new_id jack
[root@qfedu ~]# id jack
uid=1005(jack) gid=1004(jack) groups=1004(jack)
2.修改用戶的登錄shell
-s
[root@qfedu ~]# usermod -s /sbin/nologin user07 #修改用戶的登錄shell
?
*usermod -aG 添加用戶到附屬組
組成員管理
注意:只針對已存在的用戶
1.給組添加賬戶
-a
[root@qfedu ~]# gpasswd -a user10 grp2
Adding user user10 to group grp2
2.同時添加多個用戶到組
-M:members成員的縮寫
[root@qfedu ~]# gpasswd -M tom,alice it
3.從組刪除用戶1
-d
*[root@qfedu ~]# gpasswd -d user07 hr
Removing user user07 from group hr
?