Linux私房菜:文件目录管理及常见命令

本文内容精简、整理、摘抄、有感于《鸟哥的Linux私房菜 - 基础篇第四版》第六章 • Linux的文件权限与目录管理。

  • 路径(PATH)
    • 相对路径:cd /var/tmp/,由根目录/开头
    • 绝对路径:不以/开头,与相对路径写法相对应
  • 环境变量(ENVIRONMENT VARIABLE)。由一堆目录组成,不同目录之间用:分隔。命令相同的情况下,靠前指定的环境变量配置优先级高。
    • 查看命令: echo $PATH
    • 配置文件:/etc/profile
    • 立即刷新:source /etc/profile

常用命令

  • 文件类型
    • file 文件,多用于判断是asciidatabinary文件
  • 目录相关
    • cd - change directory,更换目录。可以是相对路径或者是绝对路径,常见的有:
      • .,表示当前目录
      • ..,进入上一层目录
      • -,返回前一个工作目录
      • ~[user],进入当前用户(或指定user用户)的家目录,不指定~也可以返回家目录
    • pwd - print work directory,显示当前工作目录
      • pwd [-P],显示实际路径而非链接路径
    • mkdir - make directory,创建目录
      • mkdir [-mp] 目录名称-m指定目录所属权限;-p同时创建多级目录
    • rmdir - remove directory,删除空目录(被删目录不能含其它子目录及文件)
      • rmdir [-p] 目录名称-p参数可同时删除上级空目录
  • 文件目录管理
    • ls [-aAdfFhilnrRSt] [--color={never,auto,always}] [--time={mtime,atime,ctime}] [--full-time] 文件或目录 - list,列出列表。参数较多,请用man ls查看更多详细用法,大部分情况下用ll能满足日常使用(等价于ls -al)
      • -a含全部隐藏文件
      • -A含隐藏文件但不含...这两个目录
      • -h以可读形式(KB,GB)展示文件大小,默认为Byte
      • -l以每行长串输出展示数据
      • -r自然排序输出结果的反向
      • -R连同子目录文件一同输出
      • -S以文件大小排序
      • -t以时间排序
    • touch [-acdmt] File - 创建文件
    • cp [-adfilprsu] source*(一个或多个来源文件或目录) destination(目标文件或目录) - copy,复制
      • -a完全相同复制
      • -i出现覆盖询问
      • -p连同源文件属性(权限、用户、时间)一起复制
      • -r递归复制文件目录
      • -s快捷方式形式复制(软连接)
      • -l硬连接
      • -u目标不存在才复制,或存在但mtime较旧
    • rm [-fir] 文件或目录 - remove,删除
      • -f忽略警告
      • -i删除询问
      • -r递归删除
    • mv [-fiu] source*(一个或多个来源文件或目录) directory(目标目录) - move,移动或重命名
      • -f强制覆盖
      • -i覆盖询问
      • -u目标对象存在且mtime较旧的情况下才更新
  • 文件内容查阅
    • cat [-AbEnTv] File,Concatenate,从第一行开始显示文件全部内容
      • -b显示行号(不含空白行)
      • -n显示行号(包含空白行)
    • tac,相对应上面的cat命令,反向从最后一行开始显示文件全部内容
    • nl [-bnw] File,类同于上面两个命令 ( 暂无说明 )
    • more File,一页页向下翻阅查看文件
      • space空格键翻页
      • b 或 ctrl + b往回翻页
      • enter确认键翻行
      • /字符串向下搜索
      • :f显示文件名和当前末尾行的行数
      • q退出
    • less File,类似于more但功能更强大,同样用于翻阅查看文件
      • space空格键 或 page down翻页
      • b 或 ctrl + b 或 page up往回翻页
      • enter确认键翻行
      • /字符串向下搜索
      • ?字符串向上搜索
      • n搜索匹配的下一个
      • N搜索匹配的前一个
      • :f显示文件名、当前显示行范围、byte大小和百分占比等
      • g 或 home跳到文件开头
      • G 或 end跳到文件末尾
      • q退出
    • head [-n num] File,取出前面几行
      • head -n 100 info.log,取出前100行
      • head -n -100 info.log,取出不包括最后100行的所有行
    • tail [-n num] File,取出后面几行
      • -f侦测文件输出
      • tail -n 100 info.log,取出后100行
      • tail -n +100 info.log,取出100行以后的所有行
    • od [-t acdfox] File,非纯文档文本读取命令( 暂无说明 )
  • 文件预设权限
    • umask [-S] [-num] ,显示当前用户在新建文件或目录时的权限默认值
    • umask -num,修改当前用户在新建文件或目录时的权限默认值
  • 文件隐藏属性
    • chattr [+-=][ASacdistu] 文件或目录,配置文件隐藏属性
      • +增设属性
      • -删减属性
      • =赋值属性
      • a只能追加数据不可修改删除
      • i文件不能删除修改添加改名等
    • lsattr [-adR] 文件或目录,显示文件隐藏属性
      • a包括隐藏文件
      • d仅列出目录属性
      • R包含子目录
  • 脚本文件搜寻
    • which [-a] command,搜寻该command的执行档所在位置
    • whereis -[lbmsu] 文件或目录,在指定目录搜索文件或目录
      • l列出指定目录
      • b只找binary文件
      • m只找在manual路径下的文件
      • s只找来源文件
      • u只找不在上面三种类型中的其它文件
    • locate [-iclSr] keyword,根据指定数据库/var/lib/mlocate/mlocate.db搜索,可用updatedb命令更新
      • i忽略大小写
      • c输出统计数量
      • l后面接数量,表示输出几行
      • S展示数据库信息
    • find [PATH] [option] 文件或目录(支持正则匹配),功能比较强大和丰富,具体请用man find查看,常见的option选项有:
      • [-{mtime,atime,ctime} {+,-}n],与时间相关的帅选
      • [-{user,group,nouser,nogroup}],与拥有者或群组相关的过滤
      • [-{name,size,type}],与文件名、大小、类型有关的参数

