美文网首页ShellshellLinux_System
Shell命令(1):文件操作相关命令

Shell命令(1):文件操作相关命令

作者: xuweizhen | 来源:发表于2018-08-10 17:01 被阅读12次

    Shell命令

    linux主要由四部分组成:

    • linux内核
    • shell
    • 图形化界面
    • 应用软件

    可以看出,shell非常重要。

    1. Shell版本众多,如何知道你使用的是哪一个shell版本?

    一般来说,系统默认的shell就是bash shell, 但是使用的shell取决于你用户登录时的shell.
    因为root用户id配置的shell是bash,所以使用root用户登录时,使用的就是bash.

    2. 如何查询所有系统的账户列表

    在/etc/passwd文件中包含了所有系统的账户列表和每个用户的基本配置信息

    root:x:0:0:root:/root:/bin/bash
    rebatch:x:1001:100::/home/rebatch:/bin/bash
    

    参数解析

    • 用户名
    • 用户密码,使用x占位符
    • 用户的系统用户ID编号,创建时由系统默认分配,root用户是0
    • 用户的系统组ID编号,创建时由系统默认分配,root用户组是0
    • 用户的名称
    • 用户的默认主目录
    • 用户的默认shell程序

    3. shell提示符

    在登录shell之后,会跳出一行,通常是当前目录+$,提示你输入:

    tyhddb:/home/rebatch #
    

    这个就是shell CLI提示符。

    • tyhddb:表示当前主机
    • /home/rebatch:表示当前目录
    • #:表示当前是root用户登录,$为普通用户登录

    问题:如果你使用不同的linux系统,或者切换其他用户时,你可能会发现提示符会出现不同的格式,这个是怎么控制的?
    控制命令提示符的环境变量有两个:

    • PS1:控制默认命令行提示符的格式
    • PS2:控制第二层命令行提示符的格式

    在shell中输入使用默认的PS1提示符,如果需要输入附加的信息,才使用PS2,一般很少用到PS2.

    既然是环境变量,我就可以在设置环境变量的地方设置它。

    export PS1='$PWD>'
    
    • $PWD>表示当前路径后加上>
    /home/rebatch/batch-home/env>
    

    我们也可以使用echo $PS1来看看PS1的规则:

    tyhddb:~ # echo $PS1
    \[\]\h:\w #\[\]
    

    这个root用户的PS1看起来有点奇怪,解释一下
    每一个指令都是 /+字符 表示

    • \[:控制码序列的开头
    • \]:控制码序列的结尾
    • \h:本地主机名
    • \w:当前工作目录
      还有一些其他常用的:
    • \u:当前用户的用户名
    • \$:如果是普通用户,则为美元符号,如果是超级用户,则为英镑符号
    • \s: shell的名称
    • \\:斜杠

    示例:
    主机名/用户名:当前目录 (普通用户使用,root用户使用#)

    export PS1='\h/\u:\w \$\[\]'
    tyhddb/rebatch:~ $
    tyhddb/rebatch:~ $su root
    密码:
    tyhddb/root:/home/rebatch #
    

    注意:一定要在头尾加上单引号',否则/转义不起作用

    4. bash手册

    bash有自己的帮助文档,如果有命令不是很了解时可以查询,只要使用man 命令名称即可。

    man cp
    
    NAME
           cp - copy files and directories
    SYNOPSIS
           cp [OPTION]... [-T] SOURCE DEST
    DESCRIPTION
           Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
           -a, --archive
                  same as -dR --preserve=all
    AUTHOR
    REPORTING BUGS
    COPYRIGHT
    SEE ALSO
    
    • name: 命令的简单描述
    • synopsls: 命令的格式
    • description: 描述每个命令选项,主要了解内容
    • author: 命令开发人员的信息
    • reporting bug: 提供报告bug的信息
    • copyright: 命令代码的版权信息
    • see also: 提供类似命令

    5. 文件系统

    我们在登录shell的时候,一般当前的位置都是主目录,需要进入其他目录进行操作。了解一下linux的文件系统。

    5.1 根目录

    linux中只有一个目录,存贮所有的文件,这个目录是虚拟目录,而最基本最开始的一个是根目录。
    一般使用cd /即可进入根目录

    5.2 常用目录

    在根目录下有很多目录,而且系统中这些目录都相同

    • /: 虚拟目录的根目录,通常此处没有文件
    • /bin: 二进制目录,存放用户的实用程序,bash shell就在这个目录中
    • /boot: 引导目录,存储引导文件
    • /dev: 设备目录,在该目录中创建设备节点
    • /etc: 系统配置文件目录
    • /home: 普通用户主目录
    • lib: 库目录,存储系统和应用程序库文件
    • media: 媒体目录,可移动媒体设备的常用挂载点
    • mnt: 挂载目录,也是常用的媒体设备的挂载点
    • opt: 可选目录,存储可选软件包
    • root: 根主目录
    • sbin: 二进制目录,存储管理级别的实用程序
    • tmp: 临时目录,可以在该目录创建和销毁临时工作文件
    • usr: 用户安装软件的目录
    • var: 可变目录,用于经常更改的文件,比如日志文件

    5.3 浏览目录命令

    更改目录命令:cd 路径
    路径可以是绝对路径,也可以相对路径

    • .:表示当前目录
    • ..:表示父目录

    5.4 文件和目录列表

    查看文件和目录命令:ls

      1. ls命令以最基本的形式显示当前目录中的文件和目录。
      1. ls -F 区分文件和目录,目录后面+/,文件后面+*
      1. ls -a 查看所有文件,包括以.开头的隐藏文件
      1. ls -R 显示当前目录下所有目录中的文件,内容会很长
      1. ls -l 以列表形式显示每个文件的详细信息
        文件列表详细信息解析:
        • 文件类型:(d)目录,(-)文件,(c)字符设备,(b)块设备
        • 文件的权限
        • 指向该文件的硬连接的数据
        • 文件所有者的用户名称
        • 文件所属的组的名称
        • 文件的字节大小
        • 上次修改文件的时间
        • 文件或目录的名称
      1. ls -i 列出每个文件的索引节点,索引节点是每一个文件的标识

    ls命令可以查看某些文件

    • ls -l file1 :查看file1这一个文件
      也可以使用通配符查看多个文件,支持正则表达式
    • ?表示一个字符
    • *表示表示零个或多个字符

    5.5 文件处理

    5.5.1 创建文件

    创建空文件使用touch命令: touch 文件名

    • touch -a filename: 更改文件访问时间
    • touch -m filename: 更改文件修改时间
    • touch -t 时间戳 filename:加上指定时间戳

    5.5.2 复制文件

    复制文件使用cp命令:cp src dest
    若文件已存在,会提示是否覆盖
    将文件复制到当前所在目录,可以使用.

    cp /home/test .
    
    • cp -p src dest: 复制的文件访问时间和修改时间与源文件一致。
    • cp -R dir1 dir2: 复制整个目录的内容
    • cp -f test* dir2: 使用通配符复制筛选的文件,-f 会强制重写已存在的文件

    5.5.3 链接文件

    链接文件有两种:

    • 软链接:使用cp -sln -s
    • 硬链接:使用cp -lln

    硬链接创建的文件索引号相同,实际上是同一个文件。
    软链接创建的文件索引号不相同,是不同的文件,而且软链接文件至存储源文件的相关信息,而不是文件中的实际数据。

    5.5.4 重命名文件

    重命名文件也是移动文件,使用mv src dest
    如果在同一个目录,就是文件重命名的功能
    移动带有链接的文件会有问题,链接的文件不再有效。

    5.5.5 删除文件

    删除文件使用rm file
    rm删除的文件无法还原
    如果删除带有软链接和硬链接的文件,软链接无法打开文件,但可以打开硬链接。

    5.6 目录处理

    5.6.1 创建目录

    创建目录使用mkdir dir

    5.6.2 删除目录

    删除目录使用rmdir dir,但只能删除空目录,目录下有文件不能删除
    所以一般使用rm -r dir删除目录
    但一般会出现很多删除提示,所以使用rm -rf dir强制删除所以目录

    5.7 查看文件内容

    5.7.1 查看文件系统中文件的完整摘要

    使用ls不能查看出所有信息,使用stat file命令查看完整摘要信息

    5.7.2 查看文件类型

    stat命令查询的信息少了文件类型信息,查看文件类型使用file test命令。
    file命令将文件分为3类:

    • 文本文件
    • 可执行文件
    • 数据文件:不可执行,不可打印的二进制字符文件

    5.7.3 查看整个文件

    5.7.3.1 cat命令

    cat file直接显示所有的文件内容。
    cat -n file:为所有行添加编号,在查看脚本很有用
    cat -b file:为带文本的行添加编号
    cat -T file: 去掉所有的跳格字符
    cat命令对于大的文件不好用,查找某些数据需要不停的滚动,建议大文件使用more命令

    5.7.3.2 more 命令

    more file也是显示文本文件,但显示完一页数据就停止,可以手动翻页或查询。
    在more程序中,可以使用提示符进行一些操作

    • z: 翻页
    • enter: 下一行
    • q: 退出
    • f: 向前跳过一页
    • b: 向后跳过一页
    • /expression: 在文件中搜索expression代表的文本,常用于搜索
    • =:显示当前行号
    • v:在当前打开vi编辑器
    • !cmd:执行shell命令
    5.7.3.3 less命令

    less命令比more命令更加高级,可以在命令读完整个文件之前显示文件内容,可以轻松应对大型文件。
    less命令操作和more命令操作基本相同,而且可以识别向上向下,翻页键等。

    5.7.4 查看部分文件

    5.7.4.1 tail命令

    tail命令显示最后一组文件行,默认显示最后10
    行。

    • tail -f file: 保持tail激活状态,继续显示添加的文本的新行。
    • tail -n 300 file:显示文件最后300行
    • tail -c 300 file:显示文件最后300个字节
    5.7.4.2 head 命令

    与tail命令类似,head命令显示开头的一组文件行,默认显示10行,也支持-c-n命令。
    因为文件开头不会更改,所以没有-f命令

    相关文章

      网友评论

        本文标题:Shell命令(1):文件操作相关命令

        本文链接:https://www.haomeiwen.com/subject/usdtbftx.html