Linux命令

Linux系统基础操作命令详解与实践指南

Posted by Wenqin on September 22, 2025

Linux命令

学习Linux命令的技巧:

  • 不需要死记硬背, 对于常用命令, 用的多了, 自然就记住了。
  • 不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到, 临时百度就可以

1. Linux系统的文件和目录

img

Windows系统:可以拥有多个盘符, 如:C盘、D盘、E盘

Linux:没有盘符这个概念, 只有一个根目录, 所有文件都在它下面

img

/bin: 二进制命令所在的目录

/boot : 系统引导程序所需要的文件目录,引导系统开机

/dev :设备软件目录,磁盘,光驱,

/etc: 系统配置,启动程序

/home:普通用户的家,目录默认数据存放目录

/lib: 启动系统和运行命令所需的共享库文件和内核模块存放

/mnt:临时挂载储存设备的挂载点,u盘插入光驱无法使用,需要挂载然后使用

/opt:额外的应用软件包

/proc:操作系统运行时,进程信息和内核信息存放在这里

/root:Linux超级权限用户root的家目录

/sbin:和管理系统相关的命令,【超级管理员用】

/tmp:临时文件目录,这个目录被当作回收站使用

/usr:用户或系统软件应用程序目录

/var:存放系统 日志的目录

注意:一般不要 操作 非自己创建的目录和文件,否则可能导致服务器崩溃。

对Linux来讲,一切皆为文件。

2. 终端命令使用技巧

2.1 命令使用格式

终端命令格式:

1
command  [-options]  [parameter]

示例:

1
ls -a /root

说明:

  • command : 命令名, 相应功能的英文单词或单词的缩写
  • [-options] : 选项, 可用来对命令进行控制, 也可以省略
  • parameter : 传给命令的参数, 可以是 零个、一个 或 多个

2.2 命令使用技巧

A、自动补全

  • 在敲出 文件/目录/命令 的前几个字母之后, 按下 tab键

  • 如果还存在其他 文件/目录/命令, 再按一下tab键, 系统会提示可能存在的命令

img

B、曾经使用过的命令

  • 使用 上/下 光标键可以在曾经使用过的命令之间来回切换
  • 如果想要退出选择, 并且不想执行当前选中的命令, 可以按ctrl+c

2.3 查阅命令帮助信息

help命令

因为一个命令有很多可选项, 死记硬背肯定不行, 所以需要借助手册查阅

命令格式: command --help

示例:

1
 ls --help
  • 说明: 显示 command 命令的帮助信息

  • 缺点: 虽然可以查询命令的帮助信息, 但是没有提供 翻页、搜索功能

man命令

命令格式: man command

示例:

1
man  ls
  • 说明: 查询command命令的使用手册

man, 是Linux提供的一个手册, 包含了绝大部分的命令、函数的详细使用说明

使用man命令时的操作键:

操作键 功能
空格键 显示手册的下一屏
Enter键 一次滚动首页也得一行
b 回滚一屏
f 前滚一屏
q (quit) 退出
/word 搜索word字符串
n (next) 搜索下一个
N 搜索上一个

提醒:

  • 现阶段只需要知道通过以下两种方式可以查询命令的帮助信息

  • 先学习掌握常用命令的使用即可, 工作中如果遇到问题可以借助 网络搜索

3. 基础入门命令

在Linux中,”一切皆文件”。

命令行是我们与系统交互的主要方式,而文件和目录操作是基础中的基础。想象一下,你需要处理银行每日的海量交易流水文件、信贷审批的申请文档、风险模型的配置文件,都需要熟练地在文件系统中穿梭。

定位 - pwd命令

当你打开一个终端时,你总是位于某个目录中,这个目录被称为”当前工作目录” (Present Working Directory)。pwd 命令用于显示你当前所在的完整路径。

  • 语法: pwd [选项] (通常不需要选项)

  • 示例:

    1
    2
    
    [bigdata@node1 ~]$ pwd
    /home/bigdata
    
    • 输出解析: /home/bigdata 是用户 bigdata 的”家目录” (Home Directory)。Linux系统中,普通用户的家目录通常在 /home 下以其用户名命名。root 用户的家目录是 /root
  • 路径说明:

    • /: 代表根目录,是整个Linux文件系统的顶级起点。
    • /home: 存放普通用户家目录的地方。
    • /home/bigdata: bigdata 用户的家目录。
    • 应用场景: “我需要确认我现在是不是在存放今天待处理的征信报告的目录下,执行 pwd 看看。”

切换路径 - cd 命令

