linux-基础语法

news2024/9/21 2:33:34

本篇博客使用的是 Xshell  登录的云服务器。

Xshell 使用  Alt + Enter  的快捷键就可以自动全屏和 取消全屏。

Linux 基础语法 

 空文件也是需要存储空间的,假设我们创建一个空的 txt 文本文档,虽然我们看着文件大小是 0kb 但是 文件当中时候文件属性的:

 如这个文件,他有文件名,文件创建的时间,等等这些都是文件的属性,这些都是数据,都是需要在磁盘上开辟空间存储的。所以我们理解文件应该这样理解:

文件 = 文件内容 + 文件属性

 所以,我们对文件的操作,就应该是如下的:

文件操作 = 对文件内容的操作 or 对文件属性的操作

 ls

 显示当前目录下的所有文件(不包括隐藏文件),当我们使用 ls 之后,屏幕上就会显示用空格分割 的 文件名:

 如上图中蓝色的就是 目录。

基础语法:

ls [选项] [目录或文件]

 常用选项

  •  -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
  • -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
  • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
  • -l 列出文件的详细信息。
  • -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
  • -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
  • -R 列出所有子目录下的文件。(递归)
  • -1 一行只输出一个文件。

-l 

 我们上述直接使用 ls 只是查看 文件名这一个文件属性,而 加了 -l  这个选项就可查看更多的文件属性:

 如上图,此时目录中有两个文件夹,一个TXT文件,像最后的两个属性就是,在 20:00 创建的文件,dir1 ,dir2 和test.txt  是文件名。

 ls - l   命令可以简写为  ll

 两个指令实现的效果是一样的。

-a

 显示所有的文件(包括隐藏文件)。

 选项是可以一行写多个选项的:

 当然,上述使用一种方式, ls -a -l 这个命令还可以这样写  ls -la  和  ls -al

 如上所示,有  a  这个选项的命令,在实行之后,会有两点 这样的文件:

 那么这两个文件代表上面意思呢?在Linux当中,以   "  .  "  开头的文件,我们称为隐藏文件; "  .  "  开头的文件夹,就是隐藏文件夹。

 什么事隐藏文件呢?我们来看下面这个例子

 首先,我们用 ls  和 ls -l  来查看当前目录下,是没有   "  .  "  开头的文件的,那么现在,我们来创建两个 以  "  .  "   开头的文件:

 创建之后,我们用  ls  和  ls  -l   查看,发现没有这两个文件:

 

 然后,我们用  ls  -a  来查看:

 此时,就看见我创建了的两个隐藏文件了。

在Windows 当中也是有隐藏文件的。

而前面在创建两个隐藏文件的之前,就有两个隐藏文件了,分别是( .   /   ..  ) 这两个文件夹,在Linux的任何目录下都有这两个隐藏文件。

 这两个文件的作用我们将在下面细说。

 -d

 将目录像文件一样显示,而不是直接显示这个目录当中的文件信息。

 如果我们直接使用 ls  或者 ls  -l  来查看一个目录的话,那么就会像下面一样,直接显示这个目录当中的 文件信息:

 那么,如果现在我们想要查看这个  108_class 这个文件的信息的话,就可以使用  -d  这个选项:

 如上图,我们使用  -l  和 -d  的选项,就可以只查看  这个文件夹的属性了。

 -F

 在每个文件后面都 加一个字符,用来表示这个  文件的类型, " * "  表示可执行的普通文件;          " / "  表示这个文件是一个目录;  "  @  "  表示符号链接  等等。

 pwd

 显示当前命令行所处的目录在哪里;

 如上图,因为我们现在使用的 是 云服务器的 root 用户来进行登录,所以显示的root ,如果我们用 普通用户的登录方式,那么就是 :

home/XXX

XXX是你登录的用户名。

 那么上述都是使用的是 云服务器的 登录,pwd 命令时帮助我们 查看当前命令所在的目录,比如我们在windows 下的图形化界面:

 我们可以复制这的绝对路劲,然后下一次可以直接 复制 这个路径来找到这个目录下的文件。

 mkdir

mkdir 文件名 文件名  ········

使用这样的方式,可以一个或者多个文件夹,但是一般建议只创建一个

 注意,上述的 mkdir 和文件夹之间,文件夹和文件夹之间要有空格来分割,不然会报错:

 我们可以创建一串路径,比如  ../d1/d2/d3  这样的路径,都可以一次性创建:
