使用像 bash 或 zshell 这样的 shell,如何进行递归的“查找和替换”?换句话说,我想在这个目录及其子目录中的所有文件中用 'bar' 替换每次出现的 'foo'。
我想在终端中播放音乐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?
我Windows Subsystem for Linux在 Windows 10 Insider Preview build 14316 上安装了它。现在我想删除它,或者更好的是恢复到它的出厂默认设置,即刚安装时的样子。
我尝试将其从“打开或关闭 Windows 功能”窗口中删除,但没有成功。我尝试在上面的窗口中将其标记为“关闭”并手动删除位于 中的文件%USERPROFILE%/AppData/Local/lxss,但没有成功。
有没有人成功删除/重置 Ubuntu 用户模式环境?
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)。
此外,一旦设置.. 我将如何取消设置?
我的 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) 我使用的是 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。有任何想法吗?最大限度
我想通过 echo 获取任何用户的主目录
echo ~puchuu
>> /home/puchuu
Run Code Online (Sandbox Code Playgroud)
但我不能使用变量
echo ~$USER
>> ~puchuu
echo `echo ~$USER`
>> ~puchuu
Run Code Online (Sandbox Code Playgroud) 如果我已将命令的结果通过管道传送到less,然后决定将内容保存到文件中,这可能吗?
我试过a在缓冲区的末尾设置一个标记,然后返回到顶部并使用|avi将整个内容发送到vi,但这不起作用。
我正在使用 Windows 10 的 Ubuntu Bash shell。它将 C 驱动器映射为 /mnt/c。
我有其他本地物理硬盘驱动器,安装在 Windows 中作为 E: 和 F:
我如何告诉 Bash 也安装这些驱动器(理想情况下在 /mnt/e 和 /mnt/f 自动安装,但手动安装很好)?“sudo fdisk -l”似乎不起作用(无法打开/proc/partitions),所以我不确定如何找到它们的名称,否则我只会使用常规的挂载命令。
例子:
ls | echo不打印任何内容(实际上是一个空行)。我希望它打印文件列表。
ls | grep 'foo',另一方面,按预期工作(打印名称中带有 'foo' 的文件)。
我在这些情况下所做的类似于:
ls | while read OUT; do echo $OUT; done但这相当麻烦。
为什么管道对某些命令有效,而对其他命令无效?我怎样才能规避这个问题?
bash ×10
ubuntu ×3
command-line ×2
linux ×2
pipe ×2
bashrc ×1
git ×1
less ×1
mount ×1
mp3 ×1
shell ×1
sox ×1
ssh ×1
text-editors ×1
tunnel ×1
windows-10 ×1
windows-subsystem-for-linux ×1
zsh ×1