网络班第二周

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

 

上一篇:linux tar 排除指定的文件夹及文件


下一篇:《Graph Representation Learning》【3】——Neighborhood Reconstruction Methods