基础命令
开启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天以内修改的文件