Java工程师必学的Linux命令(一)文件与目录管理

从本篇文章开始,我将总结一些Java工程师日常研发工作中会使用到的Linux命令,在介绍这些命令的过程中,也会对Linux系统的一些基础知识进行普及。希望对大家工作和学习有所帮助吧。
本篇将从文件与目录管理开始,毕竟Linux中一切皆文件嘛。
注:本系列文章所有操作都是基于RedHat系列的Centos 7。所以开始学习前,请大家先安装Centos 7。


1. 基本概念

那么,先来看看几个基本概念吧

1.1 Linux的目录结构

Linux的目录结构可以看作一颗树,起点是根,也称为根目录,每一个目录可以看作是枝,每一个文件节点可以看作是叶。如下图:


01.png

举几个小例子:
根: /
枝:/usr
叶:/usr/local/data.db

1.2 家目录

在Linux中,系统在创建每一个用户时,都会为这个用户创建一个家目录,类似于Windows中的“我的文档”。这些用户分两类,一类是超级管理员,一个系统只能有一个超级管理员,它的用户名是root,它的家目录是/root。另一类是普通用户,它的家目录是/home/$用户名,比如一个用户名为jacky的用户,它的家目录是/home/jacky。
当用户登录系统时,默认进入的目录就是该用户的家目录。

1.3 绝对路径和相对路径

(1)绝对路径
从根目录开始查找的路径。比如说有一个文件data.db,它位于根目录的子目录usr下,那么它的绝对路径就是/usr/data.db。
注意:根目录一定是以/开头的,即从根开始一级一级向下找,一直找到这个目录为止。
(2)相对路径
从当前所在目录开始查找的路径。比如当前目录是usr目录,查找usr下的local子目录下的work文件,这个文件的相对路径就是local/work。

1.4 Linux系统自带目录及作用

Centos 6系列根目录下默认一级目录有:

  • /bin 命令保存目录,普通用户可使用的命令
  • /boot 启动目录,存放启动相关文件
  • /dev 设备文件
  • /etc 配置文件
  • /home 普通用户的家目录
  • /lib 第三方库文件保存目录,系统或软件运行所需依赖的第三方库文件
  • /mnt 系统挂载目录
  • /media 媒体外设挂载目录
  • /misc 音频设备挂载目录
  • /root 超级用户的家目录
  • /tmp 临时目录 存放临时文件
  • /sbin 超级用户才能使用的命令存放的目录
  • /proc 内存运行目录,存放一些运行于内存中的信息
  • /sys 系统配置内存目录
  • /usr 用户共享资源目录,一般存放安装的第三方软件
  • /var 可变文档目录,可用于存放访问日志等可变文档

注意:proc和sys的数据是直接写到内存中的,所以不能直接往这两个目录写数据,因为会写到内存,内存占满,系统就会崩溃。

Centos7 根目录下的一级目录出现了以下变动:

  • /bin, /sbin, /lib, /lib64都变成了链接文件,实际内存分别存放在/usr/bin, /usr/sbin, /usr/lib, /usr/lib64。

  • 新增了/run目录存放系统服务进程生成的比如pid等临时文件,比如systemd生成的临时文件

1.5 文件类型

Linux不依靠后缀名来区分文件类型,总共有7种类型:普通文件、目录文件、软链接文件、块设备文件、字符设备文件、套接字文件和管道文件。常用的是前三种。

1.6 文件存储方式

Linux中一切皆文件,那么文件在磁盘上是如何进行存储的呢?文件的存储是由文件系统管理的,现主流的文件系统有EXT2/3/4,FAT16/32等。以EXT系列文件系统为例:
文件由两部分数据组成,一部分是文件的内容,称为数据块。一部分是文件的元信息,包括文件的权限、所有者、群组、时间参数等。
数据块是分块存储的,每一块都是物理上等大的数据,默认每个数据块4KB,是存储文件的最小空间,称为block。每一个block都有唯一的编号,当一个文件大到一个block无法存储时,就会将文件内容切分存储到不同的块中;
元信息则存储在inode中,每一个inode也有唯一的编号的,但与数据块不同,一个文件只会有一个inode。因此inode也经常用来作为文件的标识。
文件系统维护一个目录表,称为super block,它记录了一个文件的inode及它分配的block的编号。用于检索和管理文件存储。

2. 目录管理

2.1 查看当前路径

pwd

前面我们说过了用户登录系统后,默认进入的是家目录,那么我们以root用户登录后,输入以上命令,查看一下root用户的家目录:


pwd

pwd是三个英文单词的缩写:print working directory,打印(当前)工作目录。

2.2 查看目录子节点列表

2.2.1 当前目录下的子节点列表

使用以下命令:

ls [选项] [目录路径]

ls后不加选项,表示查看当前所在目录。
在根目录下执行ls命令,如下图:


当前目录下的子节点列表

2.2.2 指定目录下的子节点列表

在ls命令后加上要查看的目录路径

ls 目录路径
/root下的子节点

2.2.3 显示所有文件,包括隐藏文件

加上-a 选项,表示显示所有文件

ls -a 目录路径
显示所有文件

2.2.4 显示文件详细信息

加上-l 选项,表示显示文件详细信息

ls -l 目录路径
显示文件详细信息

这里显示的有文件的权限、所有者、所属组、文件大小、时间参数、文件名等。

2.2.5 人性化显示文件大小

加上-h 选项,表示人性化显示文件大小,可以结合-l选项。

ls -lh 目录路径
人性化显示文件大小

