Linux教程

linux之目录与文件

本文主要是介绍linux之目录与文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux目录结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件 目录 相关命令

格式:文件类型 文件权限(W R X) 硬链接次数文件 所属用户 所属组 文件大小 创建时间(默认创建时间,修改后就是修改时间)

七种文件类型

1.普通文件:用于存放数据、程序等信息的文件.
2.目录文件:是由文件系统中一个目录所包含的目录项组成的文件。
3.链接文件:又称符号链接文件, 用于不同目录下文件的共享。实际上它指向另一个文件。 l
4.设备文件:用于与I/O设备提供连接的一种文件,分为块设备文件:表示磁盘、光盘等。
5.字符设备文件:联系着按照字符进行操作的终端、键盘等设备。
6.管道文件:主要用于在进程间传递数据。
7.套接字文件 :套接字(socket)文件通常用于网络数据连接。
-普通文件 d目录文件 b块设备文件 c字符设备文件 p管道文件 s socket 套接字文件 l链接文件
说明:Linux没有隐藏属性,文件或目录要实现隐藏,在命名时只要以“.”开头即可。
对于隐藏文件或目录,必须使用带“-a”参数的ls命令才能查看到。

软链接文件与硬链接文件

硬链接
定义:多个文件名指向同一个节点号(inode)多个文件名指向用一节点号。
作用:防止用户误删 起到备份作用(只是对文件名备份,并非文件信息备份)不可以跨越文件系统
创建硬链接:ln 源文件 a.txt新的链接文件
创建对象:对目录文件不能创建,并且不可以跨越文件系统。
软连接
定义:和源文件不是一个文件。相当于Windows快捷方式。若删除源文件,快捷方式无效。
作用:在指定路径查找文件访问快速便捷欸。(跨越文件系统建立)
创建软连接:ln -s file源文件 file.lnk创建文件
创建对象 :文本文件目录文件,并且可以跨越文件系统建。(正常创建目录文件连接次数最少为2,除了当前目录链接之外 . 也与当前目录建立了链接。且不建议创建目录硬链接,但可以实现。为了防止出环。)
注意:跨越目录建立软链接时需要同时使用绝对目录。

管道文件 tee

Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

在这里插入图片描述
在这里插入图片描述
注意:tee +文件与 >区别 :显示输出后者不显示。

输入/输出重定向

1.重定向操作符——“>”、“>>”、“<”、“<<”
在Linux系统中默认的输入设备(标准输入)是键盘默认的输出设备(标准输出)是屏幕。
利用重定向操作符可以重新定义命令涉及的默认的输入和输出设备对象,即重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。
重定向操作符本身不是一条命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号,“>”、“>>”称为输出重定向操作符,“<”、“<<”称为输入重定向操作符。
在这里插入图片描述
在这里插入图片描述
注意;>将会覆盖源文件内容,>>追加源文件内容不会覆盖。

目录操作命令

绝对路径: 从/开始的路径
相对路径: 相对于当前目录开始

cd命令

查看当前的工作目录
在这里插入图片描述
2.改变工作目录cd命令

# cd /usr/local/lib //改变目录到/usr/local/lib目录下 
# cd .. //进入当前目录的父目录 即上一级目录
# cd ../etc //进入当前目录的父目录下的etc子目录 
# cd ~ //进入root用户登录时的工作目录(家目录) 
# cd 桌面 //进入当前目录下的“桌面”子目录  默认当前用户家目录
# cd //进入当前用户的家目录

列表(list)显示目录内容——ls命令

命令格式:ls [选项] 文件名或目录名
在这里插入图片描述

创建mkdir 命令

目创建命令格式: mkdir + 目录名 (默认创建在当前目录)
命令格式: mkdirP[[-p] [/路径/]目录名(-p——可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖)

文件操作命令

touch命令 新建空文件或更新已有文件或目录的修改日期

格式: touch [选项] 文件或目录名列表
功能
若指定的文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的日期和时间。
若指定的文件不存在,则以指定的文件名创建空文件。
在这里插入图片描述
stat 命令
stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间, 其基本信息如下。

[root@localhost ~]# stat anaconda-ks.cfg 
文件: "anaconda-ks.cfg" 
大小: 1453 块: 8 IO 块: 4096 普通文件 
设备: 803h/2051dInode: 33574991 硬链接: 1 
权限: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) 
环境: system_u:object_r:admin_home_t:s0 
最近访问: 2018-11-06 23:22:23.409038121 +0800 
最近更改: 2018-10-24 00:53:08.760018638 +0800 #数据修改时间 
最近改动: 2018-10-24 00:53:08.760018638 +0800 #状态修改时间 
创建时间:

