我需要编写一个bash 脚本,并希望它解析格式的无序参数:
scriptname --param1 <string> --param2 <string> --param3 <date>
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以做到这一点,还是我几乎坚持使用 1 美元、2 美元、3 美元?
编辑
(注意 - 我不需要长参数名称 - 单个字母也可以)
我正在编写一个bash 脚本来分析我们网络上的邮件日志,这主要是后缀框,但如果可能的话,我希望在分析中包含MS Exchange 日志。
有什么方法可以从 linux 的命令行远程复制 Windows 机器上的文件?(注意:我在 Windows 框中有管理员权限)
有没有办法在 Linux(红帽和 ubuntu)上配置 bash 以允许 shell 脚本以 UTF-8 编码?
我找不到一种简单的方法来改变一件小事,让整个系统只使用 UTF-8 文件而不必担心编码。
在终端中(使用 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/ 复制文件夹而不是其内容吗?
我想知道我是否递归调用了 shell,有没有一种简单的方法可以找出来?是否有特定于外壳的解决方案?我正在使用 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吗?
您如何进行转义工作,以便&实际在后台运行第一个命令?
# foo param1 param2 >> run.out &; tail -f run.out
Run Code Online (Sandbox Code Playgroud) 有没有办法查看远程服务器上是否存在目录?
也许有更好的方法,但我正在编写一个应用程序部署脚本,如果该目录不存在来放置文件,我想在远程服务器上创建一个目录。
提前致谢!
我正在编写一个 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) 我有两个安装了 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)
这个函数是在我最近复制的服务文件中定义的,由于某些原因找不到...