云计算实战系列三(Linux文件管理)

2023-05-16

文件管理

1.Linux目录结构

1.1 WINDOWS/LINUX 对比

Windows: 以多根的方式组织文件 C:\ D:\ E:\ Linux: 以单根的方式组织文件 /

1.2 简介

/目录结构: FSH (Filesystem Hierarchy Standard)
[root@newrain ~]# ls /
bin dev lib media net root srv usr
boot etc lib64 misc opt sbin sys var home mnt proc tmp

1.3 图示

 

 

1.4 目录功能

bin 普通用户使用的命令 /bin/ls, /bin/date sbin 管理员使用的命令 /sbin/service dev 设备文件 /dev/sda,/dev/sda1 root root用户的HOME home 存储普通用户家目录 lost+found fsck修复时,存储没有链接的文件或目录 proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态

usr 系统文件,相当于C:\Windows /usr/local 软件安装的目录,相当于C:\Program

boot 存放的系统启动相关的文件,例如kernel,grub(引导装载程序) etc 配置文件(系统相关如网络/etc/sysconfig/network

lib 库文件Glibc lib64 库文件Glibc

tmp 临时文件(全局可写:进程产生的临时文件) var 存放的是一些变化文件,比如数据库,日志,邮件....

==设备(主要指存储设备)挂载目录==

media 移动设备默认的挂载点 mnt 手工挂载设备的挂载点

2.文件管理

2.1 文件类型(理解)

  • 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
  • d 目录文件(蓝色)
  • b 设备文件(块设备)存储设备硬盘,U盘 /dev/sda, /dev/sda1
  • c 设备文件(字符设备)打印机,终端 /dev/tty1
  • l 链接文件(淡蓝色)
  • s 套接字文件
  • p 管道文件

2.2示例1

查找下列有哪些文件类型

[root@newrain ~]# ll  /dev/sda /dev/log /etc/passwd /dev/tty1 /lib64 /home
srw-rw-rw-  1 root root    0 Aug  4 21:41 /dev/log
brw-rw----  1 root disk 8, 0 Aug  4 21:41 /dev/sda
crw--w----  1 root tty  4, 1 Aug  4 21:53 /dev/tty1
-rw-r--r--  1 root root 1069 Jul 26 23:12 /etc/passwd
lrwxrwxrwx. 1 root root    9 Jul 23 23:29 /lib64 -> usr/lib64
drwxr-xr-x. 10 root root 4096 Mar 14 11:00 /home

2 f.3 示例2

[root@newrain ~]$ file /etc/hosts
/etc/hosts: ASCII text

root@newrain ~]$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped

[root@newrain ~]$ file /dev/sda
/dev/sda: block special

[root@newrain ~]$ file /dev/tty1
/dev/tty1: character special

