【Linux命令行与Shell脚本编程】三,Linux文件系统
Linux命令行与Shell脚本编程
第三章 Linux文件系统
文章目录
- Linux命令行与Shell脚本编程
- 三.Linux文件系统
- 3.1,查看文件
- 3.1.1,ls 命令 选项和参数
- 3.1.2,过滤输出列表
- 3.2, 处理文件
- 3.2.1,touch 创建文件
- 3.2.2,cp 复制文件
- cp -i 覆盖询问
- cp -R 递归
- cp命令中使用通配符
- 3.2.3,tab 制表符补全(命令行补全)
- 3.2.4,ln 链接文件
- 软链接
- 硬链接
- 3.2.5,mv 文件重命名--移动
- 3.2.6,rm 删除文件
- 3.3, 管理目录
- 3.3.1,mkdir 创建目录
- -p 批量创建目录及子目录
- 3.3.2,rmdir 删除目录
- 3.4, 查看文件内容
- 3.4.1,file 查看文件类型
- 3.4.2,cat more less 查看整个文件
- 3.4.2.1,cat 命令
- 3.4.2.2,more 命令
- 3.4.2.3.less 命令
- 3.4.3, tail head 查看部分文件
- 3.4.3.1, tail 命令
- 3.4.3.2, head 命令
三.Linux文件系统
常见目录名
3.1,查看文件
ls查看当前工作目录的目录和子目录
3.1.1,ls 命令 选项和参数
选项 | 长选项 | 含义 |
---|---|---|
-a | –all | 列出所有文件,包括隐藏的文件(.开头的文件) |
-d | –directory | 目录本身,与 -l 结合使用查看目录的详细信息,而不是目录的内容 |
-F | –classify | 在名称后加上类型指示符(目录后会加 正斜杠’/‘;可执行文件后添加星号’*') |
-R | 递归选项,列出当前目录所包含的子目录的文件 | |
-h | –human-readable | 以长格式列出,以人可读的方式而不是字节数显示文件大小 |
-l | 使用长列表格式显示结果 | |
-r | –reverse | 以相反顺序显示结果.默认字母升序显示. |
-S | 以文件大小对文件排序 | |
-t | 按修改时间排序 | |
-i | 查看文件或目录的inode编号 |
在长列表格式输出中,每一行会列出一个文件或目录。除了文件名,输出中还包括其他有用信息。$ ls -l
total 8
drwxr-xr-x. 2 christine christine 6 Feb 20 14:23 Desktop
drwxr-xr-x. 2 christine christine 6 Feb 20 14:23 Documents输出的第一行显示了为该目录中的文件所分配的总块数(8)。
此后的每一行都包含了关于文件(或目录)的下列信息。
文件类型,比如目录(d)、文件(-)、链接文件(1)、字符设备(c)或块设备(b)
文件的权限
文件的硬链接数
文件属主
文件属组
文件大小(以字节为单位)
文件的上次修改时间
3.1.2,过滤输出列表
过滤器就是一个字符串,可用作简单的文本匹配。
你可以将其作为命令行参数,放置在选项之后使用:
$ ls -l my_script
-rwxrw-r--. 1 christine christine 74 Feb 29 16:12 my_script
当指定特定的文件名作为过滤器时,ls命令只会显示该文件的信息。
有时可能不知道要找的那个文件的确切名称。
ls命令也能识别标准通配符(wildcard),并在过滤器中用其来进行模式匹配:问号(?)代表任意单个字符;星号(*)代表零个或多个字符。[]可能出现的字符!排除
3.2, 处理文件
命令: touch,cp,ln,mv,rm
3.2.1,touch 创建文件
touch filename
通过touch命令创建 空文件,并将用户名作为文件属主,设置修改时间。如果文件已存在,也不会对其造成影响.
通过touch 不会修改文件,所以可以用来改变文件修改时间而不影响文件内容.
3.2.2,cp 复制文件
cp命令可以 将文件和目录从文件系统的一个位置复制到另一个位置可谓是系统管理员的日常操作。
cp命令最基本的用法需要两个参数,即源对象和目标对象:cp source destination。
当参数 source 和 destination 都是文件名时,cp命令会将源文件复制成一个新的目标文件,并以 destination 命名。
新文件在形式上就像全新的文件 有新的修改时间$ cp test_one test_two$ ls -l test one test two-rw-rw-r--. 1 christine christine 0 Feb 29 17:26 test one-rw-rw-r--. 1 christine christine 0 Feb 29 17:46 test two
cp -i 覆盖询问
cp 命令的 destination 目标文件若已存在,则会覆盖文件,并不会提醒. 所以最好加上 -i 选项,强制shell询问是否覆盖已有文件.也可以将文件复制到现有目录中$cp -i test_one /home/christine/Documents/$ ls -l /home/christine/Documents/total 0-rw-rw-r--. 1 christine christine 0 Feb 29 17:48 test_one新文件现在位于Documents目录中,文件名和原先一样。例子在目标目录名尾部加上了一个正斜线(/)。这表明Documents是一个目录而非文件。
有助于表明目的,在复制单个文件时非常重要。
如果没有使用正斜线,同时子目录/home/christine/Documents又不存在,在这种情况下,试图将一个文件复制到 Documents 子目录反而会创建名为Documents的文件,错误消息都不会有。因此记得在目标目录名尾部加上正斜线/。
cp -R 递归
cp -R 用于在单个命令中递归复制整个目录的内容 ,目标目录会自动创建.
cp命令中使用通配符
$ cp my* NewDocuments/
命令将所有以my起始的文件都复制到了 NewDocuments目录中。
3.2.3,tab 制表符补全(命令行补全)
制表键补全允许在输入文件名或目录名的时候,按一下制表键,让 shell 将内容补充完整.
3.2.4,ln 链接文件
链接文件是Linux文件系统的一个优势。
如果需要在系统中维护同一文件的两个或多个副本,可以使用单个物理副本加多个虚拟副本(链接)的方法代替创建多个物理副本。
链接是目录中指向文件真实位置的占位符。在Linux中有两种类型的文件链接。·符号链接(软链接)·硬链接
软链接
软链接是一个实实在在的文件,该文件指向存放在虚拟目录结构中某个地方的另一个文件。这两个以符号方式链接在一起的文件彼此的内容并不相同。要为一个文件创建符号链接,原始文件必须事先存在,然后使用 ln 命令以及-s选项来创建软链接:$ ls -l test_file-rw-rw-r--. 1 christine christine 74 Feb 29 15:50 test_file$ ln -s test_file slink_test_file$ ls -l *test filelrwxrwxrwx. 1 christine christine 9 Mar 09:46 slink_test_file - > test_file-rw-rw-r--. 1 christine christine 74 Feb 29 15:50 test_file长列表(ls -l)中显示的符号文件名后的 -> 符号表明该文件是链接到文件 test_file 的一个符号链接。slink_test_file仅仅只是指向test_file而已。内容并不相同,是两个完全不同的文件。证明链接文件是一个独立文件的方法是查看inode编号。文件或目录的inode编号是内核分配给文件系统中的每一个对象的唯一标识。要查看文件或目录的inode编号,可以使用 ls命令的-i 选项:$ ls -i *test file1415020 slink_test_file 1415523 test_file可以看出,test file文件的inode编号是 1415523,而slink test file的inode编号则是1415020。两者是不同的文件。
硬链接
硬链接创建的是一个独立的虚拟文件,其中包含了原始文件的信息以及位置。两者就根本而言是同一个文件。以硬链接相连的文件共享同一个inode编号。要想创建硬链接,原始文件也必须事先存在 使用 ln 命令 创建硬链接!!只能对处于同一存储设备的文件创建硬链接。
3.2.5,mv 文件重命名–移动
linux 中 重命名文件称为 移动.
mv source target 可以将 文件和目录 移动到另一个位置或是重命名. $ ls -li f?ll1414976 -rw-rw-r--. 1 christine christine 0 Feb 29 16:12 fall$ mv fall fzll$ ls -li f?ll1414976 -rw-rw-r--. 1 christine christine 0 Feb 29 16:12 fzll移动文件会将文件名从fall更改为fzll,但inode编号和时间戳保持不变。 mv只影响文件名。也可以使用mv来移动文件的位置:$ mv /home/christine/fzll /home/christine/NewDocuments/-i 覆盖询问类似 cp 命令. 加上 -i 选项,在 mv 试图覆盖已有文件是发出询问.在移动的时候同时重命名:$ mv /home/christine/fzll /home/christine/NewDocuments/fall
3.2.6,rm 删除文件
shell 没有回收站,会直接删除文件.
rm -i filename -i 选项会询问是否确定删除文件
-f 强制删除,没有命令提示
3.3, 管理目录
mkdir,rmdir,rm
3.3.1,mkdir 创建目录
mkdir dirname$ mkdir New_Dir$ ls -ld New_Dirdrwxrwxr-x. 2 christine christine 6 Mar 6 14:40 New_Dir
长列表输出中,目录以d开头.
-p 批量创建目录及子目录
mkdir命令的-p选项可以根据需要创建缺失的父目录。$ mkdir -p New_Dir/SubDir/UnderDir$ ls -R New_DirNew_Dir:SubDirNew Dir/SubDir:UnderDirNew_Dir/SubDir/UnderDir:
3.3.2,rmdir 删除目录
默认 rmdir 命令仅删除空目录.目标目录下存在文件,会拒绝删除目录.$ mkdir Wrong_Dir$ touch Wrong_Dir/newfile$ rmdir Wrong_Dir/rmdir: failed to remove `Wrong_Dir/': Directory not empty需要删除目录中的文件,才能删除目录.
rmdir 没有 -i选项,询问是否删除目录.可以在整个非空目录中使用 rm 命令, -r 选项使命令可以向下进入(descend into)目录,删除其中文件再删除目录.rm -rf 一口气删除目录树,危险的命令.
3.4, 查看文件内容
3.4.1,file 查看文件类型
file 命令 探测文件内部并判断文件类型.file命令不仅能够确定文件中包含的是文本信息,还能确定该文本文件的字符编码是ASCII。$ file .bashrcbashrc: ASCII text
file 可以区分目录$ file DocumentsDocuments/: directory链接文件,file命令能够 指明链接到了哪个文件:$ file slink test fileslink_test_file: symbolic link to test_file脚本文件:$ file my_scriptmy_script: Bourne-Again shell script, ASCII text executable二进制可执行程序。确定 该程序编译时所面向的平台以及需要何种类型的库。如果有从未知来源处获得的二进制文件,这会是一个非常有用的特性:$ file /usr/bin/ls/usr/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,for GNU/Linux 3.2.0,[...]
3.4.2,cat more less 查看整个文件
3.4.2.1,cat 命令
显示文本文件中所有数据:$ cat test fileHello WorldHello World againHello World a third timeHowareyouWorld?-n 选项会给所有的行加上行号
-b 只给有文本的行加上行号对于大文件,文件内容会'一闪而过'
3.4.2.2,more 命令
cat命令 主要缺点是其开始运行之后 无法控制后续操作。more命令会显示文本文件的内容,但会在显示每页数据之后暂停下来。
底部的 'More 百分比' 标签说明仍处于more 应用程序中,以及当前所在的位置.more 也是分页工具,能够逐页(或逐行)显示文本。可以单击空格键进行翻页,或是使用 Enter键逐行查看。也可以使用 箭头键向前和向后 滚动手册页的内容.按 q 退出.
3.4.2.3.less 命令
more命令 的升级版.less 命令可以 在完成整个文件的读取之前显示文件的内容.
能识别 上下箭头 以及上下翻页键.
3.4.3, tail head 查看部分文件
3.4.3.1, tail 命令
tail 命令会显示文件尾部的内容,默认显示末尾 10行.-n选项 修改显示行数. $ tail -n 2 log_fileline14Last Line - line15tail -n 2 file 等同于 tail -2 file ,n可以省略
-f 选项 允许其他进场使用此文件时查看文件的内容.tail命令保持活动状态并持续显示添加到文件中的内容.
3.4.3.2, head 命令
head 命令会显示文件头部的内容,默认显示末尾 10行.-n选项 等同于 tail的-n 命令
【Linux命令行与Shell脚本编程】三,Linux文件系统相关推荐
- 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本
<linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...
- Linux命令行与shell脚本编程大全:第2版
<Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...
- Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结
时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...
- Linux_《Linux命令行与shell脚本编程大全》第二章学习总结
时间:2017年04月05日 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>(第三版 ...
- Linux_《Linux命令行与shell脚本编程大全》第十章学习总结
时间:2017年08月24日星期四 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...
- 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
下载地址:网盘下载 内容简介 · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...
- linux 命令行与shell脚本编程大全
linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...
- 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记
2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...
最新文章
- 2021年大数据Flink(三十一):​​​​​​​Table与SQL案例准备 依赖和​​​​​​​程序结构
- UPDATE STATISTICS 有何妙用?
- redis(3)redis的基础入门(java)
- Linux安装Elasticsearch-head插件
- sudo vi ~/etc/profile 报错E212:Can't open file for writing
- 各种排序笔记---基于比较排序部分
- FreeRTOS队列
- Protobuf介绍及简单使用(上)
- HbuliderX + vue项目(初始化创建) - 准备篇
- 计算机窗口设计java实验,Java银行取款异常处理计算器设计图形用户界面设计实验报告.doc...
- 关于“我的藏书阁:.NET/数据库应用开发”的几点看法。
- conda 删除env_软件包与环境管理神器之conda
- 什么是排他思想算法?(源码解析)
- 致远OA办公网“office控件不可用”及“无注册表类”解决办法
- 神经网络的起源和发展,神经网络的网络结构
- Trained Ternary Quantization
- android 日历翻页动画,Android开源库合集:轻松实现Android动态,炫目:日历效果...
- 苹果最新消息_最新消息称苹果延期举行发布会:iPhone 12或将于10月推出
- 最强模拟器Genymotion到期开始收费破解教程
- : ERR Client sent AUTH, but no passw redis解决