标签: bash

如何轻松制作一个文件的 5 个副本?

我可以使用以下方法将 5 个文件移动到某个地方:

$ mv my-{1..5}.jpg /path/to/dir/
Run Code Online (Sandbox Code Playgroud)

如何轻松地将一个文件复制 5 次

# doesn't work
$ cp my.jpg my-{1..5}.jpg
Run Code Online (Sandbox Code Playgroud)

可以不使用for loop吗?

bash

13
推荐指数
3
解决办法
8314
查看次数

路径`//`在Linux中代表哪个目录?

当我想通过键入 返回到 Linux 中的上层目录时cd ..,我输入了cd //. 令我惊讶的是,没有报告任何错误。更重要的是,提示变为username@hostname://$. ls表示我现在在根目录。

这是一个错误还是 shell 的一个特性?如果一个要素,是//的别名/?我的 shell 是 GNU bash,版本 4.1.5(1)-release (i686-linux-gnu)。

谢谢和最好的问候。

linux bash shell command-line prompt

13
推荐指数
2
解决办法
5531
查看次数

Mac OS X 如何设置 $PATH 的值?

我对如何设置 $PATH 有一个基本的了解,但是是否有文档完整描述了 Mac OS 获取附加到 $PATH 的所有路径的位置?我知道诸如/etc/profile,/etc/paths和 之类的东西/etc/profile.d,但是还有其他脚本最终会影响 $PATH 的值吗?我对非登录 shell 和登录 shell ( .bashrc, .bash_profile)也不是很熟悉,但我知道基本的区别。

mac bash path macos

13
推荐指数
2
解决办法
5786
查看次数

为什么 bash while 循环在管道到终止的子命令时不退出?

为什么下面的命令不退出?而不是退出,循环无限期地运行。

虽然我使用更复杂的设置发现了这种行为,但该命令的最简单形式简化为以下形式。

不退出:

while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Run Code Online (Sandbox Code Playgroud)

上面没有错别字。每个'|' 是一个管道。“exit 1”代表另一个运行并退出的进程。

我希望“exit 1”在 while 循环中引起 SIGPIPE(在没有读取器的管道上写入)并导致循环中断。但是,循环继续运行。

为什么命令不停止?

linux bash shell command-line bash-scripting

13
推荐指数
1
解决办法
3645
查看次数

我如何告诉 mkdir 尝试创建 dir1,如果它已经存在,则创建 dir2 等,直到它遇到一个不存在的名称?

我想创建一个以数字结尾的目录,例如“dir1”,如果目录已经存在,则增加该数字,直到遇到不存在的目录名称,我需要在一行中执行此操作一个 Linux 命令行,类似于:

mkdir --increment dir$
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

到目前为止,我有这个:

dir=output; n=0; mkdir -p $dir$n; if test -d $dir$n; then n=$((n+1)); echo $dir$n; fi
Run Code Online (Sandbox Code Playgroud)

但它只是回显下一个目录名称,我需要它来递归执行命令。

bash command-line mkdir

13
推荐指数
3
解决办法
6603
查看次数

Bash 脚本重复一行中的每个单词?

我有一个像这样的字符串: dog cat bird whale

我想得到 dog dog cat cat bird bird whale whale

所有的词都在同一行。任何的想法?

linux script bash string

13
推荐指数
2
解决办法
2704
查看次数

有什么作用。.bashrc 究竟有没有用?

当我输入一个例如。在我的.bashrc文件中添加了一个新别名我无法立即在该终端窗口中使用它,直到最近我认为我必须重新启动终端才能重新加载.bashrc文件。然后我在某处发现如果我写

. .bashrc
Run Code Online (Sandbox Code Playgroud)

这将.bashrc在当前窗口中重新加载文件,我不必重新启动。这对鳍有效,但实际发生了什么?为什么这会重新加载.bashrc文件?

linux terminal bash command-line bashrc

13
推荐指数
1
解决办法
2118
查看次数

如何在 git post-receive hook 中以 root 身份执行命令

我最近刚刚在服务器上为作为 Upstart 服务运行的 Web 应用程序设置了一个远程 git repo。我想使用 post-receive 挂钩来触发更新应用程序代码所需的操作,然后停止然后重新启动 upstart 服务。这是我的 repo.git/hooks/post-receive 文件:

#!/bin/bash
export GIT_WORK_TREE=/var/www/current/myapp/
echo "Checking out new files and restarting app"
echo $USER
git checkout -f
sudo /sbin/stop myapp-service
sudo /sbin/start myapp-service
Run Code Online (Sandbox Code Playgroud)

根据我在这里读到的信息:askUbuntu.com,让 upstart 命令以 root 身份执行的方法是编辑我的 visudo 文件。这是相关的片段:

%sudo   ALL=(ALL:ALL) ALL
admin   ALL=(ALL:ALL) NOPASSWD: /sbin/start myapp-service /sbin/stop myapp-service
Run Code Online (Sandbox Code Playgroud)

但是当我 git push 到遥控器时,我得到如下输出:

$ git commit -am "test" && git push prod master
[master 59ffccd] test
 1 file changed, 1 insertion(+), 1 deletion(-)
Counting objects: …
Run Code Online (Sandbox Code Playgroud)

linux sudo bash git upstart

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

从 Mac 命令行打开 Google Chrome 特定配置文件

我一直试图从命令行打开谷歌浏览器,但没有运气!我已经尝试过如何使用指定的“用户配置文件”启动 Chrome?

我的目标是在我的 Mac 上使用特定的配置文件(例如“配置文件 1”、“配置文件 2”或“默认”)从命令行打开 Google Chrome,具体来说是使用 bash。

更新:2014 年 6 月 3 日可以正常工作,但仅在第一次打开 chrome 时才有效

open -a Google\ Chrome --args --"profile-directory"="Profile 1"
Run Code Online (Sandbox Code Playgroud)

那么,在 google chrome 已经启动之后,你如何让 --args 被接受?

google-chrome bash command-line macos

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

/usr/local/bin 中的 crontab 和二进制文件

我正在工作,Redhat并且在/usr/local/bin我想crontabroot用户调用的文件夹中几乎没有程序。我认为通过将二进制文件放在该文件夹中就足以像在 shell 中一样直接调用程序。

基本上我每次都需要指定文件夹,所以下面的 crontab 不起作用

 5 9  * * 1,2,3,4,5 my_bin some_args
Run Code Online (Sandbox Code Playgroud)

但我把它改成

 5 9  * * 1,2,3,4,5 source ~/.bashrc; /usr/local/bin/my_bin some_args
Run Code Online (Sandbox Code Playgroud)

你知道为什么吗?

我采购的原因bashrc是添加一些环境库,特别是LD_LIBRARY_PATH因为我的二进制文件无法从/usr/local/lib.

bash environment-variables crontab

13
推荐指数
1
解决办法
8034
查看次数