我想在 shell 脚本中“向上”搜索文件,例如检查 $PWD,然后 $PWD/..,然后 $PWD/../.. 等,直到找到根目录。在我自己动手之前,是否有一些内置的 bash/zsh/find 魔法可以为我做到这一点?
如何使 tmuxpane_title自动设置为当前运行的命令?
其实这个设置automatic-rename正是我想要的pane_title,但它只是为了window_name。
我在我的 ubuntu 系统中添加了一个新用户
sudo useradd -d /home/peeyush -m peeyush
sudo passwd peeyush
Run Code Online (Sandbox Code Playgroud)
上面的命令列表成功创建了一个新用户,但新用户无法正确使用 bash 补全功能。使用bashrc文件解决了这个问题。
传统的创建用户 GUI 通常不会出现此问题。这背后的原因是什么??他们是否将此用户的默认 shell 设置为 bash ?
我正在寻找一种运行程序Prog并最终得到 3 个文件的方法:
ProgProgProg如果没有发生重定向,stdout 和 stderr 的组合就像它们在屏幕上一样。是否有重定向、管道等的组合可以实现这一目标?
注意:我通常使用bash。
我想要做:
if not eof(stdin):
pass stdin to program
else:
do nothing
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,它可以写得相当接近:
if test ! --is-eof - ; then
exec program
Run Code Online (Sandbox Code Playgroud)
我试图解决的问题是program从标准输入读取,但如果没有输入就会崩溃。我无权访问源代码,program因此program无法更改。二进制输入大于内存大小,因此首先将标准输入放入文件的速度慢得令人无法接受。在 bash 中逐行处理所有输入的速度也慢得令人无法接受。
理想情况下,该解决方案应该在 csh 和 bash 下都能工作。
我已经在远程计算机的“.bashrc”文件中声明了一些“PATH”变量。当我登录到远程计算机时,所有这些“PATH”变量都工作正常。但是当我执行“ssh user@remote env”时,不会读取“.bashrc”中声明的“PATH”。我怎样才能解决这个问题?
这是远程计算机主目录中的“.bash_profile”:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:
export PATH
Run Code Online (Sandbox Code Playgroud)
这是远程计算机主目录中的“.bashrc”:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# PATH
export PATH=$HOME/git-1.8/bin/:$PATH
Run Code Online (Sandbox Code Playgroud)
这是我本地计算机上命令“ssh user@remote env”的当前输出:
SHELL=/bin/bash
SSH_CLIENT=NNNNNNNNNNNNNNN
USER=XXXXXXXXX
MAIL=/var/mail/XXXXXXXX
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/openssh/bin
PWD=/volume2/home/hp120242/XXXXXXXXX
SHLVL=1
HOME=/home/hp120242/XXXXXXXXXX
LOGNAME=XXXXXXXXXXXXX
SSH_CONNECTION=NNNNNNNNNNNNNNNNNNN
LC_CTYPE=en_US.UTF-8
_=/bin/env
Run Code Online (Sandbox Code Playgroud)
我没有遥控器的 root 权限。
我想运行任意命令,例如
find / -name "a*"
我想将其输出通过管道传输到对话框。--tailbox 和 --progressbox 可以很好地处理这个问题,但如果输出太多,您只能看到屏幕适合的内容。
我需要能够使用向上/向下箭头和/或 pg up/pg dn 键向上滚动并查看之前的输出。还有其他允许滚动条的选项,但它们似乎都不允许向其进行管道输出。
编辑:我找到了一个旨在执行此操作的示例,但老实说,我不明白它是如何工作的或如何将其转换为find / -name "a*". 请参阅http://mywiki.wooledge.org/BashFAQ/040上的最后一个示例
编辑2:唯一的要求是使用对话框(或类似的东西,允许ncurses,如用于命令行的gui,以及本机gui框,如果X可用的话。
我想为 shell 的提示和命令设置与输出流中打印的文本不同的颜色。
\n\n我当前的导出PS1如下:
export PS1="\\e[0;36m\\h:\\e[m \\e[1;33m\\w\\e[m\\[\\033[32m\\]\\$(parse_git_branch)\\[\\033[00m\\]\\n\\e[0;37m\xe2\x9e\x9c\\e[m "\nRun Code Online (Sandbox Code Playgroud)\n\n我正在正确地为多行提示的第一行着色,但在第二行中,我想将提示箭头\xe2\x9e\x9c和命令本身都着色为白色,同时将输出保留为灰色。
例如,请参阅我的 shell 的以下屏幕截图。ls除了提示箭头之外,我还尝试将命令颜色设置为白色\xe2\x9e\x9c,但没有其他颜色。我无法弄清楚如何在不更改整个终端主题的文本颜色设置的情况下为命令着色。

我想删除 Mac 制作的 zip 文件中的 __MACOSX 目录。
配合zip foo.zip -qd "__MACOSX/*"效果很好。
然后我写了如下。
for file in "*.zip"; do zip $file -qd "__MACOSX/*"; done
但该脚本仅对目录中的第一个 zip 文件有效。
接下来我尝试使用“find”和“xargs”。但它根本不起作用。
find . -name "*.zip" -print0 | xargs -0 zip -qd "__MACOSX/*"
如何编写一个脚本来删除多个 zip 文件中的所有 __MACOSX 目录。
有些程序有彩色输出(例如grep或emerge在我的 gentoo 系统上),但如果它们的输出通过管道传输到less例如或文件中,则彩色输出将被禁用。
然而,我知道less能够显示彩色输出,如命令
ccze -A < /var/log/emerge.log | less
Run Code Online (Sandbox Code Playgroud)
显示彩色文本。所以我这里有两个问题:
是否有可能“欺骗”其他彩色输出程序来保持颜色?
我想保留颜色,例如:
emerge -puND world | less
Run Code Online (Sandbox Code Playgroud)这些程序如何检测它们的输出被重定向?
bash ×10
linux ×3
shell ×2
colors ×1
command-line ×1
eof ×1
file-search ×1
git ×1
pipe ×1
redirection ×1
shell-script ×1
ssh ×1
stdin ×1
tmux ×1
unix ×1
zip ×1
zsh ×1