标签: bash

bash 和 -bash 有什么区别?

bash 和 -bash 有什么区别。当我执行时echo $0,它会bash在一台机器和-bash另一台机器上返回。它们之间有什么区别?

bash

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

使用 Bash 更改文件名的第 N 个字符的大小写?

我有一个文件文件夹,我想在第 5 个位置更改其中一个字符的大小写。

由此:

ABC-xyz
DEF-xyz
GHI-xys
Run Code Online (Sandbox Code Playgroud)

对此:

ABC-Xyz
DEF-Xyz
GHI-Xys
Run Code Online (Sandbox Code Playgroud)

您会注意到 X 已转换为大写。

任何想法我如何在 Bash 中做到这一点?

script bash shell-script

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

如何使用grep自己搜索正则表达式,而不解析它们

grep . filename.txt 
Run Code Online (Sandbox Code Playgroud)

这只会返回 filename.txt 中的所有内容,因为 . 是代表任何字符的正则表达式。如何使用 grep 搜索句点或其他正则表达式,例如 *?

linux bash grep command-line

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

在没有提示选项的情况下从 Mutt 发送带有 zip 附件的邮件?

当我尝试使用 Mutt 发送电子邮件时,我被卡住了,但是每次我运行脚本时,它都会提示一个带有验证的菜单。有什么方法可以绕过该验证或从脚本中输入选项而无需问什么?

#! /bin/bash

zip -r files.zip /home/user/folder/*.*
mutt -s "files[CONFIDENTIAL]" -a files.zip -- mail@mail.com
rm files.zip**strong text**
Run Code Online (Sandbox Code Playgroud)

linux bash mutt

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

使用 Mac OS X 终端将选择的文件夹复制到新位置,并具有合并行为

我有一个文件夹“foo”,其中包含很多子文件夹,例如

foo
 |---20101
 |---20102
 |---20103
 |---20111
 |---20112
 |---20113
Run Code Online (Sandbox Code Playgroud)

还有更多的方式,但希望它能解释这个场景。我现在想将此文件夹中以“2011”开头的所有文件夹复制到名为“bar”的“foo”的同级中。但是,'bar' 已经包含一些同名的文件夹

bar
 |---20111
 |---20113
 |---20114
Run Code Online (Sandbox Code Playgroud)

源文件夹和目标文件夹的内容应该合并。请注意,该脚本还需要创建一个 bar/20112 文件夹,因为该文件夹不存在。

我是 Mac 终端脚本的新手,并已成功地 grep 正确的文件夹

foo>ls | grep ^2011 
Run Code Online (Sandbox Code Playgroud)

其中列出了正确的文件夹,但我不知道如何将其传递给适当的复制操作。

bash grep terminal.app macos

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

如何使用 Bash 在所有子目录中执行命令

我有一个由以下组成的目录结构:

iTunes/Music/${author}/${album}/${song.mp3}
Run Code Online (Sandbox Code Playgroud)

我实现了一个脚本,使用 lame 将我的 mp3 比特率剥离到 128 kbps(它同时适用于单个文件)。

我的“normalize_mp3.sh”如下所示:

#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for f in *.mp3
do
  lame --cbr $f __out.mp3
  mv __out.mp3 $f
done
IFS=$SAVEIFS
Run Code Online (Sandbox Code Playgroud)

如果我一个文件夹一个文件夹并执行这个命令,这很好用,但我想要一个“全局”命令,比如在 4DOS 中,所以我可以运行:

$ cd iTunes/Music
$ global normalize_mp3.sh
Run Code Online (Sandbox Code Playgroud)

并且该global命令将遍历所有子目录并执行normalize_mp3.sh删除所有子文件夹中的所有 mp3。

有谁知道是否有与 4DOSglobal命令等效的 Unix ?我试着玩,find -exec但我只是头疼。

unix bash command-line macos

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

我使用 mv ./*/* 来展平 ntfs 文件系统上的目录,而没有 add 。到命令结束,现在我所有的文件都不见了

如何恢复这些文件?

我用过:mv ./*/*当它应该是mv ./*/* .现在我所有的文件都不见了。

mount ntfs bash mv

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

在 GNU/Linux 或 Cygwin 环境中,如何将包含空格的文件或文件夹作为参数传递给命令行程序?

有时您正在处理包含空格的文件和文件夹。问题是任何时候您尝试将包含空格的文件/文件夹通过管道传输到另一个命令行程序时,包含空格的文件/文件夹都会被解释为单独的参数而不是单个参数。例如,考虑以下目录树:

Folder With Spaces
Folder With Spaces/FolderWithoutSpaces
Folder With Spaces/FolderWithoutSpaces/file with spaces.txt
FolderWithoutSpaces
FolderWithoutSpaces/fileWithoutSpaces.txt
Run Code Online (Sandbox Code Playgroud)

如果您尝试运行诸如“grep 'some text' $(find . -type f)”之类的 shell 命令,您将获得以下输出:

grep: ./Folder: No such file or directory
grep: With: No such file or directory
grep: Spaces/FolderWithoutSpaces/file: No such file or directory
grep: with: No such file or directory
grep: spaces.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)

最大的问题是,您如何将包含空格的文件/文件夹作为命令行程序的参数进行管道传输?

linux cygwin bash shell command-line

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

什么是真正的空字符串?

我相信我们大多数人都知道,当我们希望某些正则表达式与行首的字符串匹配时,我们必须使用“^”...

但是,我试图理解“行首为空字符串”的真正含义

我知道 echo "Hello World" | grep ^H 它匹配

所以请看一下这些命令的输出:

[sergio@localhost ~]$ dd if=/dev/zero of=/tmp/texto  count=1 bs=1 2>/dev/null
[sergio@localhost ~]$ od -ta /tmp/texto          
0000000 nul
0000001
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都如预期,所以:

[sergio@localhost ~]$ echo  "Hello" >> /tmp/texto
[sergio@localhost ~]$ grep -a "^Hello" /tmp/texto 
Run Code Online (Sandbox Code Playgroud)

好吧,我必须承认的第一件事没有预料到,在 Hello 之前有一个空字符,为什么它不匹配?

好的,让我们以 perl 风格使用 grep:

[sergio@localhost ~]$ grep -a -P "\x00Hello" /tmp/texto 
Hello
Run Code Online (Sandbox Code Playgroud)

好的,它匹配

但是我不明白(也许我有一些误解)为什么 grep -a "^Hello" 不匹配......

你可以帮帮我吗?

提前致谢!

linux bash grep regex command-line

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

`test` 是内置程序还是程序

测试是内置的 shell 还是实际的程序?

bruce@Bruce:~$ type -a test
test is a shell builtin
test is /usr/bin/test
bruce@Bruce:~$

bruce@Bruce:~$ file /usr/bin/test
/usr/bin/test: ELF 64-bit LSB executable
bruce@Bruce:~$ 
Run Code Online (Sandbox Code Playgroud)

我的系统运行的是 Ubuntu 13.04 和 BASH 4.2.45(1)-release。

bash

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

标签 统计

bash ×10

command-line ×4

linux ×4

grep ×3

macos ×2

cygwin ×1

mount ×1

mutt ×1

mv ×1

ntfs ×1

regex ×1

script ×1

shell ×1

shell-script ×1

terminal.app ×1

unix ×1