AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-273994

user9303970's questions

Martin Hope
user9303970
Asked: 2018-07-15 09:21:10 +0800 CST

文件名由于某种原因带有星号 - 它不会被更改并且内容不会被执行

  • 9

我使用带有 Bash 的 CentOS 共享服务器环境。

ll "$HOME"/public_html/cron_daily/

带来:

./
../
-rwxr-xr-x 1 user group 181 Jul 11 11:32 wp_cli.sh*

我不知道为什么文件名最后有一个星号。我不记得添加它,当我尝试更改它时,我得到了这个输出:

[~/public_html]# mv cron_daily/wp_cli.sh* cron_daily/wp_cli.sh
+ mv cron_daily/wp_cli.sh cron_daily/wp_cli.sh
mv: `cron_daily/wp_cli.sh' and `cron_daily/wp_cli.sh' are the same file

此错误可能表明我的 Cpanel cronjob 失败的原因:

在此处输入图像描述

更改文件或运行 Cpanel cron 命令时我做错了什么吗?因为这两个操作似乎都失败了。

bash centos
  • 2 个回答
  • 21753 Views
Martin Hope
user9303970
Asked: 2018-07-12 12:57:23 +0800 CST

Printf 追加失败

  • -2

我尝试在 CentOS (12.x) 中运行以下类似命令:

printf "\nhello" "$HOME"/.bashrc
printf "\nhello" ${HOME}/.bashrc

执行后,我显示.bashrc文件的内容,并没有看到任何新内容。

set -x为两者都带来了空行输出,因此我的命令可能是错误的。

我在语法上遇到了类似的问题echo(编辑:我可能记错了,但我记得我可以在echo没有像 >> 这样的附加运算符的情况下附加内容)。

你看错什么了?

bash text-processing
  • 1 个回答
  • 1301 Views
Martin Hope
user9303970
Asked: 2018-07-12 09:38:12 +0800 CST

将所有以特定扩展名结尾的文件与 shell glob 匹配(例如,所有以 .sh 结尾的文件)

  • 1

我希望将所有以某个扩展名结尾的文件与 shell glob 匹配。

在这种情况下,我希望以扩展名结尾的所有文件为目标,这些文件是我在第一行.sh放置“shebang”(如 )后使用 Bash shell 执行的 bourne 文件。#!/bin/bash

这是,例如,我有一个 cron 命令:

0 0 * * * "$HOME"/public_html/cron_daily/myfile.sh 2>/dev/null

相反 myfile.sh 我需要定位该目录中的所有文件,并以.sh扩展名结尾。

下面的代码是否正确?

0 0 * * * "$HOME"/public_html/cron_daily/*$.sh 2>/dev/null

更新

我认为这在使用 glob 时很好:

*.{sh}
shell-script wildcards
  • 2 个回答
  • 1185 Views
Martin Hope
user9303970
Asked: 2018-06-21 08:05:46 +0800 CST

确保子目录不会受到循环(或查找)的影响

  • 2

请查看这些旨在完成基本相同任务的代码(找到.htaccess网站的主要内容并进行更改):

for dir in "$HOME"/public_html/*.{com,co.il}/; do 
  if pushd "$dir"; then 
    chmod 644 .htaccess 
    popd 
  fi 
done 2>/dev/null 

和:

find "$HOME"/public_html/*.{com,co.il} -name ".htaccess" -exec chmod 644 {} \;

这些是否也会影响.htaccess每个目录下的子目录中的文件public_html?

bash find
  • 2 个回答
  • 49 Views
Martin Hope
user9303970
Asked: 2018-06-17 10:45:52 +0800 CST

没有定界符的文档

  • -1

在这篇文章中,斯蒂芬的回答显示了这段代码:

cat <<-"EOF1" >> myPath/myFile.append
if ! grep -F -q -f myPath/myFile{.append,}; then
    cat myPath/myFile.append >> myPath/myFile
fi

为什么这里的文档没有分隔符?

bash here-document
  • 1 个回答
  • 93 Views
Martin Hope
user9303970
Asked: 2018-06-17 09:52:17 +0800 CST

当它与字符串不匹配时,整数 grep 返回什么退出代码?

  • 1

当它与字符串不匹配时,整数 grep 返回什么退出代码?

我知道它在匹配时返回 0,我假设它在不匹配时返回 1。

那是对的吗?

grep exit-status
  • 1 个回答
  • 4956 Views
Martin Hope
user9303970
Asked: 2018-06-13 21:34:43 +0800 CST

仅当该文件中不存在此内容时,才将此处的文档内容附加到文件中

  • 2

我有一个要附加一些内容的文件(包括下面我的代码中可见的第一个、第二个和第三个空格):

###我是文字1

###我是文字2

(我附加的实际文本比这 5 行长得多)。

为了简单地将内容附加到文件中,我这样做:

cat <<-"EOF" >> myPath/myFile
    content...
EOF

但是,我如何确保仅当文件中不存在内容时,heredocument 才会附加内容,否则操作将被中止?

如果文件中仅存在部分块内容,则也应中止整个操作。

bash io-redirection
  • 2 个回答
  • 1053 Views
Martin Hope
user9303970
Asked: 2018-06-13 10:13:24 +0800 CST

在 heredocument 重定向/附加行中使用正则表达式来定位特定的目录“集”

  • -1

我需要一种方法来定位所有子目录,这些子目录以或其他TLDpublic_html结尾,或者我可能会在heredocument中列出。.com.biz.co.il

这是我的 hereoducmnet 在一个嵌套在循环内的语句pushd-popd中:if-fifor

for dir in "$HOME"/public_html/*/; do
    if pushd "$dir"; then
        cat <<-"EOF" >> "$HOME"/public_html/ALL_DOT_COM|ALL_DOT_BIZ/.htaccess

           Apache_directive_set_1

           Apache_directive_set_2

           popd
        EOF
    fi
