網絡班第二周
1、描述Linux發行版的系統目錄名稱命名規則以及用途。
[root@centos7 ~]# pwd /root [root@centos7 ~]# cd / [root@centos7 /]# pwd / [root@centos7 /]# tree -L 1 . ├── bin -> usr/bin ├── boot ├── data ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib64 -> usr/lib64 ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├── sys ├── tmp ├── usr └── var 20 directories, 0 files [root@centos7 /]#
系統目錄名稱命名規則
文件和目錄被組織成一個單根倒置樹結構 文件系統從根目錄下開始,用"/"表示根 文件系統(rootfs): root filesystem 標準Linux文件系統(如:ext4),文件名稱大小寫敏感,例如:MAIL,Mail, mail, mAiL 以.開頭的文件為隱藏文件 路徑分隔的/ 文件名最長255個字節 包括路徑在內文件名稱最長4095個字節 藍色-->目錄綠色-->可執行文件紅色-->壓縮文件淺藍色-->鏈接文件灰色-->其他文件 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用,有些字符需要用引號來引用 每個文件都有兩類相關數據:元數據: metadata,即屬性,數據: data,即文件內容
各個目錄的作用簡介
/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader,grub)都存放于此目錄 /bin:所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序 /sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序 /lib:啟動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules) /lib64:專用于×86_64系統上的輔助共享庫文件存放位置 /etc:配置文件目錄 /home/USERNAME:普通用戶家目錄 /root:管理員的家目錄 /media:便攜式移動設備掛載點 /mnt:臨時文件系統掛載點 /dev:設備文件及特殊文件存儲位置 b:block device,隨機訪問 C:character device,線性訪問 /opt:第三方應用程序的安裝位置 /srv:系統上運行的服務用到的數據 /tmp:臨時文件存儲位置 /usr:universal shared,read-only data bin:保證系統擁有完整功能而提供的應用程序 sbin: lib:32位使用 lib64:只存在64位系統 include:C程序的頭文件(header files) share:結構化獨立的數據,例如doc,man等。 local:第三方應用程序的安裝位置 bin,sbin,lib,lib64,etc,share /var:variable data files cache:應用程序緩存數據目錄 lib:應用程序狀態信息數據 local:專用于為/usr/local下的應用程序存儲可變數據 lock:鎖文件 log;日志目錄及文件 opt:專用于為/opt下的應用程序存儲可變數據 run:運行中的進程相關數據,通常用于存儲進程pid文件 spool:應用程序數據池 tmp:保存系統兩次重啟之間產生的臨時數據 /proc:用于輸出內核與進程信息相關的虛擬文件系統 /sys:用于輸出當前系統上硬件設備相關信息虛擬文件系統/selinux:security enhanced Linux,selinux相關的安全策略等信息的存儲位置
2、描述文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息?
文件的元數據中包含的信息包括:
File:文件名
Size:文件大小(單位:B)
Blocks:文件所占塊個數
IO Block:每個數據塊的大小(單位:B)
regular file:普通文件(此處顯示文件的類型)
Inode:文件的Inode號,文件的索引節點號
Links:硬鏈接次數
Access:權限
Uid:(屬主id/屬主名)
Gid:(屬組id/屬組名)
Context:文件所在的環境
Access:最近訪問時間access time (atime)
Modify:數據改動時間modification time (mtime)
Change:元數據改動時間status time (ctime)
Creat:文件創建時間
查看方法
查看文件元數據的方法:stat + 文件名
修改文件的時間戳信息
每個文件有三個時間戳
acess time 訪問時間,atime,讀寫文件內容的時間
modify time 修改時間,mtime,改變文件內容的時間
change time 改變時間,ctime,文件的元數據改變的時間
修改文件時間戳信息的方法
touch 命令,格式:touch [OPTION] FILE
選項說明:
-a 僅改變 atime和ctime
-m 僅改變 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]指定atime和mtime的時間戳
-c 如果文件不存在,則不予創建
范例:
[root@centos7 data]# touch f1.txt [root@centos7 data]# ll total 0 -rw-r--r--. 1 root root 0 Dec 6 19:31 f1.txt [root@centos7 data]# date Sun Dec 6 19:34:31 CST 2020 [root@centos7 data]# vim f1.txt [root@centos7 data]# cat f1.txt a b c [root@centos7 data]# ll total 4 -rw-r--r--. 1 root root 6 Dec 6 19:35 f1.txt [root@centos7 data]# stat f1.txt File: ‘f1.txt’ Size: 6 Blocks: 8 IO Block: 4096 regular file Device: 805h/2053d Inode: 69 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:etc_runtime_t:s0 Access: 2020-12-06 19:35:37.493621756 +0800 Modify: 2020-12-06 19:35:30.604621971 +0800 Change: 2020-12-06 19:35:30.605621971 +0800 Birth: - [root@centos7 data]# chmod +x f1.txt [root@centos7 data]# ll total 4 -rwxr-xr-x. 1 root root 6 Dec 6 19:35 f1.txt [root@centos7 data]# stat f1.txt File: ‘f1.txt’ Size: 6 Blocks: 8 IO Block: 4096 regular file Device: 805h/2053d Inode: 69 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:etc_runtime_t:s0 Access: 2020-12-06 19:35:37.493621756 +0800 Modify: 2020-12-06 19:35:30.604621971 +0800 Change: 2020-12-06 19:37:47.060617703 +0800 Birth: - [root@centos7 data]# date Sun Dec 6 19:38:15 CST 2020 [root@centos7 data]#
3.總結軟連接和硬連接區別,并用實例操作說明。
硬鏈接和軟鏈接區別總結
1.本質:
硬鏈接:本質是同一個文件
軟鏈接:本質不是同一個文件
2.跨設備
硬鏈接:不支持
軟鏈接:支持
3.inode
硬鏈接:相同
軟鏈接:不同
4.鏈接數
硬鏈接:創建新的硬鏈接,鏈接數會增加,刪除硬鏈接,鏈接數減少
軟鏈接:創建或刪除,鏈接數不會變化5.文件夾硬鏈接:不支持軟鏈接:支持
6.相對路徑
硬鏈接:原始文件相對路徑是相對于當前工作目錄
軟鏈接:原始文件的相對路徑是相對于鏈接文件的相對路徑
7.刪除源文件
硬鏈接:只是鏈接數減一,但鏈接文件的訪問不受影響
軟鏈接:鏈接文件將無法訪問
8.文件類型
硬鏈接:和源文件相同
軟鏈接:鏈接文件,和源文件無關
范例:
[root@centos7 data]# [root@centos7 data]# ll total 4 -rwxr-xr-x. 1 root root 6 Dec 6 19:35 f1.txt [root@centos7 data]# pwd /data [root@centos7 data]# ln f1.txt a.txt [root@centos7 data]# ll total 8 -rwxr-xr-x. 2 root root 6 Dec 6 19:35 a.txt -rwxr-xr-x. 2 root root 6 Dec 6 19:35 f1.txt [root@centos7 data]# ln f1.txt /root/a.txt ln: failed to create hard link ‘/root/a.txt’ => ‘f1.txt’: Invalid cross-device link [root@centos7 data]# ll /tmp total 0 drwx------. 2 root root 6 Dec 6 05:27 vmware-root_582-2722173592 drwx------. 2 root root 6 Dec 6 16:14 vmware-root_585-4021718863 drwx------. 2 root root 6 Dec 6 05:31 vmware-root_592-2689275023 [root@centos7 data]# ln -s /data/f1.txt /tmp [root@centos7 data]# ll /tmp total 0 lrwxrwxrwx. 1 root root 12 Dec 6 19:55 f1.txt -> /data/f1.txt drwx------. 2 root root 6 Dec 6 05:27 vmware-root_582-2722173592 drwx------. 2 root root 6 Dec 6 16:14 vmware-root_585-4021718863 drwx------. 2 root root 6 Dec 6 05:31 vmware-root_592-2689275023 [root@centos7 data]#
4、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
目錄管理命令
ls:列出指定目錄下的內容格式:
ls [OPTION]... [FILE]...
-a:顯示所有文件包括隱藏文件
-A:顯示除.和..之外的所有文件
-l,--long:顯示文件的詳細屬性信息
-h:對文件大小進行單位換算,可能影響精度
-d:查看目錄本身而非其內部的文件
-r:逆序顯示文件
-R:遞歸顯示文件
示例:ls -lah / --詳細顯示/目錄下的所有文件(包括隱藏文件)
ls -ldh /etc --詳細顯示/etc目錄本身
ls -lhv / --倒序顯示/目錄下所有文件(包括隱藏文件)
ls -R /etc --遞歸顯示/etc下所有文件
mkdir:創建目錄格式:
mkdir [OPTION]... DIRECTORY...
-p:自動按需創建父目錄
-m:創建目錄時給定權限
示例:mkdir -p /data/test/A/B --在/data目錄下遞歸創建/test/A/B三個目錄
mkdir -m 711 -p /data/MODE/A --在/data目錄下遞歸創建MODE/A兩個目錄同時指定目錄A的權限為711
rmdir:刪除目錄格式:
rmdir [OPTION]... DIRECTORY...
-p:刪除目錄后如果其父目錄為空,則一并刪除
示例:rmdir -p /data/test/A --刪除A目錄后,test目錄為空,一并刪除
cd:切換目錄
示例:cd ..:切換到上級目錄
cd ~:切換回自己的家目錄
cd -:在上一次目錄與當前目錄直接來回切換
pwd:顯示當前目錄
文件管理命令
cp:復制
格式:單源復制:cp [OPTION]... [-T] SOURCE DEST(如果DEST不存在則創建,存在則覆蓋)
多源復制:cp [OPTION]... SOURCE... DIRECTORY(DEST必須為directory)
-i:交互式復制,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
-r,-R:遞歸復制目錄
示例:cp -if /data/[1-3].txt /data/test --test必須為目錄,把三個文件一起復制到test中
cp -r /data /practice --把data目錄及目錄下的內容一起復制到practice中
mv:剪切
格式:單源復制:mv [OPTION]... [-T] SOURCE DEST(如果DEST不存在則創建,存在則覆蓋)
多源復制:mv [OPTION]... SOURCE... DIRECTORY(DEST必須為directory)
-i:交互式復制,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
示例:mv -i /data/[1-3].txt /practice --把/data目錄下三個txt文件剪切到/practice下
rm:刪除
格式:rm [OPTION]... FILE...
-i:交互式復制,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
-r,-R:遞歸處理,將制定目錄下的所有文件包括目錄一并刪除
示例:rm -rf /practice --遞歸刪除/practice目錄
文本內容管理命令
cat:正向查看文本內容
格式:cat [OPTION]... [FILE]...
-n:給顯示的文本行編號
-E:顯示行結束符號$
示例:cat -n /etc/fstab --查看/etc/fatab內容并顯示行號
tac:倒敘查看文本內容
格式:tac [OPTION]... [FILE]...
示例:tac /etc/passwd --倒敘查看文本內容
head:顯示文本內容,默認顯示頭10行
格式:head [OPTION]... [FILE]...
-n #:顯示文本頭#行內容
示例:head -5 /etc/passwd --顯示/etc/passwd文件頭5行內容
tail:顯示文本內容,默認顯示后10行
格式:tail [OPTION]... [FILE]...
-n #:顯示文本后#行內容
-f:查看文件尾部內容結束后不退出,跟隨顯示新增的行
示例:tail -8 /etc/passwd --顯示/etc/passwd文件后8行內容
more:分屏顯示文本內容,每次顯示一屏顯示完停止
格式:more [options] file [...]
Space鍵:顯示文本下一屏內容
Enter鍵:只顯示文本下一行內容
b鍵:顯示文本上一屏內容
q鍵:退出
less:分屏顯示文本內容,不主動退出
格式:less [options] file [...]
Space鍵:顯示文本下一屏內容
Enter鍵:只顯示文本下一行內容
b鍵:顯示文本上一屏內容
q鍵:退出
5、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的 行首的空白字符
[root@centos7 ~]#
[root@centos7 ~]# ll /tmp
total 0
lrwxrwxrwx. 1 root root 12 Dec 6 19:55 f1.txt -> /data/f1.txt
drwx------. 2 root root 6 Dec 6 05:27 vmware-root_582-2722173592
drwx------. 2 root root 6 Dec 6 16:14 vmware-root_585-4021718863
drwx------. 2 root root 6 Dec 6 05:31 vmware-root_592-2689275023
[root@centos7 ~]# ll /etc/profile
-rw-r--r--. 1 root root 1819 Apr 1 2020 /etc/profile
[root@centos7 ~]# cp /etc/profile /tmp
[root@centos7 ~]# ll /tmp
total 4
lrwxrwxrwx. 1 root root 12 Dec 6 19:55 f1.txt -> /data/f1.txt
-rw-r--r--. 1 root root 1819 Dec 6 20:15 profile
drwx------. 2 root root 6 Dec 6 05:27 vmware-root_582-2722173592
drwx------. 2 root root 6 Dec 6 16:14 vmware-root_585-4021718863
drwx------. 2 root root 6 Dec 6 05:31 vmware-root_592-2689275023
[root@centos7 ~]# cat /tmp/profile
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`/usr/bin/id -u`
UID=`/usr/bin/id -ru`
fi
USER="`/usr/bin/id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
[root@centos7 ~]# cat /tmp/profile | tr -d " "
#/etc/profile
#Systemwideenvironmentandstartupprograms,forloginsetup
#Functionsandaliasesgoin/etc/bashrc
#It'sNOTagoodideatochangethisfileunlessyouknowwhatyou
#aredoing.It'smuchbettertocreateacustom.shshellscriptin
#/etc/profile.d/tomakecustomchangestoyourenvironment,asthis
#willpreventtheneedformerginginfutureupdates.
pathmunge(){
case":${PATH}:"in
*:"$1":*)
;;
*)
if["$2"="after"];then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if[-x/usr/bin/id];then
if[-z"$EUID"];then
#kshworkaround
EUID=`/usr/bin/id-u`
UID=`/usr/bin/id-ru`
fi
USER="`/usr/bin/id-un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
#Pathmanipulation
if["$EUID"="0"];then
pathmunge/usr/sbin
pathmunge/usr/local/sbin
else
pathmunge/usr/local/sbinafter
pathmunge/usr/sbinafter
fi
HOSTNAME=`/usr/bin/hostname2>/dev/null`
HISTSIZE=1000
if["$HISTCONTROL"="ignorespace"];then
exportHISTCONTROL=ignoreboth
else
exportHISTCONTROL=ignoredups
fi
exportPATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEHISTCONTROL
#Bydefault,wewantumasktogetset.Thissetsitforloginshell
#Currentthresholdforsystemreserveduid/gidsis200
#Youcouldcheckuidgidreservationvalidityin
#/usr/share/doc/setup-*/uidgidfile
if[$UID-gt199]&&["`/usr/bin/id-gn`"="`/usr/bin/id-un`"];then
umask002
else
umask022
fi
foriin/etc/profile.d/*.sh/etc/profile.d/sh.local;do
if[-r"$i"];then
if["${-#*i}"!="$-"];then
."$i"
else
."$i">/dev/null
fi
fi
done
unseti
unset-fpathmunge
[root@centos7 ~]#
6.在vim中設置tab縮進為4個字符
Linux系統,打開vim時候發現默認的縮進是8個空格。Vim 啟動時,會根據配置文件(.vimrc)來設置 Vim,因此我們可以通過此文件來定制適合自己的 Vim。
Vim 配置文件分為系統配置文件和用戶配置文件:
系統配置文件位于 Vim 的安裝目錄(即全局配置,所有的用戶都會執行這個配置)(默認路徑為 /etc/.vimrc);
用戶配置文件位于主目錄 ~/.vimrc,即通過執行 vim ~/.vimrc 命令即可對此配置文件進行合理修改。通常情況下,Vim 用戶配置文件需要自己手動創建。
注意,Vim 用戶配置文件比系統配置文件的優先級高,換句話說,Vim 啟動時,會優先讀取 Vim 用戶配置文件(位于主目錄中的),所以我們只需要修改用戶配置文件即可(不建議直接修改系統配置文件)。
范例:
[root@centos7 ~]# [root@centos7 ~]# ll -a total 32 dr-xr-x---. 2 root root 165 Dec 6 19:35 . dr-xr-xr-x. 18 root root 236 Nov 25 06:37 .. -rw-------. 1 root root 1608 Nov 25 06:38 anaconda-ks.cfg -rw-------. 1 root root 1878 Dec 6 08:23 .bash_history -rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout -rw-r--r--. 1 root root 202 Nov 25 07:24 .bash_profile -rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc -rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc -rw-r--r--. 1 root root 0 Dec 6 19:31 f1.txt -rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc -rw-------. 1 root root 809 Dec 6 19:35 .viminfo [root@centos7 ~]# vim .vimrc [root@centos7 ~]# cat .vimrc set tabstop=4 [root@centos7 ~]#
備注:還有一種臨時生效的方式,即在打開的vim文件中,末行模式:set tabstop=4
浙公網安備 33010602011771號