重点回顾

重点回顾

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

Linux-看完这篇Linux基本的操作就会了

2923
来自专栏数据之美

浅谈 java 中构建可执行 jar 包的几种方式

        有时候,由于项目的需要,我们会将源码编译后以工具包(class打成jar包)的形式对外提供,此时, 你的 jar 包不一定要是可执行的,只...

4445
来自专栏琦小虾的Binary

程序生成之编译、链接、加载浅析

程序生成之编译、链接、加载浅析 最近笔者看论文烦得慌,便又重新拾起之前没有完全完成的交叉编译,准备在网上找资料,好好研究一下。 讲道理,笔者其实对编译链接的...

2746
来自专栏数据库

JDBC常见错误及解决方案

最近很多同学在数据库编程这一块遇到了很多的问题,各种问题都有,但却苦于不知道怎么解决这些问题,以至于编程效率非常低。今天我就来总结一下在数据库编程时经常遇到的问...

2238
来自专栏学习力

《Java从入门到放弃》框架入门篇:Struts2的基本访问方式(二)

1664
来自专栏python3

python标准库--logging模块

它们的值为0-50(也可以自定义级别),这些级别的用处是,先将自己的日志定一个级别,logging模块发出的信息级别高于定义的级别,将在标准输出(屏幕)显示出来...

931
来自专栏古时的风筝

C/C++中动态链接库的创建和调用

DLL 有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。下面为你介绍C/C++...

26710
来自专栏python开发教学

【Django错误】OSError: raw write() returned invalid length 14 (should have been between 0 and 7)

错误环境 使用Django框架创建完models类的之后,用python manage.py migrate命令来生成数据库表的时候出错 错误代码 Operat...

3847
来自专栏Golang语言社区

Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrif...

1404
来自专栏阮一峰的网络日志

require() 源码解读

2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式。 时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模...

3668

扫码关注云+社区

领取腾讯云代金券