manajay

Valar Morghulis Valar Dohaeris

静下心来,用心观察 处处都透着生活的美.


Linux 学习笔记02 - 文件操作

Linux文件系统将所有的磁盘都并入一个虚拟目录下,在使用新的存储媒体之前,需要将它放在虚拟目录下,这项工作称为 挂载(mounting)

常用文件操作

  • touch filename 创建文件,如果存在则更新其修改时间
  • mkdir directory 创建目录
  • mv source destination 重命名某个文件source 也就是 移动某个文件
  • cp source destination 复制某个文件source到destination位置
  • rm -ir [directory | filename] 询问是否删除文件或者文件夹
  • rm -rf directory 强制删除文件夹,危险操作
  • cat filename 查看文件的所有内容,不适用大文件
  • more filename 分页查看文件内容,适用于大文件
  • tail -10 filename 查看文件的最后10行文字
  • tail -f filename 时时查看文件的最后输出内容,适用于程序打印日志的查看
  • vi filename 编辑文件,如果不存在则先创建再编辑

挂载

  1. mount 命令

默认会输出当前系统上挂载的设备列表. 比如输出如下

/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)

输出的格式:

  • 媒体的设备文件名称
  • 媒体的挂载到虚拟目录的挂载点
  • 文件系统类型
  • 已挂载媒体的访问状态

要手动挂载媒体设备,需要以root用户身份登录,或是以root用户身份运行sudo命令.

mount -t type device directory

type参数指定了磁盘被格式化的文件系统类型 通常为:

  • vfat : Windows长文件系统
  • ntfs : Windows NT 、XP、Visa以及Windows 7 中广泛使用的高级文件系统
  • iso9660 : 标准的CD-ROM文件系统

比如手动将U盘/dev/sdb1挂载到/media/disk下面:

mount -t vfat /dev/sdb1 /media/disk
  1. umount 命令

卸载设备

umount [directory | device]

umount 命令支持通过设备名或者是挂载点来指定卸载设备. 不过要注意的是 如果有任何程序正在使用该设备,则会提示设备繁忙,卸载不成功, 需要退出该设备后,再进行卸载尝试.

lsof 命令 查看哪个进程在使用该设备

lsof /path/to/device/node 或者 lsof /path/to/mount/point

df

查看磁盘的空间

  • df 命令

输出如下:

Filesystem    512-blocks      Used Available Capacity iused      ifree %iused  Mounted on
/dev/disk1     234573824 201213432  32848392    86% 2389298 4292577981    0%   /
devfs                380       380         0   100%     658          0  100%   /dev
map -hosts             0         0         0   100%       0          0  100%   /net
map auto_home          0         0         0   100%       0          0  100%   /home

输出的格式为:

  • 设备的设备文件位置
  • 能容纳 512-blocks 多少个大小为512字节的块
  • 已使用 512-blocks 大小的块
  • 还有多少 512-blocks 可以使用
  • 已用空间所占用的比例
  • 设备挂载到了哪个挂载点上,如 /home 主目录

du

du -ch 命令 查看具体某个目录的磁盘使用情况

8	./SweetLove/SweetLove/Classes/Business/Base/Controller
72	./SweetLove/SweetLove/Classes/Business/Base/Hub
24	./SweetLove/SweetLove/Classes/Business/Base/Layer
40	./SweetLove/SweetLove/Classes/Business/Base/TableView

全部命令:

usage: du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m | -g] [-x] [-I mask] [file ...]
  • -c : 显示所有已列出文件总的大小
  • -h : 按照用户易读的格式输出
  • -s : 显示每个输出参数的总计

sort

Usage: sort [OPTION]... [FILE]...
Write sorted concatenation of all FILE(s) to standard output.

Mandatory arguments to long options are mandatory for short options too.
Ordering options:

  -b, --ignore-leading-blanks  ignore leading blanks
  -d, --dictionary-order      consider only blanks and alphanumeric characters
  -f, --ignore-case           fold lower case to upper case characters
  -g, --general-numeric-sort  compare according to general numerical value
  -i, --ignore-nonprinting    consider only printable characters
  -M, --month-sort            compare (unknown) < `JAN' < ... < `DEC'
  -n, --numeric-sort          compare according to string numerical value
  -r, --reverse               reverse the result of comparisons

