linux目录与文件相关操作

2023-11-04

(一) 目录相关操作

1) pwd(显示目前所在目录)

$ pwd 
$ pwd -P # 显示真正的所在目录路径, 而非链接文件路径

2) mkdir(建立新目录)

$ mkdir <目录名>
$ mkdir [-m <权限>] <目录名>		# -m指定目录的权限
$ mkdir [-pm <权限>] <目录路径>	# -p递归创建目录

如果未制定目录权限的话, 会使用默认权限(umask)

3) rmdir(删除空目录)

$ rmdir <目录名>
$ rmdir -p <目录路径>

4) cd改变当前工作目录

$ cd <绝对路径/相对路径>
$ cd ~	# 到当前用户家目录
$ cd ~<账户名> # 到指定账户家目录
$ cd -	# 到上一个工作目录
$ cd 	# 到当前用户家目录, 等于cd ~

5) $PATH执行文件路径变量

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/siso/.local/share/JetBrains/Toolbox/scripts:/home/siso/.local/share/JetBrains/Toolbox/scripts

为了安全起见, 当前目录./并未加入到$PATH, 这一点和windows不同

(二) 文件与目录管理

1) ls查看文件与目录

$ ls [-a]	# -a 代表显示包括隐藏文件在内的文件或目录
$ ls [-d]	# 仅列出目录本身
$ ls [-l]	# 列出详细数据
$ ls [-R] 	# 连同子目录一起列出来
$ ls --time={atime, ctime}	# 输出access时间(atime)或改变权限的时间(ctime), 而非内容修改的时间
$ ls --color={never, always, auto}

由于ls -l过于常用, 因此有一个别名

$ ll	# 两个小写L, 相当于ls -l

2) cp复制文件或目录, 建立快捷方式, 更新文件

$ cp [options] <source1, source2, ...> <destination>
  • -a 相当于-dr --preserve=all
  • -d 若源文件为链接文件属性, 则复制链接文件属性而非文件本身
  • -f 强制, 若目标文件已经存在且无法开启, 则删除后再尝试
  • -i 若目标文件已经存在, 在覆盖时会先询问
  • -l 进行硬链接(hard link)的链接文件建立, 而非复制文件本身
  • -p 连同文件的属性(权限, 用户, 时间)一起复制过去
  • -r 递归复制, 用于目录的复制操作
  • -s 复制为符号链接文件(symbolic link), 即"快捷方式"文件
  • -u destination比source旧时才更新destination, 或destination不存在时才复制
  • --preserve=all 除了-p的权限相关参数外, 还加入SELinux属性, links, xattr等也复制

默认情况下, 复制之后目标文件的拥有者通常会是命令操作者本身.
另外, 普通用户身份不能随意修改文件的拥有着与用户组, 所以一般即使加上-a选项, 也是无法完成完整权限的复制. 这意味着普通用户复制的文件拥有者只能是自己, 除非有管理员特权.

3) rm删除文件或目录

$ rm [-fir] <文件或目录>
  • -f 忽略不存在的文件, 不会出现警告信息
  • -I 交互模式, 删除前询问
  • -r 递归删除, very dangerous!!!
