Spring学习 - 自定义动态数据源 git进阶经验- git提交 log 的模板配置 Spring学习 - 自定义Spring 的 bean扫描器 Spring源码学习 - Scanner的工作原理 Spring源码学习 - bean的名称的生成方式 java源码学习之 Boolean 和 Byte 深入分析 Volatile 的实现原理 java各版本新特性 java源码学习之Short java源码学习之Integer 常见 MQ 的比较 - Kafka、RocketMQ、RabbitMQ的优劣势比较 Docker技术入门与实战 - 使用 dockerfile定制镜像 I love log 读书笔记 flink 入门程序-wordcount flink 配置项介绍 在 Mac 上搭建 Flink 的开发环境 lambda 架构问题的阅读笔记 IDEA常用插件 Mybatis源码分析(1) - Mybatis关键类 Mybatis源码分析(1) - Mybatis包目录简介 tair 1:tair学习 dataflow论文阅读笔记 Polysh的安装使用 SnappyData排序函数比较 Squirrel-sql客户端连接SnappyData手册 在虚拟机里显示Hello World spark学习博客推荐 SnappyData学习博客和官网文章 Docker常用命令 MyBatis支持的OGNL语法 mysql性能优化 mysql性能优化-优化Sql语句 mac上命令行操作 explain输出格式 从文件中读取zk配置——ZooKeeper编程技能(1) git进阶经验-从项目中删除移除的目录 Mongodb 学习之shell命令操作(3) mysql命令 git进阶经验-从多模块项目中分理子模块 从零学hadoop-搭建基础(单点)的Hdfs环境 ZooKeeper集群操作脚本 Vue安装使用 2 初学JVM之问答式记住类加载机制 2 初学JVM之问答式记住虚拟机性能监控与故障处理工具 2 初学JVM之问答式记住垃圾收集器 log4j2 按天生成日志文件 1 初学JVM之问答式记住java自动内存管理 MapReduce学习心得之MapReduce初识 log4j2 日志发送到kafka配置实战 log4j2 日志配置实战 Mongodb 学习之shell命令操作(二) Mongodb 学习之linux版本安装(一) Dubbo的初级使用 ServiceLoader内部实现分析 ServiceLoader 初级应用 log4j日志发送邮件配置实战 红黑树笔记 IDEA首次使用之前的配置 java源码学习之Enum java源码学习之String 自定义Spring tag标签 编写一键发布脚本 记一次Spring Scheduler莫名不执行的一次堆栈分析 kafka的基本操作 nginx 5:Nginx内部变量 nginx 4:Nginx日志管理 提高hadoop配置效率的shell脚本 Hive编程指南之一 Hive的安装 Ambari服务器安装 Ambari服务器管理集群 HBase分布式安装 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 搭建JStorm集群 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 配置vmware中的虚拟机使用宿主机的共享网络 YARN架构简述 HDFS 架构 Spring的统一异常处理机制 Tomcat 配置服务 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 nginx 3:Nginx反向代理 mybatis操作主体流程 1.正则表达式学习-基础篇 log4j日志配置详解 mysql的时间函数 nginx 2:Nginx模块配置理论及实战 HashMap相关解析和测试文章 工作一年后的面试 用私有构造器或枚举类型强化Singleton属性 java中比较重要的图 mybatis处理枚举类 mybatis集成进spring Spring比较重要的几个截图 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 markdown在jekyll中支持的一些操作 Spring项目中配置sl4j和log4j的日志配置 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 Spring的profile机制介绍 mybatis-generator反向生成 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 (转)浅析 Decorator 模式,兼谈 CDI Decorator 注解 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 Http 协议相应状态码大全及常用状态码 IDEA快捷键 JDBC Type与Java Type redis 12:redis 操作集合 mybatis-generator错误集合 redis 11:redis 错误集合 nginx 1:nginx的安装 redis 10:redis cluster命令操作 redis 9:redis实例集群安装 java设计模式 hadoop集群学习笔记(1) Apache Shiro 简介 vim编辑神器的进阶命令 Eclipse配置 Eclipse快捷键 Linux 测试题 Linux脚本学习(1) Linux启动简要过程 Centos7上安装Mysql hadoop集群学习笔记(1) (转)分布式发布订阅消息系统 Kafka 架构设计 maven 命令 Kafka集群安装 Kafka初步使用 redis 8:redis server 和 scripting命令操作 redis 7:redis transaction 和 connection命令操作 redis 6:redis hash 命令操作 redis 5:redis sorted_set 命令操作 搭建本地Jekyll+Markdown+Github的开发环境 Spring源码阅读笔记(2) redis 4:redis set命令操作 Spring添加任务调度配置 redis 3:Redis list命令操作 redis 2:redis 一般命令操作 redis 1:redis单机安装笔记 redis 0:redis配置属性描述 Spring源码阅读笔记(1) spark 错误集锦 spark集群安装 Linux 基本命令操作 Hadoop错误信息处理 Hadoop代码拾忆 从零开始搭建spring-springmvc-mybatis-mysql和dubbo项目 java知识点札记 java排错 Google Java Style 中文版 git进阶经验 github使用经验 MongoDB用户角色授权与AUTH启用 MongoDB 命令 MongoDB 特定规范 Spring MVC实现跳转的几种方式 史上最全最强SpringMVC详细示例实战教程 Spring 零星笔记 js中(function(){…})()立即执行函数写法理解 如何解决跨域问题 创建ajax简单过程 前端定位 设置MYSQL允许通过IP访问 mybatis异常 :元素内容必须由格式正确的字符数据或标记组成 如何为 WordPress 绑定多个域名的方法s WordPress工作原理之程序文件执行顺序(传说中的架构源码分析) Spring源码导入Eclipse中 基于PHPnow搭建Eclipse开发环境 解决wordpress首页文章内容截断处理的几种方法 ZooKeeper理论知识 ZooKeeper集群安装配置 Git常用命令速查表 Linux 4:磁盘与文件系统管理 Linux 3:文件与目录管理 Linux 2:文件权限与目录配置 Markdown输入LaTeX数学公式
从零学hadoop-搭建基础(单点)的Hdfs环境 MapReduce学习心得之MapReduce初识 Ambari服务器安装 Ambari服务器管理集群 windows下Eclipse远程调试运行MR程序 基于MapReduce新的API的编程Demo-wordCount window下Eclipse远程只读HDFS上的文件 YARN上节点标签 编写第一个MapReduce的wordcount程序 NodeManager的重启 YARN上的web应用代理 YARN上的ResourceManager的高可用方案 YARN架构简述 HDFS 架构 HDFS的viewfs指南 HDFS的Federation之路 HDFS基于QJM的HA之路 21.hadoop-2.7.2官网文档翻译-使用NFS的HDFS高可用性 20.hadoop-2.7.2官网文档翻译-使用仲裁日志管理器的HDFS高可用性 19.hadoop-2.7.2官网文档翻译-HDFS命令指南 18.hadoop-2.7.2官网文档翻译-HDFS用户指南 17.hadoop-2.7.2官网文档翻译-实现Hadoop中Dapper-like追踪 16.hadoop-2.7.2官网文档翻译-Hadoop的KMS(key 管理服务器)-文档集 15.hadoop-2.7.2官网文档翻译-Hadoop的http web认证 14.hadoop-2.7.2官网文档翻译-服务级别的授权指南 13.hadoop-2.7.2官网文档翻译-安全模式中的Hadoop 09.hadoop-2.7.2官网文档翻译-Hadoop命令行微型集群 12.hadoop-2.7.2官网文档翻译-机架感知 11.hadoop-2.7.2官网文档翻译-代理用户-超级用户对其他用户的代表 10.hadoop-2.7.2官网文档翻译-原生库指南 08.hadoop-2.7.2官网文档翻译-文件系统规范 07.hadoop-2.7.2官网文档翻译-Hadoop接口类别 06.hadoop-2.7.2官网文档翻译-Hadoop的兼容性 05.hadoop-2.7.2官网文档翻译-文件系统命令 04.hadoop-2.7.2官网文档翻译-Hadoop命令指南 03.hadoop-2.7.2官网文档翻译-集群安装 02.hadoop-2.7.2官网文档翻译-单节点集群安装 01.hadoop-2.7.2官网文档翻译-概述 hadoop集群学习笔记(1) hadoop集群学习笔记(1) Hadoop错误信息处理 Hadoop代码拾忆