cd (Change Directory) 命令用于切换当前工作目录。

  • 语法: cd [目标目录路径]

  • 常用目标路径:

    • 绝对路径: 从根目录 / 开始的完整路径。例如: cd /var/log
    • 相对路径: 相对于当前目录的路径。例如: 如果当前在 /home/bigdata,想进入其下的 documents 目录,可以使用 cd documents
    • . (一个点): 代表当前目录。例如: cd ./documents (通常 ./ 可省略)。
    • .. (两个点): 代表上级目录。例如: 如果当前在 /home/bigdata/documents,执行 cd .. 会回到 /home/bigdata
    • ~ (波浪号): 代表当前用户的家目录。例如: 无论当前在哪里,执行 cd ~cd (不带参数) 都会回到 /home/bigdata (对于 bigdata 用户)。
    • - (减号): 代表上一次所在的目录。方便在两个目录间快速切换。
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    [bigdata@node1 ~]$ pwd
    /home/bigdata
      
    [bigdata@node1 ~]$ cd /var/log  # 切换到系统日志目录 (绝对路径)
    [bigdata@node1 log]$ pwd
    /var/log
      
    [bigdata@node1 log]$ cd ..       # 切换到上级目录 /var
    [bigdata@node1 var]$ pwd
    /var
      
    [bigdata@node1 var]$ cd /home/bigdata/ # 切换回家目录 (绝对路径)
    [bigdata@node1 ~]$ pwd
    /home/bigdata
      
    [bigdata@node1 ~]$ mkdir test_dir # 创建一个测试目录 (后面会讲 mkdir)
    [bigdata@node1 ~]$ cd test_dir    # 切换到测试目录 (相对路径)
    [bigdata@node1 test_dir]$ pwd
    /home/bigdata/test_dir
      
    [bigdata@node1 test_dir]$ cd ~       # 切换回家目录 (波浪号)
    [bigdata@node1 ~]$ pwd
    /home/bigdata
      
    [bigdata@node1 ~]$ cd /etc        # 切换到配置目录
    [bigdata@node1 etc]$ pwd
    /etc
      
    [bigdata@node1 etc]$ cd -         # 切换回上一次的目录 (/home/bigdata)
    /home/bigdata
    
  • 应用场景:

    • “切换到存放每日交易数据的目录: cd /data/bank/transactions/20250404
    • “处理完数据,回到我的工作主目录: cd ~
    • “刚才在看配置文件,现在回去刚才的数据目录: cd -
  • 技巧:Tab 键可以自动补全目录和文件名,极大提高效率!输入 cd /va 然后按 Tab,可能会补全为 cd /var/

查看目录内容 - ls 命令

ls (List) 命令用于列出目录中的文件和子目录。这是最常用的Linux命令之一。

  • 语法: ls [选项] [文件或目录路径...] (如果不指定路径,则列出当前目录内容)

  • 常用选项:

    • -l: (long format) 长格式显示,包含文件类型、权限、所有者、大小、修改时间等详细信息。非常常用!
    • -a: (all) 显示所有文件,包括以 . 开头的隐藏文件(Linux中以点开头的文件默认是隐藏的)。
    • -h: (human-readable) 与 -l 结合使用,以人类可读的格式显示文件大小 (例如 K, M, G)。非常常用!
    • -t: 按修改时间排序,最新的在前。
    • -r: (reverse) 反向排序(可以和 -t 结合按时间倒序)。
    • -d: 如果参数是目录,只显示目录本身的信息,而不是其内容。
    • -R: (recursive) 递归显示子目录的内容。
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    [bigdata@node1 ~]$ ls # 列出当前家目录内容 (可能为空或只有之前创建的 test_dir)
    test_dir
    [bigdata@node1 ~]$ ls -a # 列出所有内容,包括隐藏文件/目录
    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config  .local  test_dir
    # .  代表当前目录
    # .. 代表上级目录
    # 其他 . 开头的是配置文件或缓存
    [bigdata@node1 ~]$ ls -l # 长格式显示
    total 4
    drwxrwxr-x. 2 bigdata bigdata 6 Apr  4 10:00 test_dir
    # 输出解析 (从左到右):
    # drwxrwxr-x.: 文件类型与权限 (d:目录, -:普通文件, l:链接; rwx:读写执行权限; .:SELinux相关)
    # 2            : 硬链接数 (对于目录,通常至少为2)
    # bigdata      : 文件所有者 (User)
    # bigdata      : 文件所属组 (Group)
    # 6            : 文件大小 (字节)
    # Apr  4 10:00 : 最后修改时间
    # test_dir     : 文件/目录名
    [bigdata@node1 ~]$ ls -lh # 人类可读的大小 (这里6字节太小看不出效果)
    total 4.0K
    drwxrwxr-x. 2 bigdata bigdata 6 Apr  4 10:00 test_dir
    [bigdata@node1 ~]$ ls /etc # 列出 /etc 目录的内容 (会很多)
    [bigdata@node1 ~]$ ls -lt /var/log # 按时间顺序列出 /var/log 目录内容 (最新的日志在前)
    [bigdata@node1 ~]$ ls -ld /home/bigdata # 只显示 /home/bigdata 目录本身的信息
    drwx------. 6 bigdata bigdata 136 Apr  4 10:05 /home/bigdata
    
  • 应用场景:

    • “查看今天的交易日志文件详情: ls -lh /data/logs/transactions/tran_20250404.log
    • “列出所有待处理的信贷申请文件,按时间排序: ls -lt /data/credit/pending/
    • “检查数据仓库暂存区目录的权限设置: ls -ld /data/dw/staging

clear: 清除终端屏幕上的所有内容,将提示符移到顶部。

  • 快捷键:Ctrl + L

4. 文件目录管理与内容查看

4.1 文件目录管理命令

在Linux系统中针对文件或目录进行管理:

  1. 创建文件/目录
    • 命令 : touch、mkdir
  2. 复制文件/目录
    • 命令:cp
  3. 移动文件/目录 (重命名)
    • 命令:mv
  4. 删除文件/目录
    • 命令:rm、rmdir

4.1.1 创建文件/目录

创建文件的命令格式: touch 文件

示例:

1
2
3
4
5
6
7
# 测试1: 创建一个不存在的文件
# touch 不存在的文件    # 空白文件
touch  bigdata.txt  