复制(copy)文件或目录–cp命令

命令:cp [选项] 源文件 目标文件
在这里插入图片描述
-n 对文件内容不做覆盖

移动(mv)文件或目录–mv命令

语法格式为:“mv [参数] 源文件名称 目标文件名称”。
注意:剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某
个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作:

删除(remove)文件或目录–rm命令

格式:rm [选项] 文件或目录名及路径
功能:删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,以实现删除多个文件或目录。
在这里插入图片描述

文件内容浏览命令 ——六个

cat查看文本文件内容命令

命令格式:cat [选项] 文件名列表
说明:文件名可使用通配符
常用选项:
cat 文件1 文件2——查看多个文件(这里注意查看的两个文件隔行显示)
在这里插入图片描述

-n——对输出内容中的所有行标注行号。
在这里插入图片描述

-b——对输出内容中的非空行标注行号。
在这里插入图片描述
关于cat << EOF语句的意思
1.cat << EOF
以EOF标准输入为结尾 并显示输出结果

在这里插入图片描述
2.cat > filename(文件名) << EOF(写法二:cat << EOF > filename)
以EOF标准输出结束并且将输入信息重定向输入到filename文件中。
在这里插入图片描述

tac倒序显示文件内容命令

命令格式:tac [选项] 文件名列表
tac 文件名 (倒序显示)
在这里插入图片描述

在这里插入图片描述

tac -n 文件名显示行号

more和less命令——分页查看文件内容

命令格式: more | less [选项] 文件名
常用选项:
-数字——仅适用于more命令,用来指定分页显示时每页的行数。
+num——指定从文件的第num行开始显示。
-c——从顶部清屏然后显示文件内容。
-N——仅适用于less命令,其作用是在每行前添加输出行号。
交互操作方法:
按Enter键向下逐行滚动
按空格键向下翻一屏、按b键向上翻一屏
文件末尾时more会自动退出,less 按q键退出

查看文件开头或末尾的部分内容——head和tail命令

命令:head | tail [选项] 文件名
常用选项有:
-num——指定需要显示文件多少行的内容,若不指定,默认只显示十行。
-f——使tail不停地去读取和显示文件最新的内容, 以监视文件内容的变化。这样有实时监视的效果。
tail命令更多的用于查看系统日志文件,以便于观察重要的系统消息,特别是结合使用-f选项,tail会自动实时地把打开文件中的新消息显示到屏幕上,从而跟踪日志文件末尾的内容变化,直至按【Ctrl+C】键终止显示和跟踪。

文本信息处理命令

grep命令—检索、过滤文件内容

功能:在指定的文件中查找并显示含有指定字符串的行。
格式:grep [选项] 要查找的字符串或条件表达式 被查找的文件名
选项:
grep +过滤信息 加文件名(绝对路径)
grep -w 过滤字符
grep -o 关键字(显示关键字在文档中出现几次)
grep -v (反转查找,输出与查找条件不相符的行)
grep -v ^# +文件 显示以#开头的行
grep -v ^$ 过滤空白行
grep -v{a-z} /{0-9} 过滤首部字母/数字的行
grep -v {!a-z} 过滤非字母行数
grep -i 过滤信息 +文件名 (过滤信息不区分大小写)
grep -n 文件名 显示行号
grep -n 过滤信息 文件名 显示过滤信息所在行号

cut文本剪切命令

cut命令用于按列提取文本内容
语法格式为:“cut [参数] 文件名称”。

cut -d :-f 数字 +文件名 (显示文件剪切时指定的 分隔符 的第几段)数字可以为3,4 或者3-4前者显示第三行 第四行后者显示第三行到第四行。
实例:接下来使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号( :)为间隔符号的第一列
内容:
在这里插入图片描述
cut -c 剪切字符
cut -b 剪切字符

去重过滤—— uniq命令