使用 mkdir   -p  d1/d2/d3   这样的方式去创建就可以创建出 d1/d2/d3  这样的目录串,当然  d1 的上级是 使用 mkdir 这个命令行的路径。

tree

 使用 tree + 目录 以树的形式打印出这个目录之后的 目录路径:

  但是tree 不是默认就有的,他是需要安装的,我们在命令行中输入:

yum install -y tree

 这行命令来安装这个tree。在装这个tree 的时候,需要 root 账号

 Linux当中的 ( .   /   ..  )  这两个隐藏文件的 作用

  .. :表示当前路径的上级路径

如下图:

 .  :  表示当前路径

如下图:

 当然,这只是其中一个用途,我们还可以这样使用这个 文件:

 我们  用 gcc  生成了 一个 .c  文件的 a.out   的执行文件,上图中的  ./  就是代表的是当前路径,而  ./a.out 就是执行当前路径下的  a.out  这个执行文件。

那么存在的意义就是,帮助用户定位当前目录下的一个文件。

/  根目录

 在  Linux 当中,使用  "  /  "  斜杠 来分割目录:

 在 windows  中使用都是   "  \  "  反斜杠来 分割 目录:

 而在 Linux 当中  "  /  "  还代表的 Linux 的根目录,如果我们一直  cd  ..  这样,返回上一级路径,最终都会返回到这个根目录 :

我们还可以查看这个根目录的属性:

 

 当然这个根目录也是可以操作的,

 Linux当中目录结构是一种 多叉树的结构,这个多叉树的叶子结点,一定是 空目录或者是非目录文件,而路上的结点一定是一个非空目录。

 如下图例子:

 也就是为什么,一直回退,回退到根目录就不能会提了。

 这种结构,使得任何一个结点都只有一个父节点,这就使得这个路径具有唯一性,而上图中,我们要找一个文件,通常是通过路径来进行定位。这种路径,称为绝对路径

 绝对路径:我们把从根目录开始,定位到指定位置,具有唯一性的路径,称为绝对路径。

由此,我们就可以用 cd + 绝对路径来一下子进入到我们想进入的目录下:

 比如现在,我在bin 目录下 想要寻找 lib 目录下的 C++.txt  文件,那么我可以 用 ..  来访问上级路径,然后再去访问  lib 目录从而访问到  C++.txt  这个文件:

// 现在处在 bin  目录下
../lib/C++.txt

这样就可以从 bin  目录当中访问到 lib 目录当中的 C++.txt 文件。

这样的方式就叫做相对路径访问。

以命令所处目录的位置作为参照路径,来访问其他特定文件的方式,这种路径 就叫做 相对路径。

 因为是以当前位置为参照点的,如果我们命名的位置发生了改变,比如上述例子,我们不在 bin 目录下了,那么我们在其他路径再去使用这个相对路径,相对路径可能就失效了。

 相对路径和绝对路径的使用

 绝对路径往往比较长,但是指向的位置是不会改变的,一般是在固定的场景来进行使用,比如在配置文件中使用。

一般在使用 命令行的时候,比价常用相对路径。

比如我们在访问网页的时候,其中的 " / " 就是路径分隔符。bilibili 网站上的分割 使用的是 Linux 风格的 分隔符,就证明bilibili 网页的后端用的就是  Linux的操作系统了。

 Linux当中的普通用户和 超级管理员root

 在Linux 当中,用户分为两类,一个是 超级管理员root,一个是其他(普通用户),root用户的家目录是 /root ; 而普通用户的家目录是 /home/xxxx  (xxx 是用户名)。

 我们使用  whoami  这个命令就可以 查看 当前我们登录是哪一个用户:

 我们也可以 ls /home  查看home目录,查看当前我们的 系统中有多少用户。

当我们是 root 超级管理员 的时候,可以使用 adduser + 用户名 来创建一个用户,在新建一个用户的时候,会自动的 在 home 家目录下 创建对应的目录。

使用 userdel + 用户名 就可以删除一个用户。

如果你愿意,在windows下你也可以  创建多个用户,多个桌面 ········;在 windows 也是有 root 超级管理员的。

 cd

cd xxxxx/

进入某个目录。

cd 命令行的语法:

cd + 目录名

 cd .. : 返回上级目录

这个我们之前就运用过很多次了,这里就不多做细说。

