标签: bash

“源”有什么作用?

$ whatis source
source: nothing appropriate.
$ man source
No manual entry for source
$ source
bash: source: filename argument required
source: usage: source filename [arguments]
Run Code Online (Sandbox Code Playgroud)

它存在,并且可以运行。为什么 Ubuntu 中没有关于它的任何文档?它有什么作用?如何安装有关它的文档?

bash shell documentation

688
推荐指数
10
解决办法
68万
查看次数

.bashrc 和 .bash_profile 的区别

什么之间的区别.bashrc.bash_profile我应该使用哪一个?

bash bashrc .bash-profile

512
推荐指数
6
解决办法
18万
查看次数

执行 Bash 脚本与采购它有什么区别?

执行像 A 这样的 Bash 脚本和采购像 B 这样的 Bash 脚本有什么区别?

A
> ./myscript

B
> source myscript
Run Code Online (Sandbox Code Playgroud)

linux script bash

385
推荐指数
5
解决办法
18万
查看次数

如何在 Bash 中将文本添加到文件的开头?

嗨,我想在文件中添加文本。例如,我想将任务添加到 todo.txt 文件的开头。我知道,echo 'task goes here' >> todo.txt但这将行添加到文件的末尾(不是我想要的)。

bash

372
推荐指数
6
解决办法
43万
查看次数

如何完全从终端分离进程?

我在 Ubuntu 上使用 Tilda(下拉式终端)作为我的“命令中心”——几乎就像其他人使用 GNOME Do、Quicksilver 或 Launchy 的方式一样。

但是,我正在努力解决如何将进程(例如 Firefox)与启动它的终端完全分离 - 即防止这样的(非)子进程

  • 关闭始发终端时终止
  • 通过 STDOUT/STDERR“污染”始发终端

例如,为了在“正确的”终端窗口中启动 Vim,我尝试了一个简单的脚本,如下所示:

exec gnome-terminal -e "vim $@" &> /dev/null &
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会导致污染(而且,传递文件名似乎不起作用)。

linux terminal bash shell ubuntu

350
推荐指数
11
解决办法
43万
查看次数

chown 没有改变符号链接

我正在尝试使用以下命令更改符号链接的用户/组:

$ chown -h myuser:mygroup mysymbolic/ 
Run Code Online (Sandbox Code Playgroud)

但它并没有改变。我以 root 身份登录。当前用户/组设置为 root:root。什么地方出了错?

linux root bash shell symbolic-link

349
推荐指数
4
解决办法
34万
查看次数

如何搜索 bash 历史记录并重新运行命令?

我可以在 bash 中搜索历史记录并运行结果吗?

unix bash

347
推荐指数
7
解决办法
22万
查看次数

返回到 shell 中的上一个目录

有没有办法在不使用 pushd/popd 的情况下返回我们使用 bash,tcsh 时使用的上一个目录?我想输入类似“back”的内容,然后返回到我所在的上一个目录。

编辑:

“cd -” 有效,但仅适用于当前和以前的目录。无论如何我可以回到上一个上一个目录,就像你可以在网络浏览器中返回一样吗?

问候

linux bash command-line

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

Bash:迭代变量中的行

如何在 bash 中的变量或命令输出中正确迭代行?简单地将 IFS 变量设置为新行适用于命令的输出,但不适用于处理包含新行的变量。

例如

#!/bin/bash

list="One\ntwo\nthree\nfour"

#Print the list with echo
echo -e "echo: \n$list"

#Set the field separator to new line
IFS=$'\n'

#Try to iterate over each line
echo "For loop:"
for item in $list
do
        echo "Item: $item"
done

#Output the variable to a file
echo -e $list > list.txt

#Try to iterate over each line from the cat command
echo "For loop over command output:"
for item in `cat list.txt`
do
        echo "Item: $item"
done …
Run Code Online (Sandbox Code Playgroud)

bash

304
推荐指数
5
解决办法
37万
查看次数

适用于 Linux 的 Windows 子系统上的主目录是什么?

当我bash在 Linux 的 Windows 子系统上启动时,它会将我放到目录中

/mnt/c/Users/<username>
Run Code Online (Sandbox Code Playgroud)

当我ls看到这个目录时,我看到了使用 Windows 文件资源管理器时可以看到的目录DesktopDocumentsC:\Users\<username>。由于这是bash程序开始的地方,我希望这是我的主目录,但是当我输入cdcd ~我被带到

/home/<username>
Run Code Online (Sandbox Code Playgroud)

其中包含我希望在 Linux 机器的主目录中找到的我的.bashrc, .profileetc. 文件。此外,cd ../..从这里进入我可以看到目录binetc等等,这在 Linux 机器上再次如预期。

关于这一切,我有两个问题:

  1. 究竟/mnt/c/Users/<username>与什么相比C:\Users\<username>?似乎它们是同一个——那是/mnt/c/什么?
  2. 如何/home/<username>使用 Windows 文件资源管理器查看文件?并不是说我真的想要——我只是想了解一下 Windows 如何组织 Linux 子系统。

bash windows-10 windows-subsystem-for-linux

293
推荐指数
7
解决办法
57万
查看次数