格式:uniq [选项] 文件名
uniq 文件名(仅重复行相邻去除)、
-c 显示重复次数
-d 显示重复行数
-D 显示所有重复行

sort命令对文本内容进行再排序

语法格式为:“sort [参数] 文件名称”。
sort file (默认会按照字母顺序进行排序)
sort -n 升序排序(以数值型进行排序)
sort -r 反序排序
sort -nu 升序去重操作
sort -t : -k 数字 文件 显示文本分隔符第几段数字并排序
-b 忽略缩进与空格
-f 忽略大小写
-u 去除重复行

tr命令用于转换或删除文件中的字符

tr [-cdst][–help][–version][第一字符集][第二字符集]
tr [OPTION]…SET1[SET2]

-c, --complement: 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行
转换
-d, --delete: 删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1: 削减 SET1 指定范围,使之与 SET2 设定长度相等
–help: 显示程序用法信息
–version: 显示程序本身的版本信息
将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:
cat ee |tr a-z A-Z
在这里插入图片描述

wc 统计命令

wc命令用于统计指定文本文件的行数、字数或字节数。
语法格式为:“wc[参数] 文件名称”。
总有同学会联想到一种公共设施,其实这两者毫无关联。wc命令用于统计文本的行数、字数、字节数等。如果为了方便自己记住这个命令的作用,也可以联想到上厕所时好无聊,无聊到数完了手中的如厕读物上有多少行字。
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
在Linux系统中,/etc/passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询:
在这里插入图片描述
面试:统计历史命令出现最高的前三个命令()

在这里插入图片描述

搜索命令

whereis命令

基于环境变量查找所有文件包括可执行文件(whereis 是搜索系统命令的命令(像绕口令一样),也就是说whereis 命令不能搜索普通文件而只能搜索系统命令。)
执行权限:所有用户。
在这里插入图片描述

which命令

which 通过环境变量查找所有可执行命令 查找系统命令文件 也是搜索系统命令的命令。
whereis 命令的区别在于:whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;而 which 命令在查找到二进制命令的同时,如果这个命令有别名, 则还可以找到别名命令。
执行权限:所有用户。
功能描述:列出命令的所在路径。
在这里插入图片描述

locate命令

locate 基于数据文件进行查找已加载到数据库的文件(前提文件已加载到数据建库, updatedb 导入数据库命令)
优点: 按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db, 可以使用 updatedb 命令强制更新数据库。
缺点: 只能按照文件名来搜索文件, 而不能执行更复杂的搜索,比如按照权限、大小、修改 时间等搜索文件。

执行权限:所有用户。
功能描述:按照文件名搜索文件。
在这里插入图片描述

find 全盘搜索

find命令用于按照指定条件来查找文件
格式为 find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} ; 】

1)path:要查找的目录路径。
表示$HOME目录
. 表示当前目录
/ 表示根目录
2)print:表示将结果输出到标准输出。

3)exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} ;,注意{}与;之间有空格

4)ok:与exec作用相同,
区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

5)|xargs 与exec作用相同 ,起承接作用

区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等

6)options :表示查找方式

options常用的有下选项:

-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-prune #忽略某个目录
————————————————
版权声明:本文为CSDN博主「-纸短情长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/l_liangkk/article/details/81294260

-print:表示将结果输出到标准输出。
-exec:对匹配的文件执行该参数所给出的shell命令。 形式为command {} ;,注意{}与;之间有空格
-ok:与exec作用相同,
区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

压缩和解压缩

常见的压缩格式

  1. tar.gz 在 linux 上最常见,在压缩率和压缩时间上拥有良好的平衡。如果有任何疑惑,就选用它吧,不会错。
  2. tar.xz 是新一代的压缩格式,虽然拥有更好的压缩率,压缩/解压速度相对要慢很多倍。一般在电脑性能足够好的时候,可选用它。
  3. 7zxz 同为新一代压缩格式,它更复杂,支持多文档压缩。而且更适合跨平台,推荐使用。
  4. zip 因为跨平台容易导致文档名乱码,不建议使用。(虽然有这样的缺陷,但是却意外的用得很广泛,在前一节有说过)
  5. rar 性能不差,但是是商业格式,不开源,不建议使用(做得比较好的是它的 recovery records,在网络环境不好,容易导致包损坏时,这个功能就特别棒)。
  6. tar.bz2 算是 linux 压缩历史上,过渡时期的产物,性能也介于 gz 和 xz 之间,一般来说不需要考虑它。