# 测试2:创建一个已存在的文件 
# touch 存在的文件   # 修改文件的末次修改日期
touch  bigdata.txt  

创建目录的命令格式:mkdir 目录

  • mkdir命令常用选项:

    选项 含义
    -p 可以递归创建目录

示例:

1
2
3
4
5
6
# 创建没有层级关系的目录(单层次目录)
mkdir  temp   #在当前目录下创建temp目录
mkdir  /usr/tmp/data   #在/usr/tmp目录下,创建data目录(要求:/usr/tmp目录必须存在) 

# 第二步: 创建 有层级关系的目录(创建多层次目录)
mkdir -p  /root/linux/bigdata/hadoop    # 仅root目录已存在。 创建多层次目录(父目录如果不存在,则会先创建父目录)

4.1.2 删除文件/目录

删除文件的命令格式: rm -rf 文件/目录

示例1:

1
2
# 删除文件 (有提示)
rm /root/bigdata.txt # 删除root目录下的bigdata.txt文件 ( 有提示信息:删除输入y,取消输入n )

示例2:

1
2
# 删除文件(没有提示)
rm  -f  /root/bigdata.txt
参数 含义
-f 英文[force (强制)] 强制删除,忽略不存在的文件, 无需提示

示例3:

1
2
3
4
5
# 删除目录 
# 注意:在linux中删除目录时,需要添加-r选项(linux认为目录下存在内容)
rm -r /root/temp  # 删除root目录下的temp目录(有提示)

rm -rf /root/temp # 删除root目录下的temp目录(无提示)
参数 含义
-r 英文[ recursive (递归)] 递归地删除目录下的内容, 删除文件夹时必须加此参数

示例4:rm 结合通配符

1
2
3
4
5
6
# 常用通配符: *?[abc][a-z]
rm -rf  *.txt   # 删除当前目录下所有的.txt结尾的文件
 
rm -rf  1*      # 删除当前目录下所有以1开头的文件和目录

rm -rf  *[a-z]*   # 删除当前目录下包含小写字母的所文件或目录

注意:

  • 使用 rm 命令要小心, 因为文件删除后不能恢复
  • 在企业开发中,自己只删除自己创建的文件/目录

4.1.3 复制和移动文件/目录

命令 作用
tree [目录名] 以树状图 列出目录中的内容
cp 源文件 目标文件 复制文件或者目录
mv 源文件 目标文件 移动文件或目录或者重命名
tree命令

通过 tree 命令可以以树状图列出文件目录结构。(tree命令不是linux自带命令,需要使用yum install -y tree安装)

命令格式:

1
2
# 如果指定目录, 就显示指定目录的内容    # 如果不指定目录,就显示当前目录的内容 
tree [目录] 

示例:以树形结构显示目录中的文件和目录

1
2
3
4
5
6
7
### 准备工作 ###
# 创建目录
mkdir -p /export/aaa/bbb/ccc
# 创建文件
touch /export/aaa/01.txt /export/aaa/02.txt
touch /export/aaa/bbb/03.txt /export/aaa/bbb/04.txt
touch /export/aaa/bbb/ccc/05.txt /export/aaa/bbb/ccc/06.txt
1
2
# 查看指定目录下的文件结构
tree  /export

示例2:只显示目录中的文件夹(目录)

格式:tree -d [目录]

选项 英文 含义
-d derictory (目录) 只显示目录, 不显示文件
1
tree -d  /export     # 显示/export目录下的目录结构(只显示文件夹)

案例3:显示指定的两层

格式:tree -L 数值 [目录]

选项 英文 含义
-L level (层级) 显示几层目录
1
2
3
# 显示指定目录下的目录结构(仅显示2层)
tree -L 2 /export     # 显示的目录结构中包含文件和目录
tree -d -L 2 /export  # 显示的目录结构(只显示目录)
cp命令

通过 cp 实现复制将指定的文件或目录复制到 两一个文件或目录中

示例1:备份指定文件

1
2
# 命令格式
cp  文件1  备份文件 名
  • 使用场景:

    当需要对服务器中的相关配置文件进行修改时,或其他软件中的配置文件进行修改时(例:mysql),建议先对要修改的配置文件进行:备份操作(cp)

1
2
3
# 把mysql数据库的配置文件进行备份 
# 前提: 创建/export/mysql目录     mkdir -p /export/mysql
cp /etc/my.cnf  /export/mysql/my.cnf   

示例2:将文件复制到目录中

1
cp /export/aaa/01.txt  /usr/tmp/   # 把01.txt文件拷贝到/usr/tmp目录下

示例3:将文件复制到另一个文件中, 实现覆盖效果

1
2
# 前提: /usr/tmp目录下存在01.txt文件
cp /export/aaa/02.txt  /usr/tmp/01.txt   # 会覆盖

示例4:复制目录到指定目录中

1
2
3
命令格式:cp -r 目录1/ 目录2/     # -r 表示递归(递归复制目标目录下的内容)
# 注意:在拷贝目录下所有内容时,需要使用选项:-r  
cp -r /export/  /usr/tmp/  # 把export目录下所有的内容(包括目录export),拷贝到/usr/tmp目录下
mv命令

通过mv 命令可以用来 移动文件或目录, 也可以给文件或目录重命名

示例1:将文件移动另一个目录中

1
2
3
命令格式: mv 文件 目录/

mv /export/aaa/01.txt  /usr/tmp/   # 把01.txt文件移动到/usr/tmp目录下

示例2:重命名

1
2
3
命令格式: mv 旧文件名 新文件名

