标签: bash

Bash 脚本参数

我需要编写一个bash 脚本,并希望它解析格式的无序参数

scriptname --param1 <string> --param2 <string> --param3 <date>
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点,还是我几乎坚持使用 1 美元、2 美元、3 美元?

编辑

(注意 - 我不需要长参数名称 - 单个字母也可以)

scripting bash command-line-interface

7
推荐指数
1
解决办法
469
查看次数

我如何从 linux cli 从 Windows 机器上获取文本文件?

我正在编写一个bash 脚本来分析我们网络上的邮件日志,这主要是后缀框,但如果可能的话,我希望在分析中包含MS Exchange 日志

有什么方法可以从 linux 的命令行远程复制 Windows 机器上的文件?(注意:我在 Windows 框中有管理员权限)

linux windows bash copying

7
推荐指数
2
解决办法
382
查看次数

UTF-8 和 !# shell 脚本

有没有办法在 Linux(红帽和 ubuntu)上配置 bash 以允许 shell 脚本以 UTF-8 编码?

我找不到一种简单的方法来改变一件小事,让整个系统只使用 UTF-8 文件而不必担心编码。

unix configuration bash utf-8

7
推荐指数
1
解决办法
5781
查看次数

递归 cp 复制文件夹内容而不是 OS X 上的文件夹

在终端中(使用 bash 和 tcsh) cp -r 复制文件夹的内容而不是文件夹的内容,如果文件夹参数在末尾有一个 / 。

鉴于以下结构:

folderA
  |-fileA
  |-fileB
Run Code Online (Sandbox Code Playgroud)

以下命令将 fileA 和 fileB 复制到目标,而不是将 folderA 复制到目标:

cp -r folderA/ destination
Run Code Online (Sandbox Code Playgroud)

所以它充当

cp -r folderA/* destination
Run Code Online (Sandbox Code Playgroud)

这非常烦人,因为默认情况下 tcsh 中的完成会在文件夹的末尾添加一个 / ,所以如果我忘记删除末尾的 / ,我总是不得不清理。这种行为与我使用过的其他 *nix 不同。

有什么办法可以改变这一点并使 cp -r folderA/ 复制文件夹而不是其内容吗?

bash command-line-interface mac-osx

7
推荐指数
2
解决办法
5725
查看次数

如何确定我可能有多少贝壳深?

我想知道我是否递归调用了 shell,有没有一种简单的方法可以找出来?是否有特定于外壳的解决方案?我正在使用 bash。

scripting bash

7
推荐指数
2
解决办法
385
查看次数

在 bash 中获得更多有用的选项卡完成提示?

假设我有一个包含几个文件的目录,如下所示:

$ ls
file1  file2  file3
Run Code Online (Sandbox Code Playgroud)

我想在 bash 中做一些 tab 补全:

$ cat file<tab>
file1  file2  file3  
Run Code Online (Sandbox Code Playgroud)

我记得看到有人在做 Tab 补全,shell 将下一部分加粗,所以在这种情况下,它会将文件名的1,2和加粗,3因此它看起来像这样:文件1 文件2文件3

这将告诉您接下来应该输入什么。

我认为这是 的一个功能zsh,但有什么办法可以得到它bash吗?

linux shell bash command-line-interface prompt

7
推荐指数
1
解决办法
927
查看次数

Bash:将作业放在后台,然后拖尾日志

您如何进行转义工作,以便&实际在后台运行第一个命令?

# foo param1 param2 >> run.out &; tail -f run.out
Run Code Online (Sandbox Code Playgroud)

scripting shell bash background-process

7
推荐指数
1
解决办法
6175
查看次数

检查远程目录是否存在(shell 脚本)

有没有办法查看远程服务器上是否存在目录?

也许有更好的方法,但我正在编写一个应用程序部署脚本,如果该目录不存在来放置文件,我想在远程服务器上创建一个目录。

提前致谢!

linux bash remote directory

7
推荐指数
2
解决办法
3万
查看次数

在脚本化命令行 SFTP 会话中检测上传成功/失败?

我正在编写一个 BASH shell 脚本来将目录中的所有文件上传到远程服务器,然后将它们删除。它将通过 CRON 作业每隔几个小时运行一次。

我的完整脚本如下。基本问题是应该确定文件是否上传成功的部分不起作用。无论上传是否成功,SFTP 命令的退出状态始终为“0”。

如何确定文件是否正确上传,以便我知道是删除它还是放任不管?

#!/bin/bash

# First, save the folder path containing the files.
FILES=/home/bob/theses/*

# Initialize a blank variable to hold messages.
MESSAGES=""
ERRORS=""


# These are for notifications of file totals.
COUNT=0
ERRORCOUNT=0

# Loop through the files.
for f in $FILES
do
    # Get the base filename
    BASE=`basename $f`

    # Build the SFTP command. Note space in folder name.
    CMD='cd "Destination Folder"\n'
    CMD="${CMD}put ${f}\nquit\n"


    # Execute it.
    echo -e $CMD | sftp …
Run Code Online (Sandbox Code Playgroud)

scripting bash sftp

7
推荐指数
1
解决办法
4万
查看次数

debian 上服务命令的选项卡完成

我有两个安装了 debian 挤压的系统。当我键入时在一个系统上:

service <TAB> 
Run Code Online (Sandbox Code Playgroud)

它向我展示了所有可用的服务(来自 /etc/init.d)

在另一个系统上,它显示了当前目录中的所有文件。有谁知道哪个设置会改变这种行为?

更新:

文件 /etc/bash_completion.d/service 丢失。我从它正在工作的机器上复制它。如果我输入complete -p | grep service它会显示我:

complete -F _service service
Run Code Online (Sandbox Code Playgroud)

在它不工作的机器上,该命令不显示任何内容。我complete -F _service service在命令行中执行,之后,命令service <TAB>显示我:

service -su: completion: function `_service' not found
Run Code Online (Sandbox Code Playgroud)

这个函数是在我最近复制的服务文件中定义的,由于某些原因找不到...

debian bash

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