我已将此添加到我的 ~/.bashrc 中,以更改提示:
PS1='[\u@\h \w]\$ '
但是,它没有显示我想要的。我相信这是为了显示我的用户名,可能还有我所在的目录,但它只是显示[\u@\h \w]\$在终端中。
即使在只是PS1='\u'仍然显示\u在终端中。
我创建了一些文件,比如knob_A.png和knob_a.png,我在 Windows 上的队友说这会导致她的应用程序出现问题。我决定调用它knob_W.png而不是knob_a.png. 然后我对我们的共享服务器做了一个 rsync。为了清理东西,我然后做了
rm knob_[a-d]*.png
Run Code Online (Sandbox Code Playgroud)
它也删除knob_A.png了。这是错误的足球棒。
既shopt -s nocaseglob不会也不会shopt -u nocaseglob导致它按照我想要的方式行事。
我如何告诉 bash 让它的 glob 像过去一样区分大小写?
正如标题所述,是否可以仅在我通过 访问机器时加载别名ssh,或者更好的是,仅从特定计算机通过 访问ssh?
当我想要的状态存在时,我想更改文件中的单元格。例子:
文件:
id311 vmName1 state0
id312 vmName2 state0
id313 vmName3 state0
Run Code Online (Sandbox Code Playgroud)
我将键入一个脚本,该脚本仅更改一行的状态列。所以如果我输入sed -i 's/state0/state1/g'all state0's be state1。我只想更改一行的状态,例如:
文件:
id311 vmName1 state0
id312 vmName2 state1
id313 vmName3 state0
Run Code Online (Sandbox Code Playgroud)
如何将sed命令用于带有 use id 的特殊行?注意:id 是唯一的。
我有一个这样的目录结构:
./a/1.png
./a/2.png
./a/3.png
./b/1.png
./b/2.png
./b/3.png
./c/1.png
...
Run Code Online (Sandbox Code Playgroud)
我想获取子目录中的所有文件并将它们移动到一个新目录中,这样它们的名称就类似于
../dest/a_1.png
../dest/a_2.png
../dest/a_3.png
../dest/b_1.png
../dest/b_2.png
../dest/b_3.png
../dest/c_1.png
...
Run Code Online (Sandbox Code Playgroud)
我能够找到的最接近的方法是在不编写脚本来逐个文件地执行此操作的情况下使用find该--backup=numbered选项,该选项会将我的文件压缩到单个目录,但最终会丢失文件名中的目录上下文。
有没有简洁的方法来实现这一目标?
抱歉,如果在其他地方回答了这个问题,我一生都无法找到解决我的特殊情况的方法,我承认这有点奇怪。(注意:由于某种原因,这篇文章中的所有“使用”字样都显示为蓝色,但它们不应该是蓝色的,我不知道如何防止它)。
我在 MacOS 中使用 bash。我的 .bashrc 中有一些别名,它们只是向终端窗口打印一些东西来帮助我记住命令,或者快速向某人展示一个示例(在下面的代码中,我在命令行上创建别名,但实际上我总是将别名放在 .bashrc 中):
556 ~ alias howtotensorboard="echo tensorboard --logdir=logs/ --port=6001"
557 ~ howtotensorboard
tensorboard --logdir=logs/ --port=6001
Run Code Online (Sandbox Code Playgroud)
如果我只在命令行上使用 echo,在反引号前面加上反斜杠允许我将反引号打印到窗口:
559 ~ echo Using \`which python\` etc
Using `which python` etc
Run Code Online (Sandbox Code Playgroud)
但是在别名中做同样的事情实际上是执行 `which python` 而不是将它打印到窗口:
560 ~ alias howtobacktick="echo Using \`which python\` etc"
561 ~ howtobacktick
Using /usr/bin/python etc
Run Code Online (Sandbox Code Playgroud)
TL; DR,我想要的是在 .bashrc 中放置一个别名,该别名使用 echo 打印出一个反引号,以便最后我可以在 bash 中做到这一点:
558 ~ howtobacktick
Using `which python` etc
Run Code Online (Sandbox Code Playgroud)
我在 .bashrc 中的别名中尝试了许多变体,但没有一个起作用。我怎样才能得到我正在寻找的行为?而且,有没有办法专门用回声来做到这一点?
我为学生运行了一小组 macOS 机器(比如 20 台),它们都需要使用自制软件和其他软件包和应用程序等进行设置。我正在编写一个 bash 脚本来自动安装每台计算机上所需的所有东西。我将使用的一些命令需要以 root 身份运行,但不是大多数。
我想知道在脚本中单独 sudo 这些命令中的每一个是否会更好,或者将 sudo 排除在脚本之外并 sudo 整个脚本。我想知道哪一个更安全(安全方面),更适合我的情况。我不想在整个脚本中都被提示输入密码,但我也不想以 root 身份运行脚本中的每一行,因为它不安全。
在回答这个问题时,我无法完全解释信号如何通过管道传播。
考虑以下示例。
timeout作为管道的第一个元素这会导致gpg救助已捕获的SIGTERM交付给cat,由timeout,留下损坏的文件。
$ timeout 1 cat /dev/urandom | gpg -er attie@attie.co.uk > ./myfile.gpg
gpg: Terminated caught ... exiting
Terminated
$ gpg -d < ./myfile.gpg > /dev/null
You need a passphrase to unlock the secret key for
user: "Attie Grande <attie@attie.co.uk>"
4096-bit RSA key, ID C9AEA6AE, created 2016-12-13 (main key ID 7826F053)
gpg: encrypted with 4096-bit RSA key, ID C9AEA6AE, created 2016-12-13
"Attie Grande <attie@attie.co.uk>"
gpg: block_filter …Run Code Online (Sandbox Code Playgroud) 我错误地.bashrc使用 Windows 文本编辑器 (Notepad++) 为我的 WSL(Linux 的 Windows 子系统)Bash编辑了文件。
现在,每当我运行 Bash 时,都会出现以下错误:
bash: /root/.bashrc: 输入/输出错误
我怎样才能解决这个问题?我尝试使用 Linux 文件结尾(仅 LF)进行保存,但这没有用。
我已经尝试了几个小时来使这个工作正常进行,但我觉得我还没有接近任何地方。
我试图通过从 Mac OS X 终端完成目录名称的制表符来缩短我们的工作流程。
我们有一个内部工具,我们称之为 ,它bob会自动在 git 子模块上运行命令。我想做的是让它自动完成子目录名称。问题是,这些子目录位于静态位置。
project directory
->public
->submodules
->a-module
->another-module
->other-module
->some-module
Run Code Online (Sandbox Code Playgroud)
命令从顶级项目目录运行,如下所示:
bob start bugfix anothermodule
Run Code Online (Sandbox Code Playgroud)
而不是必须完全输入“anothermodule”,这是我们目前所做的,我希望让标签自动完成工作。我们每天多次使用此工作流程,将其缩短几秒钟会很棒并且可以避免打字错误。
最终目标是:
bob start bugfix an<tab>
Run Code Online (Sandbox Code Playgroud)
会自动完成
bob start bugfix anothermodule
Run Code Online (Sandbox Code Playgroud)
我试过CDPATH但很快意识到这不是我想要的,因为这不是遵循cd命令,只是我的自定义命令。
我已经bash_completion安装,但一般来说我不太擅长 bash。提到这一点,以防万一它可以成为解决方案的一部分!