常用的几个

  • -M 用三字符月份名 按照月份排序
  • -n 按照字符串数值排序 (并不转化为浮点数)
  • -k 排序从POS1位置开始,如果指定了POS2的话,则到POS2位置结束

常用的场景

1 查看文本并按照某个归责进行排序

比如按照’,’逗号分割, 第3个位置的数值升序排序

sort -t ',' -k 3 -n filename

2 查看目录中文件占用磁盘情况,并排序

当前目录的文件占用,并倒序排序,查找占用最大的文件

du -sh * | sort -nr

grep

usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
	[-e pattern] [-f file] [--binary-files=value] [--color=when]
	[--context[=num]] [--directories=action] [--label] [--line-buffered]
	[--null] [pattern] [file ...]

grep可以跟 参数, 匹配字符,文件路径

比如查找server.log中匹配 error信息的输出

grep error server.log

默认用unix的正则匹配风格

压缩数据

Linux工具

  • bzip2 压缩为 .bz2后缀的文件
  • compress 压缩为 .Z
  • gzip 压缩为 .gz
  • zip 压缩为 .zip

最流行的 gzip

gzip 压缩 gunzip 解压 gzcat 查看压缩过的文件内容

可以后面跟 正则匹配进行压缩

比如 压缩当前目录下的脚本文件

gzip *.sh

归档文件

tar(bsdtar): manipulate archive files
First option must be a mode specifier:
  -c Create  -r Add/Replace  -t List  -u Update  -x Extract
Common Options:
  -b #  Use # 512-byte records per I/O block
  -f <filename>  Location of archive
  -v    Verbose
  -w    Interactive
Create: tar -c [options] [<file> | <dir> | @<archive> | -C <dir> ]
  <file>, <dir>  add these items to archive
  -z, -j, -J, --lzma  Compress archive with gzip/bzip2/xz/lzma
  --format {ustar|pax|cpio|shar}  Select archive format
  --exclude <pattern>  Skip files that match pattern
  -C <dir>  Change to <dir> before processing remaining files
  @<archive>  Add entries from <archive> to output
List: tar -t [options] [<patterns>]
  <patterns>  If specified, list only entries that match
Extract: tar -x [options] [<patterns>]
  <patterns>  If specified, extract only entries that match
  -k    Keep (don't overwrite) existing files
  -m    Don't restore modification times
  -O    Write entries to stdout, don't restore to disk
  -p    Restore permissions (including ACLs, owner, file flags)

归解档文件的常用命令

  • -c 创建一个归档文件
  • -v 在处理文件时显示文件
  • -f 输出结果到文件或者设备file
  • -t 列出已有的归档文件
  • -x 从已有的归档文件中提出文件

常用的命令

创建一个 test.tar的归档文件, 将test/test2/目录归档

tar -cvf test.tar test/ test2/

查看归档文件

tar -tf test.tar

解压提取文件

tar -xvf test.tar

注意 在下载开源软件时,经常遇到以.tgz结尾的文件, 这些是用gzip压缩后的tar文件,可以用 tar -zxvf filename.tgz来解压

最近的文章

maven 依赖冲突示例<一>

问题描述简单叙述 java.lang.NoClassDefFoundError: org/springframework/core/MethodClassKey查找源码 发现 MethodClassKey 这个.类是在org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource.getCacheKey中被调用的,而项目中的spring 4.2.6 Release 的 Abstra...…

Java Maven继续阅读
更早的文章

python 构建博客

构建的环境 架构 Django 4 python 3 sqlite3 pycharmDjango 的项目结构一般创建的项目,初始化目录为├── Blog│   ├── __init__.py│   ├── __pycache__│   │   ├── __init__.cpython-36.pyc│   │   └── settings.cpython-36.pyc│   ├── settings.py│   ├── urls.py│   └── wsgi.py├── appmod...…

Python继续阅读