tar压缩命令

格式: tar [选项] 打包文件名 被打包的源文件或目录列表
tar [选项] 打包文件名 [-C 目标文件夹]
-c 创建.tar格式的包文件
-x 释放.tar格式的包文件
-t 查看包中的文件列表
-v 表示在命令执行时显示详细的提示信息
-f 包文件名用于指定包文件名。当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名;当与-x选项一起使用时,则释放该选项指定的tar包文件。
-p 打包时保留文件及目录的权限。
-z 调用gzip程序,以gzip格式压缩或解压缩文件。
-j 调用bzip2程序,以bzip2格式压缩或解压缩文件。
-J 使用xz压缩(.tar.xz)。xz的压缩率通常比bzip2更高。
-C 目录路径名释放包时指定释放的目标的位置。
创建(非压缩的)包文件
命令:tar cvf 包文件名 要打包的目录或文件名列表
功能:将指定的一个或多个文件或目录备份生成为一个指定的包文件。
创建带压缩的包文件
命令:tar c[z j|J] f 压缩包文件名 要备份的目录或文件名
为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式:
列出包文件中的文件列表
命令:tar t[v]f 包文件名
提取包文件到指定目录
格式:tar x [z j|J] [v]f 包文件名 [ -C 目标位置]

文件上传下载

scp命令

scp具有和ssh一样的验证机制,从而可以实现2台机器安全的远程拷贝文件scp可以概括为:scp -P 端口 文件路径 用户名@主机地址:远程目录
scp /renwole/mariadb.tar.gzroot@223.6.6.6:/renwole123/ root@223.6.6.6’s
password:【输入密码回车】
如果你反过来操作,把远程主机的文件拷贝到当前系统,操作命令以下;
scp root@223.6.6.6:/renwole123/mariadb.tar.gz /renwole

sftp命令

它类似于ftp传输协议,属于ssh, 但它进行加密传输,相对FTP来讲有更高的安全性。
sftp用法:如果有服务器的端口不是默认的22,请在sftp后面加-P 端口号即可。 将
文件下载命令 :将文件下载到本机home目录在这里插入图片描述
将文件上传到mnt目录
在这里插入图片描述

rz命令与sz命令

1.rz命令
将本地文件批量上传到远程Linux/Unix服务器,注意不能上传文件夹。
当我们使用虚拟终端软件,如Xshell、SecureCRT或PuTTY来连接远程服务器后,使用rz命令可以上传本地文件到远程服务器。输入rz回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行rz命令的目录。此外,可以在虚拟终端软件设置上传时默认加载的本地路径和下载的路径。如SecureCRT软件 ->Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。
命令格式:rz [选项]
选项说明:
-+, --append: 将文件内容追加到已存在的同名文件
-a,–ascii: 以文本方式传输
-b, --binary: 以二进制方式传输,推荐使用
–delay-startup N: 等待N秒
-e, --escape: 对所有控制字符转义,建议使用
-E, --rename: 已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-p, --protect: 对ZMODEM协议有效,如果目标文件已存在则跳过 -
q, --quiet: 安静执行,不输出提示信息
-v, --verbose: 输出传输过程中的提示信息
-y, --overwrite: 存在同名文件则替换
-X, --xmodem: 使用XMODEM协议
–ymodem: 使用YMODEM协议
-Z, --zmodem: 使用ZMODEM协议
–version: 显示版本信息
–h, --help: 显示帮助信息
2.sz命令
可将多个文件从远程服务器下载到本地。注意不能下载文件夹,如果下载文件夹,请先打包再下载
格式:rz [选项] [filelist]
命令选项基本与rz相同,
下载多个文件 sz file1 file2 file3
sz和rz命令在实际应用开发中非常实用,有时候我们会经常跑脚本统计数据,需要上传和下载一些大数据量的数据,这时候这两个命令就非常有用了有的机器可能不能使用 rz/sz 命令,这个时候我们就需要安装 lrzsz。

这篇关于linux之目录与文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!