前言
介绍一些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手册:
yum install -y man-pages
新建文件
touch test.c
nano Linux环境下的记事本
打开文件并写入
nano test.c
ctrl+X→回车,保存并退出后,查看文件内容
cat test.c
3.ls命令
ls命令用于列出目录内容
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拷贝目录
拷贝文件
cp 源文件 目标文件
拷贝目录
cp -r 源目录 目标目录
常用的选项
6.cat命令
链接和显示文件内容
链接和显示文件内容
cat file1 显示文件内容
cat file1 file2 合并 并 显示多个文件内容
这里用了cat 命令查看文件内容 检验cp命令是否成功
7.touch命令
touch 命令除了可新建文件还可更新文件的时间
touch existingfile.txt
这将把existingfile.txt
的修改时间和访问时间更新为当前时间。
当文件已经存在时,touch
命令可以更新文件的时间戳。文件有三个主要的时间戳:
-
访问时间(atime):文件最后一次被访问的时间。
-
修改时间(mtime):文件内容最后一次被修改的时间。
-
状态更改时间(ctime):文件的元数据(如权限、所有者等)最后一次被修改的时间。
touch
命令主要更新文件的修改时间(mtime)和访问时间(atime)。
常用选项表
修改为指定时间
还可以使用touch
命令将文件的时间戳修改为指定的时间。例如,将文件的时间戳修改为 2025 年 1 月 1 日 12:00:00,可以使用以下命令:
touch -t 202501011200.00 existingfile.txt
这里,-t
选项后面的时间戳格式为 [[CC]YY]MMDDhhmm[.ss]
,其中:
-
CC
表示世纪(可省略) -
YY
表示年份 -
MM
表示月份 -
DD
表示天 -
hh
表示小时 -
mm
表示分钟 -
ss
表示秒
仅修改访问时间
更新文件的访问时间而不更新修改时间,可以使用-a
选项:
touch -a existingfile.txt
仅修改修改时间
更新文件的修改时间而不更新访问时间,可以使用-m
选项:
touch -m existingfile.txt
使用参考文件的时间戳
使用-r
选项将一个文件的时间戳设置为另一个文件的时间戳。例如,将file1.txt
的时间戳设置为file2.txt
的时间戳:
touch -r file2.txt file1.txt
用ls -l 命令可查看文件时间信息
Jan 12 15:18就是文件的修改时间。
8.mv命令
mv oldname newnanme 重命名目录或文件
mv file new/directory 移动文件到新目录
移动文件到新目录,file是文件或目录名, new/directory是目标目录
mv
命令的基本语法是 mv [源文件或目录] [目标目录]
如果file
是文件,new/directory
是目标目录,确保new/directory
存在,否则会将file
重命名为new/directory
如果new/directory
目录不存在,你可以先创建目录,再移动文件
mkdir -p new/directory
mv example.txt new/directory
常用选项
重命名
主目录下的目录class重命名为lesson
移动
主目录下文件test.和test.c移动到目录lesson中
使用相对路径 ./lesson
9.tail命令
显示文件的最后几行
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命令
显示文件的前几行。
head file 显示文件的前10行
head -n 20 file 显示文件的前20行
head -c 显示前几字节
11.grep命令
搜索文本中的模式
grep "pattern" file 在文件中搜索包含特式模式的行
grep -r "pattern" directory 在目录中搜索包含特式模式的行
grep -i "pattern" file 忽略大小写索包含特式模式的行
常用选项
grep "pattern" file
在文件中搜索包含特定模式的行
假设你有一个名为example.txt
的文件,内容如下:
apple is a fruit
banana is a fruit too
cherry is delicious
kiwi is a healthy fruit
如果你想在example.txt
中搜索包含 “fruit” 的行,在终端执行:
grep "fruit" example.txt
输出结果为:
apple is a fruit
banana is a fruit too
kiwi is a healthy fruit
grep -r "pattern" directory
在目录中搜索包含特定模式的行
设你有一个名为documents
的目录,其结构如下:
documents/
├── file1.txt
├── file2.txt
└── subdir
└── file3.txt
其中file1.txt
的内容是:
This is the first file.
It contains some text about cats.
file2.txt
的内容是:
The second file has information about dogs.
Dogs are great pets.
subdir/file3.txt
的内容是:
This is a file in subdirectory.
It talks about birds.
如果你想在documents
目录及其子目录下所有文件中搜索包含 “animals” 相关的内容,执行:
grep -r "animal" documents
因为这些文件中并没有 “animal” 这个词,所以没有输出。若搜索 “dogs”,则会输出:
documents/file2.txt:The second file has information about dogs.
documents/file2.txt:Dogs are great pets.
grep -i "pattern" file
忽略大小写搜索包含特定模式的行
还是以example.txt
文件为例,内容如下:
Apple is a Fruit
banana is a fruit too
CHERRY is delicious
Kiwi is a healthy fruit
如果你想搜索包含 “fruit” 的行,不区分大小写,执行:
grep -i "fruit" example.txt
输出结果为:
Apple is a Fruit
banana is a fruit too
Kiwi is a healthy fruit
这样即使单词的大小写不同,只要包含 “fruit” 这个模式,该行就会被匹配出来。
12.find命令
搜索文件和目录
find /path -name "filename" 在目录中搜索指定文件名
find /path -type d -name "directoryname" 搜索特定名称目录
find /path -mtime -2 搜索最近两天内修改的文件
常用选项
- find /path -name “filename” 在目录中搜索指定文件名
- 假设你有一个目录
/home/user/documents
,其中有多个文件,包括report.txt
、notes.pdf
、image.jpg
等。如果你想查找名为report.txt
的文件,可以使用以下命令:
find /home/user/documents -name "report.txt"
执行后,如果`report.txt`存在于该目录或其子目录中,就会显示其路径。例如,如果`report.txt`在`/home/user/documents`目录下,输出`/home/user/documents/report.txt`。
- find /path -type d -name “directoryname” 搜索特定名称目录
- 例如,在
/home/user
目录下有多个子目录,如music
、videos
、projects
等。如果你想查找名为projects
的目录,可以这样操作:
find /home/user -type d -name "projects"
若projects
目录存在,输出/home/user/projects
。
- find /path -mtime -2 搜索最近两天内修改的文件
- 假设
/var/log
目录下有很多日志文件,你想找出最近两天内修改过的日志文件,可以执行:
find /var/log -mtime -2
执行后,会列出/var/log
目录及其子目录下所有在最近两天内被修改过的文件及其路径。例如,输出/var/log/auth.log
、/var/log/syslog
等(如果这些文件在最近两天内被修改过)。