Linux 命令 read (文件管理)——想玩转linux就请一直看下去

Linux 命令 read (文件管理)——想玩转linux就请一直看下去,第1张

Linux read命令用于从标准输入读取数值。

read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

参数说明:

1、简单读取

测试结果为:

2、-p 参数,允许在 read 命令行中直接指定一个提示。

测试结果为:

3、-t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。

执行程序不输入,等待 5 秒后:

4、除了输入时间计时,还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

该例子使用了-n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。

只接收 2 个输入就退出:

执行程序输入两个字符:

5、 -s 选项能够使 read 命令中输入的数据不显示在命令终端上(实际上,数据是显示的,只是 read 命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。

执行程序输入密码后是不显示的:

6.读取文件

每次调用 read 命令都会读取文件中的 "一行" 文本。当文件没有可读的行时,read 命令将以非零状态退出。

通过什么样的方法将文件中的数据传给 read 呢?使用 cat 命令并通过管道将结果直接传送给包含 read 命令的 while 命令。

测试文件 test.txt 内容如下:

测试代码:

执行结果为:

使用 -e 参数,以下实例输入字符 a 后按下 Tab 键就会输出相关的文件名(该目录存在的):

文件名称区分大小写

文件名最长255个字符

包括路径在内文件名称最长4095个字节

蓝色-->目录:绿色-->可执行文件:红色-->压缩文件:浅蓝色-->链接文件:灰色-->其它文件

除了斜杠和NUL,所有字符都有效,使用特殊字符的目录名和文件不推荐使用,有些字符需要加引号来引用

标准Linux文件系统,文件名称大小写敏感

/boot: 内核引导文件存放目录

/bin: 所有用户使用的基本命令不能关联至独立分区,系统启动会用到的程序

/sbin: 管理类的基本命令不能关联至独立分区,系统启动会用到的程序

/lib: 系统启动时程序依赖的基本共享库文件及内核模块文件(/lib/modules)

/etc: 配置文件目录

/home: 普通用户家目录

/root: 管理员家目录

/media: 便携式移动设备挂载点

/mnt: 临时文件系统挂载点

/dev: 设备文件及特殊文件存储位置

/opt: 第三方应用程序安装位置,同/usr/local

/srv: 系统服务用到的数据

/tmp: 存储临时文件

/usr: 系统软件资源存放目录

/var: 系统运行时的可变动数据:/var/tmp:系统两次重启产生的临时数据

/proc: 内核与进程信息相关的虚拟文件系统

/sys: 硬件设备相关信息的虚拟文件系统

/selinux: selinux安全策略

meta data: 

    文件类型,权限,UID,GID

    链接数(指向这个文件名路径名称个数)

    该文件的大小和不同的时间戳

    指向磁盘上文件的数据块指针

    有关文件的其他数据

        文件类型:

            -: 普通文件

            d: 目录文件

            b: 块设备

            c: 字符设备

            l: 符号链接文件

            p: 管道文件pipe

            s: 套接字文件socket

        查看方式:

            使用ll,ls -l: 看第一个字符,链接数,

            ls -lih:

                inode编号,文件类型,文件权限,硬链接个数,文件属主,文件属组,文件大小,文件修改时间

            file命令,type命令,

            stat命令: 文件详细信息,修改时间mtime,改变时间ctime,访问时间atime

            du -sm filename: 查看文件大小

            文件扩展名:

                源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。

                .sh表示shell脚本文件,通过shell语言开发的程序。

                .pl表示perl语言文件,通过perl语言开发的程序。

                .py表示python语言文件,通过python语言开发的程序。

                .html、.htm、.php、.jsp、.do表示网页语言的文件。

                .conf表示系统服务的配置文件。

                .rpm表示rpm安装包文件。

        touch: 创建空文件和刷新时间戳

            touch [OPTION]... FILE...

                -a: 改变atime和ctime

                -m: 改变mtime和ctime

                -t: [[CC[YY[MMDDhhmm[.ss]]]]]

                    指定atime和mtime的时间戳

                -c: 如果文件不存在,则不予创建 

硬链接:

    同一个文件多个名字

    不支持跨分区,不支持目录

    平级关系,删除原始文件不影响打开

    iNode相同,链接数增长

    创建语法,原始文件路径,相对于工作目录的路径

    文件类型,普通文件

    创建方式ln filename [linkname]

软链接:

    与原始文件,不同的文件

    支持跨分区,支持目录

    依赖关系,删除原始文件即失效

    iNode不同,链接数不会增长

    创建语法,原始文件路径,相对于软链接的路径

    文件类型显示l

    创建方式ln -s filename [linkname]

实例说明:

    cd ../data

    mkdir -pv d1/d2

    touch linux.txt

    ln linux.txt d1/d2/linux.hlink

    ln -s ../../linux.txt d1/d2/linux.slink

    ln -s ../d2 d1/d2/d2.slink

    tree

    执行如图:

stat: 查看文件状态

    示例: stat /etc/issue

        stat/etc/motd

touch: 创建空文件和刷新时间

    touch [OPTION]... FILE...

        -a: 仅改变atime和ctime

        -m: 仅改变mtime和ctime

        -t: 指定atime和mtime时间戳

        -c: 如果文件不存在,则不予创建

    示例: touch /data/f1

cp: 复制文件和目录

    cp [OPTION]... SOURCE... DIRECTORY

        -i: 覆盖前提示

        -n: 不覆盖

        -r,-R: 递归复制目录及内部的所有内容

        -a: 归档,相当于-dR --preserv=all

        -p: 等同--preserv=mode,ownership,timestamp

        -u: 只复制源比目标更新或目标不存在

        -b: 目标存在,覆盖前先备份filename~

        --backup=numbered: 目标存在,覆盖前先备份并加数字后缀

    cp SRC DEST

        SRC是文件:

            如果目标不存在: 新建DEST,并将SRC中内容填充至DEST中

            如果目标存在:

                如果DEST是文件: 将SRC中内容覆盖至DEST中

                如果DEST是目录: 在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中

        SRC是多个文件:

            DEST必须存在,且为目录

        SRC是目录: 使用选项-r

            如果DEST不存在: 则创建指定目录,复制SRC目录中所有文件至DEST中

            如果DEST存在:

                如果DEST是文件: 报错

                如果DEST是目录:在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中

    示例: mkdir -p /data/backup

        cp -ab /etc/issue /etc/passwd /etc/group /data/backup

mv: 移动和重命名文件

    mv [OPTION]... SOURCE... DIRECTORY

        -f: 强制

        -b: 目标存在,覆盖前先备份

    示例: mv /etc/issue /data

        mv /etc/issue /data/issue.bak

rm: 删除

    rm [OPTION]... FILE...

        -f: 强制删除

        -r: 递归

        --no-preserve-root 删除/

    示例: rm -rf /data/d1/d2

tree: 显示目录树

    -d:只显示目录

    -L level: 指定显示的层级数目

    -P pattern: 只显示由指定pattern匹配到的路径

    示例: tree /data

ls:列出指定目录下的内容

    ls [OPTION]... [FILE]...

 -a:显示所有文件包括隐藏文件

 -A:显示除.和..之外的所有文件

 -l,--long:显示文件的详细属性信息

 -h:对文件大小进行单位换算,可能影响精度

 -d:查看目录本身而非其内部的文件

 -r:逆序显示文件

 -R:递归显示文件

    示例:ls -lah / 详细显示/目录下的所有文件(包括隐藏文件)

mkdir:创建目录

    mkdir [OPTION]... DIRECTORY...

 -p:自动按需创建父目录

 -m:创建目录时给定权限

    示例: mkdir -p /data/test/A/B

cat:正向查看文本内容

    cat [OPTION]... [FILE]...

 -n:给显示的文本行编号

 -E:显示行结束符号$

    示例: cat -n /etc/fstab

tail:显示文本内容,默认显示后10行

    tail [OPTION]... [FILE]...

 -n #:显示文本后#行内容

 -f:查看文件尾部内容结束后不退出,跟随显示新增的行

    示例: tail -8 /etc/passwd

head:显示文本内容,默认显示头10行

    head [OPTION]... [FILE]...

  -n #:显示文本头#行内容

    示例: head -5 /etc/passwd

less:分屏显示文本内容,不主动退出

    less [options] file [...]

 Space键:显示文本下一屏内容

 Enter键:只显示文本下一行内容

 b键:显示文本上一屏内容

 q键:退出

cp /etc/profile /tmp

vim /tmp/profile

    :%s/^\s\+//

如图:

命令模式下输入:

    :set tabstop=4

或写入用户配置文件~/.vimrc

(1)目录管理命令

——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:显示当前目录

(2)文件管理命令

——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目录

(3)文本内容管理命令

——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键:退出


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8754879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存