注意到,文件大小显示的是1.3K,而不再是之前例子中显示的1230了。

2.2.6 显示inode

加上-i选项,可以显示文件的inode。这是文件的唯一标识。


显示inode

这里的8409154就是文件的inode。

2.2.7 显示目录属性

如果想要查看的是目录的属性,而不是目录下的子节点。则可以使用-d选项。

ls -d 目录路径
显示目录属性

2.3 切换目录/进入目录

想要进入某个目录,执行以下命令

cd 目录路径

进入/usr/local目录,如下图所示:


切换目录

此外,cd命令进行一些特定的目录,还有以下简化的命令

cd ~      表示进入当前用户的家目录
cd -       进入上次目录
cd ..      进入上一级目录
cd .       进入当前目录

2.4 创建目录

2.4.1 创建单级目录

可以使用mkdir命令来创建目录

mkdir 目录名

比如,在/usr/local目录下创建一个新目录test。
创建完后,可以使用ls命令查看。


创建目录

2.4.2 递归创建多级目录

mkdir加上-p选项,即可以递归创建多级目录。

mkdir -p test/today/job
创建多级目录

2.5 删除目录

rmdir命令,用于删除空目录。如果目录里有子目录或者文件,则无法使用此命令。

rmdir  job

3. 文件管理

3.1 创建文件

3.1.1 touch命令创建文件

touch命令可以在当前目录下创建一个空文件。

touch 文件名
touch命令

3.1.2 输出重定向创建文件

输出重定向,我们在后面的系统管理部分文章再细讲。这里只讲以下命令格式

echo “文本内容” > 文件名

将文本内容输出重定向到文件,如果这个文件不存在,则会先创建这个文件。


输出重定向

3.1.3 vi工具创建文件

vi是linux自带的文本编辑工具,后面的文章我们会介绍它的用法。这里只涉及用它来创建文件的基本操作。

vi 文件名

以上命令会进行vi会话,如果这个文件不存在,则会先创建这个文件。用户可以输入:ESC键 + :wq退出。

3.2 查看文件内容

3.2.1 cat命令

cat命令用于将文件内容输出到标准输入设备(也就是屏幕)上。当文件内容很多时,会一闪而过,体验不是很好。

cat [选项] 文件名

常用选项有:

-n或--number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;

3.2.2 less和more命令

more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件

more +3 test.log               #从第三行开始显示日志内容

在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。而且** less 在查看之前不会加载整个文件, 它有缓冲区的概念**。
当查看文件内容较多时,建议使用less命令。

less file1

3.2.3 head和tail命令

head、tail #查看文本中开头或结尾部分的内容

head  -n  5  a.log #查看a.log文件的前5行
tail  -F b.log #循环读取(follow)

除了上述命令之外,vi也可以用来查看文件内容,等我们后面介绍vi时再细讲。

3.3 删除文件/目录

命令格式:

rm -rf [文件或目录]

选项

-r 删除目录
-f 强制

删除目录时,建议使用相对路径,避免误操作删除根目录下的所有内容(rm -rf /)

3.4 复制文件/目录

命令格式:

cp [选项] [原文件或目录] [文件或目录]

选项有:

-r 复制目录
-p 连带复制文件属性(比如时间参数)
-d 若源文件是链接文件,则复制链接属性
-a 相当于 -pdr
复制文件

注意:如果不加 -p 选项,则复制出来的文件是新生成的,它拥有自己的文件属性,比如创建时间会是重新生成的。加上 -p选项之后,则连文件属性也一并复制过来了,就连创建时间也会和源文件相同。

3.5 移动(重命令)文件/目录

命令格式:

mv [原文件或目录] [目标目录]

例如

mv a.txt local/  将文件b.txt移动到local目录下
mv /oracle/ test/  将/oracle/目录移动到test目录下

注意:

  • 如果原文件就在目标目录下,那就是改名命令。
  • 与cp不同,mv命令移动目录时,不用加-r选项。

4. 管理链接

4.1 硬链接与软链接

链接分为硬链接和软链接。
前面我们已经提过,一个文件可以看作由两部分组成,一部分是元信息和索引信息,称为inode,一部分是实际文件内容,存储在一个或多个block块中。
硬链接可以看作对文件的一个引用,具有以下特点:

  • 它与原文件拥有相同inode和block,可以看做是同一个文件
  • 可通过inode进行标识
  • 不能跨磁盘分区
  • 不能针对目录进行使用

最重要的一点是:硬链接与原文件拥有相同的inode,所以它们的block块也是相同的,修改两者中任一个,文件的内容都会改变。无论删除硬链接和原文件任一个,只要另一个文件存在,都不影响对文件的访问(相当于只删除了对文件的一个引用而已,文件并没有被实际删除)。
创建了硬链接,文件的引用计数会加1。

软链接特征:

  • 它拥有自己的inode和block块,但是block块中只保存原文件的文件名和inode编号,并没有实际的文件数据。
  • 修改原文件或软链接二者任一,另一个都会改变。
  • 删除原文件,软链接则不能使用

注意:创建软链接,一定要写绝对路径,否则它会在目标目录下寻找原文件(不一定能找到)

4.2 创建链接

命令格式:

ln [选项] [原文件] [目标文件]

选项:

-s 创建软链接

不加选项,则创建的是硬链接。

5. 总结

本文讲述了Linux(具体是Centos 7)中常用到的文件和目录管理相关命令,这些命令在实际开发和运维过程中都是最基本的,必须熟记和多加练习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容