Linux命令学习之touch

前言 今天学习一下Linux的 touch 命令 功能 按man文档的说明,是修改文件的时间戳,目前常用的操作是用来 创建文件 touch file 创建一个空文件,文件的访问时间与修改时间为当前时间 touch -a file 改变文件的访问时间 从上图可以看出来, b.txt 文件只有访问时间被修改了,修改时间没有变 验证时用到 stat 命令, 这个后续具体学习 touch -m file 改变文件的修改时间 从上图可以看出来, cc.txt 文件只有修改时间变了,访问时间没有变 touch -t file 修改文件为指定的时间,格式为 [[CC]YY]MMDDhhmm[.ss] 上图命令将 dd.txt 文件的访问时间与修改时间改成了 2022-01-02 12:22:23 touch -d file 修改文件为指定的日期,支持的时间格式更广泛 touch -r reffile file 修改文件的时间为引用的文件时间 如图, ff.txt 文件与 a.txt 的时间同步了 REF touch (command) - Wikipedia Check file access and modification time in Linux - Linux Tutorials - Learn Linux Configuration stat(1): file/file system status - Linux man page Captured On: [2023-01-06 Fri 18:55]

2023-01-06 ·  (🌟Updated: 2023-01-06) · 1 min · 85 words · tomyli

Linux命令学习之Cp, Mv

前言 今天学习一下Linux中的复制移动相关命令,主要学习 cp 与 mv CP 功能 复制文件或文件夹 cp file target 复制文件到target目录 cp -i 复制前进行询问(如果存在同名文件) cp -n 复制,但不覆盖已经存在的文件 cp -b 复制,复制前备份目标同名文件(如果存在) cp -f 强制删除(目录文件不能打开)并覆盖 cp -p 复制文件到目标文件夹,保留原文件的修改时间、访问时间与归属相关信息 cp -u 复制文件到目标文件夹,仅当源文件的修改时间晚于目标同名文件时进行复制 cp -r 递归复制文件夹内容到目标文件夹 组合杀 对文件进行备份,按数字方式 cp -f --backup=numbered aa.txt aa.txt 如图所示,每执行一次命令,就顺序产生一个同名文件+编号的备份,有点类似于一个版本管理系统 更新文件夹 cp -ruv e ../target 如图所示,只有e/ee.txt有更新,执行命令时只做了增量更新文件 MV 功能 移动(重命名)文件或文件夹 mv 移动文件 移动并重命名 mv -i 移动前询问(目标有同名文件) mv -n 移动文件,但不覆盖存在的文件 mv -u 移动文件,只在源文件比目标文件新时才执行 mv -f 执行覆盖,不提示 REF cp (Unix) - Wikipedia mv (Unix) - Wikipedia Two great uses for the cp command | Opensource.com

2023-01-04 ·  (🌟Updated: 2023-01-04) · 1 min · 83 words · tomyli

Linux命令学习之删除rm, rmdir

前言 今天学习一下Linux命令中的删除命令,主要学习 rm 与 rmdir rm 功能 删除文件或目录 删除谁 rm file 删除指定文件,只能删除文件,不能删除目录 rm -r file 递归删除目录及目录下的文件 rm -d file 删除空文件夹,文件夹不空则报错 删除方式 rm -f file 强制删除文件,忽略文件不存在的错误信息 rm -i file 删除文件前进行确认提示,每删除一个文件提示一次 rm -I file 删除文件前进行有条件的确认提示,触发条件为: 删除文件大于3个,只提示一次,小于等于3个不提示,直接删除 递归删除时提示一次 删除记录 rm -v file 显示删除的文件明细,有日志作用,有写脚本时很有用 组合杀 递归删除目录的文件(不带确认) rm -rf file 常用的删除命令(在受限用户上使用比较稳妥) 递归删除目录的文件(带确认一次) rm -rfI file 比较稳妥的删除目录方式,有一步确认提示(又防止了文件多提示多的烦恼),防止手快 rmdir 功能 删除空的文件夹(支持多个) 为什么有这个命令 删除空文件夹的功能 rm -d 也可以实现,为什么还要有这个命令? rmdir存在的原因 它只能删除文件夹,功能更具体 它可以删除目录及其父目录,这个 rm -d 是做不到的, rm -d 只能删除一层 rm -d ...

2022-12-21 ·  (🌟Updated: 2022-12-21) · 1 min · 102 words · tomyli

Linux-ls命令学习

