标签: bash

如何在 bash 脚本中同时获取 PIPESTATUS 和输出

我正在尝试使用此命令获取文件的最后修改日期

TM_LOCAL=`ls -l --time-style=long-iso ~/.vimrc | awk '{ print $6" "$7 }'`
Run Code Online (Sandbox Code Playgroud)

执行此行后,TM_LOCAL 的值类似于“2012-05-16 23:18”

我还想检查 PIPESTATUS 以查看是否有错误。例如,如果文件不存在,则ls返回 2。但$?其值为 0,因为它的返回值为awk

如果我单独运行这个命令,我可以通过查看 ls 的返回值 ${PIPESTATUS[0]}

ls -l --time-style=long-iso ~/.vimrc | awk '{ print $6" "$7 }'
Run Code Online (Sandbox Code Playgroud)

但是$PIPESTATUS,如果我将输出分配给第一个示例中的变量,则不会像我预期的那样工作。在这种情况下,$PIPESTATUS数组只有 1 个元素,与$?

所以,问题是,我怎样才能同时获得两者$PIPESTATUS并将输出分配给一个变量?

bash pipe

10
推荐指数
1
解决办法
1万
查看次数

如何在bash中的字符串中找到单词的索引?

在 bash 脚本中,

我有一个字符串,其中包含由一个或多个空格分隔的多个单词。IE:

Name   Age Sex  ID         Address
Run Code Online (Sandbox Code Playgroud)

如果我想找到任何一个词,比如我想找到“年龄”这个词的索引,我该怎么做?

有什么命令可以直接返回我想要的单词的索引号吗?

谢谢。

linux search bash

10
推荐指数
2
解决办法
5万
查看次数

在bash中单独的文件和路径?

如何在这样的 bash 循环中分隔路径和文件元素?

for file in `find /my/path -name "*.ext"`
do
    #(path,onlyfile) = separate_path_and_file $file
    #dosomethingwith $onlyfile
done
Run Code Online (Sandbox Code Playgroud)

linux bash path

10
推荐指数
2
解决办法
2万
查看次数

$PATH 充满了重复项

我最近开始配置 OSX 10.7 环境进行开发。我已经安装了 HomeBrew,并将以下内容添加到我的.bash_profile

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"        
Run Code Online (Sandbox Code Playgroud)

一切都很好,除非echo $PATH我收到以下重复字符串: /usr/local/bin:/usr/local/sbin:~/bin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:usr/local/bin:/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

为了使其更具可读性,这些是所有路径:

/usr/local/bin
/usr/local/sbin
~/bin:/usr/local/bin
/usr/local/sbin
~/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
usr/local/bin
/usr/local/git/bin
/usr/local/git/bin
/usr/local/git/bin
/usr/local/git/bin
/usr/local/git/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

除了我的.bash_profile. 我配对这些重复项的最佳方法是什么?有没有办法找出哪些文件正在修改我的路径并尝试消除它们?

terminal bash environment-variables

10
推荐指数
2
解决办法
8282
查看次数

没有匹配项时如何处理 bash * 匹配项?

*.txt目录中实际存在文件时,以下 bash 代码段效果很好。

for txt in *.txt
do                                               
  echo "loading data from $txt"
done   
Run Code Online (Sandbox Code Playgroud)

如果没有,文字*.txt会作为 $txt 进入循环(不好)。

如何更改此代码以便在没有*.txt文件时do ... done跳过该块?

bash globbing

10
推荐指数
2
解决办法
3999
查看次数

为什么有些(通常很长)命令在 bash & zsh 中出现乱码?

很多时候,当我在 bash 或 zsh 中输入一个长命令时(这是我肯定见过的仅有的两个 shell),光标会扭曲到我输入的字符串中间的某个位置,谁能解释为什么会这样,如果可以做些什么呢?

我注意到,当我浏览 shell 的历史记录(使用箭头键)时,经常会发生这种情况,当我遇到一个很长的条目时,新的长条目会与之前的条目混淆,从而导致文本出现乱码。

我有一个短字符串的例子,我刚刚注意到:

历史包含:

mkdir sune1
mkdir sune2
Run Code Online (Sandbox Code Playgroud)

如果我导航到mkdir sune1,然后导航到,mkdir sune2我希望我的命令行是mkdir sune2(因为这是我现在导航到的) - 但我得到mkdir1sune2.

多年来我经常注意到这一点,但不要让它太困扰我,但我认为是时候改变了!那么,有什么想法吗?

bash zsh shell

10
推荐指数
1
解决办法
1430
查看次数

在 OSX bash 中重做输入

在 OSX 上的 bash 中,我可以ctrl-_撤消我最近输入的内容。有对应的redo命令吗?

bash command-line macos

10
推荐指数
1
解决办法
2042
查看次数

仅当目标位于同一驱动器上时,如何使用 mv 在 unix 中移动文件夹

我需要使用 unix mv 命令移动文件夹,但前提是目标位于同一驱动器或同一文件系统中。最好的方法是什么?

linux unix bash shell mv

10
推荐指数
1
解决办法
434
查看次数

在 UNIX 中手动更新文件的 mtime

是否可以手动更改 UNIX 系统上文件的日期(到以前的日期)?

如果是这样,我将如何解决这个问题?

我怎样才能同时对多个文件做同样的事情?

linux unix bash

10
推荐指数
1
解决办法
7770
查看次数

找不到“适用于 Linux 的 Windows 子系统”功能来安装适用于 Windows 的 Bash

我正在尝试在 Windows上使用Jekyll创建一个 GitHub 页面,但要做到这一点,我被告知我需要在 Windows 上的 Ubuntu 上安装 Bash。好的,好的,所以我转到 Bash 的安装指南。我的电脑是 64 位的,Windows 10,build 版本 15063.296,在 14393 以上,所以我应该满足要求。

但是,当我按照说明进行操作时,在 Windows 功能中找不到“适用于 Linux 的 Windows 子系统(测试版)”。我该怎么办?

编辑:是的,我启用了开发人员模式,即使启用它也不会显示。

bash windows-10 windows-subsystem-for-linux

10
推荐指数
1
解决办法
3万
查看次数