Linux 3:文件与目录管理

创建时间:2014年09月19日
摘要:

目录的相关操作

.         # 代表此层目录
..        # 代表上一层目录
-         # 代表前一个工作目录
~         # 代表『目前使用者身份』所在的家目录
~account  # 代表 account 这个使用者的家目录(account是个帐号名称)
  • 在所有目录底下都会存在的两个目录,分别是...
  • 根目录的上一层(..)与根目录自己(.)是同一个目录

几个常见的处理目录的命令

  • cd:变换目录,cd是Change Directory的缩写
  • pwd:显示目前的目录,pwd是Print Working Directory的缩写
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • mv:移动文件
pwd -P                   # -P:代表显示正确的完整路径,而不是连接路径
mkdir -m xxx             # -m:直接配置文件的权限
mkdir -p test1/test2     # -p:直接将所需要的目录(包含上一级目录)递回创建起来!
PATH="$PATH":/root       # 将/root路径加入PATH环境变量中

文件与目录管理

  • 文件与目录的检视: ls
  • 复制、删除与移动: cp, rm, mv
cp -a        # 将文件的所有特性都一起复制过来
cp -p        # 连同文件的属性一起复制过去,而非使用默认属性(备份常用)
cp -r        # 可以复制目录,但是,文件与目录的权限可能会被改变
rm -i        # 互动模式,在删除前会询问使用者是否动作
rm -r        # 连目录下的东西一起删掉,并且不会询问,慎用
mv -f        # force强制移动,如果目标文件已经存在,不会询问而直接覆盖
mv -i        # 若目标文件 (destination) 已经存在时,就会询问是否覆盖

