标签: bash

如何从命令行进行递归查找和替换?

使用像 bash 或 zshell 这样的 shell,如何进行递归的“查找和替换”?换句话说,我想在这个目录及其子目录中的所有文件中用 'bar' 替换每次出现的 'foo'。

bash zsh shell find-and-replace

120
推荐指数
4
解决办法
16万
查看次数

如何向 sox 添加 mp3 处理程序?

我想在终端中播放音乐sox

# install sox/lame
sudo apt-get install sox
sudo apt-get install lame

# play music
play music.mp3
# play FAIL formats: no handler for file extension `mp3'

# mp3 -> wav
lame --decode music.mp3 music.wav

# play music
play music.wav
Run Code Online (Sandbox Code Playgroud)
~ $ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"

~ $ sox --version
sox: SoX v14.3.2
Run Code Online (Sandbox Code Playgroud)

的大小music.wav是 的+10 倍music.mp3
我不想全部转换*.mp3*.wav.
是否可以将 mp3-handler 添加到 sox?

mp3 bash sox ubuntu

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

如何在 Windows Insider Build 14316 上删除/重置适用于 Linux 的 Windows 子系统

Windows Subsystem for Linux在 Windows 10 Insider Preview build 14316 上安装了它。现在我想删除它,或者更好的是恢复到它的出厂默认设置,即刚安装时的样子。

我尝试将其从“打开或关闭 Windows 功能”窗口中删除,但没有成功。我尝试在上面的窗口中将其标记为“关闭”并手动删除位于 中的文件%USERPROFILE%/AppData/Local/lxss,但没有成功。

有没有人成功删除/重置 Ubuntu 用户模式环境?

bash ubuntu windows-10-preview windows-subsystem-for-linux

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

通过中间机器转发 SSH 流量

SSH 隧道让我很困惑。我想知道我是否可以在 Linux 中做到这一点。

我有3台机器..

A. My local machine at home.
B. Machine at work that I can SSH into (middle man).
C. My desktop at work that I can only SSH into from machine B.
Run Code Online (Sandbox Code Playgroud)

所以我可以从 A -> B 和 B -> C 进行 SSH,但不能从 A -> C 进行 SSH。

有没有办法设置从 A 到 B 的 SSH 隧道,所以当我运行其他 SSH 命令时,它们只能在我的本地机器 A 上工作?我基本上是在尝试将 git repo 从工作克隆到家(并且我无法在机器 B 上安装 git)。

此外,一旦设置.. 我将如何取消设置?

ssh bash git command-line tunnel

117
推荐指数
5
解决办法
6万
查看次数

在 bash 提示符下仅显示当前目录名称(不是完整路径)

我的 bash 提示符当前配置的方式,它显示了当前目录的整个路径。当我深入目录树时,这很烦人,因为提示变得很长,以至于每个命令都包含在下一行中。如何让它只显示路径的最后一部分?

这是我在我的.bashrc

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
    ;;
*)
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

linux bash command-line bashrc

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

将 crontab 的默认文本编辑器更改为 vim

我使用的是 ubuntu 9.10,默认的文本编辑器是 nano,我讨厌它。(不是所有人吗?)

通常这不是问题,因为我只是 vi 或 gedit 一切,但crontab -e正在用 nano 打开。我尝试使用sudo update-alternatives --config editor并选择选项 3(“/usr/bin/vim.basic”)将其更改为 vim 。这已经改变了 sudo 和非 sudo 的情况。但是crontab -e还是打开nano。有任何想法吗?最大限度

bash text-editors ubuntu

113
推荐指数
6
解决办法
12万
查看次数

通过用户名获取主目录

我想通过 echo 获取任何用户的主目录

echo ~puchuu
>> /home/puchuu
Run Code Online (Sandbox Code Playgroud)

但我不能使用变量

echo ~$USER
>> ~puchuu
echo `echo ~$USER`
>> ~puchuu
Run Code Online (Sandbox Code Playgroud)

linux bash

113
推荐指数
4
解决办法
21万
查看次数

如何将less的当前内容保存到文件中?

如果我已将命令的结果通过管道传送到less,然后决定将内容保存到文件中,这可能吗?

我试过a在缓冲区的末尾设置一个标记,然后返回到顶部并使用|avi将整个内容发送到vi,但这不起作用。

bash less pipe

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

Windows 10 Ubuntu Bash Shell:如何挂载其他 Windows 驱动器?

我正在使用 Windows 10 的 Ubuntu Bash shell。它将 C 驱动器映射为 /mnt/c。

我有其他本地物理硬盘驱动器,安装在 Windows 中作为 E: 和 F:

我如何告诉 Bash 也安装这些驱动器(理想情况下在 /mnt/e 和 /mnt/f 自动安装,但手动安装很好)?“sudo fdisk -l”似乎不起作用(无法打开/proc/partitions),所以我不确定如何找到它们的名称,否则我只会使用常规的挂载命令。

mount bash windows-10

109
推荐指数
3
解决办法
18万
查看次数

如何将命令输出通过管道传输到其他命令?

例子:

ls | echo不打印任何内容(实际上是一个空行)。我希望它打印文件列表。

ls | grep 'foo',另一方面,按预期工作(打印名称中带有 'foo' 的文件)。

我在这些情况下所做的类似于: ls | while read OUT; do echo $OUT; done但这相当麻烦。

为什么管道对某些命令有效,而对其他命令无效?我怎样才能规避这个问题?

bash pipe

107
推荐指数
3
解决办法
25万
查看次数