mv  /export/aaa/02.txt  /export/aaa/2.txt   # 把/export/aaa目录下的02.txt文件名修改为2.txt

示例3:将目录移动到另一个目录中

1
2
3
命令格式:  mv 被移动目录 目标目录

mv  /export/  /usr/tmp/    # 把/export目录下的内容,移动到/usr/tmp目录下

4.2 查看文件内容

处理数据时,经常需要快速查看文件内容。

查看文件内容 - cat, more, less, head, tail

cat 命令 :

  • 用途:

    1. 一次性显示整个文件的内容到屏幕。
    2. 连接多个文件内容输出。
  • 语法: cat [选项] 文件名...

  • 常用选项:

    • -n: 显示行号。
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    ## 前置数据准备工作
    [bigdata@node1 test_dir]$ echo "这是第一行内容" > file1.txt # echo输出重定向到文件
    [bigdata@node1 test_dir]$ echo "这是第二行,包含一些数字 12345" >> file1.txt # >> 追加内容
    [bigdata@node1 test_dir]$ echo "日志记录 A" > file2.log
    [bigdata@node1 test_dir]$ echo "日志记录 B" >> file2.log
      
    # 查看文件内容
    [bigdata@node1 test_dir]$ cat file1.txt
    这是第一行内容
    这是第二行,包含一些数字 12345
    [bigdata@node1 test_dir]$ cat -n file1.txt
         1	这是第一行内容
         2	这是第二行,包含一些数字 12345
    [bigdata@node1 test_dir]$ cat file1.txt file2.log # 连接显示两个文件
    这是第一行内容
    这是第二行,包含一些数字 12345
    日志记录 A
    日志记录 B
    
  • 缺点: 如果文件很大,cat 会一次性刷屏,无法查看前面的内容。

  • 应用场景: “快速看一下这个小的配置文件内容: cat /etc/myapp.conf

more 命令:

  • 用途:分页显示文件内容。按空格键向后翻页,按 q 键退出。

  • 语法: more [文件名]

  • 示例:

    1
    2
    3
    4
    
    [bigdata@node1 test_dir]$ # 假设 file1.txt 内容很多
    [bigdata@node1 test_dir]$ more file1.txt
    # (显示第一屏内容)
    --More--(%) # 按空格翻页,按q退出
    
  • 缺点: 只能向后翻页,不能向前翻。

