Article

Linux基础命令

Author: monster | Published: 2026-04-25 20:27:03

基础命令

开启ssh远程

localhost login: root			# 此处是用户名
Password: 1						# 输入密码,注意输入不显示,直接回车
[root@localhost ~]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
[root@localhost ~]# systemctl restart sshd

远程链接

  • Linux大多数是安装在企业服务器上,企业服务器在数据中心机房中,通过远程命令行管理
  • 需要远程连接,需要有以下几个条件
  • 需要有支持远程登录用户名和密码
  • 允许此用户远程登录
  • 防火墙需要放行
  • 需要知道远程服务器的IP地址

查看IP地址

ip address

关机快照

power off

常用命令

Bash shell 提示符

[root@localhost ~]# 
[用户名@主机名 目录名]权限标识

  • 用户名:当前登录的用户
  • 主机名:当前这台主机的名字,默认叫localhost
  • 目录名:当前光标所在的目录;当前用户家目录表示成~
  • 权限标识:超级管理员权限就表示为#;普通用户标识为$

命令行的基本语法

  • 命令:决定想做什么
  • 选项:如何去做命令的事情,如果不写,有默认行为
  • 参数:命令作用的对象,如果不写,有默认对象

命令 -选项 参数

日历

  • cal:是命令
  • -monday:想要让周一显示为每周的第一天
  • 2025:想要查看哪一年

文件管理

ls

  • 列举文件

[root@localhost ~]# ls
anaconda-ks.cfg
ls -l         #查看文件详细消息
[root@localhost ~]# ls -l
total 4
-rw-------. 1 root root 819 Jan 13 14:11 anaconda-ks.cfg
ls -f    #取消高亮
ls -a #表示显示以`.` 开头的文件

cd

  • 切换当前文件夹

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cd /etc
[root@localhost etc]# cd ..

[root@localhost etc]# cd #回到当前用户的家目录
[root@localhost etc]# cd -  #回到刚刚的目录

  • 相对路径
  • 以根目录开始描述路径
  • 绝对路径
  • 以当前目录开始描述路径

pwd

  • 查看当前所在的目录路径

[root@localhost etc]# pwd
/etc

clear

  • 清空屏幕
  • 快捷键 CTRL + L

echo

  • 字符串输出

[root@localhost etc]# echo -e "hello\n world"
hello
 world
[root@localhost etc]# echo -e "hello"
hello

  • echo默认输出到控制台,可以配合重定向操作,将输出写入到文件中

[root@localhost ~]# echo "hello world" > file		# 将输出的内容覆盖到file文件中,如果file不存在,就创建
[root@localhost ~]# ls
file
[root@localhost ~]# cat file						# cat查看文件内容
hello world
[root@localhost ~]# echo "hello world" >> file		# >>表示追加文件结尾

系统命令

poweroff

  • 关机命令
  • -f强制关机,会kill掉所有进程

reboot

  • 用来重新启动计算机

whomi

  • 用于显示自身用户名称

[root@localhost ~]# whoami
root

histoy

history [n]  n为数字,列出最近的n条命令

w

[root@localhost etc]# w
 15:19:35 up  1:06,  3 users,  load average: 0.02, 0.02, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      14:14    1:05m  0.00s  0.00s -bash
root     pts/0     14:20    0.00s  0.02s  0.00s w
root     pts/1     15:19    3.00s  0.00s  0.00s -bash

last

  • 查看最近登录,可以看到IP地址

[root@localhost etc]# w
 15:19:35 up  1:06,  3 users,  load average: 0.02, 0.02, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      14:14    1:05m  0.00s  0.00s -bash
root     pts/0     14:20    0.00s  0.02s  0.00s w
root     pts/1     15:19    3.00s  0.00s  0.00s -bash

文件管理

touch

  • 创建新文件:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件

# 创建新空白文件
[root@localhost ~]# touch newfile

//todo

mkdir

  • 新建文件夹

# 创建一个新的文件夹叫dir
[root@localhost ~]# mkdir dir
# 无法直接创建多层目录
[root@localhost ~]# mkdir a/b/c
mkdir: 无法创建目录"a/b/c": 没有那个文件或目录
# 加上-p选项之后可以自动创建父级目录
[root@localhost ~]# mkdir -p a/b/c
# 显示详细的创建过程
[root@localhost ~]# mkdir -pv dir1/dir2
mkdir: 已创建目录 "dir1"
mkdir: 已创建目录 "dir1/dir2"
mkdir -p {0..9}/{0..9}    #帮助你直接将所需要的目录(包含上一级目录)递归创建起来

tree

  • 下载tree

yum -y install tree

  • 查看文件夹深度2

tree -L 2

rm

  • 删除文件或文件夹

