【Linux】常用指令详解二

前言

介绍一些Linux常用命令,本文为文章【Linux】常用指令详解一的续作

1.绝对路径与相对路径

绝对路径:从系统根目录开始,可以完整描述文件或目录的路径。使用绝对路径可以准确定位到系统中的某个文件或目录。

相对路径:相对与当前目录的路径,不以根目录开头。需要来回切换临近路径时,相对路径的优势明显。

常见的相对路径表示

  • . :当前

  • ... :上一级目录

  • ./test.c:当前目录下的test.c文件

  • .../test.c:上一级目录下的test.c文件

  • subdir/:当前目录下的subdir子目录

  • .../subdir/:上一级目录下的subdir子目录

  • subdir/text.txt:当前目录下的subdir子目录下的text.txt文件

  • .../.../:向上导航两级目录

2.快捷键

tab 快速点击两次 命令or 路径补齐
ctrl+c 失控终止
man 搜索手册

安装man手册:

Objective-C++ 复制代码
yum install -y man-pages 

新建文件

Objective-C++ 复制代码
touch test.c

nano Linux环境下的记事本

打开文件并写入

Objective-C++ 复制代码
nano test.c

ctrl+X→回车,保存并退出后,查看文件内容

Objective-C++ 复制代码
cat test.c

3.ls命令

ls命令用于列出目录内容

Objective-C++ 复制代码
ls -lh 以人类可读形式显示文件大小
ls -R递归列出子目录及其内容

ls -l与ls -lh的区别

ls -R

4.cd命令

cd命令用于切换工作目录

  • 绝对路径,切换到指定路径

cd/lesson/text.txt

  • 相对路径

cd lesson:进入当前目录下的lesson目录

cd ... /lesson1 :返回上一级目录后进入lesson1目录

5.cp 拷贝文件or拷贝目录

拷贝文件

Objective-C++ 复制代码
cp 源文件 目标文件

拷贝目录

Objective-C++ 复制代码
cp -r 源目录 目标目录

常用的选项

6.cat命令

链接和显示文件内容

链接和显示文件内容

Objective-C++ 复制代码
cat file1 显示文件内容
cat file1 file2 合并 并 显示多个文件内容

这里用了cat 命令查看文件内容 检验cp命令是否成功

7.touch命令

touch 命令除了可新建文件还可更新文件的时间

PowerShell 复制代码
touch existingfile.txt

这将把existingfile.txt的修改时间和访问时间更新为当前时间。

当文件已经存在时,touch命令可以更新文件的时间戳。文件有三个主要的时间戳:

  • 访问时间(atime):文件最后一次被访问的时间。

  • 修改时间(mtime):文件内容最后一次被修改的时间。

  • 状态更改时间(ctime):文件的元数据(如权限、所有者等)最后一次被修改的时间。

touch命令主要更新文件的修改时间(mtime)和访问时间(atime)。

常用选项表


修改为指定时间

还可以使用touch命令将文件的时间戳修改为指定的时间。例如,将文件的时间戳修改为 2025 年 1 月 1 日 12:00:00,可以使用以下命令:

PowerShell 复制代码
touch -t 202501011200.00 existingfile.txt

这里,-t选项后面的时间戳格式为 [[CC]YY]MMDDhhmm[.ss],其中:

  • CC 表示世纪(可省略)

  • YY 表示年份

  • MM 表示月份

  • DD 表示天

  • hh 表示小时

  • mm 表示分钟

  • ss 表示秒

仅修改访问时间

更新文件的访问时间而不更新修改时间,可以使用-a选项:

PowerShell 复制代码
touch -a existingfile.txt

仅修改修改时间

更新文件的修改时间而不更新访问时间,可以使用-m选项:

PowerShell 复制代码
touch -m existingfile.txt

使用参考文件的时间戳

使用-r选项将一个文件的时间戳设置为另一个文件的时间戳。例如,将file1.txt的时间戳设置为file2.txt的时间戳:

PowerShell 复制代码
touch -r file2.txt file1.txt

用ls -l 命令可查看文件时间信息

Jan 12 15:18就是文件的修改时间。

8.mv命令

PowerShell 复制代码
mv oldname newnanme 重命名目录或文件
mv file new/directory 移动文件到新目录

移动文件到新目录,file是文件或目录名, new/directory是目标目录

mv命令的基本语法是 mv [源文件或目录] [目标目录]

如果file是文件,new/directory是目标目录,确保new/directory存在,否则会将file重命名为new/directory

如果new/directory目录不存在,你可以先创建目录,再移动文件

PowerShell 复制代码
mkdir -p new/directory
mv example.txt new/directory

常用选项

重命名

主目录下的目录class重命名为lesson

移动

主目录下文件test.和test.c移动到目录lesson中

使用相对路径 ./lesson

9.tail命令

显示文件的最后几行

Objective-C++ 复制代码
tail file 系统就会默认显示该文件的最后十行内容
tail -n 20 file 显示文件最后二十行
tail -f logfile 实时刷新并显示日志文件的新增内容

常用选项

tail -f logfile 实时刷新并显示日志文件的新增内容

假设你有一个日志文件app.log,应用程序在不断地向这个文件中写入日志信息。执行tail -f app.log命令后,终端会显示app.log文件的末尾部分内容,并且会实时监控文件的变化。一旦有新的日志信息被写入app.log文件,这些新增内容会立即显示在终端上。

