0%

简介

  • lsmod命令

lsmod

在Linux中,lsmod命令用于列出当前加载的内核模块。内核模块是与内核相互独立的可加载程序,它们可以在运行时加载和卸载,以添加或删除特定的功能和驱动程序。

以下是lsmod命令的一般语法:

1
lsmod

使用lsmod命令时,它会直接输出已加载的内核模块的列表。每个模块的输出通常包括以下列:

  1. Module:内核模块的名称。
  2. Size:模块在内存中的大小(以字节为单位)。
  3. Used by:使用该模块的进程或其他模块的列表。

例如,以下是lsmod命令的示例输出:

1
2
3
4
Module                 Size  Used by
nls_utf8 16384 1
isofs 49152 1
usb_storage 77824 1

这个输出表示有三个内核模块被加载:nls_utf8isofsusb_storagenls_utf8模块被一个进程或其他模块使用,isofs模块被一个进程或其他模块使用,而usb_storage模块仅被一个进程或其他模块使用。

lsmod命令常用于查看当前系统中加载的内核模块,以及它们之间的依赖关系。它对于诊断和调试与内核模块相关的问题非常有用。

希望这个简要的解释对您有帮助。如有任何进一步的问题,请随时提问。

linux lsmod命令 详解

lsmod 是 Linux 系统中的一个命令,用于列出当前加载到内核的模块(kernel modules)的信息。以下是关于 lsmod 命令的详解:

语法:

1
lsmod

描述:

  • lsmod 命令用于显示当前加载的内核模块的信息,包括模块的名字、使用该模块的进程数量、模块的大小等信息。

输出格式:

lsmod 输出的信息通常包含以下列:

  1. Module: 内核模块的名称。
  2. Size: 模块占用的内存大小。
  3. Used by: 使用该模块的进程数量,以及进程的 PID。

示例输出:

1
2
3
4
5
6
7
8
9
Module                  Size  Used by
nls_utf8 16384 1
isofs 45056 1
vboxsf 65536 2
snd_intel8x0 40960 2
snd_ac97_codec 139264 1 snd_intel8x0
ac97_bus 16384 1 snd_ac97_codec
snd_pcm 106496 2 snd_ac97_codec,snd_intel8x0
...

解释输出信息:

  • Module: 模块的名称。
  • Size: 模块占用的内存大小(以字节为单位)。
  • Used by: 使用该模块的进程数量和进程的 PID。例如,”1” 表示有一个进程在使用该模块。

附加信息:

  • 如果 lsmod 命令未找到任何模块,输出将为空。
  • 使用 lsmod 命令通常需要超级用户权限,因为它涉及到内核的信息。

相关命令:

  • modprobe: 用于加载、卸载、或查询模块的相关信息。
  • lsmod: 显示已加载的模块。
  • rmmod: 用于卸载已加载的模块。

通过 lsmod 命令,你可以快速了解系统中哪些内核模块正在使用,以及它们的大小和被哪些进程所使用。

简介

  • ar命令

ar

  • ar命令,用于建立或修改备存文件,或者是从备存文件中抽取文件
  • ar可以集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限
  • 语法
    • ar [ -dmpqrtx ] [ cfosSuvV ] [ a<成员文件> ] [ b<成员文件> ] [ i<成员文件> ] [ 备存文件 ] [ 成员文件 ]
  • 参数
    • -d : 删除备存文件中的成员文件
    • -m : 变更成员文件在备存文件中的次序
    • -p : 显示备存文件中的成员文件内容
    • -q : 将文件附加在备存文件末端
    • -r : 将文件插入备存文件中
    • -t : 显示备存文件中所包含的文件
    • -x : 自备存文件中取出成员文件
  • 选项参数:
    • a<成员文件> : 将文件插入备存文件中指定的成员文件之后
    • b<成员文件> : 将文件插入备存文件中指定的成员文件之前
    • c : 建立备存文件
    • f : 为避免过场的文件名不兼容于其他系统的ar指令,因此可使用此参数,截掉要放入备存文件中过长的成员文件名称
    • i<成员文件> : 将文件插入备存文件中指定的成员文件之前
    • o : 保留备存文件中文件的日期
    • s : 若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表
    • S : 不产生符号表
    • u : 只将日期较新文件插入备存文件中
    • v : 程序执行时显示详细的信息
    • V : 显示版本信息

linux ar命令 详解

ar 命令是用于创建和维护静态库(archive)的工具。静态库是包含了多个目标文件的归档文件,通常用于在编译和链接时与程序一起使用。

基本语法:

1
ar [选项] [archive] [files]

常见选项:

  • r:将文件添加到归档中。
  • x:从归档中提取文件。
  • t:列出归档中的文件。
  • d:从归档中删除文件。
  • c:创建归档。

示例:

  1. 创建静态库:

    1
    ar rcs libexample.a file1.o file2.o file3.o

    这将创建名为 libexample.a 的静态库,并将 file1.ofile2.ofile3.o 添加到其中。

  2. 从静态库中提取文件:

    1
    ar x libexample.a file2.o

    这将从 libexample.a 中提取 file2.o

  3. 列出静态库中的文件:

    1
    ar t libexample.a

    这将列出 libexample.a 中包含的文件。

  4. 从静态库中删除文件:

    1
    ar d libexample.a file1.o

    这将从 libexample.a 中删除 file1.o

注意:

  • 静态库通常使用 .a 扩展名,但这并不是强制的。
  • 在许多情况下,开发人员更倾向于使用共享库(动态库)而不是静态库,因为共享库在运行时动态加载,更加灵活。

ar 命令通常与编译器(如 gcc)一起使用,用于创建和管理程序的静态库。

简介

  • wc命令

wc

  • wc, 用于计算字数
  • 利用wc指令可以计算文件的Byte数,字数或是列数,若不指定文件名称,或是所给予的文件名为-,则wc指令会从标准输入设备读取数据
  • 语法:wc [-clw] [--help] [--version] [文件...]
  • 参数:
    • -c--bytes--chars 只显示Bytes数
    • -w--words 只显示字数
    • -l--lines 显示行数
    • --help 在线帮助
    • --version 显示版本信息
  • 使用wc统计:
    • wc testfile # testfile文件的统计信息
    • 3 92 598 testfile # testfile文件的行数为3, 单词数为92, 字节数为598
    • 其中三个数字分别表示testfile文件的行数,单词数,以及该文件的字节数
  • 如果想同时统计多个文件的信息,例如同时统计testfile,testfile_1,testfile_2,可使用:wc testfile testfile_1 testfile_2 # 统计三个文件的信息

wc

在Linux中,wc命令用于计算给定文件或标准输入中的字节数、字数和行数。它是一个简单但功能强大的命令,经常用于统计文本文件的信息。

以下是wc命令的一般语法:

1
wc [options] [file...]

其中,options是可选的一些选项,file是要统计的文件。

以下是一些常见的wc命令选项和用法:

  1. 统计文件中的字节数、字数和行数:

    1
    wc file.txt

    此命令将输出文件file.txt中的字节数、字数和行数。

  2. 只统计字节数:

    1
    wc -c file.txt

    此命令将仅输出文件file.txt中的字节数。

  3. 只统计字数:

    1
    wc -w file.txt

    此命令将仅输出文件file.txt中的字数。

  4. 只统计行数:

    1
    wc -l file.txt

    此命令将仅输出文件file.txt中的行数。

  5. 批量统计多个文件:

    1
    wc file1.txt file2.txt file3.txt

    此命令将分别统计并输出多个文件的字节数、字数和行数。

  6. 统计多个文件的总计:

    1
    wc -l file1.txt file2.txt file3.txt

    此命令将统计多个文件的行数,并在最后输出总行数。

wc命令还支持其他一些选项,如统计最长行的长度、输出格式化结果等。您可以使用man wc命令查看完整的选项和用法说明。

总体而言,wc命令是一个方便的工具,用于统计文件中的字节数、字数和行数。它在处理文本文件时非常有用,可以提供对文件结构和内容的快速概览。

linux wc命令 详解

wc 命令用于统计文件的行数、字数和字节数。它是一个简单而有效的工具,经常用于文本文件的分析和统计。

基本语法:

1
wc [选项] 文件名

常见选项:

  • -l:统计行数。
  • -w:统计字数。
  • -c:统计字节数。
  • -m:统计字符数。
  • -L:找出文件中最长行的长度。

示例:

  1. 统计文件的行数、字数和字节数:

    1
    wc filename.txt
  2. 只统计行数:

    1
    wc -l filename.txt
  3. 只统计字数:

    1
    wc -w filename.txt
  4. 只统计字节数:

    1
    wc -c filename.txt
  5. 找出文件中最长行的长度:

    1
    wc -L filename.txt
  6. 统计多个文件的总行数:

    1
    wc -l file1.txt file2.txt file3.txt
  7. 通过管道统计命令输出:

    1
    ls -l | wc -l

    这个例子统计当前目录下的文件数。

  8. 递归统计目录中所有文件的行数:

    1
    find /path/to/directory -type f -exec wc -l {} +

    使用 find 命令递归查找指定目录下的所有文件,并统计它们的行数。

注意:

  • 如果没有提供文件名,则 wc 将从标准输入读取数据。
  • wc 默认情况下会输出行数、字数和字节数,按照顺序排列。

wc 命令是一个简单而强大的工具,用于快速获取文件或文本数据的统计信息。根据需要选择不同的选项,可以获取所需的统计结果。

linux wc命令 常用技巧

以下是一些在使用 wc 命令时的一些常用技巧:

  1. 使用通配符统计多个文件的总行数:

    1
    wc -l *.txt

    这将统计所有以 .txt 结尾的文件的总行数。

  2. 使用 echo 命令传递字符串并统计信息:

    1
    echo "Hello, World!" | wc -c

    这将统计字符串 “Hello, World!” 的字符数。

  3. 使用 findxargs 统计多个目录中所有文件的总行数:

    1
    find /path/to/directory -type f -print0 | xargs -0 wc -l

    -print0-0 选项用于处理文件名中包含空格等特殊字符的情况。

  4. for 循环中使用 wc 统计多个文件的信息:

    1
    2
    3
    for file in *.txt; do
    wc "$file"
    done

    这将逐个统计所有以 .txt 结尾的文件的行数、字数和字节数。

  5. 使用 tee 同时输出到屏幕和文件并统计:

    1
    command | tee output.log | wc -l

    这将执行某个命令,将其输出同时写入文件 output.log 和通过管道传递给 wc 统计行数。

  6. 使用 grep 统计匹配行的数量:

    1
    grep -c "pattern" filename.txt

    这将统计文件中包含指定模式的行数。

  7. wc 输出格式化为单行:

    1
    wc -l filename.txt | awk '{print $1}'

    这使用 awk 只输出 wc 的行数,去掉文件名。

  8. 使用 paste 将多个文件的信息并排显示:

    1
    paste <(wc -l file1.txt) <(wc -l file2.txt)

    这将以并排的方式显示两个文件的行数信息。

这些技巧可以帮助你更灵活地使用 wc 命令,根据不同的需求获取所需的统计信息。

简介

  • screen命令

screen

在Linux中,screen命令用于创建和管理会话(session),它允许您在单个终端窗口中同时运行多个终端会话。screen命令提供了一种将会话分离和重新连接的机制,使您可以在需要时断开会话,并在稍后重新连接,而不会丢失会话的状态和进程。

以下是screen命令的一般语法:

1
screen [options] [command [args]]

其中,options是可选的一些选项,command是要运行的命令,args是传递给命令的参数。

以下是一些常见的screen命令选项和用法:

  1. 创建新会话:

    1
    screen

    此命令将创建一个新的screen会话。

  2. 列出所有会话:

    1
    screen -ls

    此命令将列出所有已经存在的screen会话。

  3. 连接到会话:

    1
    screen -r session_id

    此命令将连接到指定的会话,session_id是会话的唯一标识符。

  4. 断开会话:
    screen会话中按下Ctrl + A,然后按下d键。

    此命令将断开当前的screen会话,但会话仍在后台运行。

  5. 重新连接会话:

    1
    screen -r session_id

    此命令将重新连接之前断开的screen会话。

  6. 指定会话名称:

    1
    screen -S session_name

    此命令将创建一个具有指定名称的screen会话。

screen命令还支持其他一些选项和操作,如分割窗口、滚动缓冲区、复制粘贴等。您可以使用man screen命令查看完整的选项和用法说明。

screen命令对于在远程服务器上长时间运行的任务、会话的持久性以及同时管理多个终端会话非常有用。它提供了一种灵活和强大的方式来处理会话管理和终端复用。

linux screen命令 详解

screen 是一个在 Linux 系统中常用的终端复用工具,它允许用户在一个终端会话中创建多个窗口,并在这些窗口之间进行切换,同时还能够在后台运行进程。以下是关于 screen 命令的详解:

1. 安装 screen