功能 ls 的功能为显示目录下的内容,默认情况下显示当前所在目录下的内容。用 man ls 查看帮助,发现 ls 支持了非常多的参数,后续学习以实际应用为主,只展示常用的内容 ls 命令帮助归属于man文件第一章节 显示哪些内容 ls 不带任何参数,显示当前目录下的文件内容,结果按字母自然排序 ls -a 显示当前目录下所有的内容,包含隐藏(以.开头的文件)的内容,如上显示 .emacs 和 .hide 文件显示了出来 ls -A 显示当前目录下所有的内容,包含隐藏(以.开头的文件)的内容,但不包含 . 和 .. . 代表当前目录 .. 代表上一级目录 ls /tmp 显示/tmp目录下的文件内容 显示方式 ls -l 默认情况 ls 只显示内容的名称, ls -l 表示以长列表方式显示目录内容 增加了 -l 选项后,显示结果中包含的文件内容更详细(包括权限、所属用户组、大小、修改时间等信息) ls -lh ls 中有很多与 -l 选项配合使用的其它选项,如 -h 选项,可以显示文件大小为可读的形式(以M、G为单位) ls -l 中文件大小默认是按byte为单位显示的 ls -x 按列显示 ls -X 按文件类型字母排序显示 ls -1 一行显示一个 ls -R 递归显示所有内容 格式化显示 ls -Q 显示结果加 引号 ...

2022-12-15 ·  (🌟Updated: 2022-12-21) · 1 min · 123 words · tomyli

如何使用Java JDK17版本OpenJ9 JVM

前言 心血来潮,看到JDK19都出来了,想着升级一下自己电脑上的JDK到JDK17 LTS版本+OpenJ9 JVM,在升级过程中遇到找不到安装资源的问题,记录一下解决过程 JDK17是Oracle的提供的长期支持版本,IBM J9是IBM优化的JVM版本,使用它可以节省JAVA服务使用的内存 使用adoptopenjdk/openjdk/安装 先前的adoptopenjdk11-openj9版本是从adoptOpenJdk源进行安装的,想着JDK17版本也从这个源进行安装,执行以下命令进行安装 brew install adoptopenjdk/openjdk/adoptopenjdk17-openj9 报错了,没有找到,为什么?明明JDK已经到19版本了,openjdk的17版本却没有更新? AdoptOpenJdk不维护了 查了半天的google,又上 AdoptOpenJDK 的brew源上看,找到了问题所在 根据官方brew源仓库的说明, AdoptOpenJdk 在2021-08-01 后不再更新了,所有版本都迁移到了Eclipse 基金会维护的JAVA生态顶级项目 Eclipse Adoptium Temurin中不包含OpenJ9 JVM Eclipse Adoptium维护的JDK版本,通过 temurin 命令进行安装 brew search temurin 没有看到带OpenJ9名称的版本,查询temurin官方博客中发现目前的 temurin 中暂时不包含OpenJ9版本,需要到 IBM 官网进行安装 使用IBM维护的JDK 最后从IBM的网站上找到了OpenJ9,IBM的JDK版本在brew中使用 semeru 命令 brew install semeru-jdk17-open 安装成功. 终于可以使用 J9版本的JDK17了 REF https://medium.com/@sdkman_/adoptopenjdk-is-dead-long-live-eclipse-adoptium-4f2677ca935a

2022-12-14 ·  (🌟Updated: 2022-12-14) · 1 min · 49 words · tomyli

JAVA中如何判断对象与类的关系之-instanceOf, Class.isInstance, Class.isAssignableFrom

前言 在开发中,常常会碰到检查JAVA对象是不是指定类型的情况,在JAVA中提供了以下几种方法实现此类需求: instanceOf Class.isInstance() Class.isAssignbleFrom() 今天对此三种实现进行具体学习,以加深理解并更好的使用 准备工作 先创建一个名为 Shape 的接口,一个实现了 Shape 接口的类 Triangle , 再定义一个继承 Triangle 类的类 IsoscelesTriangle public interface Shape { } public class Triangle implements Shape { } public class IsoscelesTriangle extends Triangle { } 以上三个类的类图关系如下 instanceOf instanceOf 是JAVA中的一个关键字,用于判断 实例对象是否是指定类型的子类型 ,常用于类型转换(cast)之前进行判断,操作的元素是一个对象和一个类型 Shape shape = new Triangle(); Triangle triangle = new Triangle(); IsoscelesTriangle isoscelesTriangle = new IsoscelesTriangle(); Shape nonspecificShape = null; assertTrue(shape instanceof Shape); assertTrue(triangle instanceof Shape); assertTrue(isoscelesTriangle instanceof Shape); assertFalse(nonspecificShape instanceof Shape); assertTrue(shape instanceof Triangle); assertTrue(triangle instanceof Triangle); assertTrue(isoscelesTriangle instanceof Triangle); assertFalse(nonspecificShape instanceof Triangle); assertFalse(shape instanceof IsoscelesTriangle); assertFalse(triangle instanceof IsoscelesTriangle); assertTrue(isoscelesTriangle instanceof IsoscelesTriangle); assertFalse(nonspecificShape instanceof IsoscelesTriangle); 上面例子测试 instanceOf 左侧对象是否是右侧类型的实例类型 ...

