标签: bash

使用 sudo 时找不到命令

网站上有一些问题似乎与我的问题有关,但我无法在其中任何一个问题中找到解决方案。

我的操作系统是 Ubuntu 12.04。我已经mvn安装/tools/noarch/apache-maven-3.1.1并在我的末尾添加了以下几行/etc/profile

export M2_HOME=/tools/noarch/apache-maven-3.1.1
export PATH=$M2_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

之后我执行source /etc/profile.

现在我的问题是:当我运行mvn --version命令成功并mvn找到可执行文件时,如果我执行:sudo mvn --version我得到输出:sudo: mvn: command not found。我知道PATH当我执行命令时可能会有所不同sudo,这就是我尝试这样做的原因:

$>sudo echo $PATH
/tools/noarch/apache-maven-3.1.1/bin:... some other stuff ...
Run Code Online (Sandbox Code Playgroud)

我尝试的另一件事是执行sudo su -然后键入mvn --version. 在这种情况下mvn成功找到并且命令成功。这里发生了什么?

linux sudo bash ubuntu

59
推荐指数
3
解决办法
11万
查看次数

循环遍历子目录并在每个子目录中运行命令

我有一组存储库根据它们的 VCS(Git、Mercurial、SVN)分类到目录中。使用 Subversion 我能够svn update *在父目录中运行,它会遍历每个目录并按预期更新每个存储库。对于 Git 或 Mercurial 而言,情况并非如此。

我想拿出一个bash脚本,我可以运行通过目录和要么做到这些,循环git pullhg pull在每个。我只是没有太多的 bash 脚本经验。

linux script bash shell

58
推荐指数
3
解决办法
5万
查看次数

避免 Zip 文件中不需要的路径

我正在制作一个shell脚本来打包一些文件。我正在压缩这样的目录:

zip -r /Users/me/development/something/out.zip /Users/me/development/something/folder/
Run Code Online (Sandbox Code Playgroud)

问题是生成的 out.zip 存档中包含整个文件路径。也就是说,解压缩后,它将包含整个“/Users/me/development/anotherthing/”路径。将目录放入存档时是否可以避免这些深层路径?

当我从目标目录中运行 zip 时,我没有这个问题。

zip -r out.zip ./folder/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我没有得到所有的垃圾。但是,有问题的脚本将从任何地方调用。

FWIW,我在 Mac OS X 10.6 上使用 bash。

zip bash path shell-script macos

58
推荐指数
3
解决办法
6万
查看次数

查找按多个扩展名过滤的文件

什么是正确的语法:

find . -type f -name \*.\(shtml\|css\)
Run Code Online (Sandbox Code Playgroud)

这有效,但不优雅:

find . -type f -name \*.shtml > f.txt && find . -type f -name \*.css >> f.txt
Run Code Online (Sandbox Code Playgroud)

如何做同样的事情,但击键次数更少?

bash find file-extension filenames

58
推荐指数
3
解决办法
5万
查看次数

如何在命令中使用包含引号的 Bash 变量(字符串)?

失败的简化示例:

FLAGS='--archive --exclude="foo bar.txt"'
rsync $FLAGS dir1 dir2
Run Code Online (Sandbox Code Playgroud)

我需要包含引号,就像命令是这样的:

rsync --archive --exclude="foo bar.txt" dir1 dir2
Run Code Online (Sandbox Code Playgroud)

bash

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

如何从终端 (Mac OSX) cd 到拇指驱动器

我如何切换到我的拇指驱动器的目录?我一直在四处寻找,看到这个命令“diskutil list”列出了我所有的本地磁盘。产生这个..

David-Adamss-MacBook-Pro:~ davidadams$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            249.7 GB   disk0s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *4.0 GB     disk3
   1:                 DOS_FAT_32 THUMBDRIVE              4.0 GB     disk3s1
Run Code Online (Sandbox Code Playgroud)

现在我看到我的拇指驱动器显示在 /dev/disk3 中,但我无法访问它。我可以 cd 到 /dev ,但这是我能得到的。

“cd /dev/disk3/THUMBDRIVE”告诉我“-bash:cd:/dev/disk3/THUMBDRIVE:不是目录”

任何帮助都会很棒。

mac terminal bash macos

57
推荐指数
3
解决办法
13万
查看次数

如何使用SSH远程写入文件

我可以将文件复制到远程 Linux 机器上,没有问题

scp file user@host: /pathtowrite_file
Run Code Online (Sandbox Code Playgroud)

但是,我很难将文件从一台 linux 机器写入到另一台机器。这是我的尝试:

echo 'Some Text' > /remotefile.txt | ssh user@remotehost
Run Code Online (Sandbox Code Playgroud)

我得到的通知是

标准输入:不是 tty

无论如何,远程机器上的文件没有反映发送的“Some Text”的文本。

ssh bash

57
推荐指数
3
解决办法
12万
查看次数

在 Windows 上的 Bash 中访问可移动媒体

有没有办法从 Windows 上的 Bash 访问可移动媒体(例如拇指驱动器或 SD 卡)?

Windows 上的 Bash使用 DriveFs/mnt文件夹中安装固定驱动器,但它不会自动安装可移动媒体。它看起来也不像是将它们放入/dev其中:

Aaron@MYPC:/$ ls /dev
block  fd  kmsg  lxss  null  ptmx  pts  random  shm  stderr  stdin  stdout  tty  tty0  tty1  urandom  zero
Run Code Online (Sandbox Code Playgroud)

有没有办法挂载可移动驱动器?有没有办法访问底层块设备?

bash windows-10 windows-subsystem-for-linux windows-10-v1607

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

如何在bash中获得无限的命令历史?

我设置了,export HISTSIZE=99999999999999但这是最好的方法吗?我不知道是否会发生溢出。我正在寻找一种经过测试的可靠方法来删除命令历史记录限制。

bash history

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

cd `(反引号)的目的是什么?

以下在 Fedora 和 CentOS 中的行为相同。

cd mydirectory
Run Code Online (Sandbox Code Playgroud)

作品。

cd notadirectory
Run Code Online (Sandbox Code Playgroud)

有效(从 Bash 获取错误)。

然而,

cd `
Run Code Online (Sandbox Code Playgroud)

给了我某种提示:

>
Run Code Online (Sandbox Code Playgroud)

我想输入的任何内容都没有给出任何响应,它只是转到下一行再次提示。我只是使用CTRL+C退出回到我的root@localhost.

这样做的目的是什么,人们可以用它做什么?

谢谢!

linux bash

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