当前位置: 首页 > news >正文

Linux路径与常用命令

Linux路径与常用命令总结:路径、文件目录操作、输出查看与时间同步

Linux 的很多操作都是围绕“路径”和“文件”展开的。无论是部署服务、修改配置、查看日志,还是后面写 Shell 脚本,都离不开这些基础命令。

这一篇主要整理 Linux 路径问题,以及常用命令:cdpwdmkdirtouchlsmvcprmechocataliasunaliasdatentpdate

路径先搞清楚,命令才不容易敲错。尤其是cpmvrm这类会改动文件的命令,执行前要先确认当前位置和目标路径。

一、先理解 Linux 路径

Linux 里的路径主要分两种:绝对路径和相对路径。

1. 绝对路径

绝对路径就是从根目录/开始写完整路径。

比如:

/root/atguigu /tmp /etc/passwd

它的特点是位置很明确,不管我当前在哪个目录,只要写的是绝对路径,系统都能找到同一个位置。

所以在脚本、配置文件、定时任务里面,尽量使用绝对路径。因为脚本运行时不一定处在你以为的目录,如果用相对路径,可能会找错文件。

2. 相对路径

相对路径是以“当前所在目录”为起点。

常见写法有这几个:

写法含义例子
.当前目录./test.sh
..上一级目录cd ..
目录名/文件名当前目录下的子目录或文件logs/access.log
~当前用户的家目录cd ~

比如我当前在/root/atguigu,执行:

cd../../tmp

意思就是先回到/root/atguigu的上一级/root,再回到/,最后进入/tmp

这个地方刚开始容易绕,最好的办法就是多配合pwd看结果。

二、定位相关命令:cd、pwd、ls

1. cd:切换目录

cd的意思是change directory,就是切换目录。

常用写法:

cd/tmp# 使用绝对路径进入 /tmpcdatguigu# 使用相对路径进入当前目录下的 atguigucd# 回到当前用户家目录cd~# 也是回到当前用户家目录cd..# 回到上一级目录cd-# 回到上一次所在目录

cd -适合在两个目录之间来回切换。比如刚才在/root/atguigu,临时去了/tmp看文件,看完之后执行:

cd-

就能回到上一个目录,不用重新打一遍路径。

2. pwd:查看当前目录

pwdprint work directory,用来显示当前所在目录的完整路径。

pwd

输出示例:

/root/atguigu

Linux 命令行前面通常只显示当前目录名,不一定显示完整路径。如果多个目录下都有同名目录,只看提示符容易判断错位置,这时候就要用pwd确认。

3. ls:查看目录内容

ls用来看当前目录或者指定目录里有什么。

常用选项:

命令作用
ls查看当前目录内容
ls /查看根目录内容
ls -l以详细格式显示
ls -a显示隐藏文件
ls -lh文件大小用 KB、MB 这种方式显示
ls -lt按修改时间排序
ls -Sh按文件大小排序

日常最常用的是:

ls-lah

它能把隐藏文件、权限、大小、时间都列出来,看目录状态比较方便。

4. ls 演示

ls不只是看文件名,配合选项可以看权限、隐藏文件、大小和排序。

# 查看根目录内容[root@atguigu ~]# ls /atguigu bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var# 查看详细信息[root@atguigu ~]# ls -l /总用量20drwxr-xr-x.5root root7561318:09 atguigu lrwxrwxrwx.1root root761015:38 bin ->usr/bin...# 查看所有文件,包括隐藏文件[root@atguigu ~]# ls -a /...atguigu bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var# 详细信息 + 隐藏文件[root@atguigu ~]# ls -al /# 详细信息 + 文件大小易读显示[root@atguigu ~]# ls -lh /# 按修改时间排序[root@atguigu ~]# ll -t /# 按文件大小排序[root@atguigu ~]# ll -Sh /

三、创建文件和目录:mkdir、touch

1. mkdir:创建目录

mkdirmake directory,用来创建目录。

mkdirtest

如果要一次性创建多层目录,需要加-p

mkdir-pa/b/c

不加-p的话,如果中间目录不存在,就会报错:

mkdir: 无法创建目录"a/b/c":没有那个文件或目录

这个报错的意思不是mkdir坏了,而是系统发现aa/b还不存在,所以没法直接创建最里面的c

如果想看到创建过程,可以用:

mkdir-pvx/y/z

2. touch:创建空文件

touch常用来创建空文件。

toucha.txttouchb.txt c.txt

需要注意的是,touch只能创建文件,不能自动创建上级目录。

比如:

touchtest/abc.txt

如果test目录不存在,就会报错:

touch: 无法创建"test/abc.txt":没有那个文件或目录