2022-12-12 ·  (🌟Updated: 2022-12-14) · 2 min · 249 words · tomyli

Linux-man学习

功能 显示命令行命令的帮助手册 排版 Man页面是按章节(section)进行分配的,在Man中包含9个特定章节 特定章节 可执行程序或者Shell命令(1) man 1 ls man 默认查询第1章节,也可以直接忽略写章节进行查询 man ls 此命令与上边命令效果相同 系统调用(2) 系统调用(内核的功能)相关的帮助在第2章节,例如下面查询系统调用 read 的帮助手册 man 2 read 库调用(3) 库调用相关帮助在第3章节,例如下面查询 ziplib 库中read 的帮助信息 man 3 zip_fread 特定设备文件(4) 查询/dev(保存的设备文件)下的待定文件相关帮助在第4章节, 查一下 null 设备的帮助信息 man 4 null 配置文件书写规则与约定(5) 配置文件的帮助信息放在了第5章,查询一下 /etc/passwd 的帮助 man 5 passwod 游戏相关(6) 略 杂项(7) 一些杂项帮助信息放在第7章,查一下 groff 文件的帮助 man 7 groff 系统管理员命令(8) 略 内核相关(9) 略 章节组织形式 以下只列出比较常用的信息 名称 总览 配置 描述 命令选项 退出码 返回值 环境变量 例子 作者 延伸阅读(see also) 常用命令 man man -f 显示命令的简介, 同 whatis 命令 man -k 搜索命令描述,当只记得一些关键词时很有用。同 apropos 命令 ...

2022-12-08 ·  (🌟Updated: 2022-12-15) · 1 min · 115 words · tomyli

Java枚举学习

枚举 枚举是指包含指定个数特定类型的实例类,所有枚举类默认都继承 java.lang.Enum ,枚举类是可序列化、可比较的 public enum Person { MAN, WOMAN; } public static void main(String[] args) { System.out.println(Person.MAN); } MAN 枚举构造器 枚举中自动生成的无参构造器默认是private的 显示定义的构造器只能是私有或无访问符的,即枚举不可以从外部进行实例化 无参构造器 public enum Person { MAN(), WOMAN(); Person() {} } public static void main(String[] args) { for(Person person : Person.values()) { System.out.println(person); } } MAN WOMAN 带参构造器 public enum Person { MAN(1), WOMAN(2), UNKNOWN, ; Person() {} Person(int status) { this.status = status; } public int status; } public static void main(String[] args) { for(Person person : Person.values()) { System.out.println(person.status); } } 1 2 0 枚举类初始化 枚举类的初始化与一般类的初始化过程(静态代码块->构造器代码块->构造函数)不同,它的执行顺序为:实例构造器代码块->构造函数->静态常量代码块,以下代码进行演示 ...

2022-11-23 ·  (🌟Updated: 2022-11-24) · 3 min · 477 words · tomyli

Org-babel学习记录

基础 匿名代码段 命名的代码块 命名的代码块与结果项是可以分开的,orgmode通过代码块的名称进行匹配 定义参数 参数变量根据对应语言表现方式不同 :var x=0 Header header多行书写便于阅读 内联代码段 4 常用命令 org-babel-execute-buffer 执行buffer的所有代码段

2022-09-28 ·  (🌟Updated: 2022-09-28) · 1 min · 15 words · tomyli

Org-anki, Org与Anki的完美结合

Org-anki Org-anki是一个同步Org中note到Anki的Emacs包,它的实现非常简单灵活,文档书写体验好 安装 (use-package org-anki :commands (org-anki-sync-entry org-anki-sync-all)) 支持的note 基础note 基本的正反两面问答形式,在org中,heading表示问题,内容表示答案 * 我是问题 我就是答案了 填空型note 填空形式,处理格式为 {{…}}, 只关注heading,不关注内容 * 我是问题 {{c1::答案在这}} 嵌套型 其它也是基础型,但是这种功能让org note的组织更加友好,因为有时一个记忆点可能需要多种方式来实现 * 我是问题1 我是答案1 ** 我是问题1 我是问题1的另一种答案 上面的情况会在anki中创建两个基础的card,也就是两个记忆点,好用 常用命令 org-anki-sync-all 同步所有note到anki org-anki-sync-entry 同步当前光标所属的entry到anki org-anki-cloze-dwim 创建填空形式,要选中标题部分区域进行转换 org-anki-browse-entry 在Anki中浏览当前光标下entry的note信息 org-anki-import-deck 从Anki中导入,在Anki中已经存在部分note时,可以先导入到org中,再进行同步 org-anki-delete-entry 删除当前entry org-anki-delete-all 删除所有entry

2022-09-27 ·  (🌟Updated: 2022-09-27) · 1 min · 46 words · tomyli