在大多数 Linux 发行版中,screen 已经预装。如果未安装,可以使用包管理工具进行安装:

  • 在 Debian/Ubuntu 上:
1
sudo apt-get install screen
  • 在 Red Hat/CentOS 上:
1
sudo yum install screen

2. 基本用法

  • 启动 screen 会话:
1
screen
  • 创建一个新窗口:按下 Ctrl + A,然后按下 C

  • 在窗口之间切换:按下 Ctrl + A,然后按下 n(下一个窗口)或 p(上一个窗口)。

  • 分离会话:按下 Ctrl + A,然后按下 d。这会将 screen 会话放入后台,并保持运行。

  • 重新连接会话:使用以下命令重新连接到 screen 会话:

1
screen -r

3. 高级用法

  • 查看会话列表:可以使用以下命令查看所有 screen 会话:
1
screen -ls
  • 重新连接到指定会话:如果有多个会话,可以使用以下命令重新连接到指定会话:
1
screen -r <session_id>
  • 给会话命名:在创建会话时,可以使用 -S 选项为会话指定一个名称:
1
screen -S mysession

然后可以使用以下命令重新连接到该会话:

1
screen -r mysession
  • 查看帮助:按下 Ctrl + A,然后按下 ?

4. 其他常用操作

  • 关闭当前窗口:在窗口中执行 exit 或按下 Ctrl + D

  • 暂停和恢复滚动:按下 Ctrl + A,然后按下 [ 进入滚动模式,按 Space 开始滚动,按 Esc 退出滚动模式。

  • 在多用户模式下共享会话:可以在多个用户之间共享 screen 会话,具体用法可参考 man screen 中的说明。

这些是 screen 命令的一些基本和高级用法,它是一个强大的工具,特别是在需要在远程服务器上长时间运行任务或会话的情况下。

简介

  • df命令

linux df命令 详解

df(磁盘空间使用情况)命令用于显示文件系统的磁盘空间使用情况统计信息。以下是df命令的基本语法和常用选项:

基本语法:

1
df [选项] [文件或目录]

常见选项:

  1. 显示磁盘空间使用情况:

    1
    df

    不带任何选项时,df显示所有已挂载文件系统的空间使用情况。

  2. 以人类可读的格式显示:

    1
    df -h

    -h选项会以易读的方式显示磁盘空间,使用K、M、G等单位。

  3. 显示文件系统类型:

    1
    df -T

    -T选项会显示文件系统的类型。

  4. 显示inode信息:

    1
    df -i

    -i选项会显示文件系统的inode(索引节点)使用情况。

  5. 仅显示特定文件系统:

    1
    df -t ext4

    -t选项后跟文件系统类型,仅显示指定类型的文件系统信息。

  6. 显示某个文件或目录所在的文件系统:

    1
    df /path/to/file

    提供文件或目录的路径,df会显示该路径所在文件系统的空间使用情况。

示例:

  • 显示所有已挂载文件系统的磁盘空间使用情况:

    1
    df
  • 以人类可读的格式显示磁盘空间使用情况:

    1
    df -h
  • 显示文件系统类型:

    1
    df -T
  • 显示特定类型的文件系统(例如ext4):

    1
    df -t ext4
  • 显示某个文件或目录所在文件系统的磁盘空间使用情况:

    1
    df /path/to/file

df命令提供了一种快速查看系统磁盘空间使用情况的方式,有助于及时发现和解决存储空间不足的问题。你可以通过man df命令来查看更详细的使用说明。

linux df命令 常用技巧

在使用df命令时,有一些常用的技巧和选项,可以帮助你更全面地了解文件系统的磁盘空间使用情况。以下是一些常用的df命令技巧:

  1. 以人类可读的格式显示磁盘空间:

    1
    df -h

    通过-h选项,磁盘空间使用情况将以K、M、G等易读的单位显示。

  2. 显示指定文件系统类型的磁盘空间:

    1
    df -t ext4

    使用-t选项可以指定显示某一类型的文件系统的磁盘空间使用情况。

  3. 显示文件系统的inode信息:

    1
    df -i

    通过-i选项,可以查看文件系统的inode(索引节点)使用情况。

  4. 以非本地文件系统的方式显示:

    1
    df -l

    使用-l选项,df将仅显示非本地文件系统的信息。

  5. 不显示伪文件系统(如tmpfs):

    1
    df -x tmpfs

    使用-x选项,可以排除显示指定类型的文件系统。

  6. 仅显示某个挂载点的信息:

    1
    df /mnt/point

    提供挂载点路径,df将只显示该挂载点所在文件系统的磁盘空间使用情况。

  7. 显示所有文件系统,包括没有任何块设备的:

    1
    df --all

    使用--all选项,df将显示所有的文件系统,即使它们没有关联的块设备。

  8. 使用定时刷新显示磁盘空间:

    1
    watch -n 1 df -h

    使用watch命令,可以定时刷新显示磁盘空间使用情况,此例中每秒刷新一次。

这些技巧可以使你更灵活地使用df命令,便于你监控和管理系统的磁盘空间。记得查看man df以获取更多详细信息。

df

  • 简介:

    • df 是一个用于显示文件系统磁盘空间使用情况的常用命令。它可以告诉您有关磁盘分区或文件系统的容量、已用空间、可用空间和挂载点等信息.
    • 磁盘空间默认以1K为单位展示,单位的大小由环境变量 POSIXLY_CORRECT 设置
  • 语法:

    1
    df [选项] [文件|目录]
  • 选项:

    • -a:显示所有文件系统,包括系统特殊文件系统。
    • -h:以易读的方式显示磁盘空间大小,以人类可读的单位(如 GB、MB)替代以字节为单位的大小。
    • -T:显示文件系统类型。
    • -i:显示索引节点的使用情况而不是磁盘块的使用情况。
    • -x 文件系统类型:排除指定类型的文件系统
  • 示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 显示所有挂载的文件系统的磁盘空间使用情况
    df

    # 显示所有文件系统的磁盘空间使用情况(包括特殊文件系统)
    df -a

    # 以易读的方式显示磁盘空间使用情况:
    df -h

    # 显示指定目录的磁盘空间使用情况
    df /path/to/directory

    # 显示指定文件的磁盘空间使用情况:
    df /path/to/file

    # 显示指定文件系统类型的磁盘空间使用情况
    df -t ext4
  • 详解:

    • df 命令的输出包含以下列
    • 文件系统:文件系统的设备名称或路径。
    • 容量:文件系统的总容量。
    • 已用:已使用的磁盘空间量。
    • 可用:可用的磁盘空间量。
    • 已用%:已用空间的百分比。
    • 挂载点:文件系统所挂载的目录

中文语言包

  • apt-get install language-pack-zh-hans

du

  • du(disk usage),命令用于显示目录或文件的大小
  • du会显示指定的目录或文件所占用的磁盘空间

在Linux中,du命令用于计算目录或文件的磁盘使用情况。它会递归地遍历指定的目录,并计算每个文件和子目录所占用的磁盘空间大小。du命令常用于查看文件和目录的大小,以便进行磁盘空间管理和优化。

以下是du命令的一般语法:

1
du [options] [directory/file]

其中,options是可选的一些选项,directory/file是要计算磁盘使用情况的目录或文件。

以下是一些常见的du命令选项和用法:

  1. 计算目录的磁盘使用情况:

    1
    du directory/

    此命令将递归地计算指定目录及其子目录的磁盘使用情况,并显示每个目录的大小。

  2. 计算文件的磁盘使用情况:

    1
    du file

    此命令将计算指定文件的磁盘使用情况,并显示其大小。

  3. 以人类可读的格式显示磁盘使用情况:

    1
    du -h directory/

    此命令将以可读的单位(如KB、MB、GB)显示磁盘使用情况。

  4. 仅显示总的磁盘使用情况:

    1
    du -sh directory/

    此命令将只显示指定目录的总磁盘使用情况,而不显示每个子目录的详细信息。

  5. 排除某些文件或目录:

    1
    du --exclude=pattern directory/

    此命令将排除符合指定模式的文件或目录,不计算它们的磁盘使用情况。

du命令还支持其他一些选项,如限制递归深度、显示每个文件的磁盘使用情况等。您可以使用man du命令查看完整的选项和用法说明。

总体而言,du命令是一个非常有用的工具,用于计算文件和目录的磁盘使用情况。它可以帮助您查找磁盘空间占用较大的文件和目录,以便进行磁盘空间管理和优化。

简介

  • userdata命令

linux useradd命令 详解

useradd命令用于在Linux系统中创建新用户。它可以通过命令行提供一系列选项和参数来配置新用户的属性。以下是useradd命令的基本语法和一些常见选项:

基本语法:

1
useradd [选项] 用户名

常见选项:

  1. 指定用户家目录:

    1
    useradd -m -d /home/newuser newuser
    • -m: 创建用户的家目录。
    • -d: 指定用户的家目录路径。
  2. 指定用户ID(UID):

    1
    useradd -u 1001 newuser
    • -u: 指定用户ID。
  3. 指定初始登录Shell:

    1
    useradd -s /bin/bash newuser
    • -s: 指定初始登录Shell。
  4. 指定用户组:

    1
    useradd -g users newuser
    • -g: 指定用户的主组。
  5. 指定附加组:

    1
    useradd -G wheel,ftp newuser
    • -G: 指定用户的附加组。
  6. 设置用户密码:

    1
    passwd newuser

    使用passwd命令为新用户设置密码。

  7. 强制用户在首次登录时修改密码:

    1
    useradd -e 2023-01-31 newuser
    • -e: 指定过期日期。
  8. 创建系统用户:

    1
    useradd -r sysuser
    • -r: 创建系统用户。

示例:

  • 创建一个新用户并设置密码:

    1
    2
    useradd newuser
    passwd newuser
  • 创建用户时指定用户ID、初始Shell和主组:

    1
    useradd -u 1001 -s /bin/bash -g users newuser
  • 创建系统用户:

    1
    useradd -r sysuser

请注意,使用useradd仅会创建用户,如果你需要为新用户分配文件访问权限,可能还需要使用chownchmod等命令。要了解更多选项和详细信息,可以查看man useradd

linux useradd命令 常用技巧

在使用useradd命令时,有一些常用的技巧和选项,可以帮助你更灵活地创建和管理用户。以下是一些常见的useradd命令技巧:

  1. 一次性设置多个用户:

    1
    sudo useradd user1 user2 user3

    可以在一条命令中一次性创建多个用户。

  2. 使用-m选项创建用户的家目录:

    1
    sudo useradd -m newuser

    -m选项将会为新用户创建一个家目录。

  3. 指定用户ID(UID):

    1
    sudo useradd -u 1001 newuser

    使用-u选项可以为用户指定特定的用户ID。

  4. 指定用户组:

    1
    sudo useradd -g users newuser

    使用-g选项可以指定新用户的主组。

  5. 添加用户到多个附加组:

    1
    sudo useradd -G wheel,ftp newuser

    使用-G选项可以为用户指定多个附加组。

  6. 指定用户的登录Shell:

    1
    sudo useradd -s /bin/bash newuser

    使用-s选项可以为用户指定初始登录Shell。

  7. 创建系统用户:

    1
    sudo useradd -r sysuser

    使用-r选项可以创建系统用户,这样系统用户将没有家目录,通常用于运行服务的用户。

  8. 创建用户并设置过期日期:

    1
    sudo useradd -e 2023-01-31 newuser

    使用-e选项可以设置用户的过期日期,用户在首次登录时需要修改密码。

  9. 创建用户时强制指定密码:

    1
    sudo useradd -p $(openssl passwd -crypt mypassword) newuser

    使用-p选项可以指定经过加密的密码。上例中使用openssl passwd -crypt生成加密的密码。

  10. 禁用新用户的登录权限:

    1
    sudo useradd -M newuser

    使用-M选项可以创建用户,但不会为其创建家目录,也不会设置登录Shell,从而禁用其登录权限。

这些技巧可以帮助你更好地使用useradd命令,根据具体需求创建和管理用户。确保仔细查看man useradd以了解更多详细信息。

useradd

  • useradd, 用于建立用户账号
  • useradd可用来建立用户账号,账号建好之后,再用passwd设定账号的密码,用userdel删除账号,
  • 示例:
    • useradd tt # 添加一般用户
    • useradd -g root tt # 为添加的用户指定相应的用户组
    • useradd -r tt # 创建一个系统用户
    • useradd -d /home/myd tt # 为新添加的用户指定home目录
    • useradd caojh -u 544 # 建立用户并制定id

在Linux中,useradd命令用于创建新用户账号。它是用于管理用户的基本命令之一。

以下是useradd命令的一般语法:

1
useradd [options] username

其中,options是可选的一些选项,username是要创建的新用户的用户名。

以下是一些常见的useradd命令选项和用法:

  1. 创建新用户:

    1
    useradd username

    此命令将创建一个新用户账号,并使用指定的用户名。

  2. 指定用户ID(UID):

    1
    useradd -u uid username

    此命令将为新用户指定一个特定的用户ID(UID)。如果未指定,系统会自动分配一个唯一的UID。

  3. 指定用户所属的初始组:

    1
    useradd -g groupname username

    此命令将指定新用户所属的初始组。如果未指定,将使用与用户名相同的组。

  4. 指定用户的主目录:

    1
    useradd -d homedir username

    此命令将为新用户指定一个特定的主目录。如果未指定,系统将创建一个与用户名相同的目录。

  5. 创建用户并指定登录Shell:

    1
    useradd -s shell username

    此命令将为新用户指定一个特定的登录Shell。如果未指定,将使用系统默认的Shell。

useradd命令还支持其他一些选项,如设置用户的密码、指定用户的备注信息等。您可以使用man useradd命令查看完整的选项和用法说明。

请注意,使用useradd命令仅创建用户账号,不会自动创建密码或设置用户的权限和访问控制。您可能需要使用其他命令,如passwdusermod,来设置密码和修改用户的属性。

简介

  • source命令

source

  • source命令(从 C Shell而来)是bash shell的内置命令; . 点命令,就是一个点符号,是source的另一名称。这两个命令都以一个脚本为参数,该脚本将在当前shell的环境执行,即** 不会启动一个新的子shell** 。所有在脚本中设置的变量都将成为当前shell的一部分
  • source命令的妙用:
    • 在编译核心时,常常要反复输入一长串命令。这些命令即长又繁琐,而且有时候容易输错。
    • 如果把命令做成一个文件,让它自动执行,对于需要多次反复编译核心的用户来说,会很方便
    • 用source命令可以做到这一点。** 它的作用就是把一个文件的内容当成是shell来执行**
  • source filename, sh filename, ./filename
    • 当shell脚本具有可执行权限时,用sh filename./filename执行脚本没有区别。 ./filename是因为当前目录没有在PATH, 所有. 都是用来表示当前目录的

在Linux中,source命令用于在当前Shell环境中执行指定的脚本文件,并将其内容加载到当前Shell会话中。它通常用于加载和执行Shell脚本,以便在当前Shell会话中设置环境变量、函数和其他Shell配置。

以下是source命令的一般语法:

1
source filename

或者可以使用点号(.)来代替source命令:

1
. filename

其中,filename是要执行的脚本文件的名称,可以是相对路径或绝对路径。

source命令的作用是将指定的脚本文件的内容作为当前Shell会话的一部分来执行,而不是在一个单独的子Shell中执行。这意味着在执行完脚本后,其中定义的变量、函数和别名将在当前Shell环境中保持可用。

使用source命令的一些常见用例包括:

  1. 加载Shell配置文件:

    1
    source ~/.bashrc

    此命令将加载用户主目录下的.bashrc文件中定义的配置,使得配置的环境变量、别名等在当前Shell会话中生效。

  2. 执行Shell脚本:

    1
    source script.sh

    此命令将执行script.sh脚本文件,并将脚本中的内容加载到当前Shell环境中。

需要注意的是,source命令是在当前Shell环境中执行脚本,因此需要确保脚本文件具有可执行权限。

使用source命令可以方便地在当前Shell会话中加载和执行脚本文件,将脚本中定义的变量、函数和其他配置设置直接应用于当前环境。

linux source命令 详解

source 命令是在 Bash(Bourne Again SHell)中使用的一个内置命令,它用于在当前 Shell 环境中执行指定脚本文件,通常是用来加载配置文件或者在当前 Shell 环境中应用一些设置。以下是关于 source 命令的详细解释:

1. 基本用法

source 命令的基本语法如下:

1
source filename

或者使用缩写形式:

1
. filename

其中 filename 是要执行的脚本文件的路径。

2. 作用

source 的主要作用是在当前 Shell 环境中运行指定的脚本,而不是创建一个新的子 Shell 来执行脚本。这与直接运行脚本的区别在于,直接运行脚本会在一个新的子 Shell 中执行,而 source 会在当前 Shell 环境中执行,因此它可以影响当前 Shell 的环境变量和状态。

3. 使用场景

  • 加载配置文件: 常见的用法是在登录时加载用户的配置文件,比如 ~/.bashrc~/.bash_profile 文件。这样,用户定义的环境变量、别名和函数将在登录后的每个 Shell 会话中生效。
1
source ~/.bashrc
  • 应用设置和变更: 当你修改了一个 Shell 脚本或配置文件,并希望立即应用这些变更而不用关闭当前的 Shell 会话时,可以使用 source 命令。
1
source myscript.sh

4. 注意事项

  • 点号 .source 的等价性: 在 Bash 中,.(点号)和 source 是等价的,它们都用于执行脚本文件。例如:

    1
    . myscript.sh
  • 文件路径: 如果文件路径中包含空格,最好将路径用引号括起来:

    1
    source "path with spaces/myscript.sh"
  • 退出状态: 如果脚本执行成功,source 命令将返回 0;如果出现错误,返回非零值。

5. 示例

假设有一个脚本文件 myscript.sh 包含以下内容:

1
2
# myscript.sh
export MY_VARIABLE="Hello, World!"

使用 source 命令应用该脚本:

1
2
source myscript.sh
echo $MY_VARIABLE

上述代码执行后,$MY_VARIABLE 将在当前 Shell 中生效,并输出 “Hello, World!”。

总的来说,source 命令是一个方便的工具,用于在当前 Shell 环境中执行脚本,使得对环境变量和设置的修改能够立即生效。

linux source命令 详解

source 命令用于在当前 Shell 环境中执行指定的脚本文件,通常用于加载配置文件或在当前 Shell 中应用一些设置。在 Bash 中,.(点号)也可以用于执行脚本文件,它与 source 是等价的。以下是关于 source 命令的详细解释:

1. 基本语法

1
source filename [arguments]

或者使用点号的缩写形式:

1
. filename [arguments]

其中,filename 是脚本文件的路径,而 arguments 是传递给脚本的参数。

2. 作用

source 命令的主要作用是在当前 Shell 环境中运行指定的脚本,而不是创建一个新的子 Shell。这意味着脚本中的变量、函数和其他环境设置将直接影响当前 Shell。

3. 使用场景

  • 加载配置文件: 常见的用法是在登录时加载用户的配置文件,例如 ~/.bashrc~/.bash_profile 文件。通过 source 命令,用户定义的环境变量、别名和函数将在每个新的 Shell 会话中生效。

    1
    source ~/.bashrc
  • 应用设置和变更: 当修改了一个 Shell 脚本或配置文件,并希望立即应用这些变更而不用重新启动 Shell 时,可以使用 source 命令。

    1
    source myscript.sh

4. 注意事项

  • 点号 .source 的等价性: 在 Bash 中,.(点号)和 source 是等价的,它们都用于执行脚本文件。例如:

    1
    . myscript.sh
  • 文件路径中的空格: 如果文件路径中包含空格,最好将路径用引号括起来。

    1
    source "path with spaces/myscript.sh"
  • 退出状态: 如果脚本执行成功,source 命令将返回 0;如果出现错误,返回非零值。

5. 示例

假设有一个脚本文件 myscript.sh 包含以下内容:

1
2
# myscript.sh
export MY_VARIABLE="Hello, World!"

使用 source 命令应用该脚本:

1
2
source myscript.sh
echo $MY_VARIABLE

上述代码执行后,$MY_VARIABLE 将在当前 Shell 中生效,并输出 “Hello, World!”。

总的来说,source 命令是一个有用的工具,特别是在需要在当前 Shell 中应用配置或设置时,可以确保变量和环境的改变在当前 Shell 中生效。

简介

  • userdel命令

linux userdel命令 详解

userdel命令用于从Linux系统中删除用户账号。同时,它也可以删除与用户关联的相关文件和目录。以下是userdel命令的基本语法和一些常见选项:

基本语法:

1
userdel [选项] 用户名

常见选项:

  1. 仅删除用户账号,保留家目录:

    1
    sudo userdel username

    默认情况下,userdel命令会保留用户的家目录。这意味着用户的文件和目录将不被删除。

  2. 删除用户账号及其家目录:

    1
    sudo userdel -r username

    使用-r选项,userdel会删除用户账号以及相关的家目录和邮件目录等文件。

  3. 同时删除用户主目录中的文件:

    1
    sudo userdel -f -r username

    -f选项用于强制删除,即使用户当前登录也会执行删除操作。

  4. 不检查用户是否当前登录:

    1
    sudo userdel -f -r username

    -f选项用于强制删除,即使用户当前登录也会执行删除操作。

示例:

  • 仅删除用户账号,保留家目录:

    1
    sudo userdel username
  • 删除用户账号及其家目录:

    1
    sudo userdel -r username
  • 强制删除用户账号及其家目录,不检查用户是否当前登录:

    1
    sudo userdel -f -r username

请谨慎使用userdel命令,特别是在删除用户及其家目录时,以免误删重要数据。建议在执行删除操作前备份需要保留的数据。你还可以查看man userdel获取更详细的帮助和选项信息。

linux userdel命令 常用技巧

userdel命令用于删除用户账号,而且可以选择是否删除相关的家目录和文件。以下是一些常用的userdel命令技巧:

  1. 删除用户账号,保留家目录:

    1
    sudo userdel username

    这将只删除用户账号,而不会删除用户的家目录及其内容。

  2. 删除用户账号及其家目录:

    1
    sudo userdel -r username

    使用-r选项会删除用户账号以及相关的家目录和邮件目录等文件。

  3. 删除用户账号及其家目录,不显示提示信息:

    1
    sudo userdel -r -f username

    使用-f选项可以强制删除用户账号及其家目录,而且不会显示提示信息。

  4. 批量删除用户账号:

    1
    sudo cat userlist.txt | xargs sudo userdel -r

    假设有一个包含要删除用户的列表的userlist.txt文件,可以使用xargs命令结合userdel命令批量删除这些用户。

  5. 删除用户账号但不删除家目录,仅将其重命名:

    1
    sudo usermod -l newname -d /home/newname oldname

    这会通过usermod命令将用户的账号和家目录进行重命名。

  6. 删除用户账号及其邮箱文件:

    1
    sudo userdel -r -m username

    -m选项删除用户账号及其家目录,包括邮件目录等。

  7. 不检查用户是否当前登录:

    1
    sudo userdel -f -r username

    使用-f选项可以强制删除用户账号及其家目录,即使用户当前登录也会执行删除操作。

  8. 查看userdel的帮助文档:

    1
    man userdel

    使用man命令查看userdel命令的详细帮助文档,了解更多选项和用法。

请注意,删除用户账号是一个敏感操作,务必谨慎操作。在执行删除操作前,最好确保备份需要保留的数据。

userdel

  • 命令用于删除用户账号
  • userdel可删除用户账号与相关的文件,若不加参数,则仅删除用户账号,而不删除相关文件
  • userdel -r username

在Linux中,userdel命令用于删除用户账号。它是用于管理用户的基本命令之一。

以下是userdel命令的一般语法:

1
userdel [options] username

其中,options是可选的一些选项,username是要删除的用户账号的用户名。

以下是一些常见的userdel命令选项和用法:

  1. 删除用户账号:

    1
    userdel username

    此命令将删除指定用户名的用户账号。注意,这只会删除用户账号本身,不会删除用户的主目录或其他相关文件。

  2. 删除用户账号及其主目录:

    1
    userdel -r username

    此命令将删除指定用户名的用户账号,并且同时删除用户的主目录及其内容。

userdel命令还支持其他一些选项,如指定用户的辅助组保留其文件、强制删除用户账号等。您可以使用man userdel命令查看完整的选项和用法说明。

请注意,删除用户账号可能会导致与该用户相关的文件和权限失效。在删除用户账号之前,请确保您了解其影响,并根据需要备份相关文件。

简介

  • grep命令

linux grep命令 详解

grep命令是一个在Linux和Unix系统中用于搜索指定文本模式的强大工具。它通过标准输入或文件中的文本进行匹配搜索,并将匹配的行输出到标准输出。以下是grep命令的基本语法和一些常见选项:

基本语法:

1
grep [选项] 模式 [文件...]

常见选项:

  1. 基本搜索:

    1
    grep "pattern" filename

    在指定文件中搜索包含指定模式的行。

  2. 递归搜索:

    1
    grep -r "pattern" directory

    使用-r选项可以递归搜索指定目录及其子目录中的文件。

  3. 忽略大小写:

    1
    grep -i "pattern" filename

    使用-i选项可以忽略搜索时的大小写。

  4. 显示匹配行数:

    1
    grep -n "pattern" filename

    使用-n选项可以显示匹配行的行号。

  5. 显示不匹配的行:

    1
    grep -v "pattern" filename

    使用-v选项可以显示不包含指定模式的行。

  6. 只显示匹配的模式:

    1
    grep -o "pattern" filename

    使用-o选项可以只显示匹配的模式,而不显示整行。

  7. 显示匹配的行及上下文:

    1
    grep -C 2 "pattern" filename

    使用-C选项可以显示匹配行的上下文(前后2行)。

  8. 使用正则表达式:

    1
    grep -E "pattern" filename

    使用-E选项可以启用扩展正则表达式。

  9. 显示匹配的行数:

    1
    grep -c "pattern" filename

    使用-c选项可以显示匹配的行数而不显示匹配的内容。

示例:

  • 在文件中搜索指定模式:

    1
    grep "pattern" filename
  • 递归搜索目录及其子目录中的文件:

    1
    grep -r "pattern" directory
  • 忽略大小写搜索:

    1
    grep -i "pattern" filename
  • 显示匹配行的行号:

    1
    grep -n "pattern" filename
  • 显示不匹配的行:

    1
    grep -v "pattern" filename
  • 只显示匹配的模式而不显示整行:

    1
    grep -o "pattern" filename
  • 显示匹配行的上下文:

    1
    grep -C 2 "pattern" filename
  • 使用扩展正则表达式:

    1
    grep -E "pattern" filename
  • 显示匹配的行数:

    1
    grep -c "pattern" filename

grep命令非常灵活,可以通过不同的选项和参数满足各种搜索需求。记得查看man grep以获取更多详细信息。

linux grep命令 常用技巧

在使用grep命令时,有一些常用的技巧和选项,可以帮助你更有效地进行文本搜索。以下是一些grep命令的常用技巧:

  1. 递归搜索目录及其子目录:

    1
    grep -r "pattern" directory

    使用-r选项可以递归搜索指定目录及其子目录中的文件。

  2. 忽略大小写进行搜索:

    1
    grep -i "pattern" filename

    使用-i选项可以忽略搜索时的大小写。

  3. 显示匹配行的行号:

    1
    grep -n "pattern" filename

    使用-n选项可以显示匹配行的行号。

  4. 只显示匹配的模式而不显示整行:

    1
    grep -o "pattern" filename

    使用-o选项可以只显示匹配的模式,而不显示整行。

  5. 显示匹配行的上下文:

    1
    grep -C 2 "pattern" filename

    使用-C选项可以显示匹配行的上下文(前后2行)。

  6. 使用正则表达式进行搜索:

    1
    grep -E "pattern" filename

    使用-E选项可以启用扩展正则表达式。

  7. 显示不匹配的行:

    1
    grep -v "pattern" filename

    使用-v选项可以显示不包含指定模式的行。

  8. 只统计匹配的行数而不显示匹配的内容:

    1
    grep -c "pattern" filename

    使用-c选项可以只显示匹配的行数。

  9. 逆向搜索,显示不匹配的行:

    1
    grep -v "pattern" filename

    使用-v选项可以显示不包含指定模式的行,实现逆向搜索。

  10. 使用多个文件进行搜索:

    1
    grep "pattern" file1 file2

    可以同时在多个文件中搜索指定模式。

  11. 搜索特定类型的文件:

    1
    grep "pattern" *.txt

    可以使用通配符来搜索特定类型的文件。

  12. 使用管道和其他命令结合搜索:

    1
    cat filename | grep "pattern"

    可以通过管道将其他命令的输出传递给grep进行搜索。

这些技巧可以帮助你更灵活地使用grep命令,提高文本搜索的效率。记得查看man grep以获取更多详细信息。

linux grep命令 高级技巧

除了基本的用法和常用技巧之外,grep命令还有一些高级的用法,可以更灵活、高效地进行文本搜索。以下是一些高级的grep命令技巧:

  1. 使用正则表达式进行复杂匹配:

    1
    grep -E "pattern1|pattern2" filename

    使用-E选项启用扩展正则表达式,可以使用|操作符实现或逻辑,匹配pattern1pattern2

  2. 使用反向引用进行复杂匹配:

    1
    grep -E "(pattern)\1" filename

    使用反向引用,\1表示匹配前面括号中的内容,这可以用于查找重复的模式。

  3. 搜索行首或行尾:

    1
    grep "^pattern" filename

    使用^表示匹配行首,pattern$表示匹配行尾。

  4. 递归搜索并显示匹配的文件名:

    1
    grep -r -l "pattern" directory

    使用-l选项,grep会显示包含匹配模式的文件名,而不是匹配的内容。

  5. 显示匹配行的上下文,并带颜色:

    1
    grep -C 2 --color "pattern" filename

    使用--color选项可以为匹配的模式添加颜色显示,同时使用-C选项显示匹配行的上下文。

  6. 只显示匹配的行号:

    1
    grep -n -o -e "pattern" filename

    使用-o选项只显示匹配的模式,再结合-n选项显示匹配行的行号。

  7. 忽略二进制文件:

    1
    grep -I "pattern" filename

    使用-I选项可以忽略二进制文件,仅搜索文本文件。

  8. 使用多个模式进行搜索:

    1
    grep -e "pattern1" -e "pattern2" filename

    使用多个-e选项可以同时搜索多个模式。

  9. 在搜索结果中排除某个模式:

    1
    grep "pattern" filename | grep -v "exclude_pattern"

    使用管道结合grep -v命令可以排除某个模式。

  10. 使用--include--exclude选项进行文件过滤:

    1
    grep -r --include="*.txt" --exclude="*.bak" "pattern" directory

    使用--include--exclude选项可以指定搜索的文件类型,排除不需要搜索的文件。

这些高级用法可以帮助你更灵活地利用grep命令进行文本搜索,满足更复杂的搜索需求。记得查看man grep以获取更多详细信息。

grep

  • grep,命令用于查找文件里符合条件的字符串
  • grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来
  • 若不指定任何文件名称,或是所给予的文件名为 - ,则grep指令会从标准输入设备读取数据.
  • 示例:
    • grep -i -r -w -n cudnn ./*
      • -i,--ignore-case : 忽略大小写
      • -r,--recursive :递归查找每一个文件夹下的文件
      • -w,--word-regexp : 仅查找包含全部字符的行
      • -n,--line-number : 输入每个文件所匹配的字符在的行,以1为基准

在Linux中,grep是一个强大的文本搜索工具,用于在文件中查找指定模式的文本行。grep命令通常与其他命令结合使用,以便在大量文本数据中过滤出所需的内容。

以下是grep命令的一般语法:

1
grep [options] pattern [file(s)]

其中,options是可选的一些选项,pattern是要搜索的模式,file(s)是要搜索的文件列表。

以下是一些常见的grep命令选项和用法:

  1. 在单个文件中搜索模式:

    1
    grep pattern file

    此命令将在指定的文件中搜索匹配指定模式的文本行,并将其输出到标准输出。

  2. 在多个文件中搜索模式:

    1
    grep pattern file1 file2

    此命令将在多个文件中搜索匹配指定模式的文本行,并将其输出到标准输出。

  3. 递归地搜索目录中的文件:

    1
    grep -r pattern directory

    此命令将递归地搜索指定目录中的所有文件,查找匹配指定模式的文本行。

  4. 忽略大小写:

    1
    grep -i pattern file

    此命令将在搜索时忽略模式的大小写。

  5. 显示匹配行的行号:

    1
    grep -n pattern file

    此命令将显示匹配行的行号。

  6. 反向搜索(显示不匹配的行):

    1
    grep -v pattern file

    此命令将显示不匹配指定模式的文本行。

grep命令还支持其他一些选项和功能,如正则表达式匹配、显示匹配的上下文行、统计匹配的行数等。您可以使用man grep命令查看完整的选项和用法说明。

grep命令是一个非常强大和灵活的文本搜索工具,可用于在文件和目录中快速查找匹配特定模式的内容。

简介

  • tar命令

tar

  • 解压文件:tar -zxf filename -C destination-path
  • 压缩文件:tar -zcf filename

linux tar命令 详解

tar是Linux系统中一个用于归档和压缩文件的命令行工具。它的名称来源于”tape archive”,最初设计是为了在磁带上创建备份。下面是tar命令的一些常见用法和参数:

基本语法:

1
tar [选项] [文件或目录]

常见选项:

  1. 创建归档文件:

    1
    tar -cvf archive.tar file1 file2 directory
    • -c: 创建归档文件。
    • -v: 显示详细信息。
    • -f: 指定归档文件的名称。
  2. 解压缩归档文件:

    1
    tar -xvf archive.tar
    • -x: 解压缩归档文件。
  3. 查看归档文件内容:

    1
    tar -tvf archive.tar
    • -t: 列出归档文件中的内容。
  4. 添加文件到已有归档文件:

    1
    tar -rvf archive.tar newfile
    • -r: 向已有归档文件中添加文件。
  5. 从归档中删除文件:

    1
    tar --delete -f archive.tar file1
    • --delete: 从归档文件中删除文件。
  6. 指定工作目录:

    1
    tar -C /path/to/directory -xvf archive.tar
    • -C: 指定解压缩时的工作目录。
  7. 压缩归档文件(使用gzip):

    1
    tar -czvf archive.tar.gz directory
    • -z: 使用gzip进行压缩。
  8. 压缩归档文件(使用bzip2):

    1
    tar -cjvf archive.tar.bz2 directory
    • -j: 使用bzip2进行压缩。

示例:

  • 创建归档文件并压缩:

    1
    tar -czvf archive.tar.gz directory
  • 解压缩压缩过的归档文件:

    1
    tar -xzvf archive.tar.gz
  • 查看归档文件内容:

    1
    tar -tvf archive.tar

请注意,tar命令的选项可能有所不同,具体取决于系统和tar版本。你可以使用man tar命令查看tar的手册页以获
取更详细的信息。

linux tar命令 常用技巧

在使用tar命令时,有一些常用的技巧和实用的选项,可以帮助你更有效地处理文件和目录。以下是一些常用的tar命令技巧:

  1. 压缩和解压缩:

    • 压缩文件:
      1
      tar -czvf archive.tar.gz file1 file2 directory
    • 解压缩文件:
      1
      tar -xzvf archive.tar.gz
  2. 使用不同的压缩算法:

    • 使用bzip2进行压缩:
      1
      tar -cjvf archive.tar.bz2 directory
    • 使用xz进行压缩:
      1
      tar -cJvf archive.tar.xz directory
  3. 仅显示归档文件的内容而不解压缩:

    1
    tar -tvf archive.tar
  4. 向归档文件添加新文件:

    1
    tar -rvf archive.tar newfile
  5. 从归档文件中删除文件:

    1
    tar --delete -f archive.tar file1
  6. 创建归档时排除特定文件或目录:

    1
    tar --exclude=pattern -cvf archive.tar directory
  7. 压缩归档文件时显示进度信息:

    1
    tar -czvf - directory | pv > archive.tar.gz
    • pv是一个用于显示数据流进度的命令。
  8. 在指定目录解压缩文件:

    1
    tar -C /path/to/destination -xvzf archive.tar.gz
  9. 将归档文件从远程服务器传输到本地:

    1
    ssh user@remote 'tar -czvf - directory' | tar -xzvf -
  10. 仅解压缩归档文件的部分内容:

    1
    tar -xzvf archive.tar.gz --wildcards '*.txt'
    • 仅解压缩归档文件中扩展名为.txt的文件。

这些技巧可以帮助你更灵活地使用tar命令,提高在文件和目录处理方面的效率。记得查看man tar以获取更多详细信息。

tar

  • tar(tape archive),命令用于备份文件

  • tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件

  • tar命令 可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

  • 首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

  • 为什么要区分这两个概念呢?

    • 这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
  • 语法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>]
    [-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>]
    [-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>]
    [--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>]
    [--checkpoint][--concatenate][--confirmation][--delete]
    [--exclude=<范本样式>][--force-local][--group=<群组名称>][--help]
    [--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime]
    [--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix]
    [--erve][--preserve-order][--preserve-permissions]
    [--record-size=<区块数目>][--recursive-unlink][--remove-files]
    [--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>]
    [--totals][--use-compress-program=<执行指令>][--version]
    [--volno-file=<编号文件>][文件或目录...]
  • 选项:

    • -A或–catenate:新增文件到以存在的备份文件;
    • -b<区块数目>或–blocking-factor=<区块数目>;
    • -B:设置区块大小;
    • -c或–create:建立新的备份文件;
    • -C <目录>:切换工作目录,先进入指定目录再执行压缩/解压缩操作,可用于仅压缩特定目录里的内容或解压缩到特定目录
    • -d或–diff或–compare 对比备份文件内和文件系统上的文件的差异。
    • -f<备份文件>或–file=<备份文件> 指定备份文件。
    • -F<Script文件>或–info-script=<Script文件> 每次更换磁带时,就执行指定的Script文件
    • -g或–listed-incremental 处理GNU格式的大量备份。
    • -G或–incremental 处理旧的GNU格式的大量备份。
    • -h或–dereference 不建立符号连接,直接复制该连接所指向的原始文件。
    • -i或–ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。
    • -k或–keep-old-files 解开备份文件时,不覆盖已有的文件。
    • -K<文件>或–starting-file=<文件> 从指定的文件开始还原。
    • -l或–one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制
    • -L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。
    • -m或–modification-time 还原文件时,不变更文件的更改时间。
    • -M或–multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
    • -N<日期格式>或–newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。
    • -o或–old-archive或–portability 将资料写入备份文件时使用V7格式。
    • -O或–stdout 把从备份文件里还原的文件输出到标准输出设备。
    • -p或–same-permissions 用原来的文件权限还原文件。
    • -P或–absolute-names 文件名使用绝对名称,不移除文件名称前的”/”号。
    • -r或–append 新增文件到已存在的备份文件的结尾部分。
    • -R或–block-number 列出每个信息在备份文件中的区块编号。
    • -s或–same-order 还原文件的顺序和备份文件内的存放顺序相同。
    • -S或–sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
    • -t或–list 列出备份文件的内容。
    • -T<范本文件>或–files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
    • -u或–update 仅置换较备份文件内的文件更新的文件。
    • -U或–unlink-first 解开压缩文件还原文件之前,先解除文件的连接。
    • -v或–verbose 显示指令执行过程。
    • -V<卷册名称>或–label=<卷册名称> 建立使用指定的卷册名称的备份文件。
    • -w或–interactive 遭遇问题时先询问用户。
    • -W或–verify 写入备份文件后,确认文件正确无误。
    • -x或–extract或–get:从备份文件中还原文件;
    • -t或–list:列出备份文件的内容;
    • -z或–gzip或–ungzip:通过gzip指令处理备份文件;
    • -Z或–compress或–uncompress:通过compress指令处理备份文件;
    • -<设备编号><存储密度> 设置备份用的外围设备编号及存放数据的密度。
    • –after-date=<日期时间> 此参数的效果和指定”-N”参数相同。
    • –atime-preserve 不变更文件的存取时间。
    • –backup=<备份方式>或–backup 移除文件前先进行备份。
    • –checkpoint 读取备份文件时列出目录名称。
    • –concatenate 此参数的效果和指定”-A”参数相同。
    • –confirmation 此参数的效果和指定”-w”参数相同。
    • –delete 从备份文件中删除指定的文件。
    • –exclude=<范本样式> 排除符合范本样式的问家。
    • –group=<群组名称> 把加入设备文件中的文件的所属群组设成指定的群组。
    • –help 在线帮助。
    • –ignore-failed-read 忽略数据读取错误,不中断程序的执行。
    • –new-volume-script=<Script文件> 此参数的效果和指定”-F”参数相同。
    • –newer-mtime 只保存更改过的文件。
    • –no-recursion 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
    • –null 从null设备读取文件名称。
    • –numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称。
    • –owner=<用户名称> 把加入备份文件中的文件的拥有者设成指定的用户。
    • –posix 将数据写入备份文件时使用POSIX格式。
    • –preserve 此参数的效果和指定”-ps”参数相同。
    • –preserve-order 此参数的效果和指定”-A”参数相同。
    • –preserve-permissions 此参数的效果和指定”-p”参数相同。
    • –record-size=<区块数目> 此参数的效果和指定”-b”参数相同。
    • –recursive-unlink 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
    • –remove-files 文件加入备份文件后,就将其删除。
    • –rsh-command=<执行指令> 设置要在远端主机上执行的指令,以取代rsh指令。
    • –same-owner 尝试以相同的文件拥有者还原问家你。
    • –suffix=<备份字尾字符串> 移除文件前先行备份。
    • –totals 备份文件建立后,列出文件大小。
    • –use-compress-program=<执行指令> 通过指定的指令处理备份文件。
    • –version 显示版本信息。
    • –volno-file=<编号文件> 使用指定文件内的编号取代预设的卷册编号。
  • 参数:文件或目录:指定要打包的文件或目录列表。

  • 实例:

    • -z:有gzip属性的
    • -j:有bz2属性的
    • -Z:有compress属性的
    • -v:显示所有过程
    • -O:将文件解开到标准输出
  • 下面的参数-f是必须的

    • -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      tar -cf all.tar *.jpg
      # 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

      tar -rf all.tar *.gif
      # 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

      tar -uf all.tar logo.gif
      # 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

      tar -tf all.tar
      # 这条命令是列出all.tar包中所有文件,-t是列出文件的意思

      tar -cfv archive.tar foo bar # 从文件foo和bar创建archive.tar。
      tar -tvf archive.tar # 详细列出archive.tar中的所有文件。
      tar -xf archive.tar # 从archive.tar提取所有文件。
  • zip格式

    • 压缩: zip -r [目标文件名].zip [原文件/目录名]
    • 解压: unzip [原文件名].zip
    • 注:-r参数代表递归
  • tar格式(该格式仅仅打包,不压缩)

    • 打包:tar -cvf [目标文件名].tar [原文件名/目录名]
    • 解包:tar -xvf [原文件名].tar
    • 注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。
  • tar.gz格式

    • 方式一:利用前面已经打包好的tar文件,直接用压缩命令。
      • 压缩:gzip [原文件名].tar
      • 解压:gunzip [原文件名].tar.gz
    • 方式二:一次性打包并压缩、解压并解包
      • 打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名]
      • 解压并解包: tar -zxvf [原文件名].tar.gz
      • 注:z代表用gzip算法来压缩/解压。
  • tar.bz2格式

    • 方式一:利用已经打包好的tar文件,直接执行压缩命令:
      • 压缩:bzip2 [原文件名].tar
      • 解压:bunzip2 [原文件名].tar.bz2
    • 方式二:一次性打包并压缩、解压并解包
      • 打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名]
      • 解压并解包: tar -jxvf [原文件名].tar.bz2
      • 注:小写j代表用bzip2算法来压缩/解压。
  • tar.xz格式

    • 方式一:利用已经打包好的tar文件,直接用压缩命令:
      • 压缩:xz [原文件名].tar
      • 解压:unxz [原文件名].tar.xz
    • 方式二:一次性打包并压缩、解压并解包
      • 打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
      • 解压并解包: tar -Jxvf [原文件名].tar.xz
      • 注:大写J代表用xz算法来压缩/解压。
  • jar格式

    • 压缩:jar -cvf [目标文件名].jar [原文件名/目录名]
    • 解压:jar -xvf [原文件名].jar
  • 7z格式

    • 压缩:7z a [目标文件名].7z [原文件名/目录名]
    • 解压:7z x [原文件名].7z
    • 注:这个7z解压命令支持rar格式

简介

  • usermod命令

linux usermod命令 详解

usermod命令用于修改用户账号的属性,包括用户ID(UID)、组ID(GID)、家目录、登录Shell等。以下是usermod命令的基本语法和一些常见选项:

基本语法:

1
usermod [选项] 用户名

常见选项:

  1. 修改用户ID(UID):

    1
    sudo usermod -u 1001 username

    使用-u选项可以修改用户的用户ID。

  2. 修改用户组ID(GID):

    1
    sudo usermod -g users username

    使用-g选项可以修改用户的主组ID。

  3. 修改附加组:

    1
    sudo usermod -G wheel,ftp username

    使用-G选项可以修改用户的附加组。

  4. 修改家目录:

    1
    sudo usermod -d /newhome username

    使用-d选项可以修改用户的家目录路径。

  5. 修改登录Shell:

    1
    sudo usermod -s /bin/bash username

    使用-s选项可以修改用户的登录Shell。

  6. 修改用户的账号过期时间:

    1
    sudo usermod -e 2023-01-31 username

    使用-e选项可以修改用户的账号过期时间。

  7. 将用户添加到附加组而不移除原有组:

    1
    sudo usermod -aG additionalgroup username

    使用-aG选项可以将用户添加到附加组,而不会移除原有组。

示例:

  • 修改用户ID(UID):

    1
    sudo usermod -u 1001 username
  • 修改用户组ID(GID):

    1
    sudo usermod -g users username
  • 修改附加组:

    1
    sudo usermod -G wheel,ftp username
  • 修改家目录:

    1
    sudo usermod -d /newhome username
  • 修改登录Shell:

    1
    sudo usermod -s /bin/bash username
  • 修改用户的账号过期时间:

    1
    sudo usermod -e 2023-01-31 username
  • 将用户添加到附加组而不移除原有组:

    1
    sudo usermod -aG additionalgroup username

请注意,使用usermod命令修改用户属性时,需要小心确保不会导致数据丢失或访问权限问题。记得查看man usermod获取更多详细信息。

linux usermod命令 常用技巧

在使用usermod命令时,有一些常用的技巧和选项,可以帮助你更灵活地修改用户账号的属性。以下是一些常见的usermod命令技巧:

  1. 添加用户到附加组而不移除原有组:

    1
    sudo usermod -aG additionalgroup username

    使用-aG选项可以将用户添加到附加组,而不会移除原有组。这对于给用户分配额外权限非常有用。

  2. 一次性修改多个属性:

    1
    sudo usermod -u 1001 -g users -G wheel,ftp -s /bin/bash -d /newhome -e 2023-01-31 username

    你可以在一次命令中修改多个用户属性,以逗号分隔。

  3. 通过交互式方式修改用户属性:

    1
    sudo usermod -i -s /bin/bash username

    使用-i选项可以在交互式模式下修改用户属性,系统将提示你输入新值。

  4. 批量修改用户属性:

    1
    sudo cat userlist.txt | xargs sudo usermod -s /bin/bash

    如果有一个包含用户名列表的userlist.txt文件,可以使用xargs命令结合usermod命令批量修改这些用户的属性。

  5. 将用户添加到新的主组:

    1
    sudo usermod -g newgroup username

    使用-g选项可以将用户添加到新的主组。

  6. 将用户从附加组中移除:

    1
    sudo usermod -G "" username

    使用-G选项并指定空字符串,可以将用户从所有附加组中移除。

  7. 将用户账号设置为永不过期:

    1
    sudo usermod -e "" username

    使用-e选项并指定空字符串,可以将用户账号的过期时间设置为永不过期。

这些技巧可以帮助你更好地使用usermod命令,根据具体需求修改用户账号的属性。确保在执行修改操作前理解修改的影响,并确保备份需要保留的数据。记得查看man usermod以获取更多详细信息。

usermod

  • usermod,命令用于修改用户账号的各项设定
    在Linux中,usermod命令用于修改用户账号的属性。它可以用于更改用户账号的各种设置,如用户名、用户ID、所属组、主目录等。

以下是usermod命令的一般语法:

1
usermod [options] username

其中,options是可选的一些选项,username是要修改属性的用户账号的用户名。

以下是一些常见的usermod命令选项和用法:

  1. 修改用户名:

    1
    usermod -l new_username username

    此命令将将指定用户名的用户账号修改为新的用户名。

  2. 修改用户ID(UID):

    1
    usermod -u new_uid username

    此命令将为指定用户名的用户账号修改用户ID(UID)为新的UID。

  3. 修改用户所属的初始组:

    1
    usermod -g new_groupname username

    此命令将将指定用户名的用户账号修改为新的初始组。

  4. 修改用户主目录:

    1
    usermod -d new_homedir username

    此命令将将指定用户名的用户账号修改为新的主目录。

  5. 修改用户的登录Shell:

    1
    usermod -s new_shell username

    此命令将将指定用户名的用户账号修改为新的登录Shell。

usermod命令还支持其他一些选项,如设置密码过期时间、添加或删除用户的附加组、锁定或解锁用户账号等。您可以使用man usermod命令查看完整的选项和用法说明。

请注意,在修改用户账号属性之前,请谨慎操作,并确保了解其影响。某些修改可能会影响用户的文件和权限访问。

简介

  • export命令

linux export命令 详解

export命令用于将变量设置为环境变量,使其在当前Shell及其子进程中可见。环境变量是一种全局变量,对于所有运行在当前Shell下的命令都是可见的。以下是export命令的基本语法和一些示例:

基本语法:

1
export VARIABLE=value

其中,VARIABLE是环境变量的名称,value是变量的值。

示例:

  1. 设置单个环境变量:

    1
    export MY_VARIABLE="Hello, World!"

    这将创建一个名为MY_VARIABLE的环境变量,其值为”Hello, World!”。

  2. 设置多个环境变量:

    1
    export VAR1="Value1" VAR2="Value2"

    通过在一行上设置多个变量,可以一次性导出多个环境变量。

  3. 在变量中包含空格:

    1
    export GREETING="Hello, World!"

    如果变量的值包含空格或特殊字符,可以使用引号将其括起来。

  4. 查看当前的环境变量:

    1
    export

    不带任何参数,可以查看当前所有的环境变量。

  5. 在一行中执行命令并设置环境变量:

    1
    MY_VARIABLE="Hello" ls

    在执行命令前设置环境变量,仅对该命令生效。

注意事项:

  • 环境变量生命周期: 使用export设置的环境变量在当前Shell及其所有子进程中可见。当当前Shell关闭时,这些环境变量也将失效。

  • 查看特定环境变量: 若要查看特定环境变量的值,可以使用echo命令或env命令。例如:

    1
    echo $MY_VARIABLE

    1
    env | grep MY_VARIABLE
  • 永久设置环境变量: 若要使环境变量在系统重启后仍然有效,可以将export语句添加到用户的配置文件(如~/.bashrc~/.bash_profile)中。

  • 无需export的本地变量: 如果变量只在当前Shell中使用,而不需要在子进程中可见,可以不使用export,直接设置变量即可。

1
MY_LOCAL_VARIABLE="Local Value"

export命令是在Shell脚本和交互式Shell中管理环境变量的重要工具,它允许你创建、修改和删除环境变量,以满足特定的需求。

linux export命令 常用技巧

在使用export命令时,有一些常用的技巧和选项,可以帮助你更灵活地处理环境变量。以下是一些常见的export命令技巧:

  1. 在一行中执行命令并设置环境变量:

    1
    MY_VARIABLE="Hello" ls

    在执行命令前设置环境变量,仅对该命令生效。

  2. 在一行中定义并导出环境变量:

    1
    export MY_VARIABLE="Hello" && ls

    使用&&运算符可以确保导出环境变量后再执行后续的命令。

  3. 清除环境变量:

    1
    unset MY_VARIABLE

    使用unset命令可以清除已导出的环境变量。

  4. 将变量值追加到现有值:

    1
    export PATH=$PATH:/new/directory

    使用$PATH获取现有的PATH值,并将新目录追加到其中。

  5. 设置多个变量并导出:

    1
    export VAR1="Value1" VAR2="Value2"

    通过在一行上设置多个变量,可以一次性导出多个环境变量。

  6. 查看当前Shell的所有环境变量:

    1
    export

    不带任何参数,可以查看当前所有的环境变量。

  7. 在子Shell中执行命令并保留环境变量:

    1
    (export MY_VARIABLE="Hello" && some_command)

    使用圆括号创建子Shell,在其中执行命令,并确保在子Shell中导出的环境变量不会影响到父Shell。

  8. 将命令的输出赋值给变量:

    1
    export MY_VARIABLE=$(some_command)

    使用命令替换$()将命令的输出赋值给环境变量。

  9. 将当前目录添加到PATH中:

    1
    export PATH=$PATH:.

    将当前目录添加到PATH中,以便执行当前目录中的命令。

这些技巧可以帮助你更好地使用export命令,灵活地管理和调整环境变量,以满足不同的需求。确保理解环境变量的生命周期和影响范围,以避免潜在的问题。

export

  • export,命令用于设置或显示环境变量
  • 在shell中执行程序时,shell会提供一组环境变量.
  • export可新增,修改或删除环境变量,供后续执行的程序使用
  • export的效力仅限于该次登录操作
  • 语法:export [-fnp] [变量名称] = [变量设置值]
    • -f:代表变量名称中为函数名称
    • -n:删除指定的变量.变量实际上并未删除,只是不会输出到后续指令的执行环境中
    • -p:列出所有的shell赋予程序的环境变量

在Linux中,export命令用于设置环境变量。环境变量是在Shell会话中可用的全局变量,它们包含了对系统行为和配置起作用的值。

以下是export命令的一般语法:

1
export [option] variable=value

其中,option是可选的一些选项,variable是要设置的环境变量的名称,value是要分配给该环境变量的值。

以下是一些常见的export命令选项和用法:

  1. 设置环境变量:

    1
    export VARIABLE=value

    此命令将设置名为VARIABLE的环境变量,并将其值设置为value

  2. 查看当前环境变量:

    1
    export

    此命令将列出当前所有已设置的环境变量及其值。

  3. 设置多个环境变量:

    1
    export VAR1=value1 VAR2=value2 VAR3=value3

    此命令将一次性设置多个环境变量,并为每个变量指定一个值。

环境变量在Shell会话中起作用,它们可以用于配置系统行为、定义路径、设置临时变量等。通过export命令设置的环境变量可以在当前Shell会话及其子进程中访问。

请注意,通过export命令设置的环境变量在Shell会话结束时会失效。如果您希望永久性地设置环境变量,可以将其添加到Shell配置文件(如.bashrc.profile)中。

linux export命令 高级技巧

在高级应用场景下,export命令可以结合其他工具和技巧,提供更灵活、强大的环境变量管理。以下是一些高级的export命令技巧:

  1. 使用env命令预设环境变量:

    1
    env MY_VARIABLE="Hello" some_command

    使用env命令可以在执行命令的同时预设环境变量,而不需要显式使用export

  2. 在脚本中使用set -a导出所有变量:

    1
    2
    3
    4
    #!/bin/bash
    set -a
    MY_VARIABLE="Hello"
    some_command

    使用set -a可以自动将所有变量导出为环境变量,而无需显式使用export

  3. 使用declare命令声明并导出环境变量:

    1
    declare -x MY_VARIABLE="Hello"

    使用declare -x命令可以声明并导出环境变量,类似于export的作用。

  4. 通过source命令加载变量定义:

    1
    source my_variables.sh

    将变量定义存储在脚本中,然后使用source.命令加载它们,使其成为当前Shell的一部分。

  5. 使用trap命令在脚本退出时清除环境变量:

    1
    2
    3
    trap 'unset MY_VARIABLE' EXIT
    MY_VARIABLE="Hello"
    some_command

    使用trap命令可以在脚本退出时自动清除导出的环境变量。

  6. 动态设置PS1环境变量以自定义Shell提示符:

    1
    export PS1='\u@\h:\w\$ '

    定义PS1环境变量可以自定义Shell的提示符,提高Shell使用体验。

  7. 使用eval执行动态生成的export语句:

    1
    eval "export $VARIABLE_NAME=$VARIABLE_VALUE"

    在脚本中使用eval执行动态生成的export语句,根据需要设置环境变量。

  8. 使用declare动态创建函数并导出:

    1
    2
    declare -fx my_function
    export -f my_function

    使用declare -f可以导出函数定义作为环境变量,然后使用export -f进行导出。

这些高级技巧可以在更复杂的脚本和环境中提供更大的灵活性。在使用这些技巧时,要注意确保代码的可读性和安全性,以及理解环境变量的作用范围和生命周期。

简介

  • eval命令

linux eval命令 详解

eval是一个用于执行由参数构成的Shell命令的Bash内置命令。它接受参数并将它们作为Shell命令解析和执行。使用eval时要非常小心,因为它可以执行任意命令,包括潜在的危险命令。

基本语法:

1
eval command_string

其中,command_string是需要执行的Shell命令。

示例:

  1. 简单的eval命令:

    1
    eval echo "Hello, World!"

    这将执行echo "Hello, World!",并输出相应的结果。

  2. 结合变量使用eval

    1
    2
    variable="Hello"
    eval echo "\$variable"

    使用\$来引用变量,eval将解析并执行命令,输出变量的值。

  3. 动态生成命令字符串并执行:

    1
    2
    command_string="echo 'Dynamic command'"
    eval $command_string

    将一个命令字符串赋值给变量,然后使用eval执行该命令。

  4. 使用eval进行算术运算:

    1
    2
    3
    4
    x=5
    y=3
    eval "result=\$((x + y))"
    echo $result

    在这个例子中,eval用于执行算术运算并将结果赋值给变量。

  5. 执行包含特殊字符的命令:

    1
    eval "echo \$(ls)"

    在命令字符串中使用\$()执行子命令,并使用eval执行整个命令字符串。

  6. 动态定义函数并调用:

    1
    2
    eval "dynamic_function() { echo 'Dynamic function executed'; }"
    dynamic_function

    使用eval动态定义函数,然后调用该函数。

注意事项:

  • 潜在的安全风险: 使用eval时要格外小心,特别是当eval解析的内容来自外部用户或不受信任的源时,可能存在安全风险。

  • 谨慎使用: 在一般情况下,尽量避免使用eval,因为它使得代码更难以阅读和理解。在大多数情况下,有更安全、更清晰的替代方案。

eval的使用需要慎重考虑,确保你理解其行为,并确保不会执行潜在的危险命令。在实际开发中,推荐寻找更安全和可读性更高的替代方案。

linux eval命令更安全和可读性更高的代替方案

在很多情况下,可以通过其他更安全、可读性更高的方法替代eval命令。以下是一些替代方案:

  1. 使用函数:
    使用函数来封装一段需要执行的代码。函数提供了更清晰、可维护的代码结构,并且不需要使用eval

    1
    2
    3
    4
    5
    my_function() {
    echo "Hello, World!"
    }

    my_function
  2. 使用命令替换:
    对于简单的命令,可以使用命令替换,而不是eval。命令替换使用$()或``来执行命令并将结果赋值给变量。

    1
    2
    result=$(ls)
    echo $result
  3. 使用条件判断和循环:
    对于需要执行的复杂逻辑,可以使用条件判断和循环结构,而不是将一段代码作为字符串传递给eval

    1
    2
    3
    if [ "$condition" ]; then
    echo "Condition is true."
    fi
  4. 使用数组:
    如果需要动态构建命令参数,可以使用数组来存储参数,而不是将它们作为字符串传递给eval

    1
    2
    command=("echo" "Hello, World!")
    "${command[@]}"
  5. 使用代替工具或语言:
    对于一些复杂的任务,可能使用其他工具或编程语言(如Python、Perl)更为合适,避免使用eval

总体来说,eval的使用要慎重考虑,特别是在处理外部输入时,避免潜在的安全风险。通过使用更清晰的替代方案,可以提高代码的可读性、可维护性,并减少潜在的安全隐患。

eval

  • eval,命令用于重新运算求出参数的内容
  • eval可读取一连串的参数,然后再依参数本身的特性来执行
  • 在shell脚本中,用eval加命令来执行linux命令

在Linux中,eval命令用于将参数作为Shell命令执行,并将结果返回到当前Shell环境中。它将参数解析为Shell表达式并执行,可以用于动态地生成和执行命令。

以下是eval命令的一般语法:

1
eval [options] command

其中,options是可选的一些选项,command是要执行的命令或表达式。

eval命令在执行时会对command进行两次解析。首先,它会对command进行参数展开、命令替换和变量替换。然后,将解析后的结果作为Shell命令执行。

以下是一些eval命令的常见用法:

  1. 执行动态命令:

    1
    eval "$command"

    此命令将执行存储在$command变量中的动态命令。变量中的命令将被解析并执行。

  2. 执行包含变量的命令:

    1
    eval "echo $var"

    此命令将对变量$var进行变量替换,并将结果作为命令执行。换句话说,它将打印出变量$var的值。

eval命令的主要用途是动态地构建和执行命令,可以在脚本中生成复杂的命令行操作。但需要注意,使用eval命令要谨慎,确保参数的来源可信,以避免安全风险。

简介

  • awk命令

linux awk命令 详解

awk是一种文本处理工具,用于在文本文件中查找、过滤和处理数据。它以行为单位处理文件,可以根据指定的规则对文件内容进行分析和处理。以下是awk命令的基本语法和一些常用选项:

基本语法:

1
awk 'pattern { action }' filename
  • pattern: 模式,用于匹配文本的特定部分。
  • { action }: 动作,对匹配模式的行执行的具体操作。
  • filename: 要处理的文件的名称。

示例:

  1. 打印文件的每一行:

    1
    awk '{ print }' filename

    这会打印文件中的每一行。

  2. 打印指定列的内容:

    1
    awk '{ print $1, $3 }' filename

    打印文件中每行的第一个和第三个字段。

  3. 使用条件打印行:

    1
    awk '$2 > 50 { print $1, $2 }' filename

    打印第二列大于50的行的第一列和第二列。

  4. 计算列的总和:

    1
    awk '{ sum += $2 } END { print sum }' filename

    计算文件第二列的总和,并在文件处理结束后打印结果。

  5. 查找匹配模式的行:

    1
    awk '/pattern/ { print }' filename

    打印包含指定模式的行。

  6. 使用自定义分隔符:

    1
    awk -F':' '{ print $1, $3 }' filename

    使用-F选项指定字段分隔符,例如冒号。

  7. 使用条件进行计算:

    1
    awk '{ if ($2 > 50) { total += $2 } } END { print total }' filename

    仅当第二列大于50时才计算总和。

  8. 使用BEGIN块初始化变量:

    1
    awk 'BEGIN { total=0 } { total += $2 } END { print total }' filename

    使用BEGIN块初始化变量,然后在处理文件时进行累加。

  9. 删除重复行并排序:

    1
    awk '!seen[$0]++' filename | sort

    删除文件中的重复行并按字典顺序排序。

  10. 处理特定字段的特定范围:

    1
    awk '$1 == "John" && $3 >= 30 { print }' filename

    打印第一列为”John”且第三列大于等于30的行。

awk命令非常强大,可以通过组合不同的模式和动作来进行复杂的文本处理。以上示例只是简单演示了awk的基本用法,你可以根据需要结合更多的特性和选项来进行更复杂的文本处理操作。

linux awk命令 常用技巧

awk是一个功能强大的文本处理工具,具有丰富的功能和灵活的语法。以下是一些常用的awk命令技巧:

  1. 使用多个命令块:

    1
    awk '/pattern/ {print "Found:", $0} /another/ {print "Another:", $0}' filename

    可以在同一行使用多个模式和动作块,每个模式和动作块组合以大括号分隔。

  2. 设置字段分隔符:

    1
    awk -F',' '{print $1, $3}' filename

    使用-F选项设置字段分隔符,适用于以逗号分隔的CSV文件等。

  3. 使用NRNF内置变量:

    1
    awk '{print NR, NF, $0}' filename

    使用NR表示当前行号,NF表示当前行的字段数。在{print NR, NF, $0}中,$0表示整行。

  4. 计算每列的平均值:

    1
    awk '{ for (i=1; i<=NF; i++) sum[i]+=$i } END { for (i=1; i<=NF; i++) printf "%s %.2f\n", "Column", i, sum[i]/NR }' filename

    使用循环计算每列的总和,然后在END块中计算平均值。

  5. 在输出中使用格式化字符串:

    1
    awk '{printf "Name: %-10s, Age: %02d\n", $1, $2}' filename

    使用printf函数输出格式化的字符串,可以控制字段的宽度和对齐方式。

  6. 处理文件中的日期:

    1
    awk -F'-' '{print "Year:", $1, "Month:", $2, "Day:", $3}' filename

    使用自定义分隔符处理日期字段。

  7. 过滤并显示指定行数:

    1
    awk 'NR>=5 && NR<=10' filename

    使用NR过滤指定行数的行。

  8. 使用数组保存数据:

    1
    awk '{data[$1]+=$2} END {for (key in data) print key, data[key]}' filename

    使用数组保存数据,可以用于统计和汇总操作。

  9. 使用substr函数截取字符串:

    1
    awk '{print substr($1, 1, 3)}' filename

    使用substr函数截取字符串的一部分。

  10. 按列排序输出:

    1
    awk '{print $2, $1}' filename | sort

    使用sort命令按照第二列进行排序输出。

这些技巧可以帮助你更好地利用awk进行文本处理,满足不同场景下的需求。awk的灵活性和强大的功能使其成为处理文本数据的重要工具。

linux awk命令 高级技巧

awk命令提供了一系列高级技巧,允许更灵活、复杂的文本处理操作。以下是一些高级的awk技巧:

  1. 使用自定义函数:

    1
    awk 'function my_function(x) { return x*2 } {print my_function($1)}' filename

    可以在awk中定义和使用自定义函数。

  2. 多条件处理:

    1
    awk '{if ($1 > 50 && $2 == "John") print $0}' filename

    使用多个条件结合逻辑运算符进行复杂的过滤。

  3. 动态生成awk代码:

    1
    awk -v field=2 '{print $field}' filename

    使用变量动态指定要处理的字段。

  4. 模式范围匹配:

    1
    awk '/start_pattern/, /end_pattern/ {print}' filename

    使用模式范围匹配处理一段特定范围内的数据。

  5. 内置BEGINEND块:

    1
    awk 'BEGIN {print "Start Processing"} {print $0} END {print "End Processing"}' filename

    使用BEGINEND块在处理之前和之后执行特定的操作。

  6. 处理多个文件:

    1
    awk '{print FILENAME, $0}' file1.txt file2.txt

    awk可以处理多个文件,使用FILENAME变量可以获取当前正在处理的文件名。

  7. 对每行应用多个动作:

    1
    awk '{gsub("old", "new"); print}' filename

    使用gsub函数替换每一行中的字符串,并在同一行中执行其他操作。

  8. 获取命令的输出作为输入:

    1
    awk '{print $1}' <(some_command)

    使用<(command)语法可以将命令的输出作为awk的输入。

  9. 处理非定长字段:

    1
    awk -F',' '{print $NF}' filename

    使用NF表示最后一个字段,即使字段的数量是变化的。

  10. 使用getline函数读取下一行:

    1
    awk '{print; getline; print "Next line:", $0}' filename

    使用getline函数读取下一行并进行处理。

  11. 使用next跳过某些行:

    1
    awk '/pattern/ {print; next} {print "Skipped:", $0}' filename

    使用next跳过某些行的处理。

这些高级技巧可以在复杂的文本处理场景中发挥作用,充分发挥awk的强大功能。注意在使用高级功能时要谨慎,确保代码可读性和可维护性。

awk

  • AWK,是一种处理文本文件的语言,是一个强大的文本分析工具
  • 语法:awk [选项参数] 'script' var=value file(s) 或者 awk [选项参数] -f scriptfile var=value file(s)
  • 基本用法
    • awk '{[pattern] action}' {filenames} , 行匹配语句 awk '' 只能用单引号
    • awk '{print $1, $4}' log.txt, 每行按空格或TAB分割,输出文本的1,4项
    • awk -F, -F相当于内置变量FS,指定分割字符
    • awk -v ,设置变量
    • awk -f {awk脚本} {文件名}

在Linux中,awk命令是一种强大的文本处理工具,用于从文本文件中提取和处理数据。它读取输入文件的每一行,按照指定的模式进行匹配,并执行相应的操作。

以下是awk命令的一般语法:

1
awk 'pattern { action }' input_file

其中,pattern是用于匹配文本行的条件,action是要执行的操作,input_file是要处理的输入文件。

以下是一些常见的awk命令的用法:

  1. 打印文件的某一列:

    1
    awk '{ print $2 }' input_file

    此命令将打印输入文件中的每一行的第二列。

  2. 使用条件过滤行:

    1
    awk '$3 > 10 { print }' input_file

    此命令将打印输入文件中第三列大于10的行。

  3. 计算行数、列数或总和:

    1
    awk 'END { print NR }' input_file

    此命令将打印输入文件中的行数。

awk命令还支持其他一些高级功能,如使用正则表达式进行模式匹配、定义变量和函数、处理字段分隔符等。您可以根据需要使用更复杂的awk脚本进行数据处理。

请注意,awk命令可以与管道符号(|)和其他命令一起使用,以实现更复杂的数据处理任务。

简介

  • read命令

read

  • 从命令行读取标准输入
  • 读取输入,保存到变量
    • read -p "please input >>>" var

在Linux中,read命令用于从标准输入读取用户输入并存储到一个或多个变量中。它通常用于脚本中,以便与用户进行交互并获取输入数据。

以下是read命令的一般语法:

1
read [-options] [variable...]

其中,-options是可选的一些选项,variable是要存储输入的一个或多个变量。

以下是一些常见的read命令选项和用法:

  1. 读取单个变量:

    1
    read variable

    此命令将提示用户输入,并将输入的值存储到variable变量中。

  2. 读取多个变量:

    1
    read variable1 variable2 ...

    此命令将按顺序提示用户输入,并将每个输入的值依次存储到相应的变量中。

  3. 自定义提示符:

    1
    read -p "Enter your name: " name

    此命令将显示自定义的提示符(在双引号中指定),并将输入的值存储到name变量中。

  4. 设置超时:

    1
    read -t 5 variable

    此命令将在等待用户输入时设置一个超时时间(5秒)。如果在超时时间内未收到输入,命令将继续执行并变量的值为空。

  5. 读取行中的多个单词:

    1
    read -a array

    此命令将读取一行输入,并将输入的单词存储到一个数组变量中。

read命令还有其他一些选项,如设置分隔符、禁止回显输入等,您可以通过man read命令查看完整的选项和用法说明。

请注意,read命令在交互式脚本中非常有用,可以用于获取用户输入并在脚本中进行处理。

linux read命令 详解

read 命令在 Linux 中用于从标准输入或其他文件描述符中读取输入,并将其保存到一个或多个变量中。这个命令通常用于从用户获取输入或从管道中读取数据。

基本语法:

1
read [选项] 变量

常见选项:

  • -p prompt:指定提示符,用于向用户显示输入的请求。
  • -t timeout:设置超时时间,如果在指定时间内没有输入,命令将退出。
  • -n count:指定读取的字符数。
  • -s:静默模式,不显示输入的字符。

示例:

  1. 从用户获取输入:

    1
    2
    3
    echo "Enter your name: "
    read username
    echo "Hello, $username!"

    用户输入将被保存到变量 username 中。

  2. 指定提示符:

    1
    2
    read -p "Enter your age: " age
    echo "Your age is $age."
  3. 设置超时:

    1
    2
    3
    4
    5
    if read -t 5 -p "Enter your choice within 5 seconds: " choice; then
    echo "You entered: $choice"
    else
    echo "Time is up!"
    fi
  4. 读取固定数量的字符:

    1
    2
    read -n 3 -p "Enter a three-character code: " code
    echo "You entered: $code"
  5. 静默模式:

    1
    2
    read -s -p "Enter your password: " password
    echo "Password entered."

    用户的输入将不会显示在屏幕上。

  6. 使用 IFS 定义字段分隔符:

    1
    2
    3
    4
    IFS=',' read -r -a array <<< "item1,item2,item3"
    for item in "${array[@]}"; do
    echo "Item: $item"
    done

    这个例子中,IFS 被设置为逗号,read 命令将逗号分隔的字符串读入数组中。

read 命令通常用于交互性较强的脚本或命令,以从用户获取输入。通过结合不同的选项,你可以实现更灵活和复杂的用户交互。

linux read命令 常用技巧

以下是一些在使用 read 命令时的常用技巧:

  1. 使用 -r 选项防止反斜杠转义:

    1
    read -r variable

    -r 选项用于禁用反斜杠的转义,确保输入的内容保持原样,不对反斜杠进行转义。

  2. 将输入直接赋值给数组:

    1
    read -a array

    这将直接将用户输入的内容分配给数组,每个单词作为数组的一个元素。

  3. 使用 IFS 定义字段分隔符:

    1
    IFS=',' read -r -a array

    通过设置 IFS(Internal Field Separator)来指定字段分隔符,以便读取逗号分隔的值并分配给数组。

  4. 设置默认值:

    1
    2
    read -p "Enter your name [default: John]: " name
    name=${name:-John}

    这将在用户没有输入时将变量设置为默认值。

  5. 限制输入的字符数:

    1
    read -n 3 variable

    使用 -n 选项可以限制读取的字符数。在上述例子中,用户只能输入三个字符。

  6. 使用 selectread 实现菜单:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    options=("Option 1" "Option 2" "Option 3")
    PS3="Select an option: "
    select choice in "${options[@]}"; do
    read -r selected_option
    case $REPLY in
    1|2|3) echo "You selected: $choice"; break;;
    *) echo "Invalid option. Try again.";;
    esac
    done

    这个例子结合了 selectread,创建了一个简单的菜单。

  7. 使用 IFS 将一行输入分割为多个变量:

    1
    IFS="," read var1 var2 var3

    如果输入是逗号分隔的,这将把输入分割为三个变量。

  8. 将输入转换为小写或大写:

    1
    2
    read -p "Enter your choice: " choice
    choice=$(echo "$choice" | tr '[:upper:]' '[:lower:]')

    这个例子将用户输入的内容转换为小写。你也可以使用 tr '[:lower:]' '[:upper:]' 将其转换为大写。

这些技巧可以帮助你更灵活地使用 read 命令,使交互式脚本更加强大和用户友好。

linux read命令 高级技巧

以下是一些在使用 read 命令时的一些高级技巧,可以用于处理更复杂的输入场景:

  1. 使用 read 读取密码而不回显:

    1
    read -s -p "Enter your password: " password

    -s 选项用于关闭输入回显,这样用户输入密码时不会在屏幕上显示明文。

  2. 在单行中读取多个变量:

    1
    read -p "Enter name and age: " name age

    这将一次性读取用户输入的姓名和年龄,并分别赋值给变量 nameage

  3. 读取多行文本:

    1
    2
    echo "Enter your text (Ctrl+D to finish):"
    read -d '' text

    使用 -d '' 选项可以读取多行文本,用户可以通过按下 Ctrl+D 来结束输入。

  4. 在循环中使用 read

    1
    2
    3
    while read line; do
    echo "Read line: $line"
    done < file.txt

    这个例子中,read 在循环中用于逐行读取文件 file.txt 的内容。

  5. 使用超时处理输入:

    1
    2
    3
    4
    5
    if read -t 5 -p "Enter your choice: " choice; then
    echo "You entered: $choice"
    else
    echo "Timed out. No input received."
    fi

    在这个例子中,如果在 5 秒内没有用户输入,read 命令会超时,执行 else 语句块。

  6. 使用 IFS 读取并分割输入行:

    1
    2
    3
    while IFS=, read -r name age; do
    echo "Name: $name, Age: $age"
    done < data.csv

    在这个例子中,IFS 被设置为逗号,read 将逗号分隔的值分配给变量 nameage

  7. 处理特殊字符:

    1
    read -n 1 -r -p "Press any key to continue..."

    使用 -n 1 选项可以读取用户按下的任意键,而不需要按回车键。

  8. 使用 read 读取密码并检测输入是否为空:

    1
    2
    3
    4
    5
    while true; do
    read -s -p "Enter your password: " password
    [ -n "$password" ] && break
    echo "Password cannot be empty. Please try again."
    done

    这个例子会循环要求用户输入密码,直到输入非空为止。

这些高级技巧可以使 read 命令在处理不同类型的输入时更加灵活和强大。

简介

  • mount命令

linux mount命令 详解

mount命令用于将文件系统连接到目录树中的指定位置,也就是将存储设备挂载到文件系统上。在Linux系统中,通过mount命令可以访问外部设备(如硬盘分区、USB驱动器、光盘等)中的文件系统。以下是mount命令的基本语法和一些常见选项:

基本语法:

1
mount [选项] 设备 文件夹

常见选项:

  1. 挂载指定文件系统类型:

    1
    mount -t ext4 /dev/sdb1 /mnt/mydrive

    使用-t选项指定文件系统类型,例如ext4。

  2. 以只读方式挂载:

    1
    mount -o ro /dev/sdb1 /mnt/mydrive

    使用-o ro选项可以以只读方式挂载文件系统。

  3. 挂载NFS共享:

    1
    mount -t nfs 192.168.1.100:/path/to/share /mnt/nfs

    使用-t nfs选项可以挂载NFS共享。

  4. 挂载CIFS/SMB共享:

    1
    mount -t cifs -o username=user,password=pass //server/share /mnt/smb

    使用-t cifs选项可以挂载CIFS/SMB共享。

  5. 显示挂载的文件系统:

    1
    mount

    不带任何参数,可以显示当前已挂载的文件系统。

  6. 卸载文件系统:

    1
    umount /mnt/mydrive

    使用umount命令可以卸载文件系统。

示例:

  • 挂载硬盘分区:

    1
    mount /dev/sdb1 /mnt/mydrive
  • 挂载ISO文件:

    1
    mount -o loop image.iso /mnt/iso
  • 挂载NFS共享:

    1
    mount -t nfs 192.168.1.100:/path/to/share /mnt/nfs
  • 挂载CIFS/SMB共享:

    1
    mount -t cifs -o username=user,password=pass //server/share /mnt/smb
  • 以只读方式挂载:

    1
    mount -o ro /dev/sdb1 /mnt/mydrive
  • 显示挂载的文件系统:

    1
    mount
  • 卸载文件系统:

    1
    umount /mnt/mydrive

注意事项:

  • 在挂载和卸载文件系统时,确保目标目录存在,并且挂载点为空或者没有其他进程在使用。

  • 尽量使用umount命令而不是unmount,因为umount是正式的命令。

  • 在挂载网络文件系统时,确保相关的服务已启动,如NFS服务或Samba服务。

linux mount命令 常用技巧

在使用mount命令时,有一些常用的技巧和选项,可以帮助你更灵活地管理文件系统的挂载。以下是一些常见的mount命令技巧:

  1. 挂载分区并指定文件系统类型:

    1
    mount -t ext4 /dev/sdb1 /mnt/mydrive

    使用-t选项可以指定文件系统类型,例如ext4。

  2. 挂载CIFS/SMB共享并指定用户名和密码:

    1
    mount -t cifs -o username=user,password=pass //server/share /mnt/smb

    使用-o选项可以传递挂载选项,例如指定用户名和密码。

  3. 挂载ISO文件:

    1
    mount -o loop image.iso /mnt/iso

    使用-o loop选项可以挂载ISO文件。

  4. 挂载NFS共享并指定挂载选项:

    1
    mount -t nfs -o rw,soft,intr 192.168.1.100:/path/to/share /mnt/nfs

    使用-o选项可以传递挂载选项,例如读写权限、软链接、中断挂载等。

  5. 挂载后立即进入挂载目录:

    1
    mount /dev/sdb1 /mnt/mydrive && cd /mnt/mydrive

    使用&&运算符可以在挂载成功后立即进入挂载目录。

  6. 显示已挂载的文件系统:

    1
    mount

    不带任何参数,可以显示当前已挂载的文件系统。

  7. 递归挂载:

    1
    mount --bind /source/directory /destination/directory

    使用--bind选项可以递归挂载一个目录到另一个目录。

  8. 挂载后设定权限:

    1
    mount /dev/sdb1 /mnt/mydrive -o umask=022

    使用-o选项设置挂载时的umask,控制挂载点的权限。

  9. 挂载后设定所有者:

    1
    mount /dev/sdb1 /mnt/mydrive -o uid=1000

    使用-o选项设置挂载时的uid,控制挂载点的所有者。

这些技巧可以帮助你更好地使用mount命令,根据需要灵活挂载和管理文件系统。确保在挂载和卸载文件系统时,谨慎操作以避免数据丢失或文件系统损坏。

mount

  • intr 参数:允许通知中断一个NFS调用.当服务器没有应答需要放弃的时候有用

在Linux中,mount命令用于将文件系统挂载到指定的挂载点上,使得文件系统中的内容可以被访问和使用。挂载是将存储设备或其他文件系统连接到文件树的过程。

以下是mount命令的一般语法:

1
mount [options] device_or_file mount_point

其中,options是可选的一些选项,device_or_file是要挂载的设备或文件,mount_point是挂载点,即文件系统将被挂载到的目录。

以下是一些常见的mount命令选项和用法:

  1. 挂载设备:

    1
    mount /dev/sdb1 /mnt

    此命令将将/dev/sdb1设备上的文件系统挂载到/mnt目录。

  2. 挂载网络文件系统(NFS):

    1
    mount -t nfs server:/share /mnt

    此命令将将远程NFS服务器上的共享文件系统挂载到/mnt目录。

  3. 挂载ISO映像文件:

    1
    mount -o loop image.iso /mnt

    此命令将将名为image.iso的ISO映像文件挂载到/mnt目录。使用-o loop选项表示将ISO文件作为循环设备挂载。

mount命令还支持其他一些选项,如指定文件系统类型、设置挂载选项、设置权限等。您可以使用man mount命令查看完整的选项和用法说明。

使用mount命令可以在Linux系统中临时或永久地挂载文件系统,以便访问其内容。挂载的文件系统将在挂载点下可见,并可通过该挂载点进行文件和目录操作。

简介

  • sed命令

linux sed命令 详解

sed(流编辑器)是一个在命令行中使用的文本处理工具,用于对文本流进行过滤和转换。它通常用于从输入文本中选择、删除、替换文本,以及对文本进行其他一些操作。以下是sed命令的一些常见用法和选项的详解:

基本语法:

1
sed [选项] '脚本' 文件

常用选项:

  • -n:抑制默认的输出,只输出经过编辑的行。
  • -e:指定要执行的编辑命令。
  • -f:从文件中读取编辑脚本。
  • -i:直接修改文件内容,而不是输出到标准输出。

基本编辑命令:

  1. 替换文本:

    1
    sed 's/old_text/new_text/' file.txt

    这将在file.txt中查找并替换第一次出现的old_text

  2. 全局替换:

    1
    sed 's/old_text/new_text/g' file.txt

    使用g标志进行全局替换,替换每一处匹配。

  3. 删除行:

    1
    sed '/pattern/d' file.txt

    删除包含指定模式的行。

  4. 打印行:

    1
    sed -n '2p' file.txt

    打印文件中的第二行。

  5. 打印指定范围的行:

    1
    sed -n '2,5p' file.txt

    打印文件中的第2到第5行。

  6. 在指定行之前或之后插入文本:

    1
    sed '2i\inserted_text' file.txt

    在第2行之前插入文本。

    1
    sed '2a\appended_text' file.txt

    在第2行之后追加文本。

  7. 使用正则表达式:

    1
    sed '/^pattern/s/old_text/new_text/' file.txt

    仅在以pattern开头的行中替换old_text

  8. 多个编辑命令:

    1
    sed -e 's/old/new/' -e 's/another/replace/' file.txt

    执行多个编辑命令。

  9. 从文件读取编辑脚本:

    1
    sed -f script.sed file.txt

    script.sed包含一系列sed编辑命令。

  10. 将结果写入文件:

    1
    sed 's/old/new/' file.txt > new_file.txt

    将结果输出到新文件。

这只是sed的一些基本用法,它还有更多高级的功能和选项。查阅sed的手册页(man sed)以获取更详细的信息。

linux sed命令 常用技巧

sed是一个非常强大的文本处理工具,下面是一些在使用sed时常用的一些技巧:

  1. 使用正则表达式:
    sed支持正则表达式,可以在模式匹配时灵活应用。例如,使用.*匹配任意字符。

    1
    sed 's/^.*pattern.*$/replacement/' file.txt
  2. 引用变量:
    可以在sed命令中使用变量,但是需要小心引号的使用,以确保变量被正确解释。

    1
    2
    my_var="pattern"
    sed "s/$my_var/new_text/" file.txt
  3. 在匹配行之前或之后添加文本:
    使用i在匹配行之前插入文本,使用a在匹配行之后追加文本。

    1
    2
    sed '/pattern/i\inserted_text' file.txt
    sed '/pattern/a\appended_text' file.txt
  4. 使用变量删除行:
    使用变量作为删除条件,可以动态指定要删除的内容。

    1
    2
    delete_var="pattern"
    sed "/$delete_var/d" file.txt
  5. 逆序打印文件:
    使用-n抑制默认输出,然后使用p打印行。

    1
    sed -n '1!G;h;$p' file.txt
  6. 删除空白行:
    删除文件中的空白行,包括只包含空格或制表符的行。

    1
    sed '/^\s*$/d' file.txt
  7. 使用变量替换定界符:
    如果模式或替换文本中包含斜杠(/),可以使用其他定界符替代。

    1
    sed "s|/old/|new|" file.txt
  8. 只处理文件的部分行:
    使用行号范围限定sed的操作范围。

    1
    sed '10,20s/old/new/' file.txt
  9. 反向引用匹配组:
    在替换文本中使用\1\2等引用匹配组。

    1
    sed 's/\(pattern1\)\(pattern2\)/\2\1/' file.txt
  10. 使用-i选项直接修改文件:
    使用-i选项可以直接在原文件上修改,但请小心使用,确保备份数据。

    1
    sed -i 's/old/new/' file.txt

这些技巧只是sed的冰山一角。要深入了解,建议查看sed的文档和手册页(man sed)。

linux sed命令 高级技巧

以下是一些在使用sed时的高级技巧,这些技巧可以更灵活地处理文本:

  1. 使用地址范围:
    定义sed的操作范围,可以是行号范围,也可以是正则表达式匹配的范围。

    1
    2
    sed '10,20s/old/new/' file.txt
    sed '/start/,/end/s/old/new/' file.txt
  2. 使用命名标签:
    使用b命令和标签来进行跳转,可以提高脚本的可读性和复用性。

    1
    sed ':label /pattern/ { s/old/new/; b label; }' file.txt
  3. 处理多行模式空间:
    N命令可以将下一行追加到模式空间中,使用\n表示换行。

    1
    sed 'N;s/\n/ /' file.txt
  4. 保留匹配行之外的内容:
    使用!来反转匹配,保留非匹配行。

    1
    sed '/pattern/!s/unwanted_text/new_text/' file.txt
  5. 只处理匹配的部分:
    使用匹配组来保留或替换匹配的部分。

    1
    sed 's/\(start_pattern\)keep_this_part\(end_pattern\)/\1replace_this_part\2/' file.txt
  6. 使用hH保存和追加到保持缓冲区:
    将匹配的行保存到保持缓冲区,使用h,将下一行追加到保持缓冲区,使用H

    1
    sed -n '/pattern/{h;};/next_pattern/{H;x;p;}' file.txt
  7. 自定义分隔符:
    可以使用不同的分隔符,以避免在正则表达式中转义斜杠。

    1
    sed 's|/old/|new|' file.txt
  8. 执行sed脚本:
    sed脚本保存到文件中,并通过-f选项执行。

    1
    sed -f script.sed file.txt
  9. 在指定行数插入或删除行:
    使用sed在指定行数之前或之后插入行,或者删除指定行。

    1
    2
    3
    sed '2i\inserted_line' file.txt
    sed '2a\appended_line' file.txt
    sed '2d' file.txt
  10. 逐行处理:
    使用sed逐行处理文件,对每一行执行命令。

    1
    sed -e 's/old/new/' -e 'p' file.txt

这些高级技巧可以使sed更加强大和灵活,但也需要谨慎使用,以确保正确处理文本数据。深入了解sed的文档和手册页对于理解和应用这些技巧非常有帮助。

sed

  • sed, 利用脚本来处理文本文件,主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
  • sed [-hnV] [-e