cd /home/litao/linux/ : 绝对路径

 使用这种方式就可以从任何目录下直接访问到 对应的 文件或文件夹。

cd ../day02/ : 相对路径

 这种方法是有参照的,如果参照目录变了,相对路径可能就会失效:

  •  比如这个图中的,dev 目录访问到 etc 目录,这个相对路径,如果把 dev 的参照换成 是 home 那么这个相对路径依然生效;
  • 如果是 lib 访问到 ust/bin  这个目录中,这个相对路径,那么 参照从 lib 换成是 bit ,那么这个相对路径就失效了。

 cd ~:进入用户家目

 我们直接使用 cd ~ 就可以直接进入到,当前登录用户的家目录下,比如我是 root 用户,那么我直接放回到 /root  目录下; 如果我是 zhangsan 这个普通用户,那么我就返回到 /home/zhangsan 这个目录下。

cd -:返回最近访问目录

 也就是回到,我们上一次所在的路径下。

如果这个例子: 

 touch指令

 语法:

touch[选项]... 文件名 ...

 创建一个当前不存在的普通文件,不能创建目录

或者是 使用 touch的命令参数 更改文档或目录

的时期时间,包括存取时间和更改时间。

 参数列表:

  • -a 或--time=atime或--time=access或--time=use只更改存取时间。
  • -c 或--no-create 不建立任何文档。
  • -d 使用指定的日期时间,而非现在的时间。
  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  • -m 或--time=mtime或--time=modify 只更改变动时间。
  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  • -t 使用指定的日期时间,而非现在的时间。
     

 rmdir  和 rm

 rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令:

 语法:

rmdir [-p][dirName]

 这样可以直接删除目录。

需要注意的是:如果删除的目录不是空目录,也就是说,删除的目录当中有 文件或文件名,那么都是不能删除的:

rm命令可以同时删除文件或目录

 当我们使用 rm 删除文件的时候,如果你是 root 用户,可能会提醒你 是否要将该文件删除:

 

 我们在 后输入  y  表示 yes  删除,n  表示no  不删除。

 那么我们也可以直接略过这个提示,之间删除文件:

rm -f xxx.xxx

注意:在Linux当中删除的文件就是真正的删除了,不会有像在 windows 当中的 回收站一样保存删除文件。

rm 也可以删目录,那么上述的不是空目录他也能删除:

rm -r xxx

因为目录本身是递归式定义的,所以删除时候也要递归式删除,rm -r  就表示递归:

 非空目录:

 从它询问我们是否要删除的情况,可以看出它在做递归,一层一层的进去,问我们是否要删除。

 如果这个目录太深了,有几百层,那么一层一层的问就太挫了,我们可以加 -f  这个选项来跳过询问。

rm -rf xxx

再删除的时候一定要慎重,上面我们也说过了Linux当中文件删除之后就真的是删除了,假设我们这样写:

rm -rf /

我们说 " / " 是Linux 的根目录,其底层的操作系统的文件都在这个目录下,如果把这个这个目录删了,那么所有的操作系统的文件都被删除了。当然,有的文件不会被删除,正在运行的文件不会被删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能AI文档管理新方式,手把手教你打造自己的文档聊天机器人

一个快速指南,为您构建一个聊天机器人网站,可以接受外部文档作为上下文。 随着每天涌现的信息和知识在我的屏幕上呈现,我们面临着人类阅读和记忆自然限制的挑战,这使得跟上信息更新变得越来越困难。现在,像ChatGPT和Ll…

游戏企业如何做用户行为序列分析?

用户行为序列是指固定时间内单个用户按照时间顺序依次触发的部分或全部事件。通过对用户行为序列进行分析,企业可以归纳出群体用户的行为特征,辅助产品运营和迭代。 通常,企业可以将用户行为序列分析应用于所有的分析场景。比如,当…

深入解析CFS任务的负载均衡(框架篇)

本文出现的内核代码来自Linux5.4.28,如果有兴趣,读者可以配合代码阅读本文。 一、什么是负载均衡 1、什么是CPU负载(load) CPU负载是一个很容易和CPU利用率(utility)混淆的概念。CPU利用率是CPU忙闲的比例…

全面学习Selenium和Python的Web自动化测试项目实战

目录 摘要: 1.安装依赖项 2.编写测试用例 3.执行测试用例 4.结论 摘要: 随着Web应用程序的不断发展和更新,保证其质量和稳定性变得越来越重要。为了实现这一目标,Web自动化测试已经成为了必不可少的一部分。本文将介绍一个基…