文件内容查询

  • 直接检视文件内容: cat, tac, nl (常用)
  • 可翻页检视: more, less (常用)
  • 数据撷取: head, tail
  • 非纯文字档: od
  • 修改文件时间与建置新档: touch
cat [-AbEnTv] filename # 由第一行开始显示文件内容。-b列出非空白行行号;-n列出所有行号。
tac                    # 从最后一行开始显示文件内容,tac就是cat倒着写!
nl                     # 显示文件内容,顺便输出行号
more                   # 一页一页地显示文件内容
less                   # 与more类似,但可以往前翻页
head [-n number]       # 只看文件头几行,默认是10行,number是自定义行数
tail                   # 只看文件尾几行,文件很大的时候常用
od                     # 以二进制方式读取文件内容

文件与目录的默认权限与隐藏权限

  • 文件默认权限:umask
  • 文件隐藏属性: chattr, lsattr
  • 文件特殊权限:SUID, SGID, SBIT, 权限配置
  • 观察文件类型:file
umask           # 后三位数是被拿走的权限分数,比如0022,u没有被拿走权限,g和o被拿走了w权限
umask -S        # 以符号类型来显示权限
umask number    # 配置自己需要的权限

在默认的情况中,root的umask会拿掉比较多的属性,root的umask默认是022, 这是基於安全的考量啦~至於一般身份使用者,通常他们的 umask 为002 ,亦即保留同群组的写入权力。

  • 特殊权限st
  • Set UID,简称SUID,当s标志在文件拥有者的x项目为SUID,对目录无效
  • Set GID,简称SGID,当s标志在群组的x项目为SGID,对目录有效
  • Sticky Bit, 简称SBIT,目前只针对目录有效,对於文件已经没有效果了

配置SUID,SGID,SBIT权限

在原有的权限数字前面加上需要配置的权限数字。 比如755->4755 ,就意味着-rwxr-xr-x变为了-rwsr-xr-x

  • 4 为 SUID
  • 2 为 SGID
  • 1 为 SBIT
chmod 4755 filename
chmod u=rwxs,go=x test; ls -l test      # 配置权限为-rws--x--x的模样
chmod g+s,o+t test; ls -l test          # 配置权限为-rws--s--t,即加入SGID,SBIT权限

命令与文件的搜寻

  • 命令档名的搜寻:which
  • 文件档名的搜寻:whereis, locate, find

权限与命令的关系

一、让使用者能进入某目录成为『可工作目录』的基本权限为何:

  • 可使用的命令:例如 cd 等变换工作目录的命令;
  • 目录所需权限:使用者对这个目录至少需要具有 x 的权限
  • 额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。

二、使用者在某个目录内读取一个文件的基本权限为何?

  • 可使用的命令:例如本章谈到的 cat, more, less等等
  • 目录所需权限:使用者对这个目录至少需要具有 x 权限;
  • 文件所需权限:使用者对文件至少需要具有 r 的权限才行!

三、让使用者可以修改一个文件的基本权限为何?

  • 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等;
  • 目录所需权限:使用者在该文件所在的目录至少要有 x 权限;
  • 文件所需权限:使用者对该文件至少要有 r, w 权限

四、让一个使用者可以创建一个文件的基本权限为何?

  • 目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦!

五、让使用者进入某目录并运行该目录下的某个命令之基本权限为何?

  • 目录所需权限:使用者在该目录至少要有 x 的权限;
  • 文件所需权限:使用者在该文件至少需要有 x 的权限