• Linux学习第六天


    学习Linux环境下的挂载命令。

    什么是挂载命令?

    1.Windows下,mount挂载,就是给磁盘分区提供一个盘符(C,D,E,...)。比如插入U盘后系统自动分配给了它I:盘符其实就是挂载,退优盘的时候进行安全弹出,其实就是卸载unmount。

    2.Linux下,不像Windows可以有C,D,E,多个目录,Linux只有一个根目录/。在装系统时,我们分配给linux的所有区都在/下的某个位置,比如/home等等。

    3.提问者插入了新硬盘,分了新磁盘区sdb1。它现在还不属于/。

    4.我们虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但在命令行却不知怎么访问它的目录,比如无法使用cd或者ls。也无法在编程时指定一个目录对它操作。

    5.这时提问者使用了 mount /dev/sdb1 ~/Share/ ,把新硬盘的区sdb1挂载到工作目录的~/Share/文件夹下,之后访问这个~/Share/文件夹就相当于访问这个硬盘2的sdb1分区了。对/Share/的任何操作,都相当于对sdb1里文件的操作。

    6.所以Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。

    7.linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。

    8.我们不是有/dev/sdb1 吗,直接对它操作不就行了?这不是它的目录吗?

    9.这不是它的目录。虽然/dev是个目录,但/dev/sdb1不是目录。可以发现ls/dev/sdb1无法执行。/dev/sdb1,是一个类似指针的东西,指向这个分区的原始数据块。mount前,系统并不知道这个数据块哪部分数据代表文件,如何对它们操作。

    10.插入CD,系统其实自动执行了 mount /dev/cdrom /media/cdrom。所以可以直接在/media/cdrom中对CD中的内容进行管理。

    mount 命令用来挂载文件系统。其基本命令格式为:
    mount -t type [-o options] device dir
    device:指定要挂载的设备,比如磁盘、光驱等。
    dir:指定把文件系统挂载到哪个目录。
    type:指定挂载的文件系统类型,一般不用指定,mount 命令能够自行判断。
    options:指定挂载参数,比如 ro 表示以只读方式挂载文件系统。

    用法:
    mount [-lhV]
    mount -a [选项]
    mount [选项] [--source] <源> | [--target] <目录>
    mount [选项] <源> <目录>
    mount <操作> <挂载点> [<目标>]

    挂载文件系统。

    选项:
    -a, --all 挂载 fstab 中的所有文件系统
    -c, --no-canonicalize 不对路径规范化
    -f, --fake 空运行;跳过 mount(2) 系统调用
    -F, --fork 对每个设备禁用 fork(和 -a 选项一起使用)
    -T, --fstab <路径> /etc/fstab 的替代文件
    -i, --internal-only 不调用 mount.<type> 辅助程序
    -l, --show-labels 也显示文件系统标签
    -n, --no-mtab 不写 /etc/mtab
    -o, --options <列表> 挂载选项列表,以英文逗号分隔
    -O, --test-opts <列表> 限制文件系统集合(和 -a 选项一起使用)
    -r, --read-only 以只读方式挂载文件系统(同 -o ro)
    -t, --types <列表> 限制文件系统类型集合
    --source <源> 指明源(路径、标签、uuid)
    --target <目标> 指明挂载点
    -v, --verbose 打印当前进行的操作
    -w, --rw, --read-write 以读写方式挂载文件系统(默认)

    -h, --help display this help
    -V, --version display version

    源:
    -L, --label <标签> 同 LABEL=<label>
    -U, --uuid <uuid> 同 UUID=<uuid>
    LABEL=<标签> 按文件系统标签指定设备
    UUID=<uuid> 按文件系统 UUID 指定设备
    PARTLABEL=<标签> 按分区标签指定设备
    PARTUUID=<uuid> 按分区 UUID 指定设备
    <设备> 按路径指定设备
    <目录> 绑定式挂载的挂载点(参阅 --bind/rbind)
    <文件> 用于设置回环设备的常规文件

    操作:
    -B, --bind 挂载其他位置的子树(同 -o bind)
    -M, --move 将子树移动到其他位置
    -R, --rbind 挂载其他位置的子树及其包含的所有子挂载(submount)
    --make-shared 将子树标记为 共享
    --make-slave 将子树标记为 从属
    --make-private 将子树标记为 私有
    --make-unbindable 将子树标记为 不可绑定
    --make-rshared 递归地将整个子树标记为 共享
    --make-rslave 递归地将整个子树标记为 从属
    --make-rprivate 递归地将整个子树标记为 私有
    --make-runbindable 递归地将整个子树标记为 不可绑定

    学习Linux环境下的ifconfig命令。

    首先需要先下载网络工具:

    $sudo apt install net-tools

     

    用法:
    ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
    [add <address>[/<prefixlen>]]
    [del <address>[/<prefixlen>]]
    [[-]broadcast [<address>]] [[-]pointopoint [<address>]]
    [netmask <address>] [dstaddr <address>] [tunnel <address>]
    [outfill <NN>] [keepalive <NN>]
    [hw <HW> <address>] [mtu <NN>]
    [[-]trailers] [[-]arp] [[-]allmulti]
    [multicast] [[-]promisc]
    [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
    [txqueuelen <NN>]
    [[-]dynamic]
    [up|down] ...

    <HW>=硬件类型。
    可能硬件类型列表:
    loop (本地环回) slip (Serial Line IP) cslip (VJ Serial Line IP)
    slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial Line IP)
    ash (Ash) ether (以太网) ax25 (AMPR AX.25)
    netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (IPIP Tunnel)
    ppp (点对点协议) hdlc ((Cisco)-HDLC) lapb (LAPB)
    arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Frame Relay Access Device)
    sit (IPv6-in-IPv4) fddi (Fiber Distributed Data Interface) hippi (HIPPI)
    irda (IrLAP) ec (Econet) x25 (generic X.25)
    eui64 (Generic EUI-64)
    <AF>=地址族。默认:inet
    可能的地址族列表:
    unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
    ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE)
    ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet)
    ash (Ash) x25 (CCITT X.25)

    学习Linux环境下的文件权限(重点掌握chmod命令)

    chmod 命令语法:

    chmod(选项)(参数)

    1. u # 操作对象简称,用户user,文件或目录的所有者。
    2. g # 操作对象简称,同组用户group,文件或目录所属群组
    3. o # 操作对象简称,其它用户others
    4. a # 操作对象简称,所有用户all,系统默认使用此项
    5. + # 权限操作符,添加某些权限
    6. - # 权限操作符,取消某些权限
    7. = # 权限操作符,设置文件的权限为给定的权限
    8. r # 权限设定(英文),表示可读权限
    9. w # 权限设定(英文),表示可写权限
    10. x # 权限设定(英文),表示可执行权限
    11. - # 权限设定(英文字符),表示没有权限
    12. X # 权限设定,如果目标文件是可执行文件或目录,可给其设置可执行权限
    13. s # 权限设定,设置权限suid和sgid,使用权限组合“u+s”设定文件的用户的ID位,“g+s”设置组ID位
    14. t # 权限设定,只有目录或文件的所有者才可以删除目录下的文件
    15. -c或——changes # 效果类似“-v”参数,但仅回报更改的部分,如果文件权限已经改变,显示其操作信息;
    16. -f或--quiet或——silent # 操作过程中不显示任何错误信息;
    17. -R或——recursive # 递归处理,将指令目录下的所有文件及子目录一并处理;
    18. -v或——verbose # 显示命令运行时的详细执行过程;
    19. --reference=<参考文件或目录> # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
    20. <权限范围>+<权限设置> # 开启权限范围的文件或目录的该选项权限设置;
    21. <权限范围>-<权限设置> # 关闭权限范围的文件或目录的该选项权限设置;
    22. <权限范围>=<权限设置> # 指定权限范围的文件或目录的该选项权限设置;
    23. --help # 显示帮助信息
    24. --version # 显示版本信息

    chmod 命令参数:

    权限模式:指定文件的权限模式;

    文件:要改变权限的文件。

    权限范围的表示法如下:

    1. u User,即文件或目录的拥有者;
    2. g Group,即文件或目录的所属群组;
    3. o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
    4. a All,即全部的用户,包含拥有者,所属群组以及其他用户;
    5. r 读取权限,数字代号为“4”;
    6. w 写入权限,数字代号为“2”;
    7. x 执行或切换权限,数字代号为“1”;
    8. - 不具任何权限,数字代号为“0”;
    9. s 特殊功能说明:变更文件或目录的权限。

    chmod 命令实例:


    Linux 用户分为:拥有者、组群(Group)、其他(other),Linux 系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及 root 的相关信 息, 都是记录在 /etc/passwd 文件中。每个人的密码则是记录在 /etc/shadow 文件下。 此外,所有的组群名称记录在 /etc/group 內!

    linux文件的用户权限的分析图

    1. -rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
    2. # ↑╰┬╯╰┬╯╰┬╯
    3. # ┆ ┆ ┆ ╰┈ 0 其他人
    4. # ┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
    5. # ┆ ╰┈┈┈┈ u 属组
    6. # ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件
    7. 例:rwx rw- r--
    8.  
    9. r=读取属性  //值=4
    10. w=写入属性  //值=2
    11. x=执行属性  //值=1
    12.  
    13. chmod u+x,g+w f01  # 为文件f01设置自己可以执行,组员可以写入的权限
    14. chmod u=rwx,g=rw,o=r f01
    15. chmod 764 f01
    16. chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性
    17.  
    18. #文件的属主和属组属性设置
    19.  
    20. chown user:market f01  # 把文件f01给uesr,添加到market组
    21. ll -d f1 #查看目录f1的属性
    22.  
    23. #将/home/wwwroot/里的所有文件和文件夹设置为755权限
    24.  
    25. #(1)直接指定路径修改
    26. chmod -R 755 /home/wwwroot/*
    27.  
    28. #(2)手动进入该目录修改权限(并显示详细过程)
    29. cd /home/wwwroot
    30. chmod -Rv 755 * #注意:“*”表示通配符,指的是所有文件和文件
    31. sudo chmod o+rw /shared #设置文件夹权限以保证其余用户可以访问它。

    VI或VIM编辑器的工作方式有哪些?这些工作方式之间如何转换?

    可以通过$vimtutor来学习,通常Vi分为三种模式:一般模式、编辑模式、命令行命令模式。

    (1)     一般模式Normal Mode(common Mode, c-Mode)

    Vi处理文件时,进入该文件就是一般模式,此模式中输入的任何字符皆被视为指令。可以用方向键来移动光标,可以使用“删除字符”或“删除整行”来处理文件内容,也可以使用复制、粘贴处理文件数据

    (2)     编辑模式(文本写入模式)Insert Mode (i-Mode)

    在一般模式中可以进行删除、复制、粘贴操作,但无法进行编辑,需要按下i, l, o, O, a, A, r, R等才会进入编辑模式,此时进入文本写入模式,而不会被视为命令行。通常在屏幕左下方会出现“INSERT”或“REPLACE”字样,才可以输入任何字符到文件中。返回一般模式按下Esc键即可。

    (3)     命令行模式Ed Mode (common-line Mode, e-Mode)

    在一般模式中,输入:或/或?就可以将光标移到最下面一行,在这个模式中,可以搜索数据并读取、存盘、大量删除字符、离开Vi、显示行号等操作都是在此模式中实现的。

  • 相关阅读:
    iOS9 UITableViewCell separatorInset设置为0分割线还是没有顶到头的问题
    facebook登录(集成FBSDKLoginKit) result的isCancelled总是YES token为nil
    Mac OS X 在Finder新建文本文件
    Xcode8 Could not build Objective-C module 'FBSDKCoreKit'
    Multiple methods named 'status' found with mismatched result, parameter type or attributes
    iOS 10 UserNotifications 框架解析
    WKWebView无法(通过URL schemes)跳转到其他App
    WKWebView不显示提示框(Swift)
    Redis 3.2.1集群搭建
    高吞吐量的分布式发布订阅消息系统Kafka-- 管理工具 Kafka Manager
  • 原文地址:https://www.cnblogs.com/knis/p/12546421.html
Copyright © 2020-2023  润新知