Linux11_文件及目录以及其相关的组织命令
Linux文件:
普通文件:文本文件(.txt .doc .odt)、音频文件等等
特殊文件:设备
一切皆文件;这与Windows不同;
Windows目录:
C盘是硬盘的根目录(加入没有把C盘磁盘分区的话);
H盘可能是光盘驱动器根目录;
Linux有且只有一个根目录 /斜杠;
根目录是最顶层的目录;
Linux目录名可以包含空格,但一般不这么用;
常用直属子目录:
/bin binary缩写,表示二进制文件,所有可执行文件都是二进制的,bin文件包含了会被所有用户使用的可执行程序;
/dev device 设备,外设;
/etc and so on等等;零碎东西,历史遗留
/home 用户的私人目录,每个用户在home下都有私人目录
/root 根用户的目录,比较特殊,有自己的目录,比较任性
/media 表示媒体,可移动外设插入电脑时,linux可以让我们通过media这个子目录访问这些外设中的内容
/mnt 表示挂载,mount,临时挂载一些装置,有点类似media
/lib 库,表示被程序所调用的库文件,例如.so结尾的文件;windows下的库文件都是.dll结尾的
/opt optional application software package,可选的应用软件包,用于安装多数第三方软件和插件
/sbin 表示系统二进制,多了个前缀system,系统级重要可执行程序
/srv 表示服务,包含一些网络服务启动之后所需要取用的数据
/tmp 表示临时,普通用户和程序,存放临时文件的地方
/usr Unix Software Resource,最庞大的目录,包含大量用户调用的程序;其名字类似etc,是历史遗留命名,类似Windows中C:\Windows、C:\Program Files
/var variable 动态的,可变的,var通常包含程序的数据比如日志文件,
这种目录结构与命名形式,在类Unix操作系统中也类似;macOX目录结构也是从根目录开始的;
不用硬背这些,使用中慢慢去理解即可;
Linux文件系统结构像一个倒立的树;
逐级分布,层叠包含;
==================================================
pwd //显示当前所在路径
根据当前提示符和pwd命令:获知当前所在目录位置;
==================================================
which //显示命令对应可执行程序的位置;一个命令其实是随时可调用的程序罢了;
linux中可执行程序一般没有后缀的
linux中可执行程序不都位于同一个位置中;
===================================================
ls 列出文件和目录
CentOS终端默认是有颜色标注的:
一般来讲:
蓝色 ->目录
绿色 ->可执行文件
红色 ->压缩文件
浅蓝色->链接文件
灰色 ->其他文件
ls --coler=auto //开启颜色标注
ls --coler=none //关闭颜色标注
为了避免每次都要输入额外的参数,其实可以在一个配置文件里修改
ls 常用的参数:
-a 显示所有文件和目录,包括隐藏的;
//注意不包含. ..; . 表示当前目录, .. 表示上级目录;
-A 和-a差不多,唯一区别是不列出. ..;
-l 是ls命令最常用的;列出每个文件或目录的详细信息;都有一行信息;
详细信息行的解读:
drwxr-xr-x. 文件权限
2 链接数目
grooovvve 文件所有者名称
grooovvve 群组
6 表示文件大小,单位byte
日期
最后是文件名
额外参数:
文件大小是以字节为单位的;不是太直观;
-h 会使得文件大小适合人类阅读的,超过1000byte,会成为1kb
-t 按文件最近一次修改时间排序
ls 常用参数放在一起,效果是叠加的;
====================================================
cd
cd change directory 切换目录
是最常用命令之一;
命令格式:cd 要去的目录路径
连续回退两个目录:
回退一个目录:
相对路径与绝对路径:
绝对路径法切换目录:都是从/开始的;
相对路径法切换目录:必须当前目录下有对应文件或目录;
回到家目录的三种方法:
1、cd /home/grooovvve //绝对目录的方式
2、cd ~ //使用~
3、cd //直接cd 不加参数最方便
技巧:
此外使用tab键会自动补全目录,防止手动输入路径时名字写错;
================================================
du 统计目录大小
显示目录包含的文件大小;
深入遍历目录的子目录,统计所有文件的大小;
相关参数:
du -h //适合人类阅读,单位转换
du -a //显示文件和目录的大小
du //默认是只显示文件的大小
du -s //只想知道当前目录大小
===============================================
cat和less命令
只是显示文件内容,不能修改;
cat 是concatenate的缩写,表示“连接和串联”
cat 命令可以一次性在终端中显示文件的所有内容。
用法: cat 要显示的文件路径
cat 命令适合小文件显示
cat -n //可以显示行号
less 命令用于分页显示文件内容
如果文件较大,cat会令人猝不及防
相关快捷键:
空格 前进一个屏幕的内容,和pgdown类似;
回车 前进一行
d键 前进半页
b键 后退一页
y键 后退一行
u键 后退半页
q键 停止,退出less命令
注意linux中通常区分大小写
shift+d 表示大写
高阶快捷键:
= 显示你在文件中位置
h 显示帮助文档
/ 进入搜索模式,n跳转下一个符合项目,shift+n跳转上一个符合项目;
more 和less类似,功能没有less那么强大
more是老命令
=================================================
head 和tail命令
显示文件的开头和结尾
有点对立的关系
head 显示文件开头几行
tail 显示文件结尾几行
head 默认情况下会显示文件的前10行
tail 默认情况下会显示文件的尾10行
还可以配合-n 数值;
指定要显示几行
例如 head -n 5 文件名 //显示文件的前5行
另外tail还有很强大的功能:
tail -f //可以实时最终文件的更新
如下图所示,可以看到光标闪烁
默认情况下,是每个一秒检查文件更新;
我们还可以手动设置这个检查的间隔:tail -f -s 4 文件名
此外有个快捷键要注意一下:
ctrl+C 中止大部分正在执行的终端命令;
==================================================
touch和mkdir命令
用于创建文件和目录
touch用于创建一个空白文件
实际上linux没有一个命令是专门用来创建一个空白文件的;
touch命令一开始的初衷是修改文件的时间戳,让系统以为文件是那个时候被创建或修改的;
touch 命令如果后面文件不存在,就会创建一个新的;
touch 命令可以创建多个文件,而且如果文件名包含空格的话,要注意使用引号;
mkdir用于创建目录
使用格式:mkdir 文件名
-p参数
递归创建目录结构
==================================================
cp 拷贝文件或目录,类似于复制+粘贴
cp 是copy的缩写,表示拷贝
不仅可以拷贝单个文件,还可以拷贝多个文件;
格式:cp 被拷贝文件 副本文件
不一定要在同一目录下拷贝;
运行cp new_file new_file_copy 可以看到多了一个文件;
如果拷贝在其他目录,只需要把第二个参数换成目录名即可:
cp new_file one/
如果拷贝文件到别的目录,而且换个名字:
拷贝目录:
需要在命令之后加上-r 或者-R参数
因为这是Recursive的缩写,表示递归
使用通配符
把当前目录以ha*开头的文件都拷贝到folder目录中;
通配符很强大,可以提高效率;
==================================================
mv 移动命令 移动文件,类似于剪切+粘贴
mv 是英文move的缩写,表示移动;
移动文件或者目录;
重命名文件或目录;
移动目录比较简单
mv命令也可以配合通配符一起使用;
mv命令还可以重命名文件;
机制是移动后,文件的原名字变成新的名字,这就相当于重命名;
==================================================
rm 命令 用来删除文件和目录
rm可以删除 一个文件、多个文件,目录;
删除一个文件:
删除多个文件
只要用空格隔开每个文件即可
-i参数 向用户确认是否删除
保险起见用rm删除文件时,使用-i参数;
-f参数 强制删除,不会询问
慎用
-r参数 递归地删除
rm -rf 极为危险!
尤其是rm -rf / //这个直接把整个系统删掉了
只有root用户能用这个命令;
现在Linux系统一般都有保护机制;
但是如果在/目录下 运行rm -rf /的话,就没有保护措施;
================================================
ln命令 创建链接
ln 类似于快捷方式,用于在文件之间创建链接;
Linux有两种链接类型:
物理链接、硬链接
符号链接、软链接
文件存储:
大致来说,每个文件分为两个部分:文件名+文件内容
文件名的列表是存储在硬盘的其他地方的;和文件内容分开存放的;这样方便Linux管理;
其实每个文件有三部分:
文件名、权限、文件内容;
每个文件的文件内容被分配到一个标识号码,叫做inode;
每个文件名都绑定到其文件内容(用inode标识);
创建硬链接:
使链接的两个文件,共享同一个文件内容;硬链接有缺陷,只能创建指向文件的硬链接,不能创建指向目录的硬链接;
通过一些参数的修改,也能创建指向目录的硬链接,但是比较麻烦;
软链接可以指向目录或文件。目录一般用软链接;
创建一个硬链接
ln 被硬链接的文件 硬链接文件
使用ls -i 查看文件的inode
对于硬链接来说,只有同时删除file1 与 file2,inode才会真正被删除;
此外可以发现删除file2之后,ls -l中 详细信息行中 2变成1,说明指向该inode的文件剩下一个;
软连接比较像Windows的快捷方式;
创建软连接需要加上-s参数 s是symbolic的缩写;
创建硬链接不需要任何参数;
格式 ln -s file1 file2 //创建file1的软连接file2
file2此时指向的是file1文件名,而不是像硬链接那样指向inode;
而且可以看到软链接file2开头的字母变成了l,表示软连接;
而且还可以看到1,而不是像硬链接那样是2;
而且inode号是不一样的;
对于软链接而言,删除file2对于file1来说没什么影响;
但是如果删除file1,file2会变成死链接,不知道指向谁;
变成红色了;
此外软链接是可以指向目录的;
================================================