我可以使用以下方法将 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吗?
当我想通过键入 返回到 Linux 中的上层目录时cd ..,我输入了cd //. 令我惊讶的是,没有报告任何错误。更重要的是,提示变为username@hostname://$. ls表示我现在在根目录。
这是一个错误还是 shell 的一个特性?如果一个要素,是//的别名/?我的 shell 是 GNU bash,版本 4.1.5(1)-release (i686-linux-gnu)。
谢谢和最好的问候。
我对如何设置 $PATH 有一个基本的了解,但是是否有文档完整描述了 Mac OS 获取附加到 $PATH 的所有路径的位置?我知道诸如/etc/profile,/etc/paths和 之类的东西/etc/profile.d,但是还有其他脚本最终会影响 $PATH 的值吗?我对非登录 shell 和登录 shell ( .bashrc, .bash_profile)也不是很熟悉,但我知道基本的区别。
为什么下面的命令不退出?而不是退出,循环无限期地运行。
虽然我使用更复杂的设置发现了这种行为,但该命令的最简单形式简化为以下形式。
不退出:
while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Run Code Online (Sandbox Code Playgroud)
上面没有错别字。每个'|' 是一个管道。“exit 1”代表另一个运行并退出的进程。
我希望“exit 1”在 while 循环中引起 SIGPIPE(在没有读取器的管道上写入)并导致循环中断。但是,循环继续运行。
为什么命令不停止?
我想创建一个以数字结尾的目录,例如“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)
但它只是回显下一个目录名称,我需要它来递归执行命令。
我有一个像这样的字符串: dog cat bird whale
我想得到 dog dog cat cat bird bird whale whale
所有的词都在同一行。任何的想法?
当我输入一个例如。在我的.bashrc文件中添加了一个新别名我无法立即在该终端窗口中使用它,直到最近我认为我必须重新启动终端才能重新加载.bashrc文件。然后我在某处发现如果我写
. .bashrc
Run Code Online (Sandbox Code Playgroud)
这将.bashrc在当前窗口中重新加载文件,我不必重新启动。这对鳍有效,但实际发生了什么?为什么这会重新加载.bashrc文件?
我最近刚刚在服务器上为作为 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) 我一直试图从命令行打开谷歌浏览器,但没有运气!我已经尝试过如何使用指定的“用户配置文件”启动 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 被接受?
我正在工作,Redhat并且在/usr/local/bin我想crontab为root用户调用的文件夹中几乎没有程序。我认为通过将二进制文件放在该文件夹中就足以像在 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.