done 2>myErrors.txt

有没有办法结合正则表达式来实现这一点,直接在 heredocument 重定向/附加行(在哪里ALL_DOT_COM|ALL_DOT_BIZ)?

bash scripting
  • 2 个回答
  • 117 Views
Martin Hope
user9303970
Asked: 2018-06-11 10:05:30 +0800 CST

什么问题/模式证明使用命令替换是合理的?

  • 2

我在 DigitialOcean 等“自我管理的 shell”托管提供商上使用 Ubuntu 和 Bash 创建了几个服务器环境,我在其上运行 Drupal/WordPress 应用程序。

一直以来,我都没有必要使用所谓的“命令替换”。

我问,Bash 程序员必须使用这个概念的“模式”会是什么问题?请举个例子?

command-substitution
  • 5 个回答
  • 250 Views
Martin Hope
user9303970
Asked: 2018-05-30 06:08:55 +0800 CST

在一行中将所有代码行重定向到同一个文件

  • 1

我有以下命令集用于更新托管服务提供商平台上我的 CentOs 共享托管分区中的所有 WordPress 站点(通过每日 cron)。

集合中的wp命令属于WP-CLI程序,它是用于 WordPress 网站上各种 shell 级操作的 Bash 扩展。pushd-popd

for dir in public_html/*/; do
    if pushd "$dir"; then
        wp plugin update --all
        wp core update
        wp language core update
        wp theme update --all
        popd
    fi
done

目录public_html是所有网站目录所在的目录(每个网站通常都有一个数据库和一个主文件目录)。

鉴于public_html有一些目录不是WordPress 网站目录,WP-CLI 将返回有关它们的错误。

为了防止这些错误,我假设我可以这样做:

for dir in public_html/*/; do
    if pushd "$dir"; then
        wp plugin update --all 2>myErrors.txt
        wp core update 2>myErrors.txt
        wp language core update 2>myErrors.txt
        wp theme update --all 2>myErrors.txt
        popd
    fi
done

而不是写2>myErrors.txt四次(或更多次),有没有办法确保来自每个命令的所有错误都将在一行中转到同一个文件?

centos cron
  • 2 个回答
  • 62 Views
Martin Hope
user9303970
Asked: 2018-04-26 15:44:53 +0800 CST

什么是 shell 中的命令替换?[复制]

  • 16