正确做法是先创建目录,再创建文件:

mkdirtesttouchtest/abc.txt

3. mkdir 和 touch 演示

mkdir创建目录,touch创建文件。touch不会自动创建上级目录。

# 创建单层目录[root@atguigu /]# mkdir atguigu# 直接创建多层目录会失败,因为 a/b 不存在[root@atguigu atguigu]# mkdir a/b/cmkdir: 无法创建目录"a/b/c":没有那个文件或目录# 使用 -p 创建多层目录[root@atguigu atguigu]# mkdir -p a/b/c[root@atguigu atguigu]# cd a/b/c[root@atguigu c]# pwd/atguigu/a/b/c# 创建文件[root@atguigu atguigu]# touch a.txt[root@atguigu atguigu]# touch b.txt c.txt# 目录不存在时,touch 无法创建里面的文件[root@atguigu atguigu]# touch test/abc.txttouch: 无法创建"test/abc.txt":没有那个文件或目录# 正确顺序:先建目录,再建文件[root@atguigu atguigu]# mkdir test[root@atguigu atguigu]# touch test/abc.txt

四、移动、复制、删除:mv、cp、rm

这三个命令很常用,也最容易误操作。

1. mv:移动或重命名

mv有两个主要用途:移动文件、重命名文件。

重命名:

mvabc.txt test.txt

移动到其他目录:

mvtest.txt /tmp/

多个文件移动到同一个目录:

mva.txt b.txt c.txt /tmp/

可以简单理解为:最后一个参数如果是目录,前面的内容就会被移动进去。

2. cp:复制文件或目录

复制文件:

cpa.txt /tmp/

复制目录时不能直接cp 目录 目标路径,需要加-r

cp-ra /tmp/

如果想尽量保留原来的权限、时间等属性,可以用-a

cp-a/atguigu/ ./

生产环境里备份配置文件时,cp -a比普通cp更稳一点,因为它会保留更多原始属性。

3. rm:删除文件或目录

删除文件:

rma.txt

强制删除文件,不提示:

rm-fa.txt

删除目录:

rm-rtest

强制删除目录:

rm-rftest

这里要特别注意,rm -rf没有回收站,删了就是删了。在服务器上执行前,建议先用pwdls确认当前位置,再执行删除命令。

比如删除当前目录下所有.txt文件:

rm-f*.txt

这条命令看起来简单,但如果当前目录判断错了,就可能删错地方。所以删除前先看一眼:

pwdls

4. mv、cp、rm 演示

这三个命令都会改动文件状态,重点看清楚源路径和目标路径。

# 移动文件到家目录[root@atguigu ~]# mv /atguigu/test/abc.txt ~# 重命名文件[root@atguigu ~]# mv abc.txt test.txt# 一次移动多个文件或目录到家目录[root@atguigu atguigu]# mv a a.txt b.txt c.txt test x ~# 复制文件[root@atguigu ~]# cp a.txt /atguigu/# 直接复制目录会被略过[root@atguigu ~]# cp a /atguigu/cp: 略过目录"a"# 复制目录要加 -r[root@atguigu ~]# cp -r a /atguigu/# 完整复制目录并尽量保留属性[root@atguigu ~]# cp -a /atguigu/ ./# 删除文件,有提示[root@atguigu ~]# rm a.txtrm:是否删除普通空文件"a.txt"?y# 删除目录需要 -r[root@atguigu ~]# rm -r a# 强制删除目录,不提示[root@atguigu ~]# rm -rf x# 删除所有 txt 文件[root@atguigu ~]# rm -f *.txt

rm -rf执行后不会进回收站。实际操作服务器时,删除前先确认:

pwdls

五、输出和查看文件:echo、cat

1. echo:输出内容

echo可以在终端输出文本,也可以输出变量。

echoHelloWorldecho$PATH

常用选项:

命令作用
echo -n输出后不换行
echo -e\n\t这类转义符生效

例子:

echo-e"Hello\nWorld"

输出:

Hello World

echo还可以配合重定向写文件:

echoHelloWorld>a.txtechoLinux>>a.txt

这里要分清楚:

符号作用
>覆盖写入,原文件内容会被清空
>>追加写入,内容加到文件末尾

写脚本时这个点很重要。比如日志一般用>>追加,不能随便用>覆盖。

2. 在 echo 里执行命令

如果直接写:

echo"当前时间:date"

输出的就是普通文字date,不会执行date命令。

要执行命令,需要写成:

echo"当前时间:$(date)"

也可以用反引号:

echo当前时间:`date`

更推荐$(date),因为嵌套命令时可读性更好。

3. echo 演示

echo可以输出文本、变量,也可以把内容写入文件。

# 输出文本[root@atguigu ~]# echo HelloWorldHelloWorld# 输出环境变量[root@atguigu ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin# 不换行输出[root@atguigu ~]# echo -n HelloWorldHelloWorld[root@atguigu ~]## 使用 -e 识别转义字符[root@atguigu ~]# echo -e "Hello\tWorld"Hello World[root@atguigu ~]# echo -e "Hello\nWorld"Hello World# 输出连续数据[root@atguigu ~]# echo {a..z}a b c d e f g h i j k l m n o p q r s t uvw x y z[root@localhost ~]# echo {1..100..3}147101316192225283134374043464952555861646770737679828588919497100# > 覆盖写入[root@atguigu ~]# echo HelloWorld > a.txt[root@atguigu ~]# cat a.txtHelloWorld# >> 追加写入[root@atguigu ~]# echo HelloWorld >> a.txt[root@atguigu ~]# cat a.txt你好世界 HelloWorld

echo中执行命令,需要使用$(命令)或反引号。

# date 不会被执行,只会当普通字符串[root@atguigu ~]# echo "当前时间:date"当前时间:date# 使用 $(date) 执行 date 命令[root@atguigu ~]# echo "当前时间:$(date)"当前时间:2025年 06月13日 星期五20:17:12 CST# 反引号也可以[root@localhost ~]# echo 当前时间:`date`当前时间:2026年 06月23日 星期二14:25:59 CST

4. cat:查看文件内容

cat用来查看文件内容。

cat/etc/passwd

显示行号:

cat-n/etc/passwd

合并多个文件输出:

cata.txt b.txt

把多个文件合并到一个新文件:

cata.txt b.txt>c.txt

不过如果文件很大,不建议直接用cat一把梭刷屏,后面可以用lesstail这些命令慢慢看。

5. cat 演示

cat可以查看文件,也可以把多个文件连接起来输出。

# 查看文件内容[root@atguigu ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin...# 显示行号[root@atguigu ~]# cat -n /etc/passwd1root:x:0:0:root:/root:/bin/bash2bin:x:1:1:bin:/bin:/sbin/nologin3daemon:x:2:2:daemon:/sbin:/sbin/nologin...# 合并显示两个文件[root@atguigu ~]# cat a.txt b.txt111111111112222222222233333333333aaaaaaaaaaa bbbbbbbbbbb ccccccccccc# 合并结果写入 c.txt[root@atguigu ~]# cat a.txt b.txt > c.txt

六、alias 和 unalias:给命令起别名

alias可以给命令设置别名。

比如创建多层目录时经常用:

mkdir-pv

可以设置别名:

aliasmkdir='mkdir -pv'

查看当前所有别名:

alias

查看某一个别名:

aliasmkdir

取消别名:

unaliasmkdir

需要注意,直接在命令行里设置的别名是临时的,重新登录后就没了。

如果想长期生效,可以写进当前用户的~/.bashrc

vim~/.bashrc

添加:

aliasmkdir='mkdir -pv'

让配置立即生效:

source~/.bashrc

1. alias 和 unalias 演示

alias可以给复杂命令设置别名,unalias用来取消别名。

# 设置临时别名[root@atguigu ~]# alias mkdir='mkdir -pv'# 查看所有别名[root@atguigu ~]# aliasaliascp='cp -i'aliasll='ls -l --color=auto'aliasls='ls --color=auto'aliasmkdir='mkdir -pv'aliasmv='mv -i'aliasrm='rm -i'# 查看某个别名[root@atguigu ~]# alias mkdiraliasmkdir='mkdir -pv'# 取消别名[root@atguigu ~]# unalias mkdir[root@atguigu ~]# alias mkdir-bash: alias: mkdir: 未找到

临时别名重登后会失效。需要长期生效,可以写入~/.bashrc,然后执行:

source~/.bashrc

七、时间相关命令:date、ntpdate

1. date:查看和设置时间

查看当前时间:

date

按指定格式输出日期:

date+%Fdate+%Y-%m-%d

按指定格式输出时间:

date+%Tdate+%H:%M:%S

日期和时间一起输出时,中间有空格,要用引号包起来:

date"+%Y-%m-%d %H:%M:%S"date"+%F %T"

如果不加引号,系统会把后面的%H:%M:%S当成多出来的参数,就会报错。

查看昨天日期:

date-d"-1 day"+%F

设置系统时间:

date-s"20250607 14:36:03"

服务器时间不要乱改,很多服务都依赖时间,比如日志排序、证书校验、定时任务、数据库同步等。

2. ntpdate:同步网络时间

ntpdate用来和时间服务器同步时间。

比如同步阿里云时间服务器:

ntpdate ntp1.aliyun.com

查看当前时区:

timedatectl status

设置上海时区:

timedatectl set-timezone Asia/Shanghai

这部分对运维来说很重要。服务器时间不准,排查故障时日志时间会对不上,甚至有些服务会因为时间偏差过大而认证失败。

3. date 和 ntpdate 演示

date用来查看或设置系统时间,ntpdate用来同步网络时间。

# 查看当前时间[root@atguigu log]# date2025年 06月14日 星期六 08:31:12 CST# 只显示日期[root@atguigu log]# date +%F2025-06-14# 只显示时间[root@atguigu log]# date +%T08:33:30# 日期和时间中间有空格,必须加引号[root@atguigu log]# date +%Y-%m-%d %H:%M:%Sdate: 额外的操作数"%H:%M:%S"Try'date --help'formoreinformation.[root@atguigu log]# date "+%Y-%m-%d %H:%M:%S"2025-06-14 08:35:20# 查看昨天日期[root@atguigu log]# date -d "-1 day" +%F2025-06-13# 设置系统时间[root@atguigu log]# date -s "20250607 14:36:03"2025年 06月 07日 星期六14:36:03 CST# 同步阿里云时间服务器[root@atguigu log]# ntpdate ntp1.aliyun.com17Jun14:49:17 ntpdate[2862]: steptimeserver116.62.13.223 offset106359059.822348sec# 查看时区[root@atguigu log]# timedatectl statusLocal time: 二2025-06-1715:00:39 CST Universal time: 二2025-06-17 07:00:39 UTC Time zone: Asia/Shanghai(CST, +0800)NTP enabled:yesNTP synchronized:yes# 设置上海时区[root@atguigu log]# timedatectl set-timezone Asia/Shanghai

八、常见易错点汇总

易错点正确理解
touch test/abc.txt报错test目录不存在,要先mkdir test
mkdir a/b/c报错多层目录要使用mkdir -p a/b/c
cp a /tmp/略过目录复制目录要加-r-a
rm a无法删除目录删除目录要加-r
date +%Y-%m-%d %H:%M:%S报错格式中有空格,要加引号
echo "当前时间:date"不执行命令要写成echo "当前时间:$(date)"
>>>混用>是覆盖,>>是追加
命令行设置alias后重登失效要写入~/.bashrcsource ~/.bashrc
http://www.jsqmd.com/news/1075594/

相关文章:

  • 推荐一个开箱即用的.NET权限管理平台:Magic.NET
  • NSK内循环高刚性滚珠丝杠ZFD3208技术规格说明
  • Mythos解析:LLM推理校准框架与受控发布实践指南
  • 深圳线束热缩白皮书2026:产能800到1500跃升
  • MoE工程实战:从门控路由到All-to-All通信的全栈优化
  • 2026网盘文件批量解析实测:网盘直链解析助手依然不限速!
  • 重新定义下载体验:qBittorrent搜索插件一站式解决方案
  • 1flowbase模板:一键导入升级GLM5.2,deepseek 多模态
  • 如何用PotplayerPanVideo免费播放云盘视频:3个核心技巧解锁高清体验
  • 多款办公及演示类工具功能与适用场景汇总
  • NoFences桌面分区工具:开源免费的Windows桌面整理终极解决方案
  • 今天讲点基础知识,进程、线程、管程三者的区别和关系?
  • MuseTalk 1.5:突破性实时唇同步AI的深度技术解析与实战指南
  • 如何设计一个生产级 Doris 数据录入组件
  • 意甲幻想足球xP预测:轻量级机器学习实战指南
  • 深入 JDBC 数据库连接原理:获取数据库连接
  • 生物识别检验系统设计方案
  • 九大网盘直链下载助手:让你的下载速度飞起来
  • 终极小说下载神器:novel-downloader一键下载全网100+小说网站完整指南
  • KMS智能激活方案:如何一键解决Windows和Office激活难题
  • 背景:我们为什么要使用AI编码?
  • 终极指南:5分钟创建万能启动U盘,Ventoy让你告别重复格式化烦恼
  • AI音乐跨风格重编曲工具全解析:合规改编与自然风格切换指南
  • AI认证不是速成票:三门高价值在线课的实操跃迁指南
  • 豆包月费500,DeepSeek打骨折:定价逻辑裂了
  • 【应用方案】一文搞定!压电马达核心技术、驱动流程与国产芯片配套方案详解
  • 植物叶片病害识别:小样本迁移学习与边缘端轻量化部署实战
  • AI时代漏洞管理困境:从海量告警到风险驱动的自适应安全体系
  • QuickRecorder终极指南:免费开源macOS屏幕录制神器
  • 批量下载SCIE论文并导入至zotero中