
shell
文章平均质量分 78
Dontla
这个作者很懒,什么都没留下…
展开
-
shell脚本set -e(set -o errexit)触发的例外情形(不会因为触发错误而退出脚本)(条件测试if、while、until语句;逻辑运算符&&或||链;管道;复合命令{}或())
set -e在 Bash 中用于在命令失败时立即终止脚本,但有一些例外情况。until循环中的命令失败不会触发set -e,因为这是控制流的一部分,设计上被视为预期行为。理解这些例外情况有助于编写更健壮和可预测的脚本,确保错误处理符合预期。原创 2025-01-15 08:00:00 · 989 阅读 · 0 评论 -
Shell会话目录路径显示太长(修改PS1变量、Shell提示符路径显示)路径变短
可以修改PS1变量,让它仅显示当前目录的最后一部分路径,而不是完整路径。这会将提示符修改为只显示当前工作目录的最后一个部分(即,将变成dir。原创 2024-12-05 07:30:00 · 873 阅读 · 0 评论 -
Linux su命令(Switch User切换用户)sudo命令(su -、su --login、su -c、su --command、su -s、su --shell)/etc/sudoers
su是一个功能强大的命令,可以帮助用户切换到其他用户,尤其是在进行系统管理时,切换到root用户非常常见。通过理解su的基本用法和选项,配合sudo等工具,可以更好地进行权限管理和安全控制。基本用法su切换用户身份,su -加载完整环境。安全性问题:尽量避免直接使用root账户,推荐使用sudo来限制权限。与脚本结合使用:可以用su -c在脚本中执行高权限命令。掌握su的用法,将帮助系统管理员更有效地管理Linux系统,并且避免潜在的安全隐患。原创 2024-11-29 00:14:19 · 2100 阅读 · 0 评论 -
Linux shell 文件生成文件脚本(模拟生成文件、生成大量文件)
FILE_SIZE:生成文件大小(KB)TARGET_DIR:生成文件路径。NUM_FILES:生成文件数量。原创 2024-05-23 16:50:16 · 1300 阅读 · 1 评论 -
Linux echo命令(在终端输出文本)
echo是Linux和Unix系统中常用的一个命令行工具,主要用于在终端输出文本。该命令非常简单,但是它在脚本编程和日常系统管理中扮演着重要的角色。原创 2024-05-22 11:42:44 · 8732 阅读 · 1 评论 -
文件过多无法输出,Linux ls命令的坑!(/usr/bin/ls: Argument list too long)(解决办法:使用find命令、使用xargs)(ls报错)
在使用Linux的`ls`命令列出大量文件时,可能会遇到错误信息“`Argument list too long`”。这个问题通常发生在尝试通过`ls`命令处理数千甚至更多的文件时,因为Linux对单个命令行的参数和环境变量的大小有限制。原创 2024-05-16 09:40:06 · 2572 阅读 · 0 评论 -
Linux bc命令(bc指令)(基本计算器)(任意精度计算语言:支持浮点数运算、变量赋值和自定义函数等)
bc允许用户定义函数,这为复杂计算提供了便利。f(4)这部分讨论了bc的基本使用方法、数学功能、变量与数组的操作,以及如何创建和使用自定义函数。在下一部分中,将继续探讨如何在脚本中使用bc来进行批量计算和其他高级功能。bcbc中可以定义更复杂的函数,例如实现递归计算。通过深入探讨bc命令的基础与高级用法,可以看出其在处理数学和逻辑运算中的强大能力。无论是在交互式环境中快速计算,还是作为脚本的一部分自动化复杂计算任务,bc都是一个非常有用的工具。原创 2024-05-15 17:50:32 · 2790 阅读 · 0 评论 -
Shell脚本 <<EOF ... EOF语法(Here Document)(特殊的输入重定向方式)(定界符)
虽然技术上可以在同一个脚本或上下文中重复使用相同的定界符,但在复杂的脚本或在有多个 Here Document 的情况下,使用不同的定界符有助于增加代码的清晰度和可读性,尤其是当 Here Document 的内容较长或逻辑较复杂时。每个 Here Document 是独立处理的,因此在一个脚本中多次使用相同的定界符不会引起冲突或错误,只要确保每个 Here Document 的定界符匹配正确。总之,选择合适的定界符是使用 Here Document 的关键部分,它确保了输入的正确传递和脚本的可读性。原创 2024-05-15 17:17:52 · 1777 阅读 · 0 评论 -
Linux grep命令(grep指令)grep --help各选项介绍(待更)
是一个强大的文本搜索工具,它使用正则表达式来搜索与模式匹配的行,并打印出来。在这里,它捕获了一个完整的单词,如:hello。也就是说,即使前面的字符或组完全没有出现,匹配也会成功。都是数量词,用于指定前面的字符或组可以出现的次数。符合这个条件,因为 “hello” 是一个单词,然后是一个空格,然后又是。在这里,我们有三行:一行是 “abc”,一行是空行,一行是 “def”。会匹配任意数量的任意字符,包括没有字符的情况(也就是空字符串)。:管道符号,它把前一个命令的输出作为后一个命令的输入。原创 2024-01-19 09:00:00 · 1323 阅读 · 0 评论 -
【华为】文档中命令行约定格式规范(命令行格式规范、命令行行为规范、命令行参数格式、命令行规范)
总的来说,华为的命令行约定格式旨在提供一种清晰、简洁和高效的方式来表达命令,从而提高了用户的工作效率和系统的可用性。同时,它也明确告诉用户,他们可以选择任意组合的选项,而不受任何限制。用户可以根据需要输入任意数量的参数,只要它们的数量在指定的范围内。在华为的文档中,“[ ]”括起来的部分表示在命令配置时是可选的。这种方式使得命令行具有更强的适应性和灵活性,同时也让用户明确知道哪些选项是必须的,哪些是可选的。”就是一个注释,它不会影响命令的执行,但可以帮助其他读者理解命令的作用或者背景。原创 2023-12-17 22:18:29 · 1949 阅读 · 1 评论 -
Don‘t use ls | grep. Use a glob or a for loop with a condition to allow non-alphanumeric filenames.
总的来说,尽管ls | grep模式在某些情况下可以正常工作,但由于其潜在的问题和限制,ShellCheck建议使用glob模式或带条件的for循环来替代。这些替代方案可以更准确地处理非字母数字文件名,并且可以避免引入不必要的复杂性。原创 2023-08-16 15:41:38 · 386 阅读 · 0 评论 -
shellcheck警告:Declare and assign separately to avoid masking return values.shellcheck(SC2155)
ShellCheck的SC2155警告是关于在shell脚本中正确处理命令返回值的一个重要提示。通过将声明和赋值分开进行,我们可以确保命令的返回值不会被误导,并且在命令执行失败时,脚本能够正确地捕获并处理错误。原创 2023-08-15 13:16:23 · 966 阅读 · 0 评论 -
ubuntu python虚拟环境venv搭配systemd服务实战(禁用缓存下载--no-cache-dir)(虚拟环境实战)
后面如果又碰到,可以考虑直接systemd unit文件中直接执行python指令而不是脚本,同时定义。通过这样的配置,当你启动或停止该service时,会自动进入和退出虚拟环境。指定了在执行前要执行的命令,即进入虚拟环境的命令。指定了在执行后要执行的命令,即退出虚拟环境的命令。来在执行前进入虚拟环境,执行后退出虚拟环境。下载太慢,我换成清华源,怎么还给我卡住了?指定了要执行的Python脚本的路径。替换为你的Python解释器的路径,将。替换为你的Python脚本的路径。替换为你的虚拟环境的路径,将。原创 2023-08-10 00:43:12 · 1950 阅读 · 0 评论 -
shellcheck告警:ShellCheck can‘t follow non-constant source. Use a directive to specify location.加指令注释
通过在代码中添加指令注释,可以告诉ShellCheck被加载脚本文件的确切位置,以便它能够正确地分析和提供准确的警告。命令时,尽量使用指令注释来指定被加载脚本文件的位置,以确保ShellCheck能够正确地分析代码并提供准确的警告和建议。这有助于提高代码的质量和可读性。的具体值,因为它是在运行时动态确定的。这意味着ShellCheck无法确定被加载的脚本文件的确切位置,从而无法进行准确的分析和提供正确的警告。命令用于加载其他脚本文件,以便在当前脚本中使用被加载脚本中定义的函数、变量等。原创 2023-08-09 17:24:50 · 456 阅读 · 0 评论 -
Linux shell yes命令(不停输出换行的y)(不停输出换行的指定字符串)(脚本自动确认y)
yes命令可以不断地输出换行的指定字符串,不加参数时,不断输出换行的“y”,有时我们需要执行一些需要用户键入“y”确认的脚本,但是我们希望执行时能自动确认,这时yes命令就能帮上我们的忙。唯一的选项是单独的 --help 或 --version。要输出以 ‘-’ 开头的参数,请在其前面加上 --,例如,‘yes – --help’。yes 打印命令行参数,用空格分隔,并在末尾加上换行符,一直打印直到被终止。如果没有给出参数,则一直打印 ‘y’,并在末尾加上换行符,直到被终止。yes:打印字符串直到被中断。原创 2023-08-08 22:38:51 · 3252 阅读 · 0 评论 -
linux du命令解析(递归计算文件子目录大小)(计算大小)(计算容量大小)(存储空间占用)(磁盘容器、磁盘占用、存储占用)(du -h --max-depth=1 /)(大文件、文件空间)查看容量
du命令用于查看文件或目录的磁盘使用情况。它会递归地计算指定目录下所有文件和子目录的大小,并以可读性较好的方式显示出来。原创 2023-08-03 22:46:41 · 8292 阅读 · 0 评论 -
Linux shell脚本set -e原理(set -o errexit 命令出错退出)(|| true屏蔽前面子命令返回值)(用if判断即使命令返回值不为零也不会退出)
当一行命令中包含多个子命令时,set -e选项只会检查整行命令的退出状态。如果整行命令的退出状态为非零,表示整行命令执行失败,shell会立即退出脚本。是 Linux shell 中的一个选项,它的作用是在脚本执行过程中,一旦出现任何命令执行失败(返回非零的退出状态码),脚本就会立即退出。然后,继续执行后续的。是一个命令,它总是返回真(即退出状态为0),所以无论前面子命令是否执行成功,是逻辑或运算符,它的作用是在前一个命令执行失败时执行后面的命令。的返回值不为0,那么整个表达式的返回值为0,脚本不会退出。原创 2023-08-02 22:33:09 · 8706 阅读 · 0 评论 -
linux文件锁(保证只能同时启动一个实例,不同时启动多个实例)
在上述示例代码中,当程序正常退出时,会显式地解锁并关闭文件描述符,这是为了确保文件锁被正确释放。但是,如果程序异常退出(例如由于信号中断或崩溃),操作系统会自动关闭文件描述符,并释放文件锁。命令可以对文件进行加锁,如果加锁成功,则表示程序是第一个实例,可以继续执行。如果加锁失败,则表示已经有一个实例在运行,程序会输出提示信息并退出。如果加锁失败,则表示已经有一个实例在运行,程序会输出提示信息并退出。这是因为文件锁是与文件描述符关联的,当文件描述符关闭时,文件锁也会被释放。一种常见的方法是使用。原创 2023-07-17 13:35:50 · 1293 阅读 · 0 评论 -
Linux报错:sort: write failed: ‘standard output‘: Broken pipe;sort: write error(head -n管道接收端提前关闭致输入端报错)
这段代码是一个shell命令,用于删除指定目录下最旧的若干个jpg文件。命令是用来显示文件的开头几行,默认情况下显示前10行。命令显示完指定行数的内容,它就会提前退出,不再等待后续的输入。这个错误通常是由于管道中的某个命令提前退出导致的。命令会显示指定行数的内容,并在显示完指定行数后退出。命令提取前一步输出结果中的第二列(即文件路径)。命令读取到指定的行数后,它会提前退出,这可能导致。命令提前退出时,管道中的写入端会被关闭,而。命令在指定目录下查找所有的jpg文件。命令的输入,用于删除相应的文件。原创 2023-07-04 16:03:54 · 906 阅读 · 0 评论 -
Linux TTY(Teletypewriter)概念;虚拟终端伪终端pty(pseudo-tty、pseudo terminal)、ptmx(主设备master)pts(从设备slave)
在服务器上,TTY设备可以通过SSH等远程登录方式进行访问,管理员可以通过TTY设备管理服务器。终端设备是一种通过串行接口与计算机连接的设备,可以显示计算机的输出结果,并将用户的输入传递给计算机。伪终端是一种特殊的设备,它提供了一个类似于物理终端的接口,可以用于在用户空间和内核空间之间进行交互。与终端交互:TTY设备是用户与计算机进行交互的接口,了解TTY概念可以帮助开发者编写与终端交互的程序。需要注意的是,虽然终端设备的名称可能不同,但它们在功能上是相似的,都可以用于与用户进行交互和执行命令。原创 2023-07-02 22:33:09 · 4535 阅读 · 1 评论 -
linux usermod命令、groupmod命令使用方法(bad names(不良名称))(GECOS field(GECOS字段))
"bad names"是指不符合命名规范或不被系统接受的用户名。在Linux系统中,用户名必须遵循一定的规则,如只能包含字母、数字和下划线,且不能以数字开头。如果使用了不符合规范的用户名,系统可能会拒绝创建用户账户或执行相关操作。使用usermod命令时,可以通过-b或--badnames选项来允许使用不符合规范的用户名。这样一来,即使用户名不符合规范,也可以继续进行用户账户的修改操作。但是需要注意,使用不符合规范的用户名可能会导致一些问题,如与其他系统或应用程序的兼容性问题。原创 2023-06-30 23:21:30 · 1096 阅读 · 0 评论 -
linux curl命令使用教程(curl指令)
curl是一个用于发送HTTP请求的命令行工具,它支持多种协议,包括HTTP、HTTPS、FTP、SMTP等。curl可以用来下载文件、上传文件、发送POST请求、发送表单数据等。其中,URL是要请求的网址或者文件的URL。:将下载的文件保存到指定的文件中。:将下载的文件保存到当前目录下,文件名与服务器上的文件名相同。:如果服务器返回的响应是重定向,curl会自动跟随重定向。:指定HTTP请求的方法,如GET、POST、PUT等。:发送POST请求时,指定要发送的数据。原创 2023-06-30 00:05:42 · 7105 阅读 · 0 评论 -
Xshell弹窗:需要Xmanager软件来处理X11转发请求(解决办法:关闭X11转发)
Xshell是一款功能强大的SSH(Secure Shell)客户端软件,它可以在Windows操作系统上连接到远程Linux/Unix服务器。X11转发是Xshell提供的一项功能,它允许用户在远程服务器上运行的图形应用程序的图形界面显示在本地计算机上。当你使用Xshell连接到远程服务器时,如果启用了X11转发功能,远程服务器上的图形应用程序可以将图形界面的显示信息通过SSH隧道传输到本地计算机上,然后在本地计算机上显示出来。原创 2023-06-29 22:10:42 · 12711 阅读 · 0 评论 -
linux shell pgrep命令使用方法(pgrep指令)获取进程号、统计进程数量(学会区分Linux进程进程名)(单词边界\b)
后来我改用pgrep指令,用这个命令的好处是,不用使用grep命令了,它直接找出来就是进程号,而且不会带入额外的进程号,下面我们来看下pgrep指令的具体用法。pgrep命令用于根据进程的名称或其他属性来查找和列出匹配的进程ID(PID)。它可以根据不同的选项进行灵活的进程查找和过滤。是要匹配的进程名称或其他属性的模式。可以根据实际情况替换为具体的值。请注意,上述示例中的。原创 2023-06-29 00:06:23 · 17330 阅读 · 0 评论 -
shell脚本怎么获取当前脚本名称(获取脚本文件名)$(basename “$0“)(basename命令:去除字符串路径部分、去除后缀)
是一个常用的Linux命令,用于获取文件路径中的文件名部分。中的路径部分去除,只保留文件名部分,并将结果输出。如果指定了,还会去除末尾的SUFFIX。打印出去除任何前导目录组件的NAME。长选项的必选参数对于短选项也是必选的。会将路径部分去除,只保留文件名部分。是要处理的文件名或路径。表示当前脚本的名称,原创 2023-06-26 21:24:45 · 5266 阅读 · 0 评论 -
shellcheck警告:Useless echo? Instead of ‘cmd $(echo foo)‘, just use ‘cmd foo‘. (不要使用cmd $(echo foo))
就是给变量赋值时直接使用类似PID=$$就行了,不要使用类似,有点多余!原创 2023-06-26 20:48:42 · 261 阅读 · 0 评论 -
shell脚本declare命令用法(声明变量的属性和类型)
动态创建变量:通过将字符串作为变量名进行声明,可以在运行时动态地创建变量。命令可以设置变量的属性和类型,如只读属性、整数类型、数组类型、函数类型等。命令更多地用于一些特殊的场景,如需要对变量进行更精确的控制和限制,或者需要动态创建变量等情况。命令可以打印出所有已声明的变量及其值,用于调试脚本时查看变量的状态。命令可以将函数声明为变量,以便在脚本中动态地创建和调用函数。选项可以将变量设置为整数类型,只能存储整数值。选项可以将变量设置为数组类型,可以存储多个值。选项可以将变量设置为函数类型,可以存储函数。原创 2023-06-20 23:27:39 · 2115 阅读 · 1 评论 -
shell点命令(.命令、source命令)用于在当前Shell环境中执行另一个脚本文件(source与export的联合运用,用于在脚本中export环境变量)
点命令与直接执行脚本文件的区别在于,直接执行脚本文件会创建一个新的子Shell进程来执行脚本,而点命令则是在当前Shell环境中执行脚本,不会创建新的进程。执行初始化脚本:可以将一些需要在每次登录Shell时执行的初始化脚本放在一个脚本文件中,然后通过点命令在登录时执行该脚本,以完成一些初始化操作。点命令的作用是将指定的脚本文件中的命令和变量导入到当前Shell环境中,使得这些命令和变量可以在当前Shell中直接使用。需要注意的是,点命令后面的文件名必须是可执行的脚本文件,否则会报错。原创 2023-06-20 22:41:06 · 1428 阅读 · 0 评论 -
linux普通变量与被导出变量(export)临时导出
在实际应用中,通常将需要在多个进程或脚本中共享的变量导出为环境变量,以便其他进程或脚本可以访问和使用它们。但是,当系统重启后,这些环境变量会被重置为默认值,导出的变量也会丢失。作用范围:普通变量只在当前的shell进程中有效,而被导出的变量是环境变量,在当前shell进程以及其子进程中都有效。可见性:普通变量只能在当前shell进程中访问,而被导出的变量可以被其他进程或脚本访问。这样,在每次启动时,这些变量会被自动设置为指定的值,并导出到新的shell进程中。如果想要查看特定的变量,可以使用。原创 2023-06-20 21:57:42 · 1277 阅读 · 0 评论 -
shellcheck警告:Use ./*glob* or -- *glob* so names with dashes won‘t become options.(rm * -rf)-- *
删除所有文件时用rm ./*或者rm -- *替代rm *,建议用rm -- *,避免删除文件名前带的文件时,遇到问题。参考文章:SC2035 – ShellCheck Wiki。原创 2023-06-20 14:26:19 · 208 阅读 · 0 评论 -
linux sed指令语法示例(sed命令)
因此,这个命令的作用是在指定文件中将以数字和点号组成的字符串开头,后面跟着一个空格和字符串"xqplatformIp"的部分替换成新的IP地址加上"xqplatformIp"。这是一个sed命令,用于替换nginx配置文件中的旧服务器IP地址为新的服务器IP地址。原创 2023-06-12 22:08:11 · 2098 阅读 · 0 评论 -
linux怎么防止手误执行了rm / -rf或者rm /* -rf命令?
命令会删除根目录下的所有文件和目录,这是非常危险的操作,可能会导致系统无法正常运行。上述命令将根目录及其子目录设置为只读,防止误删文件。需要注意的是,这样设置可能会影响系统的正常运行,因此在操作前应该仔细考虑。在上述代码中,自定义了一个rm函数,如果检测到参数为/*,则会提示错误信息,否则执行原来的rm命令。原创 2023-05-03 23:16:28 · 2231 阅读 · 0 评论 -
shellcheck警告:Use $(...) notation instead of legacy backticks `...`(使用$(…)表示法,而不要使用传统的`…`)
【代码】shellcheck警告:Use $(...) notation instead of legacy backticks `...`(使用$(…)表示法,而不要使用传统的`…`)原创 2023-04-28 09:33:05 · 538 阅读 · 0 评论 -
shellcheck告警:Quote this to prevent word splitting.(变量加不加双引号,具体看实际需求)
所以,加不加双引号,还得具体看我们的需求,有的参数就是要带空格,作为一个整体传入,这样就必须加上双引号。这个得看我们的需求,有时候我们是需要后面参数一个一个传进去,那样就不要加双引号,比如。shellcheck提示说需要将。命令就是这样,包括后面的。原创 2023-04-27 14:51:51 · 1111 阅读 · 0 评论 -
cp命令后面加/和不加/有什么区别?
因此,如果要将文件复制到目录下,建议使用。目录下,并且文件名与源文件相同,而。目录下,文件名与源文件相同。(不能确定是文件还是目录)。的区别在于目标路径的不同。会将源文件复制到一个名为。原创 2023-04-27 13:50:15 · 1114 阅读 · 1 评论 -
shellcheck警告:Use find instead of ls to better handle non-alphanumeric filenames.(将ls命令改成find命令方式)
仅供人类使用:它具有松散的非标准格式。原创 2023-04-27 11:14:46 · 138 阅读 · 0 评论 -
shellcheck警告:Use “${var:?}“ to ensure this never expands to /* .
会在变量var未定义或者为空的情况下,输出一个错误信息到标准错误输出,并且退出脚本。如果变量var已经定义且不为空,则会将变量的值替换到。是一种Shell变量替换的语法,它的意思是如果变量var未定义或者为空,则输出错误信息并退出脚本。语法在脚本中常用于检查必要的环境变量是否已经定义,以及检查必要的参数是否已经传入脚本。变量为空,执行这句命令将递归删除系统根目录下所有文件和目录。如果已经定义了VAR变量,则会输出变量的值。我这上面代码存在很严重的隐患,如果。原创 2023-04-26 17:22:59 · 263 阅读 · 0 评论 -
Linux创建临时目录/tmp(mktemp命令、mktemp指令)(mktemp -d)临时目录清理服务systemd-tmpfiles-clean.service
如果用户将临时目录直接创建在其他目录下,可能会导致脚本在不同的环境中运行时出现问题,因为当前目录可能不是可写的,或者当前用户没有权限在当前目录下创建文件或目录。目录是一个临时文件存放目录,它的作用是提供一个公共的临时文件存储区域,供所有用户和应用程序使用。这个目录通常被设置为可写的,因此,任何用户都可以在这个目录下创建临时文件或目录。目录通常被设置为可写的,因此,任何用户都可以在这个目录下创建临时文件或目录。目录通常在系统启动时被挂载,它是一个临时文件存储目录,用于存放临时文件和目录。是一个随机的字符串。原创 2023-04-26 15:56:57 · 3734 阅读 · 0 评论 -
Shell脚本变量没有被正确解析问题(shell中,变量名只能由字母、数字和下划线组成,引用变量后面不能接它们)(使用变量时,用花括号括起来是一个良好编程习惯:${变量名})(shell变量后符号)
如果变量名后面紧跟着其他字符,如空格、点号、斜杠等,shell会将其视为变量名的结尾,就不必使用花括号。在shell中,变量名只能由字母、数字和下划线组成,而变量名中的下划线被解释为一个有效的字符。,那么变量将不能被正确解析,需要用花括号将变量括起来,如。,为了保险起见,建议将所有变量都这样括起来。我按照上述纠正代码后,结果正常了。就是说,如果我们变量名后接的是。在我的代码中,变量名被解释为。原创 2023-04-26 10:39:56 · 477 阅读 · 0 评论 -
linux rsync命令(rsync指令)(Remote Sync)(文件同步)
rsync 就是远程同步的意思remote sync.rsync 被用在UNIX / Linux执行备份操作操作.rsync 工具包被用来从一个位置到另一个位置高效地同步文件和文件夹. rsync可以实现在同一台机器的不同文件直接备份,也可以跨服务器备份.转载 2023-04-25 20:41:11 · 4413 阅读 · 0 评论