标签: bash

在“Windows 上的 Ubuntu 上的 Bash”中挂载(或链接到)NTFS SD 卡

我喜欢使用自周年更新以来已添加到 Windows 10 的 Ubuntu Bash。它通常工作正常,并允许我在 Linux 工作站和 Windows 笔记本电脑之间切换时继续工作。我通常通过 Dropbox 共享/同步我的文件,它(在我的笔记本电脑上)我可以通过/mnt/c/Users/Me/Dropbox.

但是,我希望能够从我的平板电脑/上网本混合设备(Windows 10)中执行相同的操作。在这里,原始磁盘空间有限,所以我添加了一张 NTFS 格式的 128GB SD 卡(作为驱动器“D:”),并将 Windows 中的 Dropbox 文件夹设置为在那里同步。这在 Windows 上不被 Bash 识别(我只在 中看到驱动器“c” /mnt),即使我读到这应该是可能的,只要卡是 NTFS 格式的。

我还尝试在 Windows 中创建从 SD 卡到 C: 的软链接(连接)(因为我读到这些现在 Windows 上的 Bash 也支持),但是在/mnt/c从 Bash 搜索它们时它们没有显示出来。

这可以在不将 Dropbox 文件夹重新定位到 C: 的情况下解决吗?

ntfs bash dropbox filesystems windows-10

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

在使用 SSH 生成的远程 Bash Shell 中设置环境变量

我经常执行这样的命令:

ssh username@hostname 'bash -s' < bashScriptToExecuteRemotely
Run Code Online (Sandbox Code Playgroud)

我现在有一个案例,bashScriptToExecuteRemotely期望设置某些环境变量。就我而言,假设它们是 FOO=14 和 BAR=giraffe。

我怎样才能让在远程主机上启动的 bash shell 在执行之前设置这些环境变量bashScriptToExecuteRemotely

linux ssh bash openssh

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

cp -R foo/ 和 cp -R foo/* 有什么区别

我注意到,每当我使用命令时,cp -R foo/*我都会复制除文件之外的所有内容,例如.env或可能.gitignore

解决方案是使用cp -R foo/它处理整个目录,但这并没有改变我仍然不理解使用*字符的行为的事实。

为什么一个*角色不会捕获像.env?

操作系统是 Debian

linux unix bash command-line asterisk

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

需要递归查找包含冒号的所有文件名并用破折号替换冒号?

我有一个包含许多子目录的目录“main”,在其中一些子目录中,我的文件名包含冒号。我从 Linux 将“主”目录上传到了 GitHub 存储库,但是当我尝试从 Windows 机器上的这个存储库中提取时遇到了问题,因为 Windows 不允许文件名中有冒号。

如何使用 Linux 终端在“主”目录中递归查找所有带冒号的文件名,然后用一个破折号 (-) 字符替换冒号?

linux terminal bash command-line

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

UNIX `basename` 命令的奇怪行为

我想用来basename获取以换行符分隔的文件路径列表的基本名称。当 n > 2 时它似乎有效:

$ basename `echo -e '/foo/bar \n /food/baz \n /oof/rab'`
bar
baz
rab
Run Code Online (Sandbox Code Playgroud)

但是,当 n = 2 时,它只输出第一行。

$ basename `echo -e '/foo/bar \n /food/baz'`
bar
Run Code Online (Sandbox Code Playgroud)

为什么不打印baz?这是一个错误basename吗?这是我的平台信息:

$ uname -a
Darwin MacBook-Pro-4.local 15.6.0 Darwin Kernel Version 15.6.0: Sun Jun  4 21:43:07 PDT 2017; root:xnu-3248.70.3~1/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)

unix bash shell macos

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

在脚本中运行多个 rsync 执行

我正在尝试从 bash 脚本运行多个 rsync 命令,但只有第一个触发。我试过将命令与&&和链接,;但都不起作用。

#! /bin/bash
rsync -ahPr --delete-excluded --exclude='.DS_Store' --exclude=Caches/ --ignore-errors --stats --log-file=$LOGFILE --files-from=$FILESFROM ~/$SOURCE /Volumes/$DEST &&
rsync -avh --progress ~/.profile /Volumes/$DEST/_profile/profile &&
rsync -avh --progress ~/.gitconfig /Volumes/$DEST/_profile/gitconfig &&
rsync -avh --progress ~/.ssh/ /Volumes/$DEST/_profile/ssh/ &&
rsync -avh --progress ~/.vim/ /Volumes/$DEST/_profile/vim/
Run Code Online (Sandbox Code Playgroud)

我将最后 4 个命令作为单独的命令执行,因为我正在动态重命名文件/目录 - 不确定是否有更好的方法来做到这一点?

我正在执行脚本bash -x myscript.sh以查看它是否出现任何错误,但没有。

bash rsync

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

如何读取每个文件并在读取之前打印出文件名?

我试过

$ find Music -exec cp -v {} \>/dev/null \;
Run Code Online (Sandbox Code Playgroud)

有错误

'Music/AlbumArtSmall.jpg' -> '>/dev/null'
cp: cannot create regular file '>/dev/null': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我试过

$ find Music -exec echo {} && echo cp {} \>/dev/null \;
find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)

$ find Music -exec echo {} \\; echo cp {} \>/dev/null \;
find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)

$ find Music -exec echo {} \&\& cp {} \>/dev/null \;
Music && cp Music >/dev/null
...
Run Code Online (Sandbox Code Playgroud)

我试过 …

linux bash shell

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

如何在没有 shell 历史记录的情况下在 linux 上运行加密命令

我想在不将 shell 命令的任何部分记录到 bash 历史记录的情况下加密某些内容。我不希望密码或任何文件名或命令出现在 shell 历史记录中。如何使用 AES 256 和 SHA2 来做到这一点?(我相信这是今天最秘密的配置吧?)

linux encryption bash shell command-history

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

如何查看git log自动刷新

我正在尝试创建一个脚本,该脚本应该git log每 1 秒刷新一次。这就是我所拥有的:

while :
do
clear
git log --all --decorate --oneline --graph
sleep 1
done
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为git log等待用户点击q退出 - 因此循环被卡住了。我怎样才能解决这个问题?

bash git bash-scripting

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

通过 ssh 执行脚本,而不是真正的输出

我以这种方式通过 ssh 执行脚本:

 ssh user@host 'bash -s' < ./script.sh
Run Code Online (Sandbox Code Playgroud)

问题是,有时,我得到的输出不正确,行是混合的。

在我的情况下,脚本执行不是很新,正常输出是这样的:

...
Note: Ignoring non-mail file: foobar
Note: Ignoring non-mail file: foobar
Note: Ignoring non-mail file: foobar
Processed 93 total files in almost no time.
No new mail.
Run Code Online (Sandbox Code Playgroud)

但有时输出是这样的:

...
Note: Ignoring non-mail file: foobar
Note: Ignoring non-mail file: foobar
Processed 93 total files in almost no time.
No new mail.
Note: Ignoring non-mail file: foobar
Note: Ignoring non-mail file: foobar
Run Code Online (Sandbox Code Playgroud)

并且可以肯定这不是来自 的真正输出notmuch new,该命令以 结尾,No new mail …

linux ssh bash shell-script

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