$ sudo rm -rf /*	# very dangerous!!! do not give it a try!

默认情况下, root用户的rm命令自动加-i选项

4) mv移动文件或目录i, 重命名

$ mv [-fiu] source destinaiton
$ mv -b source1 source2 ... directory
$ mv -n source1 source2 ... directory 
  • -b 如果目标文件已经存在,则将目标文件备份,文件名末尾默认为~
  • -n [–no-clobber] 不覆盖目标文件

5) 获取路径的文件名与目录名称

$ basename /etc/sysconfig/network
network
$ dirname /etc/sysconfig/network
/etc/sysconfig

(三) 文件内容查看

1) 直接查看文件内容

$ cat [-AbEnTv]
  • -A 相当于-vET的整合选项, 可列出一些特殊字符
  • -b 针对非空白行列出行号
  • -E 将结尾的换行符$显示出来
  • -n 包括空白行在内显示出行号
  • -T 将[tab]案件以^I显示出来
  • -v 列出一些看不出来的特殊字符
$ tac /etc/issue

反向列示

$ nl [-bnw] 文件

添加行号打印

  • -b 主要有两种:-b a相当于cat -n, -b t(默认)相当于cat -b

nl可以对行号做比较多的显示设计,包括位数与是否自动补齐0等功能

2) 可翻页查看

more运行过程中的可用按键

  • 空格键: 向下翻一页
  • 回车: 向下翻一行
  • /字符串: 在显示的内容中,向下查找字符串这个关键词
  • :f: 立即显示文件名以及目前显示的行数
  • q:: 立即离开
  • b[ctrl]-b: 往回翻页, 对管道无用

less的用法比起more更有弹性

  • 空格建: 向下翻页
  • pagedown: 向下翻页
  • pageup: 向上翻页
  • /字符串: 向下查找字符串的功能
  • ?字符串: 向上查找字符串的功能
  • n: 重复前一个查找
  • N: 反向的重复前一个查找
  • g: 前进到这个数据的第一行
  • G: 前进到这个数据的最后一行
  • q: 离开less这个程序

man是调用less实现的, 因此两者的命令相似

3) 数据截取

$ head file  	# 显示文件前10行
$ head -n 20 file 	# 显示文件前20行
$ head -n -100	 file	# 显示文件除后100行外的所有行
$ tail file	# 显示后10行
$ tail -n 20 file	# 显示后20行
$ tail -n +100 file	# 显示除前100行外的所有行
$ tail -f file	# 持续检测file的内容

练习

# 显示文件中第11-20行业内容(带行号)
cat -n file | head -n 20 | tail 

4) 非纯文本文件

$ od [-t TYPE] file
$ od -t dCc file	# 输出十进制与字符的对照

-t : 后面可以接各种类型的输出,如:

  • a: 利用默认的字符来输出
  • c: 使用ASCII字符来输出
  • d[size]: 使用十进制(decimal)来输出数据,每个整数占用size Bytes
  • f[size]: 使用浮点数(floating)来输出数据,每个数占用size Bytes
  • o[size]: 使用八进制(octal)来输出数据,每个整数占用size Bytes
  • x[size]: 利用十六进制(hexadecimal)来输出数据,每个整数占用size Bytes

5) 修改文件时间或创建新文件

$ ls -l --time=atime file	# 列出读取时间
$ ls -l --time=mtime file	# 列出修改时间, 默认
$ ls -l --time=ctime file	# 列出状态更改时间, ctime无法被复制
$ touch [-acdmt] file		# 不带可选参数时, 修改atime和mtime
  • -a 仅自定义access time
  • -c 仅修改static time
  • -m modification time
  • -d[--date="日期或时间"] 自定义日期而不使用目前的日期
  • -t 自定义时间而不使用目前时间,格式为[YYYYMMDDhhmm]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux目录与文件相关操作 的相关文章

随机推荐

  • 浏览器Uncaught QuotaExceededError错误(localStorage超出限额)

    Web Storage网络存储 HTML5的Web Storage网络存储是指网络应用程序用于在网络浏览器存储方法和通讯协议 支持持久数据存储 类似于Cookie 以及window local存储 网络存储又分为localStorage本地
  • 数电基础一:原码、反码和补码

    一 原理和计算 1 原码 在数字电路中 我们用逻辑电路输出的高低电平表示二进制码1 0 我们有时候需要对正数和负数进行操作 但是在二进制逻辑电路中只有0和1 并没有负号 所以我们在数值的最高位添0表示正数 添1表示负数 这样的数就叫原码 2
  • nacos配置中心的命名空间&配置集&配置id&配置分组

    命名空间 配置集 配置id 配置分组 命名空间 用作配置隔离 一般每个微服务一个命名空间 默认public 默认新增的配置都在public空间下 开发 测试 开发可以用命名空间分割 properties每个空间有一份 也可以为每个微服务配置
  • 震源球(沙滩球)

    震源球的三个重要参数 走向 strike 倾角 dip 滑动角 rake 走向 strike 断层的走向是断层面和水平面的交线 它有两个方向 相差180 为了明确起见 规定选取站在上盘面对下盘向右看的方向为断层面走向 记作 其取值范围为 0
  • 使用vscode进行远程调试

    官方调试手册 vscode官方调试手册 1 安装python扩展 如果是远程连接的话 一定要在ssh上启用扩展 不然创建基于python的配置文件时就会提示 无python扩展 2 新建配置文件 并修改参数 点击左侧第四个按钮 运行与调试
  • 小破孩&小屁妮

    偶闻 小破孩放出限量版情侣衫 毫不犹豫地就订了一套 很PP的 周末穿着大街上走了一圈 嘿 怪吸引眼球的
  • 当当网图书分析系统

    当当网图书分析系统 此系统有详细的录屏 下面只是部分截图 需要看完整录屏联系博主 系统开发语言python 框架为django 数据库mysql 分为爬虫和可视化分析
  • 力扣75.颜色分类 && 用异或swap时的注意事项。

    问题描述 在做 力扣75 颜色分类时候遇到的问题 荷兰国旗问题 代码正常写 但最后提交出现多次错误 代码 class Solution public void swap int a int b a b b a a b void sortCo
  • ERROR: Cannot create variant 'android-lint' after configuration ':sdk:debugRuntimeElements' has been

    最近项目添加model的时报错 看着错误信息眼熟 在此记录一下解决方法 错误信息 ERROR Cannot create variant android lint after configuration sdk debugRuntimeEl
  • thinkphp5学习路程 六 实现分页功能

    实现分页的功能具体的就是这个 paginate paginate 10 20 代表的含义就是一页显示10条数据 显示20页 public function test 查询数据库 result Db table user gt where i
  • 疯狂的联邦学习!研究员年薪百万?

    码农不容易 我这十几年一直在学习 停都停不下来 因为互联网技术发展真的造化弄人 上学那会儿 老师说C 有前途 因为大多数的企业都用它来写服务器程序 过了两年突然原来这个世界是Java的 遂挑灯恶补Spring 然而 技术永远在诞生新的 概念
  • python进行rar、tar、unzip解压

    参考文章链接 https blog csdn net qq 22865879 article details 120849457 1 python进行rar解压 1 需要使用Python的rarfile工具包 下载地址 http sourc
  • 成功打破 GPT-4 上限,新版 Claude 横空出世!

    公众号关注 GitHubDaily 设为 星标 每天带你逛 GitHub 前 OpenAI 团队成员在离职后 创办了 Anthropic 公司 今年 3 月份的时候 该公司推出一款名为 Claude 的应用 试图与 ChatGPT 一争高下
  • 前端工程化之Webpack优化

    打不垮我的 将使我更加坚强 尼采 大家好 我是 柒八九 好久没更文了 其实这段时间 一直没闲着 在准备一些比较重要的东西 忙着跑步 忙着学习 忙着xx 总之就是 一直在忙着 从未停歇 虽然 这段时间 没有文章的发布 其实 在私底下 已经有不
  • [教程]AMD芯片用VirtualBox安装MacOS虚拟机

    您的赞 是小熊更新的动力 本教程非常的简单 只需要几个步骤即可轻松安装好 效果图片 目前 大部分教程都是使用intel的芯片 Vmware软件进行安装macos 但实际上 使用VirtualBox安装MacOS同样也是一件简单的事情 笔者使
  • 【代码随想录】链表刷题

    链表 理论基础 移除链表元素 设计链表 动态单链表 动态双向链表 静态单链表 反转链表 两两交换链表中的节点 删除链表的倒数第 N 个节点 链表相交 环形链表 快慢指针 环形链表 II 很多重复的题参考 代码随想录 双指针法刷题 理论基础
  • 教你在mac上使用git(从安装到在gitee上操作)

    1git是啥 如何安装 分布式的代码版本管理工具 团队协作工具 不是一个人能搞定 开发linux gt 顺手做了个git 张三 gt 一段程序A java 李四 gt 一段程序B java 在两个不同的文件 最传统的手工人工合并 帮助我们进
  • python3对接godaddy API,实现自动更改域名解析(DDNS)

    python3对接godaddy API 实现自动更改域名解析 DDNS 文章开始前 先解释下如下问题 什么是域名解析 域名解析一般是指通过一个域名指向IP地址 A解析 然后我们访问这个域名就可以有直接访问这个IP地址的效果 只需要记住域名
  • matlab用字符串按名索引结构体(struct)的成员变量(field)

    matlab 一个训练函数中的若干记录用一个叫 records 的结构体返回 其中包括多个 loss 的 list vector 现用一个循环遍历这些 loss lists 画图 保存 Code getfield 用字符串取 struct
  • linux目录与文件相关操作

    一 目录相关操作 1 pwd 显示目前所在目录 pwd pwd P 显示真正的所在目录路径 而非链接文件路径 2 mkdir 建立新目录 mkdir lt 目录名 gt mkdir m lt 权限 gt lt 目录名 gt m指定目录的权限