less 命令:

  • 用途:更强大的分页显示器,可以自由地前后翻页、搜索。(推荐使用

  • 语法: less [文件名]

  • 常用操作 (在 less 界面中):

    • 空格键PageDown: 向下翻一页。
    • bPageUp: 向上翻一页。
    • 向下箭头: 向下滚动一行。
    • 向上箭头: 向上滚动一行。
    • g: 跳转到文件开头。
    • G: 跳转到文件末尾。
    • /关键字: 向下搜索关键字,按 n 查找下一个,N 查找上一个。
    • ?关键字: 向上搜索关键字。
    • q: 退出 less
  • 示例:

    1
    2
    
    [bigdata@node1 test_dir]$ less /var/log/messages # 查看系统日志文件
    # (进入 less 界面,自由浏览)
    
  • 应用场景: “详细检查一个大的交易流水文件,查找特定账号的记录: less transaction_log_large.csv 然后使用 /account_number 搜索。”

head 命令:

  • 用途:显示文件的开头部分(默认前10行)。

  • 语法: head [选项] 文件名...

  • 常用选项:

    • -n <行数>: 指定显示前多少行。例如 -n 5 显示前5行。
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [bigdata@node1 test_dir]$ head file1.txt file2.log # 显示两个文件的前10行
    ==> file1.txt <==
    这是第一行内容
    这是第二行,包含一些数字 12345
      
    ==> file2.log <==
    日志记录 A
    日志记录 B
    [bigdata@node1 test_dir]$ head -n 1 file1.txt # 只显示 file1.txt 的第一行
    这是第一行内容
    
  • 金融场景: “快速预览一下数据文件的格式,看看表头是什么: head -n 5 customer_data.csv

tail 命令:

  • 用途:显示文件的末尾部分(默认后10行)。

  • 语法: tail [选项] 文件名...

  • 常用选项:

    • -n <行数>: 指定显示后多少行。例如 -n 20 显示后20行。
    • -f: (follow) 非常常用! 动态跟踪文件末尾的新增内容,实时显示。常用于监控日志文件。按 Ctrl+C 停止跟踪。
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    [bigdata@node1 test_dir]$ tail file1.txt file2.log # 显示两个文件的后10行 (如果不足10行则显示全部)
    ==> file1.txt <==
    这是第一行内容
    这是第二行,包含一些数字 12345
      
    ==> file2.log <==
    日志记录 A
    日志记录 B
    [bigdata@node1 test_dir]$ tail -n 1 file1.txt # 只显示 file1.txt 最后一行
    这是第二行,包含一些数字 12345
      
    [bigdata@node1 test_dir]$ tail -f /var/log/messages # 实时监控系统日志
    # (屏幕会持续显示新加入的日志,按 Ctrl+C 退出)
    
  • 应用场景:

    • “查看ETL任务的最新日志输出,判断是否出错: tail -n 50 /data/etl/logs/credit_etl.log
    • “实时监控在线交易系统的错误日志: tail -f /app/logs/trade_error.log

5. 用户管理和权限管理

5.1 用户和权限的基本概念

Linux 是一个多用户、多任务的操作系统。为了区分不同用户、管理资源访问,引入了用户和组的概念。

用户是Linux系统工作中重要的一环, 用户管理包括 用户管理

在Linux系统中, 不论是由本地或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限

对文件/目录的权限包括:

权限 英文 缩写 数字序号
read r 4
write w 2
执行 execute x 1
无权限   - 0

在Linux中执行命令:ls -l 或 ll

img

  • ls -l 可以查看文件夹下文件的详细信息, 从左到右依次是:
    1. 权限。
    2. 硬链接数。通俗的讲就是有多少种方式, 可以访问当前目录和文件
    3. 拥有者。 文件或目录的拥有者
    4. 组。 在linux中, 很多时候, 会出现组名 和 用户名 相同的情况
    5. 大小。
    6. 时间。
    7. 名称。

img

在 Linux中 ,可以指定每一个用户针对不同的文件或者目录的不同权限。

img

为了方便用户管理, linux添加了的概念。

5.2 用户组管理命令

本质: 给同一类型用户分配权限

命令 作用
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chgrp 组名 文件/目录名 修改文件/目录的所属组

提示:

  • 组信息保存在 /etc/group 文件中
  • /etc目录是专门用来保存系统配置信息的目录

在实际应用中, 可以预先针对 组 设置好权限, 然后 将不同的用户添加到对应的组中, 从而不用依次为每一个用户设置权限

练习任务:

  1. 在指定目录下创建ABC目录

  2. 新建dev组
  3. 将ABC目录的组修改为dev
1
2
3
4
5
6
7
8
9
10
11
# 1.在指定目录下创建ABC目录
mkdir -p /export/ABC 

# 2.新建dev组
groupadd dev

# 查看新建组的信息
cat /etc/group

# 3.将ABC目录的组修改为dev
chgrp dev /export/ABC

5.3 用户管理命令

命令 作用 说明
useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录 -g 指定用户所在的组, 否则会建立一个和同名的组
passwd 用户名 设置用户密码 如果是普通用户, 直接用 passwd可以修改自己的账号密码
userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在 /etc/passwd文件夹中

提示:

  • 创建用时, 如果忘记添加 -m 选项指定新用户的家目录 (最简单的方式就是删除用户,重新创建)

  • 创建用户时, 默认会创建一个和用户名同名的组名

  • 用户信息保存在 /etc/passwd 文件中

  • /etc/passwd 文件存放的是用户的信息, 由6个分好组成的7个信息, 分别是:

    image-20250416222654162

    1、用户名

    2、密码 (x, 表示加密的密码)

    3、UID (用户标志)

    4、GID(组标志)

    5、用户全名或本地账号

    6、家目录

    7、登录使用的Shell, 就是登录之后, 使用的终端命令

5.3.1 添加新用户

  • 命令格式:useradd 用户名
  • 创建一个新用户。通常会自动:
    • 分配下一个可用的 UID (>=1000)。
    • 创建一个同名的组作为其主要组。
    • /home 下创建同名家目录 (如 /home/新用户名) [并非所有发行版都默认创建,RHEL 8 系列默认会创建]
    • 设置默认的登录 Shell (通常是 /bin/bash)。

示例:

1
2
3
4
5
6
# 创建一个普通用户 data_analyst,默认设置
useradd data_analyst

ls /home # 应该能看到 data_analyst 目录
grep data_analyst /etc/passwd # 查看用户信息
grep data_analyst /etc/group # 查看同名组信息

5.3.2 设置或修改用户密码

命令格式:passwd 用户名

  • 为指定用户设置或修改密码 (root 可以修改任何人的密码)。

  • 普通用户执行只能修改自己的密码。
  • 执行后会提示输入新密码两次。
  • 新创建的用户默认是锁定的,必须设置密码后才能登录

示例:

1
2
3
4
5
# 为 data_analyst 设置密码
passwd data_analyst
# Enter new UNIX password: 输入密码
# Retype new UNIX password: 再次输入密码
# passwd: password updated successfully

5.3.3 删除用户

命令格式:userdel 用户名

  • userdel 用户名: 只删除用户账号信息(/etc/passwd 等文件中的条目)。不删除家目录。
  • userdel -r 用户名: 删除用户账号信息,同时删除用户的家目录。(推荐使用 -r 以彻底删除用户数据,但需谨慎)

说明:不能删除正在登录或有进程在运行的用户。

示例:

1
2
3
4
# 彻底删除 team_lead 用户及其家目录
userdel -r team_lead
ls /home # 确认 team_lead 目录已不存在
grep team_lead /etc/passwd # 确认用户条目已删除

补充命令:

命令 作用
id [用户名] 查看用户UID 和 GID 信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

5.4 权限管理命令

5.4.1 用户权限解读

img

img

属主(user) u 属组(group) g 其他用户(other) o            
r w x r w x r w x
4 2 1 4 2 1 4 2 1

r :对文件是指可读取内容;对目录是可以ls

w :对文件是指可修改文件内容;对目录是指可以在其中创建或删除子节点(目录或文件)

x :对文件是指是否可以运行这个文件;对目录是指是否可以cd进入这个目录

5.4.2 用户权限修改

使用chmod修改文件或目录的权限。

命令格式如下:

1
2
3
chmod + rwx 文件名|目录名    # +表示新增权限   
chmod - rwx 文件名|目录名    # -表示删除权限
chmod 755 /opt # 方式二 通过权限序号的方式修改权限
  • 作用对象: u (user/owner), g (group), o (others), a (all)。
  • 操作符: + (添加权限), - (移除权限), =(设置精确权限)。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建文件
touch script.sh data.log config.ini file.txt
ls -l script.sh data.log config.ini file.txt # 查看初始权限

# 给所有者添加执行权限
chmod u+x script.sh

# 给所属组添加写权限
chmod g+w data.log

# 移除其他用户的读写执行权限
chmod o-rwx config.ini    # r 选项: 递归地修改目录及其所有内容的权限。

# 给所有人添加写权限
chmod a+w file.txt   

chown (Change Owner): 修改文件或目录的所有者 (通常需 root 权限)

  • chown 新所有者 文件或目录
  • chown 新所有者:新所属组 文件或目录: 同时修改所有者和所属组。
  • -R选项: 递归修改。

示例:

1
2
3
4
5
6
7
8
9
# 将 data.log 的所有者改为 data_analyst
chown data_analyst data.log

# 将 script.sh 的所有者改为 hadoop,所属组改为 developers
chown hadoop:developers script.sh

# 递归地将 /data/project1 目录及其内容的所有者改为 team_lead
# mkdir -p /data/project1 && touch /data/project1/a.txt
# chown -R team_lead /data/project1
  • 验证:使用 ls -l 查看所有者和所属组是否已修改。

chgrp (Change Group): 修改文件或目录的所属组 (文件所有者或 root 可执行)

  • chgrp 新所属组 文件或目录
  • -R选项 :递归修改。

示例:

1
2
3
4
5
6
# 将 data.log 的所属组改为 webdev
chgrp webdev data.log

# 递归地将 /srv/app/logs 目录及其内容的所属组改为 hadoop
# mkdir -p /srv/app/logs && touch /srv/app/logs/app.log
# chgrp -R hadoop /srv/app/logs
  • 验证:使用 ls -l 查看所属组是否已修改。

回顾上次课程Linux命令:

  • 基础入门命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    pwd   # 定位当前目录
      
    cd    # 切换目录   
    cd   绝对路径     cd /root/linux/
    cd   相对路径     当前路径为:/export       cd hadopp    
    cd   ~     进入到家目录下
    cd   ..    进入到上一级目录
    cd   -     切换到上一次使用的目录
      
      
    ls    # 查看目录下的内容
    ls -l 
    ls -a
    ls -h
       
    clear   #清屏
    
  • 文件目录管理命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    touch    # 创建空文件      touch    /目录/文本名.后缀名
      
    mkdir    # 创建目录        mkdir -p  /目录1/目录2/目录3
      
    cp       # 复制文件/目录    cp /目录/文件1  /目录2/       cp -r  /目录    /目录2/
      
    mv       # 重命名 、 移动     mv 旧文件名 新文件名     mv /目录/文件  /新目录/
      
    rm       # 删除文件/目录      rm -rf  文件/目录
    
  • 查看文件内容命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    cat     # 适用于小文件内容的查看        cat /目录/文件        cat -n  /目录/文件
      
    more    # 可以分页查看大文件内容(缺点:只能向后翻页)
      
    less    # 可以分页查看大文本内容 (推荐使用: 可以向前向后翻页、可以按行)
      
    head    # 显示文件的头部内容  默认为前10行            head -n 15  /目录/文件
      
    tail    # 显示文件末尾内容  默认为后10行       tail -n 5 /目录/文件
    tail -f  /目录/日志文件   # 动态显示日志文件中的内容(开发中使用频率比较多:监控日志)
    
  • 用户管理命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    # 新增用户
    useradd  -m  -g 组名  用户名   # 创建用户时指定用户归属组
      
    # 修改密码
    passwd  用户名   # 系统会提示输入两次新密码
      
    # 新增组
    groupadd   组名
      
    # 删除组
    groupdel  组名
      
    # 修改文件|目录归属组
    chgrp 组名 文件/目录
      
    # 删除用户
    userdel -r 用户名
      
    # 查看组的信息
    cat /etc/group
      
    # 查看用户的信息
    cat /etc/passwd
    
  • 权限管理命令

    1
    2
    3
    4
    5
    
    # 修改文件|目录的权限    读写执行:rwx   -   7=rwx     5=rx      4=r         r==4   w==2  x==1
    chmod -R 754  /root/bigdata    # 修改/root/bigdata目录的权限为:用户读写执行、组读执行、其他读
      
    # 修改文件|目录的拥有者
    chown 用户名 文件/目录
    

6. 文件查找命令

find是linux中最常见的搜索命令。

find命令在linux系统的整个目录结构中搜索文件,并对搜索结果执行指定的操作。

find的使用格式如下:

1
find <指定目录> <指定条件> <指定动作>
  • <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录
  • <指定条件>: 所要搜索的文件的特征
  • <指定动作>: 对搜索结果进行特定的处理

如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上

find命令的基本使用格式:

命令格式 作用
find [路径] -name ‘*.txt’ 查找指定路径下扩展名是 .txt的文件, 包括子目录

说明:

1、如果省略路径, 表示在当前文件夹下查找

2、之前学习的通配符, 在使用find命令时同时可用

前置准备工作:

1
2
3
4
5
6
7
8
9
10
11
# 切换目录到 /export/ 且清空内容
cd /export/ && rm -rf /export/* && tree

# 新增目录、新增文件
mkdir -p /export/aaa/bbb/ccc/ddd/eee/ 
touch /export/aaa/bbb/ccc/ddd/eee/abc.txt
touch /export/aaa/123.txt
touch /export/aaa/312.txt

# 查看 /export 目录中的内容
tree /export

示例1:搜索指定目录下, 文件是 abc.txt的文件

1
2
3
4
5
6
7
8
# 方式一:  指定全目录 
find /export/ -name 'abc.txt' 

# 方式二:  用.代表当前目录
find . -name 'abc.txt'

# 方式三: 当前目录可以省略不写
find -name 'abc.txt'

示例2:搜索指定目录下, 文件名包含1的文件

1
2
3
4
5
6
# =================准备工作===============
# 创建测试文件
touch /export/12.txt /export/616.txt /export/321.txt  

# =================实现目录===============
find /export/ -name "*1*"

示例3:搜索指定目录下,所有以.txt 为扩展名的文件

1
find /export/ -name "*.txt"

示例4:搜索指定目录下, 以数字1开头的文件

1
find /export -name "1*"

find命令扩展实例:

1
2
3
4
5
find . -name "*.log" -ls    # 在当前目录查找以.log 结尾的文件, 并显示详细信息。
find /root/ -perm 777       # 查找/root/目录下权限为 777 的文件 
find . -type f -name "*.log"  # 查找当目录,以.log 结尾的普通文件 
find . -type d | sort       #  查找当前所有目录并排序
find . -size +100M          # 查找当前目录大于 100M 的文件

7. 压缩和解压命令

7.1 打包和解包

在Linux中可以使用tar命令把多个文件打包为一个文件,且打包后的文件名以.tar结尾。

同样在Linux中可以使用tar命令对.tar结尾的打包文件进行解包。

tar命令实现打包:

1
2
3
# 将 一系列文件 打包成 一个文件 
tar -cvf  打包名.tar  被打包的目录 
tar -cvf  打包名.tar  被打包的文件1  被打包的文件2  被打包的文件3

打包命令的选项说明:

选项 英文 含义
c create 生成档案文件, 创建打包文件(创建一个新tar文件)
v verbosely(啰嗦的) 像 ‘唐僧’ 一样报告进度(显示运行过程的信息)
f file 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到最后

示例:

1
2
3
4
5
# 将1.txt、2.txt、3.txt 打包成 123.tar文件 
tar -cvf 123.tar 1.txt 2.txt 3.txt

# 将有内容的bigdata目录 打包成 bigdata.tar 文件 
tar -cvf bigdata.tar /root/bigdata

tar命令实现解包:

1
2
3
4
5
# 将一个打包后的文件 分解成 一系列小文件, 分解位置为当前目录
tar -xvf 打包名.tar     # 解压到当前目录下 

# 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录
tar -xvf 打包名.tar -C 解包路径位置    # -C 指定目录   解压到指定的目录下

解包命令的选项说明:

选项 英文 含义
x extract (提取) 解包
C (大写C) directory (目录) 默认保存到当前目录, 通过-C 更改解压目录, 注意: 解压目录必须存在

示例:

1
2
3
4
5
# 将 123.tar 解压到 当前目录中将1.txt、2.txt、3.txt 打包成 123.tar文件 
tar -xvf 123.tar 

# 将 aaa.tar 解包到 /export/test/a1/b1/c1/ 目录中
tar -xvf aaa.tar -C /export/test/a1/b1/c1/

7.2 压缩和解压

在 Linux 中, 最常用的压缩文件格式是 gzip。 如: mysql-community-5.6.45.tar.gz

在 tar 命令中是通过选项-z 实现对gzip压缩格式的调用 , 从而实现压缩和解压缩的功能。

命令格式:

1
2
3
4
5
6
7
8
# 压缩文件 
tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录 

# 解压缩文件
tar -zxvf 打包文件.tar.gz    

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目录路径

tar命令参数解释:

参数 解释
-c 创建一个新tar文件
-v 显示运行过程的信息
-f 指定文件名
-z 调用gzip压缩命令进行压缩
-x 解开tar文件

示例:

1
2
3
4
5
6
7
8
9
10
11
# 将1.txt、2.txt、3.txt 打包压缩成 123.tar.gz文件(gzip压缩格式) 
tar -zcvf 123.tar.gz 1.txt 2.txt 3.txt

# 将有内容的aaa目录 打包成 aaa.tar.gz 文件(gzip压缩格式)
tar -zcvf aaa.tar.gz  /root/aaa

# 将 123.tar.gz 解压到 当前目录中(gzip压缩格式)
tar -zxvf 123.tar.gz 

# 将 aaa.tar.gz 解包到 /export/bbb 目录中(gzip压缩格式)
tar -zxvf aaa.tar.gz -C /export/bbb/

8. 系统管理命令

8.1 进程命令

所谓进程通俗来讲就是系统中当前正在运行的一个程序。

常用的进程相关命令:

命令 作用
ps process status 查看进程的详细情况
kill [-9] 进程代号 终止指定代号的进程 -9 表示强行终止
top 动态显示运行中进程并且排序

ps命令用来列出系统中当前运行的进程(process) 。

语法: ps [选项]

示例:

1
ps -ef  # 查看所有进程 
选项 含义
e 显示所有进程
f 全格式

示例:

1
ps -u root # 查看root用户下所有进程 
选项 含义
u 用户名

kill命令用于终止正在执行中的程序。

语法: kill pid(系统进程id)

示例:

1
2
kill 12075    # 杀死pid为12075的进程
kill -9 3306  # 杀死pid为3306的进程   数字9表示传递给kill的一个信号,告知强制杀死

top命令用于显示当前系统正在运行中的进程。

语法:top

image-20250417204022375

  • 要退出 top 可以直接输入 qCtrl+c

8.2 服务命令

systemctl 命令是用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

语法格式: systemctl 操作 服务名

服务管理命令 功能
systemctl start 服务名 开启服务
systemctl stop 服务名 关闭服务
systemctl status 服务名 显示服务状态
systemctl enable 服务名 设置开机自启动
systemctl disable 服务名 关闭开机自启动

相关操作示例:

1
2
3
4
systemctl status network   # 查看网络服务状态 
systemctl stop network     # 停止网络服务
systemctl start network     # 启动网络服务
systemctl restart network   # 重启网络服务

9. 其他命令

9.1 echo命令

echo命令是一个内置的命令行工具,它将文本或字符串打印到标准输出(控制台)或将输出重定向到文件。

示例:

1
2
3
4
echo hello

# 如果字符串有空格, 为了避免歧义 请增加 双引号 或者 单引号
echo "hello world"

9.2 重定向 >(覆盖)和»(追加)

在使用echo命令时,即可以把文本内容打印到标准输出的控制台,也可以通过重定向输出到文件。

img

  • 默认情况下linux执行echo命令后,命令的结果会输出到控制台。

  • 通过重定向可以将结果输出到文件。

示例1:将命令的成功结果覆盖指定文件内容

1
echo "Hello Bigdata" > 01.txt
命令 作用
结果 > 文件名 > 表示输出, 会覆盖文件的原有内容

示例2:将命令的成功结果追加指定文件的后面

1
echo "Hadoop" >> 01.txt
命令 作用
命令 » 文件名 » 表示追加, 会将内容追加到已有文件的末尾

示例: 将命令的失败结果追加指定文件的后面

1
cat 不存在的目录  &>>  error.log
命令 作用
命令 &» 文件 &» 表示不区分错误类型 通通放到日志中,如果成功则将结果追加到指定文件

9.3 &&和||

在Linux中可以使用&&||把多个命令连接起来。

img

示例1:如果创建目录成功, 就提示创建成功

命令 作用
命令1 && 命令2 如果 命令1执行成功了, 才执行 命令2
1
2
# 格式 : mkdir -p 正确目录 && echo "提示创建目录成功
mkdir -p /export/bigdata && echo "目录创建成功"

示例2:如果创建目录失败, 就提示创建失败

命令 作用
命令1 || 命令2 如果 命令1 执行失败了, 才执行 命令2
1
2
# 格式 : mkdir 错误目录 || echo "提示创建目录失败"
mkdir /root/linux/data || echo "目录创建失败"

练习:

1
2
3
4
5
# 如果创建目录成功, 就切换到指定目录
mkdir -p /root/bigdata && cd /root/bigdata

# 如果创建文件成功, 就罗列新建文件所在目录的内容
touch /root/bigdata/hello.log && ls -l /root/bigdata

9.4 管道 |

管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。

img

示例1:查看日志文件的前5行数据,并显示每一行的行号

1
cat -n /root/data.log | head -n 5

示例2: 过滤 /etc/ 目录下以 pro 开头的文件

1
ls /etc/ | grep ^pro

10. VI编辑器

10.1 VI编辑器介绍

在工作中, 要对linux服务器上的文件进行简单的修改,在没有图形界面的环境下,通常都是使用vi编辑器进行简单的编辑修改。

vi编辑器的特点:

  1. 只能是编辑文本内容, 不能对字体段落进行排版。
  2. 不支持鼠标操作。
  3. 没有菜单,只有命令。

vim是vi的增强版本,具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性。

10.2 VI编辑器的使用

在linux终端中输入:vim 文件名

  • 如果文件已经存在, 会直接打开该文件
  • 如果文件不存在, 保存且退出时 就会新建一个文件

示例:使用vi新建一个文件并编辑内容

1
vi hello.txt  # 直接打开文件

示例:打开文件, 并定位到指定行

1
vi a.txt +10  # 直接打开文件,并定位到第10行

vi编辑器三种模式:

  1. 命令模式
    • 打开文件首先进入命令模式, 是使用vi的入口
    • 通过 命令 对文件进行常规的编辑操作, 例如 定位 翻页 复制 粘贴 删除
    • 在其他图形编辑器下, 通过 快捷键 或者 鼠标 实现的操作, 都在 命令模式 下实现
  2. 末行模式 – 执行 保存 退出等操作
    • 要退出 vi 返回到控制台, 需要在莫行模式下输入命令
    • 末行模式 是 vi 的出口
  3. 编辑模式 – 正常的编辑文字

img

10.3 命令行模式常用命令

命令 功能
o 在当前行后面插入一空行
O 在当前行前面插入一空行
dd 删除光标所在行
ndd 从光标位置向下连续删除 n
yy 复制光标所在行
nyy 从光标位置向下连续复制 n
p 粘贴
u 撤销上一次命令
gg 回到文件顶部
G 回到文件末尾
/str 查找str

10.4 末行模式常用命令

命令 功能
:w 文件 另存为
:w 保存(ctrl + s)
:q 退出, 如果没有保存,不允许退出
:q! 强行退出, 不保存退出
:wq 保存并退出
:x 保存并退出

相关文档

  1. Linux系统安装
  2. Linux命令
  3. Shell命令
  4. Shell综合应用实战
  5. Linux文本处理