Linux 常用命令

认识 Linux 目录结构

Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件

Linux 是一个树形目录结构。Linux 上没有盘符概念,不分 C 盘等,根目录 \ 的地位相当与 Java 的 Object

在这里插入图片描述

——几个特殊的目录:

  • / 称为根目录
  • . 称为当前目录
  • .. 称为当前目录的上级目录

——绝对路径 vs 相对路径:
形如:/usr/share/tomcat/logs/ 以根目录开头的,称为绝对路径
形如:./logs 以 . 或者 … 开头的,为相对路径

使用 tab 键补全
我们敲的所有的 Linux 命令,都可以使用 tab 键来尝试补全,加快效率

——使用 ctrl + c 重新输入
如果命令或者目录敲错了,可以 ctrl + c 取消当前的命令

——关于 XShell 下的复制粘贴
复制:ctrl + insert (有些同学的 insert 需要配合 fn 来按)
粘贴:shift + insert
ctrl + c / ctrl + v 是不行的

——Ctrl+ l 清空屏幕内容


1、ls

语法: ls [选项] [目录或文件] ls–list

功能: 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。类似于在 windows 上双击某个目录,把它打开,看看目录里有啥

常用选项: Linux 的命令很多都支持 “选项",在命令后面跟上 - 以及一些 特殊的字母 / 单词,来开启不同的功能

  • a 列出目录下的所有文件,包括以 . 开头的隐含文件。

  • d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录

  • k 以 k 字节的形式表示文件的大小。ls –alk 指定文件

  • l 列出文件的详细信息。

  • r 对目录反向排序。

  • t 以时间排序。

  • R 列出所有子目录下的文件。(递归)

——其中白色的是普通文件,蓝色的是目录,浅蓝是快捷方式,

在这里插入图片描述

——相对路径

在这里插入图片描述

——这里 / 是 Linux 上的特殊目录,称为 “根目录” 相当于 windows 的 “此电脑”。这里的这些目录,就相当于 “系统文件”,这些内容,在机器上构成了一个 N 叉树的结构

在这里插入图片描述

列出文件的详细信息:

在这里插入图片描述

——小写的 L,表示使用列表的方式来列出目录中的内容

ls -l / 这是咱们最常用的命令,一般直接使用 ll 来替代,l => ls -l 的缩写形式

在这里插入图片描述


2、pwd

语法: pwd
功能: 显示用户当前所在的目录 。在使用命令行的时候,有的时候,目录结构比较复杂,容易不记得自己在哪了 (迷路了)

——显示出了当前目录所对应的绝对路径~~
在 windows 上,就是以盘符开头的路径就是绝对路径,E:\DevTools…
在 Linux 上,是以 / 开头 (根目录) 就是绝对路径~~

表示当前处于 根目录下的 root 目录中:

在这里插入图片描述


3、cd

change directory 切换目录,cd 和 ls 是工作中最高频使用的命令

ls, cd, pwd 操作目录的一些常见命令,起到了类似于 “文件资源管理器” 这样的功能

语法: cd 目录名,这个路径可以是绝对路径 (以 / 开头的),也可以是相对路径 (以 . 或 … 开头的, 其中 . 有时可以省略)

功能: 改变工作目录。将当前工作目录改变到指定的目录下

举例:
cd .. : 返回上级目录
cd ~ :进入用户家目
cd - :返回最近访问目录

——cd 就相当于 win 鼠标双击目录进行切换了

在这里插入图片描述

切换回 /root

[root@VM-16-7-centos /]# cd /root
[root@VM-16-7-centos ~]# pwd
/root

——相对路径,.. 表示当前路径的上级路径

在这里插入图片描述

cd ./root 也可以简写为 cd root

在这里插入图片描述

可用 Tab 键补全

如果只有一个匹配的选项,直接就补全了,如果有多个选项,需要双击 tab,能列出所有的匹配结果


4、touch

语法: touch [选项]… 文件…
功能: touch 命令参数可更改文档或目录的日期时间, 包括存取时间和更改时间,或者新建一个不存在的
文件。

——例如:touch hello.txt,如果存在文件,更新文件访问时间

在这里插入图片描述

没有提示,说明成功了;如果出错了,会有报错信息。当前处在哪个目录下 (pwd 的结果是什么),此时文件就创建在哪里~

在这里插入图片描述


5、cat

语法: cat [选项] [文件] concatenate
功能: 查看目标文件的内容

常用选项:
-n 对输出的所有行编号

cat hello.txt

6、echo

打印内容到控制台,也可以用于写文件

  • echo 'hello' 是打印字符串
  • echo 'hello' > hello.txt 就是重定向,把当前的字符串,给写到文件里了~~
  • > 是覆盖,>> 是拼接

此处的读写文件,只是能进行简单的读写,不能进行复杂的编辑

在这里插入图片描述


7、vim

vim 是一个知名的文本编辑器,前面学习的 cat, less, head, tail 等命令只能查看文本,不能编辑文本,使用 vim 就可以进行编辑了

vim 就相当于 Linux 上默认的记事本,但是使用起来比记事本难度大

vim 最关键的概念:模式 (mode),vim主要是引入了海量的快捷键,因此为了支持这么多的快捷键,就需要使用模式来区分别的编辑器。别的编辑器,快捷键主要是通过组合键 ctrl shift alt… 组合键的效率不如单个按键

  1. 创建文件 / 打开文件
  2. 进入插入模式
    • vim 打开文件后默认是普通模式 (normal mode),普通模式下键盘的按键表示一些特殊功能的快捷键 (例如按下 j 并不是
      输入字母 “j”,而是表示光标往下移动一行,
    • 需要进入插入模式 (insert mode) 才能进行文本编辑
    • 使用 i 键可以进入到插入模式 (左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了
  3. 保存
    • 在插入模式下不能保存文件,需要先回到 普通模式,按下 Esc 回到普通模式 (vim 有十几种模式,都是通过 Esc 回到普通模式)
    • 在普通模式下输入 :w,再按下回车,即可保存文件
  4. 退出
    • 在插入模式下不能退出,需要先回到 普通模式
    • 在普通模式下输入 :q ,再按下回车,即可退出
      也可以直接使用 :wq ,同时执行保存和退出

如果 vim 没有正确关闭,在下次启动的时候,会报错,提示你上次没正确关闭,可以直接按 D 就是删除未保存的内容,R 就是恢复之前的编辑内容

在这里插入图片描述

熟练使用 Vim 能够大大提高代码编辑效率,主流的开发工具 (比如 IDEA, VSCode 等) 都支持 Vim 风格的快捷键
遗憾的是熟练使用 Vim 并不是一件容易的事情,可能需要长达几年的练习

但是我们只要使用 vim 编辑服务器上的配置文件,或者查看服务器的日志文件 就够用了。C++ 的 vim 要讲很多,用 vim 作为主力开发工具,vim是可以用来写代码的,vim 是可以搭配很多插件,来提供一些语法高亮,代码补全


8、mkdir

语法: mkdir [选项] dirname…
功能: 在当前目录下创建一个目录,make directory
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录

创建多个目录:

在这里插入图片描述

递归建立多个目录:

在这里插入图片描述

当使用 mkdir 连续创建很多目录之后,就容易搞不清楚目录结构,可以通过一个 tree 这样的命令,来直观的看到目录是如何构成的!!!

前面说的命令都是 Linux 自带的,tree 不是,是属于第三方提供的命令,要单独下载安装!!

yum install tree

90 年代就有这个包管理器了,yum 相当于 “应用商店",称为 “包管理器”,应用商店也是仿照包管理器来发明出来的~~

在这里插入图片描述


9、rm

语法: rm [-f-i-r-v] [dirName/dir]

功能: 删除文件或目录,remove

常用选项:

  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件

——删除文件

在这里插入图片描述

——删除目录:rm -r 目录名 才能删除目录,-r 选项表示 “递归”。一个目录里,可以有文件,还可以有子目录,这个删除就是把里面的所有内容都删了

在这里插入图片描述

理解递归删除的过程:

先手动创建如下目录结构:
test
├── a
│ ├── a1
│ │ ├── 1.txt
│ │ └── 2.txt
│ └── a2
├── b
│ ├── b1`
│ │ ├── 1.txt
│ │ └── 2.txt
│ └── b2
└── c
使用 rm -ri 命令删除 test, 观察删除的顺序

——在刚才的删除操作中,有提示,问是否真的删除,使用 -f 选项,就可以直接删除,不提示~~

在这里插入图片描述

重要注意事项:
千万不要运行 rm -rf / , 尤其是在公司的生产服务器上

rm -rf /把你整个磁盘上的所有文件都删了,包括系统文件 (你自己的系统启动需要的文件)
如果你这个机器上是有重要数据的话,就完了

windows 有个回收站,删的东西是先进入了回收站,还能后悔!!
linux 上,是没有回收站的 (也可以有),直接删除,文件无法被恢复!! 一定要想清楚,你当前这个东西是不是真的能删!!
和数据库 drop table/database 一样

mkdir, ls 等 linux命令,其实就是一些特定的可执行文件,能敲这个命令运行,其实就是 linux 在执行这些文件的内容…
rm -rf / 所有的文件目录都没了,包括上述的创建目录指令…

rm -rf/ 等同于 rm -rf /。 表示通配符,可以代表任意字符串~~**

但是仍然经常有人会真的敲这个命令 (不是故意的,不小心敲出来的)

1)、rm -rf / root/abc.txt
本来我想删除的是 /root/abc.txt 普通文件,不小心多敲了个空格~~
rm 就会认为,你是要删除两个目录!! /./root/abc.txt

2)、Linux shell 脚本
DIR = abc.txt
…(其他代码)
rm -rf /${DIR}

万一执行到这个代码的时候,DIR 因为一些原因没有被定义那么此处不会报错,而是把 DIR 视为空字符串
仍然会生成 rm -rf 这样的命令!!!


10、mv

语法: mv (move) [选项] 源文件或目录 目标文件或目录

功能:
1.) 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。
2.) 当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3.) 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

——将 hello.txt 移入 aaa 目录

在这里插入图片描述

——.. 表示将文件移回上级目录

在这里插入图片描述

——将 hello.txt 文件名改为 java.txt

在这里插入图片描述


11、cp

语法: cp (copy) [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录粘贴

说明: cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 如果拷贝的是目录,需要递归处理,将指定目录下的文件与子目录一并处理否测回报错。 若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

——复制 java.txt 到 java2.txt,文件内容一样

在这里插入图片描述


man

Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。

语法: man [选项] 命令

常用选项:
-k 根据关键字搜索联机帮助
num 只在第 num 章节找
man man 能够看到 man 手册中的若干个章节及其含义

例:man ls


less

语法: less [参数] 文件
功能: 查看文件内容,不会立刻把所有文件内容加载到内存中, 也能进行查找
选项:
j k / 方向键:向上向下滚动屏幕
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
q:退出


head

语法: head [参数]… [文件]…
功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
-n<行数> 显示的行数


tail

语法: tail [必要参数] [选择参数] [文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n<行数> 显示行数

举例: 有一个文件共有 100 行内容,请取出第 50 行内容

# 方法1
head -n50 test > tmp         # 将前50行装入临时文件 tmp
tail -n1 tmp                 # 得到中间行# 方法2
head -n50 test | tail -n1

关于重定向

Linux 的很多指令,如 cat head tail 等都是默认输出到 “标准输出” 中,也就是显示器上的。可以通过 > 这样的符号把本来要输出到标准输出上的内容写到特定文件中,这样的操作称为 “重定向”

重定向有三种方式:

1、标准输入重定向(<)

# 先构造一个文件, 里面添加一些内容.
cat < test.txt

2、标准输出重定向 (>)

cat test.txt > test2.txt  

3、标准错误重定向 (2>),注意 2 和 > 之间不能有空格

# 尝试删除一个不存在的文件
rm aaa > test.txt# 输出结果, 这个提示并没有被重定向到 test.txt 文件中.
rm: cannot remove ‘aaa’: No such file or directory# 正确做法
rm aaa 2> test.txt  

标准输入,标准输出,标准错误是三个特殊的文件,每个进程在启动的时候都会默认打开。分别对应到键盘,显示器,显示器这样的设备
在 Java 中,分别对应到 System.in , System.out , System.err

关于管道

管道是一种古老的 “进程间通信” 方式,在 Linux 指令中可以使用 | 作为管道标记
意思是将前一个指令标准输出的内容,作为第二个指令的标准输入内容


date

date 指定格式显示时间: date +"%Y-%m-%d %H:%M:%S"
date 用法: date [OPTION]… [+FORMAT]

  1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记

    • %H : 小时(00…23)
    • %M : 分钟(00…59)
    • %S : 秒(00…61)
    • %X : 相当于 %H:%M:%S
    • %d : 日 (01…31)
    • %m : 月份 (01…12)
    • %Y : 完整年份 (0000…9999)
    • %F : 相当于 %Y-%m-%d
  2. 时间戳

    • 时间->时间戳:date +%s
    • 时间戳->时间:date -d@1508749502
    • Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从 1970 年 1 月 1 日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

grep

语法: grep [参数]… [文件]…

功能: 用于查找文件中是否包含指定字符串,并显示对应的行

选项:
-n<行数> 显示的行数
-w 全字匹配,要求整个单词都完全相同的结果才能匹配出来,而不仅仅是一个单词的一部分
-r 递归查找,可以搜索多级目录下的所有文件
–color 高亮查找到的结果
–include 指定查找某些文件
–exclude 指定排除某些文件


ps

语法: ps [参数]…

功能: 用于查看当前系统上运行的进程

选项:
a 显示一个终端的所有进程
u 以用户为主的格式来显示程序状况
x 显示所有程序,不以终端机来区分

举例:

ps aux # 显示系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"  

netstat

语法: netstat [参数]…
功能: 查看系统上的网络状态
选项:
-a 显示所有正在或不在侦听的套接字
-n 显示数字形式地址而不是去解析主机、端口或用户名
-p 显示套接字所属进程的PID和名称

举例:

netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"

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

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

相关文章

uniapp快速开发小程序全流程

uniapp快速开发小程序全流程 完整项目代码&#xff1a;https://gitee.com/Zifasdfa/ziyi-app 欢迎fork与star 1 项目效果及环境准备 1.1 项目效果 本文主要使用uniapp实现一个简单的app应用 1.2 环境准备&项目初始化 ①node环境&#xff1a;去node.js官网下载稳定版的nod…

微服务之Eureka服务注册中⼼

关于务注册中⼼服 服务注册中⼼本质上是为了解耦服务提供者和服务消费者,尽可能量使两者联系可控在一定的范围外 1.在父项目下下引入 Spring Cloud 依赖 <dependencyManagement> <dependencies> <!-- SCN --> <dependency> <groupId> org.sp…

【网站 全选和单选】js 实现-点击全选按钮时,所有的按钮都会被选中或取消选中。

要实现的效果如图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport…

Loki+promtail+Grafana监控docker容器日志

目标&#xff1a;监控docker容器的日志&#xff0c;适用于生产环境 效果&#xff1a; 需要的工具&#xff1a;Loki&#xff0c;promtail&#xff0c;Grafana 通过安装promtail容器收集日志&#xff0c;并把日志发送给loki存储处理&#xff0c;由Grafana展示日志。 参考官网的…

Windows bat隐藏运行窗口的几种方案

文章目录 一、背景二、测试数据三、隐藏bat运行窗口方案1. 使用VBScript脚本2. 使用mshta调用js或vbs脚本3. 将bat编译为exe程序4. 使用任务计划程序 一、背景 有些程序在执行批处理脚本时&#xff0c;可能会看到dos窗口&#xff0c;或者看到窗口一闪而过。如果批处理脚本执行…

(EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡&#xff0c;天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真…

Python 算法基础篇:大O符号表示法和常见时间复杂度分析

Python 算法基础篇&#xff1a;大 O 符号表示法和常见时间复杂度分析 引言 1. 大 O 符号表示法 a ) 大 O 符号的定义 b ) 示例代码 2. 常见时间复杂度分析总结 引言 在分析和比较算法的性能时&#xff0c;时间复杂度是一项重要的指标。而大 O 符号表示法是用来描述算法时间复杂…

动态规划01背包之416分割等和子集(第10道)

题目&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例&#xff1a; 解法&#xff1a; 先复习一下01背包问题&#xff1a; dp[i][j]的含义&#xff1a;从下标为[0-i]的物品里…

Linux->初识计算机网络

目录 前言&#xff1a; 1 网络发展背景 2 协议 2.1 网络协议初识 2.2 协议分层 2.3 OSI、TCP/IP层状模型 2.4 协议和操作系统的关系 2.5 根据协议栈的通信 3 网络中的地址管理 前言&#xff1a; 本篇当中没有任何关于网络编程的讲解&#xff0c;全部是对网络的宏观理解…

【数学建模】 灰色预测模型

数学建模——预测模型简介 https://www.cnblogs.com/somedayLi/p/9542835.html 灰色预测模型 https://blog.csdn.net/qq_39798423/article/details/89283000?ops_request_misc&request_id&biz_id102&utm_term%E7%81%B0%E8%89%B2%E9%A2%84%E6%B5%8B%E6%A8%…

MySQL 进阶之王,MySql 性能实战源码 + 笔记 + 项目实战

随着互联网时代的兴起&#xff0c;MySQL 在数据库领域日益显现出举足轻重的地位&#xff0c;它不断扩大的用户群体就是很好的证明。在这样的背景下&#xff0c;需要越来越多的人在知识资源方面为之付出&#xff0c;将自己对 MySQL 数据库的学习过程、运维经验、个人理解等记录下…

scripy其他

持久化 # 爬回来&#xff0c;解析完了&#xff0c;想存储&#xff0c;有两种方案 ## 方案一&#xff1a;一般不用 parse必须有return值&#xff0c;必须是列表套字典形式--->使用命令&#xff0c;可以保存到json格式中&#xff0c;csv中scrapy crawl cnblogs -o cnbogs.j…

Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

对于大多数 Web3 团队来说&#xff0c;构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务&#xff0c;构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据&#xff0c;并将其与外部数据源进行整合和分析工作量是十分巨大的&#xff1a; 区块链…

RocketMQ学习笔记(实操篇)

目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使用方式 命令介绍 集群监控平台搭…

基于深度学习的高精度刀具检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度刀具检测识别系统可用于日常生活中或野外来检测与定位刀具目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的刀具目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

谈谈——互联网生活中的隐私保护

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

图形编辑器开发:参考线吸附功能,让图形自动对齐

最近我给图形编辑器增加了参照线吸附功能&#xff0c;讲讲我的实现思路。 我正在开发的图形设计工具&#xff1a; https://github.com/F-star/suika 线上体验&#xff1a; https://blog.fstars.wang/app/suika/ 效果是被移动的图形会参考周围图形&#xff0c;自动与它们进行吸附…

MySQl数据库第八课-------SQL命令查询-------主要命脉

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 目录 查询数据 条件 逻辑运算符 模糊查询 范围查询 in 判断空 UNION 排序 聚合 分组&#xff1a;group by —————————…

c++计算贝塞尔曲线(折线平滑为曲线)坐标方法

效果可查看上一篇博文&#xff1a;js手动画平滑曲线&#xff0c;贝塞尔曲线拟合【代码】js手动画平滑曲线&#xff0c;贝塞尔曲线拟合。https://blog.csdn.net/qiufeng_xinqing/article/details/131711963?spm1001.2014.3001.5502 代码如下&#xff1a; #include <cmath&…