二十、线索关联市场活动(一):查询市场活动

功能需求 用户在线索明细页面,点击"关联市场活动"按钮,弹出线索关联市场活动的模态窗口; 用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中; 用户选择要关联的市场活动,点击"关联…

SparkStreaming学习——读取socket的数据和kafka生产者的消息

目录 一、Spark Streaming概述 二、添加依赖 三、配置log4j 1.依赖下载好后打开IDEA最左侧的外部库 2.找到spark-core 3.找到apache.spark目录 4.找到log4j-defaults.properties文件 5.将该文件放在资源目录下,并修改文件名 6.修改log4j.properties第19行的…

Vue.js学习-1

一、Vue.js环境准备 官网地址:Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) Vue.js v2教程:Vue.js (vuejs.org) 在浏览器中安装Vue调试工具:Installation | Vue Devtools (vuejs.org) VSCode安装见这里: 下载vue.j…

每日学术速递4.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题:AutoNeRF:使用自主代理训练隐式场景表示 作者:Pierre Marz…

macOS 13.4Beta 3(22F5049e)发布

系统介绍 4 月 26 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.4 开发者预览版 Beta 3 更新(内部版本号:22F5049e),本次更新距离上次发布隔了 14 天。 macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通…

Go | 一分钟掌握Go | 5 - 切片

作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 说明 切片和数组有点像,对于我的理解就是声明了固定长度的就是数…

「 Redis 」RDB和AOF持久化全面解析

「 Redis 」RDB和AOF持久化全面解析 参考&鸣谢 【说透Redis】10分钟彻底理解Redis的持久化机制:RDB和AOF 程序员读书 AOF 持久化是怎么实现的? xiaolinCoding Redis持久化之RDB与AOF 的区别 1024下午茶 文章目录 「 Redis 」RDB和AOF持久化全面解析前…

设计模式之解释器模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…

C语言函数大全-- q 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- q 开头的函数 1. qsort 1.1 函数说明 函数声明函数功能void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));用于将指定数组按指定顺序进行排序 参数: base : 指…

2023年,企业如何做好团队知识管理?

团队知识管理是一个组织管理中非常重要的组成部分。成熟的企业通常会非常注重团队知识管理的实践,以提高团队的协作效率和整体绩效。本文将介绍成熟企业如何做好团队知识管理,以提高企业的竞争力和创新能力。 一、了解团队知识管理的重要性 团队知识管…

【网络进阶】五种IO网络模型(二)

文章目录 1. 多路复用IO2. 异步IO3. 信号驱动IO 1. 多路复用IO I/O多路复用这个术语可能对一些人来说比较陌生,但提到select/epoll,就容易理解了。在某些场景下,这种I/O方式也被称为事件驱动I/O(event-driven I/O)。我…

[Gitops--5]APISIX

APISIX Apache APISIX是一款开源的高性能,动态云原生网关.Apache APISIX当前已经覆盖了API网关,LB,Ingress,Service,Mesh等多种场景 1. APISIX部署 使用Helm Chart部署Apache APISIX Ingress Controller Apache APISIX Ingress Controller目前和Apache APISIX网关是强关联的…

基于html+css的图展示34

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

GoodSync 数据自动同步备份工具VS傲梅轻松备份系统数据备份工具 哪款更好?

备份和同步软件的使用越来越广泛,因为在这个数据驱动的时代,数据的备份和恢复非常重要。在这里我想向大家推荐两款备份和同步软件——GoodSync和傲梅轻松备份。 GoodSync是一款备份和同步软件,它可以在多个设备之间同步文件、文件夹、照片、音…

在电脑上剪辑视频用什么软件 如何在电脑上剪辑视频

工作中需要剪辑视频的场景越来越多了,视频剪辑已经成了打工人必备技能之一。但对很多新手小白来说,剪辑视频看起来比较困难,那可能是没有找到合适的软件和方法,下面就为大家介绍在电脑上剪辑视频用什么软件,如何在电脑…

Xcode14 设置Display Name不生效问题

一、前言 早在Xcode13苹果就对Info.plist做了一次大改革,新建的OC项目默认Info.plist文件是“空的”,Swift项目甚至干脆连Info.plist文件都没有了,苹果这样做是为了建立一个新的Info.plist管理方式,把Info.plist物理文件中的配置…