例如,当应用程序产生新的日志:[2024 - 10 - 01 12:00:00] INFO: New user logged in,这个新增的日志行会立刻显示在执行了tail -f app.log命令的终端中,方便运维人员实时监控应用程序的运行状态和错误信息。若要停止实时监控,可按下Ctrl + C组合键。

10.head命令

显示文件的前几行。

Objective-C++ 复制代码
head file 显示文件的前10行
head -n 20 file 显示文件的前20行
head -c 显示前几字节

11.grep命令

搜索文本中的模式

Objective-C++ 复制代码
grep "pattern" file 在文件中搜索包含特式模式的行
grep -r "pattern" directory 在目录中搜索包含特式模式的行
grep -i "pattern" file 忽略大小写索包含特式模式的行

常用选项

grep "pattern" file 在文件中搜索包含特定模式的行

假设你有一个名为example.txt的文件,内容如下:

PowerShell 复制代码
apple is a fruit
banana is a fruit too
cherry is delicious
kiwi is a healthy fruit

如果你想在example.txt中搜索包含 "fruit" 的行,在终端执行:

Objective-C++ 复制代码
grep "fruit" example.txt

输出结果为:

Objective-C++ 复制代码
apple is a fruit
banana is a fruit too
kiwi is a healthy fruit

grep -r "pattern" directory 在目录中搜索包含特定模式的行

设你有一个名为documents的目录,其结构如下:

Objective-C++ 复制代码
documents/
├── file1.txt
├── file2.txt
└── subdir
    └── file3.txt

其中file1.txt的内容是:

Objective-C++ 复制代码
This is the first file.
It contains some text about cats.

file2.txt的内容是:

Objective-C++ 复制代码
The second file has information about dogs.
Dogs are great pets.

subdir/file3.txt的内容是:

Objective-C++ 复制代码
This is a file in subdirectory.
It talks about birds.

如果你想在documents目录及其子目录下所有文件中搜索包含 "animals" 相关的内容,执行:

Objective-C++ 复制代码
grep -r "animal" documents

因为这些文件中并没有 "animal" 这个词,所以没有输出。若搜索 "dogs",则会输出:

Objective-C++ 复制代码
documents/file2.txt:The second file has information about dogs.
documents/file2.txt:Dogs are great pets.

grep -i "pattern" file 忽略大小写搜索包含特定模式的行

还是以example.txt文件为例,内容如下:

Objective-C++ 复制代码
Apple is a Fruit
banana is a fruit too
CHERRY is delicious
Kiwi is a healthy fruit

如果你想搜索包含 "fruit" 的行,不区分大小写,执行:

Objective-C++ 复制代码
grep -i "fruit" example.txt

输出结果为:

Objective-C++ 复制代码
Apple is a Fruit
banana is a fruit too
Kiwi is a healthy fruit

这样即使单词的大小写不同,只要包含 "fruit" 这个模式,该行就会被匹配出来。

12.find命令

搜索文件和目录

PowerShell 复制代码
find /path -name "filename" 在目录中搜索指定文件名
find /path -type d -name "directoryname" 搜索特定名称目录
find /path -mtime -2 搜索最近两天内修改的文件

常用选项

  1. find /path -name "filename" 在目录中搜索指定文件名
  • 假设你有一个目录/home/user/documents,其中有多个文件,包括report.txtnotes.pdfimage.jpg等。如果你想查找名为report.txt的文件,可以使用以下命令:
PowerShell 复制代码
find /home/user/documents -name "report.txt"
执行后,如果`report.txt`存在于该目录或其子目录中,就会显示其路径。例如,如果`report.txt`在`/home/user/documents`目录下,输出`/home/user/documents/report.txt`。
  1. find /path -type d -name "directoryname" 搜索特定名称目录
  • 例如,在/home/user目录下有多个子目录,如musicvideosprojects等。如果你想查找名为projects的目录,可以这样操作:
PowerShell 复制代码
find /home/user -type d -name "projects"

projects目录存在,输出/home/user/projects

  1. find /path -mtime -2 搜索最近两天内修改的文件
  • 假设/var/log目录下有很多日志文件,你想找出最近两天内修改过的日志文件,可以执行:
PowerShell 复制代码
find /var/log -mtime -2

执行后,会列出/var/log目录及其子目录下所有在最近两天内被修改过的文件及其路径。例如,输出/var/log/auth.log/var/log/syslog等(如果这些文件在最近两天内被修改过)。

相关推荐
钟离墨笺10 分钟前
【网络协议】【http】【https】AES-TLS1.2
linux·计算机网络·http·https
糯米汤圆~10 分钟前
MySQL备份案例: mysqldump+binlog实现完全+增量备份
linux·运维·数据库·mysql
-耿瑞-26 分钟前
ToDesk设置临时密码和安全密码都可以当做连接密码使用
运维·服务器·安全
ke_wu28 分钟前
网络IO与IO多路复用
linux·服务器·开发语言·网络·c++
m0_7482394738 分钟前
PostgreSQL在Linux环境下的常用命令总结
linux·postgresql·oracle
fanged1 小时前
LDD3学习8--linux的设备模型(udev)
linux
ccnnlxc1 小时前
日志收集Day001
运维·云原生
黄团团2 小时前
Redis超详细入门教程(基础篇)
服务器·数据库·redis·缓存
镭速2 小时前
服务器下发任务镭速利用变量实现高效的大文件传输效率
运维·服务器
kongba0072 小时前
运行fastGPT 第一步 安装Ubuntu Server 20.04 LTS 对系统做初始化配置
linux·运维·ubuntu