这个问题在这里已经有了答案:
`(反引号/反引号)在命令中是什么意思? (6 个回答)
4年前关闭。

我将 Ubuntu 16.04 与 Bash 一起使用,我试图在Wikipedia、here和here中阅读,但我无法理解 shell 脚本中“命令替换”的含义,尤其是在 Bash 中,如下所示:

$(command)

或者

`command`

这个词的含义是什么?

编辑:当我第一次发布这个问题时,我已经知道了替换的纯概念以及变量替换的 Linux 概念(通过执行用它的值替换变量),但是我仍然错过了文档中这个 shell 功能的目的原因或一组原因。


问题锁定后我的回答

命令替换是一种具有专用语法的操作,用于执行命令并让该命令的输出由变量保持(存储)以供以后使用。

一个例子date:

thedate="$(date)"

然后我们可以使用命令打印结果printf:

printf 'The date is %s\n' "$thedate"
  1. 命令替换语法是$().
  2. 命令本身是date.
  3. 结合我们得到$(date)的,它的值是替换的结果(我们可以在执行后得到)。
  4. 我们将该值保存在变量 中$thedate,以备后用。
  5. printf根据上面的命令,我们用 显示变量保存的输出值。

注意:\ninprintf是换行符。

command-substitution
  • 2 个回答
  • 53489 Views
Martin Hope
user9303970
Asked: 2018-04-26 13:48:45 +0800 CST

在执行“解压缩 gcc.tar.Z &”时是否应该省略大写 z?

  • 0

在 Newham 和 Rosenblatt 撰写的第三版“学习 Bash shell”中,第 19 页提到了解压缩名为gcc.tar.Z.

类型uncompress gcc.tar &(您可以省略 Z)。

为什么作者说“你可以省略 Z”?为什么不留着呢?...


在man uncompressUbuntu 16.04 中,我找到了 Gunzip(“Gzip”)手册,上面写着:

如果压缩文件名对其文件系统来说太长,gzip 会截断它。Gzip 尝试仅截断文件名中超过 3 个字符的部分。

gunzip 在其命令行上获取文件列表,并用未压缩的文件替换名称以 .gz、-gz、.z、-z 或 _z(忽略大小写)结尾且以正确幻数开头的每个文件原始扩展。gunzip 还将特殊扩展名 .tgz 和 .taz 分别识别为 .tar.gz 和 .tar.Z 的简写。压缩时,gzip 会在必要时使用 .tgz 扩展名,而不是截断具有 .tar 扩展名的文件。

gunzip 有时能够检测到错误的 .Z

我承认我并不完全清楚为什么该程序具有上述行为。

tar
  • 1 个回答
  • 255 Views
Martin Hope
user9303970
Asked: 2018-04-26 01:54:32 +0800 CST

重复创建名为 /dev/stdin 的文件会很危险吗?

  • 0

在 Newham 和 Rosenblatt 的“Learning the Bash shell”第三版中,它作为评论写在第 15 页:

如果在省略文件名参数时特定的 UNIX 实用程序不接受标准输入,请尝试使用破折号 (0) 作为参数。一些 NIX 系统将标准输入作为文件提供,因此您可以尝试提供文件 /dev/stdin 作为输入文件 argumnet.

最后一句话我不清楚-“将标准输入作为文件提供”是什么意思?

“重复”创建在系统中命名的文件不是很危险吗/dev/stdin(我个人使用的是 Ubuntu 16.04)。

顺便说一句,我在这篇文章中遇到了类似的情况。

bash stdin
  • 1 个回答
  • 335 Views
Martin Hope
user9303970
Asked: 2018-04-25 20:08:02 +0800 CST

为什么不将 shell glob 视为正则表达式的“方言”?[复制]

  • 0
这个问题在这里已经有了答案:
正则表达式与用于过滤文件的通配符有何不同 2 个答案
4年前关闭。

我经常混淆 Bash 3.x shell glob:

?      # Match any single character.
*      # Match any string of characters (up until the asterisk).
[set]  # Match any character in set (but not the entire set itself).
[!set] # Match any character not in set.

使用正则表达式(尤其是PCRE)。

我的问题是为什么不将这些视为“Bash 正则表达式”(就像我们有“JavaScript 正则表达式”一样)?

为什么不将这些视为正则表达式的另一种“方言”?

当然,这将是非正统的,但我不确定没有任何形式上的逻辑理由不这样做。

bash regular-expression
  • 2 个回答
  • 748 Views
Martin Hope
user9303970
Asked: 2018-04-25 07:01:18 +0800 CST

在 Bash 中匹配字符组合中的每个字符,加上组合值本身

  • 1

在 Bash 中练习正则表达式时,我尝试匹配括号内的整个集合/搜索模式。

相反,我只匹配其中的每个字符。

例如,与

cd
touch a.c a.h a.o a.cho
ls *.[cho]

ls匹配的:

a.c
a.h
a.o 

但它与中的整个集合不匹配a.cho。

为什么我没有匹配整个系列,怎么可能做到这一点?

bash regular-expression
  • 2 个回答
  • 486 Views
Martin Hope
user9303970
Asked: 2018-04-24 20:11:45 +0800 CST

lp -d lp1 -h myfile 有两个选项和一个参数还是 2 个选项和 2 个参数?

  • 0

在 O'reilly 的“Learning the Bash Shell”(第三版)中,它写在第 7 页:

lp -d lp1 -h myfile有两个选项和一个参数。

怎么来的?

我认为我认为有两个选项,每个选项都有一个参数:

-d lp1
-h myfile

笔记

lp打印文件(具体来说,通过打印机,而不是在终端上)。

command-line syntax
  • 1 个回答
  • 25 Views
Martin Hope
user9303970
Asked: 2018-04-15 06:54:17 +0800 CST

与 bash -v varname 相比,错误地运行 bash -v 或 bash --v 以了解 bash 版本

  • 4

从 Bash 4.3.48(1) 开始,有几次我误认为bash -v或bash --v表示bash --version它们没有。

从man bash,bash -v等价于bash --verbose; 虽然它返回一个很大的输出(据称是一些bashrc文件,可能更多);我认为它只是开始一个子会话。

bash --v输出少得多,主要是bash: --v: invalid option。

我计划询问这两者中的任何一个是否可能在全默认 bash 中出现问题,但我没有看到任何证据,并假设 Bash 新手不应该受到这些压力。

我的问题

我确实误会了man bash, 是什么意思bash -v varname。

用一个看似未定义的变量启动一个新的 bash 会话是什么意思,或者它意味着启动它还打印一个导出变量的值[1]?


新人注意事项:

  1. 导出变量是从一个 shell 会话继承到另一个 shell 会话的任何变量(例如从会话 0 到会话 1)。
bash variable
  • 1 个回答
  • 1738 Views
Martin Hope
user9303970
Asked: 2018-04-15 06:15:39 +0800 CST

如何知道我当前用户创建的最后一个文件的位置?

  • 0

我使用带有 Bash 4.3.48(1) 和zip3.0 的 Ubuntu 16.04 (xenial)。

在包含具有许多不同功能的 bash 脚本 ( #!/bin/bash) 的文件中,我还使用此功能在一个 zip 文件中创建完整的数据库备份 + 文档根备份:

imb() {
    drt="/var/www/html"
    date="$(date +%F-%T)"
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
    rm -f "$drt/db-$date.zip"
}

我获取了上述文件 ( source ~/function.sh) 并imb在调试模式 ( set -x) 下执行:

我被提示输入数据库密码,然后过了一段时间(表明创建了数据库备份)。此外,出现了一个详细的 zip(太长而无法在终端中粘贴或跟踪),表明文档根目录下的所有内容都已压缩。

然而,没有备份出现在/var/www/html/.

我的问题

由于评论,我觉得我应该问两个问题,我发现它们相似但实际上不同:

  1. zip 将我的文件放在哪里(例如,假设这不是手动创建意义上的“文件创建” touch)?当然,由进程创建并位于某处的文件不一定归我的用户所有。

  2. 我如何找出当前用户创建的最后一个文件的位置?

我希望它位于/var/www/html/:

zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

但不是。如果不从根 () 开始在系统的整个文件树上运行,我不知道一种有效的方法来知道它是在哪里创建的/,因为这在该机器上可能需要几个小时。

更新

在写这个问题时,我访问了我的主目录($HOME/),在那里我找到了该文件,但我不知道为什么它是在文档根目录下创建的。

bash find
  • 1 个回答
  • 74 Views
Martin Hope
user9303970
Asked: 2018-04-14 14:42:32 +0800 CST

在嵌套在函数内的管道命令末尾忽略连字符 (-)?

  • 1

我使用 Ubuntu 16.04 (xenial) 和 Bash 4.3.48(1)。

根据 Stephen Kitt在本次会议中的回答,我尝试将以下命令作为名为的函数的一部分运行imb():

mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" -

我获取了imb()函数所在的文件:

source ~/functions.sh

功能

imb() {
    drt="/var/www/html"
    date="$(date +\%F-\%T)"
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
    rm -f "$drt/db-$date.zip"
}

我的问题

调用函数失败并出现以下zip错误:

zip error: Nothing to do! (/var/www/html/db-2018-04-13-22:27:47.zip)

这似乎是因为连字符以某种方式被忽略了;我假设从以下方面来看:

type -a imb

输出:

imb is a function

imb () {
    date="$(date +\%F-\%T)";
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip";
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*";
    rm -f "$drt/db-$date.zip" 
}

我注意到这里缺少的连字符。

我的问题

为什么函数失败/为什么 Bash 据称忽略了连字符?

bash zip
  • 1 个回答
  • 148 Views
Martin Hope
user9303970
Asked: 2018-04-12 04:04:56 +0800 CST

Linux 中临时文件和常规文件的主要区别是什么?

  • 0

临时文件(“tempfile”)和 Linux 中的常规文件之间的主要区别是什么?

我发现这两个 inode 之间的唯一主要区别是,一般来说,“临时文件”的生命周期比“常规文件”短得多,无论出于何种原因,而从原则上讲,两者实际上都是临时的(至少从事实上,这个宇宙正在走向完全的热寂)。

参考:

  1. 管道与临时文件有何不同?

  2. FIFO(命名管道)与常规管道(未命名管道)有何不同?

files
  • 2 个回答
  • 1566 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve