1、總結文本編輯工具vim的使用方法;
vim:
模式化:
編輯模式:命令模式
輸入模式:
末行模式:
編輯模式 --> 輸入模式:
i: insert, (插入)
a:append,(插入)
輸入模式 --> 編輯模式:
ESC
編輯模式 --> 末行模式:
:
末行模式 --> 編輯模式
ESC
打開vim:
# vim
# vim /PATH/TO/SOMEFILE
+#:#爲行號;
+/PATTERN
關閉vim:
:q
:q!
:wq
:x
ZZ:保存退出
段落間移動:
}
{
編輯命令:
字符編輯:
x: 刪除光標所在處的字符
#x:
xp:
r: 替換光標所在處的字符;
刪除命令:
d:
d^
d$
d0
dw, de, db
dd:
#COMMAND
注意:刪除的內容會被vim編輯器保存至緩衝區當中;
粘貼:p (paste, put)
如果此複製或刪除的內容不是一個完整行
p:粘貼至當前光標所在處後面;
P:粘貼至當前光標所在處前面;
如果複製的內容是完整行(可不止一行)
p: 粘貼至當前光標所在行下方;
P:行上方;
改變命令:c, change
c$, c^, c0
cb, ce, cw
cc:
#COMMAND
撤消此前的編輯操作:
u: undo
撤消此前編輯操作;
#u
Ctrl+r:
恢復此前的撤消操作
.: 重複前一個編輯操作
vim的末行模式
(1) 地址,定界
:start_pos,end_pos
#:第#行;
#,#
#,+#
.: 當前行
$: 最後一行
%: 全文,相當於1,$
/pat1/:第一次被此模式所匹配到的行;
#,/pat1/
/pat1/,/pat2/
後可跟編輯命令:
d, y
w, r
(2) 查找
/PATTERN:向尾部進行
?PATTERN:向首部進行
n: 與命令同方向
N:與命令反方向
(3) 查找替換
s: 在末行模式下,在地址定界的範圍內完成查找替換操作;
s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可使用模式
替換爲的內容:不能使用模式,但可以使用後向引用符號,以引用前面模式中的分組括號所匹配到的內容;
\1, \2, ...
&:引用“要找的內容”匹配到的整個內容;
修飾符:
i: 忽略大小寫
g: 全局替換
/:用於分隔符,所以,要查找的內容或替換爲的內容中出現此符號,要使用\對其轉義,使用格式:\/
分隔符可替換爲其它字符:例如@,#等;
多文件窗口分割:
vim -o|-O FILE1 FILE2 ...
Ctrl+w, ARROW
定製vim的某些工作特性:
(1) 行號
顯示:set nu
禁用:set nonu
(2) 括號匹配
顯示:set sm
禁用:set nosm
(3) 自動縮進:
set ai
set noai
(4) 高亮搜索
set hlsearch
set nohlsearch
(5) 語法着色
syntax on
syntax off
(6) 忽略字符大小寫
set ic
set noic
:help 獲取幫助
:help SUBJECT
特性設定的永久生效方式:
全局配置文件:/etc/vimrc
用戶個人的配置文件:~/.vimr
2、總結文件查找命令find的使用方法
find的使用格式如下:
find <指定目錄> <指定條件> <指定動作>
- <指定目錄>: 所要搜索的目錄及其所有子目錄。默認爲當前目錄。
- <指定條件>: 所要搜索的文件的特徵。
- <指定動作>: 對搜索結果進行特定的處理。
[root@localhost /]# find . -name'bin*' 查找當前目錄下以bin開頭的所有文件
./etc/binfmt.d
./etc/selinux/targeted/modules/active/modules/bind.pp
[root@localhost /]# find . -name 'bin*'-ls 查找當前目錄下以bin開頭的所有文件,並列出文件信息
您還可以在搜索字符串中指定多個起始目錄。如果以具有相應權限的用戶身份運行,以下命令將下到 /usr、/home /tmp 目錄查找所有 jar 文件:
find /usr /home /tmp -name "*.jar"
[root@localhost /]# find . -type d -type制定要搜索文件的類型
其他 find 可以找到的文件類型包括:
b — 塊(緩存)特殊
c — 字符(未緩存)特殊
p — 命名管道 (FIFO)
s — 套接字
查找時間
find 命令有幾個用於根據您系統的時間戳搜索文件的選項。這些時間戳包括
mtime — 文件內容上次修改時間
atime — 文件被讀取或訪問的時間
ctime — 文件狀態變化時間
mtime 和 atime 的含義都是很容易理解的,而ctime 則需要更多的解釋。由於 inode 維護着每個文件上的元數據,因此,如果與文件有關的元數據發生變化,則 inode 數據也將變化。這可能是由一系列操作引起的,包括創建到文件的符號鏈接、更改文件權限或移動了文件等。由於在這些情況下,文件內容不會被讀取或修改,因此 mtime 和 atime 不會改變,但ctime 將發生變化。
這些時間選項都需要與一個值 n 結合使用,指定爲 -n、n 或 +n。
-n 返回項小於 n
+n 返回項大於 n
n 返回項正好與 n 相等
例如:
[root@localhost /]# find /etc -mtime -3 //查看3小時內/etc目錄下被修改的文件
3、總結bash環境變量的相關內容;
bash環境配置:
配置文件,生效範圍劃分,存在兩類:
全局配置:/etc/profile, /etc/profile.d/*.sh ,/etc/bashrc
個人配置:~/.bash_profile ~/.bashrc
按功能劃分,存在兩類:
profile類:爲交互式登錄的shell提供配置/etc/profile, /etc/profile.d/*.sh,~/.bash_profile
功用:
(1) 定義環境變量,例如PATH、PS1
(2) 運行命令或腳本
bashrc類:爲非交互式登錄shell提供配置/etc/bashrc,~/.bashrc
功用:
(1) 定義命令別名;
(2) 定義本地變量;
變量:內存空間,變量名
類型:
環境變量:作用範圍當前shell進程及其子進程
本地變量:作用範圍當前shell進程
局部變量:作用範圍僅爲當前shell進程中某代碼片斷(通常爲函數上下文)
位置變量:$1, $2
特殊變量:$?
變量定義方式:
bash內置變量:可直接調用,內置了許多環境變量,例如PATH等
自定義變量:
變量賦值:變量名=值
bash弱類型:
變量存儲數據時,默認均採用字符形式;任何變量可以不經聲明,直接引用;
定義本地變量:name=value 查看:set
定義環境變量:export name=value ,declare -x name=value
查看:env, printenv, export
撤消變量:unset name
引用變量:${name}, $name
bash中的引用符號:
'': 強引用,變量替換不會發生
"":弱引用
``: 命令引用
shell登錄類型:
交互式登錄:
直接通過終端進行的登錄;
通過su - Username命令實現的用戶切換;
非交互式登錄:
圖形界面下打開的命令行窗口;
執行腳本;
su Username;
配置文件作用次序:
交互式登錄:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc --> /etc/bashrc
非交互式登錄:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
4、總結Linux文件系統上的特殊權限(SUID、SGID、Sticky)的知識點;
SUID、SGID、Sticky權限說明
SUID:
(1) 任何一個可執行程序文件能不能啓動爲進程:取決於發起者對程序文件是否有執行權限;
(2) 啓動爲進程之後,其屬主不是發起者,而程序文件自己的屬主;這種機制即爲SUID;
權限設定:
chmod u+s FILE...
chmod u-s FILE...
注意:
s: 屬主原本擁有x權限;
S: 屬主原本無x權限;
SGID:
默認情況下,用戶創建文件時,其屬級爲此用戶所屬的基本組;
一旦某目錄被設定了SGID權限,則對此目錄擁有寫權限的用戶在此目錄中創建的文件所屬的組爲目錄的屬組,而非用戶的基本組;
權限設定:
chmod g+s FILE...
chmod g-s FILE...
Sticky:
對於一個多人可寫的目錄,此權限用於限制每個僅能刪除自己的文件;
權限設定
chmod o+t FILE...
chmod o-t FILE...
5、總結Linux磁盤管理、文件系統相關知識點及其相關命令的使用方法;
Linux磁盤管理
硬盤:機械式硬盤;SSD
機械式:
track
sector: 512bytes
cylinder: 分區的基本單位;
MBR:Master Boot Record
512bytes 446: bootloader 64: filesystemallocation table 16: 標識一個分區 2:55AA
磁盤接口類型:
IDE (ATA):133MB/s,/dev/hd
SCSI: 640MB/s
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
識別硬盤設備:/dev/sdx
標記不同的硬盤設備:/dev/sd[a-z]
標記同一設備上的不同分區:/dev/sd[a-z][1-]
1-4: 主或擴展分區標識
5+:邏輯分區標識
設備文件:特殊文件
設備號:
major, minor
major: 設備類型
minor: 同一類型下的不同設備“塊”:block,隨機設備
“字符”:character,線性設備
分區:分隔存儲空間爲多個小的空間,每個空間可獨立使用文件系統;
分區工具:fdisk, parted, sfdisk
fdisk工具的使用:
最多支持在一塊硬盤上的15個分區;
fdisk分區管理子命令:
p: 顯示
n: 創建
d: 刪除
t: 修改分區ID
l: 列出所有支持ID類型
w: 保存退出
q: 放棄修改並退出
m: 獲取幫助
創建完成之後,查看內核是否已經識別新的分區:
# cat /proc/partitions
有三個命令可以讓內核重讀磁盤分區表:
CentOS 5: partprobe [DEVICE]
CentOS 6,7: partx kpartx
partx命令:
partx DEVICE
partx -a DEVICE
partx -a -n M:N DEVICE
M
M:分區範圍
:N
kpartx命令:
kpartx -af DEVICE
a:添加一個分區
Linux文件系統管理
文件系統:
VFS:Virtual File System
Linux:ext2, ext3, ext4,reiserfs, xfs, btrfs, swap
光盤:iso9660
Windows: fat32(vfat), ntfs
Unix: ffs, ufs, jfs, jfs2
網絡文件系統:nfs, cifs
集羣文件系統:ocfs2, gfs2
分佈式文件系統:ceph,moosefs, mogilefs, hdfs, gfs, glusterfs
(1) 日誌型文件系統
非日誌型文件系統:ext2
日誌型文件系統:ext3,ext4
(2) swap:交換分區
創建文件系統:
在分區上執行格式化(高級格式化)
要使用某種文件系統,滿足兩個條件:
內核中:支持此種文件系統
用戶空間:有文件系統管理工具
創建工具:mkfs (make filesystem)
mkfs -t type DEVICE
mkfs.type DEVICE
ext系列文件系統的專用管理工具:
mke2fs -t {ext2|ext3|ext4} DEVICE
-b BLOCK: 1024, 2048, 4096
-L 'LABEL': 設定卷標
blkid命令:
blkid DEVICE
LABEL, UUID, TYPE
6、複製/etc/grub.cfg配置文件至/tmp目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符;
[root@localhost ~]#cp /etc/grub.conf /tmp/grub.cfg
vim:
%s/^[[:blank:]]//g
7、複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令爲/tmp/functions的每行開頭爲空白字符的行的行首加一個#; 原有空白字符保留;
[root@localhost ~]#cp /etc/rc.d/init.d/fuctions /tmp
vim:
%s/^[[:space:]]/#/g
8、替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log;
Vim:
%s#/etc/sysconfig/init#/var/log#g
9、刪除/tmp/functions文件中所以#開頭,且#後面至少跟了一個空白字符的行的行首#;
Vim:
%s/^#[[:space:]]\{1,\}//g
10、查找/var目錄屬主爲root,且屬組爲mail的所有文件;
[root@localhost ~]#find /var -user root -group main -ls
11、查找/usr目錄下屬組不屬於root、bin或hadoop的所有文件;
[root@localhost ~]# find /usr -not -user root -a -user bin -ls
12、查找/etc目錄下最近一週內其內容修改過,且屬主不爲root或hadoop的所有文件;
[root@localhost ~]#find /etc -atime +7 -a -not -user root -a -not-user hadoop -ls
13、查找當前系統上沒有屬主或屬組,且最近一週內曾被訪問過的所有文件;
[root@localhost ~]# find / -nouser -a -nogroup -a -atime +7 -ls
14、查找/etc目錄下大於20k且類型爲普通誰的的所有文件;
[root@localhost var]# find /etc -size +20k -a -type f
15、查找/etc目錄下所有用戶都沒有寫權限的文件;
[root@localhost var]# find /etc -perm -555
16、查找/etc目錄下至少有一類用戶沒有執行權限的文件;
[root@localhost var]# find /etc -perm +666
17、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶擁有寫權限的文件;
[root@localhost var]# find /etc/init.d -perm -111 -a -perm -222
18、讓普通用戶能使用/tmp/cat去查看/etc/shadow文件;
[root@localhost ~]# chmod u+s /tmp/cat
19、創建目錄/test/data,讓某組內普通用戶對其有寫權限,且創建的所有文件的屬組爲目錄所屬的組;此外,每個用戶僅能刪除自己的文件;
[root@localhost ~]#mkdir -p /test/data
[root@localhost ~]#chmod g+ws /test/data