[root@newrain ~]$ file /etc/grub2.cfg 
/etc/grub2.cfg: broken symbolic link to `../boot/grub2/grub.cfg'

[root@newrain ~]$ file /home
/home: directory

注意 Linux系统中文件是没有扩展名!!!

3.文件管理命令

3.1 改变目录

cd 绝对路径 cd /home/alice

cd 相对路径 cd . ..

cd 专用:

cd - 返回上次目录

cd 直接回家

2.2 创建文件

[root@newrain ~]# touch testfile  //无则创建,有则修改时间
[root@newrain ~]# touch ./testfile 
[root@newrain ~]# touch /tmp/testfile
[root@newrain ~]# touch /tmp/testfile{1..20}
[root@newrain ~]# touch /tmp/testfile{a..z}
[root@newrain ~]# touch /tmp/testfile{a,c,1,2}

2.3 创建目录

语法:mkdir -v 详细 -p 递归 目录

mkdir dir1

mkdir /home/dir2 /home/dir3

mkdir /home/{dir4,dir5}

mkdir -v /home/{dir6,dir7}      #显示详细信息,遍历

mkdir -v /home/dir8/111/22

mkdir -pv /home/dir8/111/222 #包括其父母的创建,不会有任何消息输出
1
mkdir -pv /home/{yang/{dir1,111},newrain}

2.4.复制

==复制 cp -r 目录 -v 详细 -f 强制 -n 静默

Usage: cp [OPTION]... [-T] SOURCE DEST

cd

mkdir /home/dir{1,2}

cp -v install.log /home/dir1      //-v 显示详细信息

cp -v install.log /home/dir1/yang.txt


cp -rv /etc /home/dir1 //-r 拷贝文件夹

cp -rv 源文件1 源文件2 源文件N 目标文件 //将多个文件拷贝到同一个目录

cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .

cp -r /etc /tmp

cp -rfn /etc /tmp //-f, --force 强制

2.5 移动

1.创建一个新文件file1

touch  /root/file1

2.把file1文件移动到/tmp目录中。

mv    /root/file1    /tmp
ls    /tmp/file1

3.把file1文件更名为file2

mv    /tmp/file1     /tmp/file2

4.观察file1文件已经更名为file2

ls  /tmp/file1    /tmp/file2

2.6 删除

==删除 rm -r 递归 -f force强制 -v 详细过程 *通配符

示例1:删除/home/dir1

cd /home

rm -rf dir1

-r 递归 -f force强制 -v 详细过程

示例2:

​```shell
[root@newrain ~]# mkdir /home/dir10
[root@newrain ~]# touch /home/dir10/{file2,file3,.file4}
[root@newrain ~]# rm -rf /home/dir10/* //不包括隐藏文件
[root@newrain ~]# ls /home/dir10/ -a
​```
. .. .file4

示例3:

[root@newrain ~]# rm -rf file*
[root@newrain ~]# rm -rf *.pdf

2.7 查看文件内容

cat全部

cat  /etc/passwd

-n 显示行号

-A 包括控制字符(换行符/制表符)

more翻页

more  /etc/passwd

head头部

[root@newrain ~]# head /etc/passwd
[root@newrain ~]# head -2 /etc/passwd

tail尾部

[root@newrain ~]# tail /etc/passwd
[root@newrain ~]# tail -1 /etc/passwd
[root@newrain ~]# tail /var/log/messages
[root@newrain ~]# tail -20 /var/log/messages
[root@newrain ~]# tail -f /var/log/secure //-f 动态查看文件的尾部
[root@newrain ~]# tail -F /var/log/secure //-F 动态查看文件的尾部

tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果 再次创建相同的文件名,会继续追踪

grep过滤关键字 grep 针对文件内容进行过滤

grep 'root' /etc/passwd

grep '^root' /etc/passwd

grep 'bash$' /etc/passwd

grep 'failure' /var/log/secure

2.8 修改文件内容

VI 的三个模式

 

 

命令模式

光标定位:

  • hjkl #上下左右 0 $ #行首行尾 gg G #野兽页尾
  • 3G #进入第三行
  • /string #查找字符,n下一个 (n N 可以循环的)

文本编辑:

  • 文本编辑(少量)
  • y 复制 yy 3yy ygg yG (以行为单位)
  • d 删除 dd 3dd dgg dG (以行为单位)
  • p 粘贴
  • x 删除光标所在的字符
  • D 从光标处删除到行尾
  • u undo撤销
  • ^r redo重做
  • r 可以用来修改一个字符

进入其它模式:

  • a 进入插入模式
  • i 进入插入模式
  • o 进入插入模式
  • A 进入插入模式
  • : 进入末行模式(扩展命令模式)
  • v 进入可视模式
  • ^v 进入可视块模式
  • V 进入可视行模式
  • R 进入替换模式

扩展命令模式:

保存退出

  • :10 进入第10行 
  • :w 保存 
  • :q 退出
  • :wq 保存并退出
  • :w! 强制保存
  • :q! 不保存并退出
  • :wq! 强制保存退出
  • :x 保存并退出 ZZ

查找替换

  • :范围 s/old/new/选项 
  • :1,5 s/root/yang/ 从1-5行的root 替换为yang 

读入文件/写文件(另存为)

  • :w 存储到当前文件
  • :w /tmp/aaa.txt 另存为/tmp/aaa.txt
  • :1,3 w /tmp/2.txt
  • :r /etc/hosts 读入文件到当前行后
  • :5 r /etc/hosts 读入文件到第5行后

设置环境 (临时):

  • :set nu 设置行号 
  • :set ic 不区分大小写
  • :set ai 自动缩进
  • :set list 显示控制字符
  • :set nonu 取消设置行号
  • :set noic

2.9 文件基本信息:

时间类型

访问时间:atime,查看内容 //RHEL6会延后修改atime 修改时间:mtime,修改内容 改变时间:ctime,文件属性,比如权限

查询示例

[root@newrain ~]# ls -l install.log
-rw-r--r-- 1 root root 34793 10-23 13:49 install.log

[root@newrain ~]# stat install.log
File: “install.log”
Size: 34793 Blocks: 80 IO Block: 4096 一般文件
Device: 802h/2050d Inode: 65282 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-10-23 16:53:20.000000000 +0800
Modify: 2012-10-23 13:49:46.000000000 +0800
Change: 2012-10-23 13:49:52.000000000 +0800

ls -l 文件名 仅看的是文件的修改时间

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

云计算实战系列三(Linux文件管理) 的相关文章

  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • Apache 端口转发 80 到 8080 并访问 Apache (80) 中托管的应用程序,即 phpMyadmin 和 Tomcat (8080)

    我想访问托管在 tomcat 服务器 8080 中的应用程序 myapp 当前可以通过以下方式访问http example com 8080 myapp http example com 8080 myapp in http example
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu

随机推荐