我正在尝试使用此命令获取文件的最后修改日期
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 脚本中,
我有一个字符串,其中包含由一个或多个空格分隔的多个单词。IE:
Name Age Sex ID Address
Run Code Online (Sandbox Code Playgroud)
如果我想找到任何一个词,比如我想找到“年龄”这个词的索引,我该怎么做?
有什么命令可以直接返回我想要的单词的索引号吗?
谢谢。
如何在这样的 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) 我最近开始配置 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. 我配对这些重复项的最佳方法是什么?有没有办法找出哪些文件正在修改我的路径并尝试消除它们?
当*.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 或 zsh 中输入一个长命令时(这是我肯定见过的仅有的两个 shell),光标会扭曲到我输入的字符串中间的某个位置,谁能解释为什么会这样,如果可以做些什么呢?
我注意到,当我浏览 shell 的历史记录(使用箭头键)时,经常会发生这种情况,当我遇到一个很长的条目时,新的长条目会与之前的条目混淆,从而导致文本出现乱码。
我有一个短字符串的例子,我刚刚注意到:
历史包含:
mkdir sune1
mkdir sune2
Run Code Online (Sandbox Code Playgroud)
如果我导航到mkdir sune1,然后导航到,mkdir sune2我希望我的命令行是mkdir sune2(因为这是我现在导航到的) - 但我得到mkdir1sune2.
多年来我经常注意到这一点,但不要让它太困扰我,但我认为是时候改变了!那么,有什么想法吗?
在 OSX 上的 bash 中,我可以ctrl-_撤消我最近输入的内容。有对应的redo命令吗?
我需要使用 unix mv 命令移动文件夹,但前提是目标位于同一驱动器或同一文件系统中。最好的方法是什么?
是否可以手动更改 UNIX 系统上文件的日期(到以前的日期)?
如果是这样,我将如何解决这个问题?
我怎样才能同时对多个文件做同样的事情?
bash ×10
linux ×4
shell ×2
unix ×2
command-line ×1
globbing ×1
macos ×1
mv ×1
path ×1
pipe ×1
search ×1
terminal ×1
windows-10 ×1
windows-subsystem-for-linux ×1
zsh ×1