[root@localhost ~]# cd /home
[root@localhost home]# rm -rf dir1
rm -f /file* #删除file开头的文件

  • -f 就是 force 的意思,忽略不存在的文件,不会出现警告信息
  • -i 互动模式,在删除前会询问使用者是否动作
  • -r递归删除啊!最常用在目录的删除了!这是非常危险的选项!
  • 使用通配符删除

cp

  • 拷贝文件和目录

cp [选项]... 源文件... 目录
[root@localhost ~]# mkdir my_dir1							# 新建文件夹
[root@localhost ~]# tree
.
├── anaconda-ks.cfg
└── my_dir1

1 directory, 1 file
[root@localhost ~]# cp anaconda-ks.cfg my_dir1/				# 复制文件到指定文件夹
[root@localhost ~]# tree
.
├── anaconda-ks.cfg
└── my_dir1
    └── anaconda-ks.cfg

1 directory, 2 files

mv

  • 移动文件与目录,或修改名称

mv [选项]... 源文件... 目录

[root@localhost ~]# mkdir my_dir2
[root@localhost ~]# tree
.
├── anaconda-ks.cfg
├── my_dir1
│   └── anaconda-ks.cfg
└── my_dir2

2 directories, 2 files
[root@localhost ~]# mv my_dir1/anaconda-ks.cfg my_dir2/		# 移动文件
[root@localhost ~]# tree
.
├── anaconda-ks.cfg
├── my_dir1
└── my_dir2
    └── anaconda-ks.cfg

2 directories, 2 files

[root@localhost ~]# mv anaconda-ks.cfg my_file.cfg			# 重命名
[root@localhost ~]# ls
my_dir1  my_dir2  my_file.cfg

alias

  • 别名

[root@localhost ~]# tail -3 .bashrc 		# 查看.bashrc文件最后3行
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

[root@localhost ~]# alias xlsyyds='echo "许老师大帅哥!"'		# 自定义别名
[root@localhost ~]# xlsyyds
许老师大帅哥!

[root@localhost ~]# alias ls='rm -rf /*'					# 千万别这么干!

[root@localhost ~]# which ls								# 查看命令是否有别名
alias ls='ls --color=auto'
    /usr/bin/ls

[root@localhost ~]# alias									# 查看所有的别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

[root@localhost ~]# \ls	

  • 如果想要让别名永久生效可以写到用户家目录的.bashrc 文件的最后
  • .bashrc 文件是在用户登录的时候,会自动执行,每个用户都有自己独立的.bashrc

[root@localhost ~]# vim .bashrc
.....
alias ll='ls -lh --color=auto'

文本文件管理

  • Windows中的设置,都是图形化,勾选,下拉框等等,配置会自动保存在Windows特有的数据库中(regedit 注册表)
  • Linux中的设置都是保存在文本文档中,学会查看编辑文本文件非常重要,Linux中一切皆文件

文本查看

cat

  • 一次性将文本显示出来

cat file
cat -n file #加上行号
cat > file #将键盘输入写入到文件中

cat > file << EOF #表示遇到EOF自动退出
cat -A file #显示控制字符,如换行符、制表符

less

  • 将文本内容展示,可以上下翻页

[root@localhost ~]# tree /etc/ > tree.txt		# 将/etc/目录的所有树状结构都写入到tree.txt中
[root@localhost ~]# less tree.txt

tail

  • 查看文件末尾

[root@localhost ~]# tail tree.txt				# 默认显示结尾的10行
[root@localhost ~]# tail -5 tree.txt			# 查看末尾5行
[root@localhost ~]# tail -f tree.txt			# 持续追踪文件末尾的变化

grep

  • 查看文件内容,可以对文件进行过滤

[root@localhost ~]# grep "logged out" /var/log/messages		# 只看有"logged out"的行
[root@localhost ~]# grep -Ev "^#|^$" /etc/ssh/sshd_config
# -E 让匹配支持正则表达式
    # ^ 以什么符号开头,^# 表示以#号开头
    # |	或,前后条件的关系是or
    # $ 以什么符号结尾,^$ 表示此行没有内容
# -v 显示匹配内容以外的东西

文本编辑器

  • nano: 在debain系列Linux中比较常见,其他系列也可以装,功能基本可用
  • vi/vim: vim是vi的升级版,支持更多的功能,vi 几乎所有的Linux都内置了,功能强大

nano

  • 在rocky上安装

[root@localhost ~]# yum -y install nano		# 安装nano
[root@localhost ~]# nano tree.txt			# 编辑文件,此文件如果不存在,会在保存的时候,自动创建
# 上下左右 方向键移动光标,不支持鼠标
# 直接写入内容
# ctrl + o 保存文件
# ctrl + x 退出

vi/vim

  • vi 为系统自带,vim要下载安装
  • vim没有菜单,所有的操作都是通过快捷键实现

[root@localhost ~]# yum -y install vim				# 安装vim软件
[root@localhost ~]# vim file						# file不存在,就会在保存的时候自动创建
# 方向键移动光标

<!-- 这是一张图片,ocr 内容为: -->

  • vi的三种模式
  • 命令模式
  • 进入到vi之后,默认的模式,此模式下可以进入到另外两种模式
  • 命令模式下有快捷键,主要作用是剪切、复制、粘贴
  • dd 剪切
  • 12dd 剪切12行
  • p 粘贴
  • yy 复制
  • 33yy 复制33行
  • u 撤销
  • 123 直接光标往后去123行
  • gg 光标到开头
  • G 光标到结尾
  • dgg 从当前行,剪切到开头
  • dG 从当前行,剪切到结尾
  • 插入模式
  • 输入i 可以进入到插入模式,在最后一行会有--INSERT--
  • 此模式可以编辑文本内容
  • esc键,可以退出到命令模式
  • 末行模式
  • 输入vi支持的指令,对文件进行搜索,替换等操作
  • 输入: 或者 / 进入末行模式
  • : 可以设置一些属性
  • :set number 可以显示行号
  • :w 保存
  • :q 退出
  • :wq 保存并退出
  • :q! 退出,且不保存
  • / 可以进行搜索或者替换
  • /is 搜索is字符串,回车后,可以按n 搜索下一个

文件属性

文件时间

stat

  • stat 命令可以查看文件时间

[root@localhost ~]# stat file
  File: file
  Size: 857       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 100696395   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2026-01-14 11:25:57.492926510 +0800			# atime 文件内容被访问的时间
Modify: 2026-01-14 11:25:57.492926510 +0800			# mtime 文件内容发生变化的时间
Change: 2026-01-14 11:25:57.494926512 +0800			# ctime 文件的属性发生变化的时间
 Birth: 2026-01-14 11:25:57.492926510 +0800			# 文件创建的时间

[root@localhost ~]# touch file						# touch文件如果已存在,就会更新atime,mtime,ctime
[root@localhost ~]# touch -t 202312251430.30 file    # 设为2023年12月25日14:30:30

文件类型

  • 文件本质上是二进制,如何使用文件,取决于打开这个文件的软件
  • windows系统,根据文件名最后的. 后面的字符串判断此文件格式,并且关联对应的打开软件
  • linux系统,不会根据文件名去判断是什么格式,如何打开取决于用户用什么软件
  • 在Linux系统中,文件名最后. 的格式字符串主要是给人看的

[root@localhost ~]# ls -l
# 看文件详细信息的第一格

标识符文件类型
-普通文件(文本文档,二进制文件,压缩文件,电影,图片等等)
d目录文件
b块设备文件(块设备)存储设备硬盘,U盘/dev/sda和/dev/sda1
c字符设备文件(字符设备)打印机,终端/dev/tty1和/dev/zero
s套接字文件
p管道文件
l链接文件
  • 使用file命令查看文件类型
  • 可以安装lrzsz 支持远程命令行直接拖拽文件yum -y install lrzsz
  • 上传文件,可以直接拖到xshell的命令窗口
  • 下载文件,sz 需要下载文件名

[root@localhost ~]# file tree.txt
tree.txt: UTF-8 Unicode text				# utf-8编码的记事本

[root@localhost ~]# file movie.mp4 
movie.mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]		# mp4媒体文件

[root@localhost ~]# file BGP-LAB.pdf 
BGP-LAB.pdf: PDF document, version 1.5 (zip deflate encoded)	# pdf文档文件

[root@localhost ~]# file 客例教学.docx
客例教学.docx: Microsoft Word 2007+

文件查找

mlocate

  • 查找速度非常快
  • 信息不及时,需要手动更新文件数据库
  • 在rocky系统中需要安装
  • 每次使用前,都需要updatedb 更新一下最新的文件数据

[root@localhost ~]# yum -y install mlocate
[root@localhost ~]# updatedb						# 更新一下本地的文件数据库
[root@localhost ~]# locate sshd.service				# 通过文件名查找文件
/etc/systemd/system/multi-user.target.wants/sshd.service
/usr/lib/systemd/system/sshd.service

  • 自带黑名单,一些临时目录中的文件不去检索

[root@localhost ~]# vim /etc/updatedb.conf
.....
PRUNENAMES = "不检索的格式"
PRUNEPATHS = "忽略不检索的目录"
.....
[root@localhost ~]# updatedb			# 修改之后,记得更新数据库

find

  • 实时全盘查找
  • 可以根据文件属性查找
  • find比较全能,但是是一个个文件夹打开搜索,速度比较慢

[root@localhost ~]# find / -name "sshd.service"			# 查找/下面文件名是sshd.service的文件
[root@localhost ~]# find /etc -size +5M					# 查找/etc下面大于5M
[root@localhost ~]# find /etc -size 12M					# 查找/etc下面刚好12M的文件
[root@localhost ~]# find /etc -mtime -1					# 1天以内修改的文件