在 bash 脚本中,我想执行以下操作:
script.sh < some_file
Run Code Online (Sandbox Code Playgroud)
这some_file是一个有 1 行的文件,我想将它作为参数传递给我的 bash script.sh。我怎样才能做到这一点?
对于我刚刚source .profile从其他用户那里完成的工作,但它改变了我的 bash 提示。
它曾经是
[leche@xxx home]$
[leche@xxx home]$
Run Code Online (Sandbox Code Playgroud)
现在它看起来像:
[leche@xxx] [10:18 AM$] /home $
$
[leche@xxx] [10:18 AM$] /home $
$
Run Code Online (Sandbox Code Playgroud)
我怎样才能把它改回来?
我正在 Ubuntu 中尝试命名管道,并且之前没有使用它们的经验。我做了以下事情:
mkfifo pipe
ls>pipe&
cat pipe
Run Code Online (Sandbox Code Playgroud)
这将输入我的文件夹中所有文件的列表pipe并显示它们。我正在尝试一次读取管道 2 行。因此,我想要一个命令在执行一次时给出文件夹中第一个和第二个文件的名称。如果再次执行该命令,我需要第三个和第四个文件名。有什么办法可以做到吗?
我试过head -2 pipe。它显示前两个文件名。但再次执行时,却挂了。正确的前进方向是什么?
我正在使用 Ubuntu 14.04。我想弄清楚哪些目录占用了最多的空间,所以我正在运行这个命令
sudo du -a / | sort -n -r | head -n 100
Run Code Online (Sandbox Code Playgroud)
问题是,大多数返回的目录属于一个单独的分区,
1048580 /mnt/volume-nyc1-01/postgresql/9.5/main/base/16419/57411.6
Run Code Online (Sandbox Code Playgroud)
如何/mnt/volume-nyc1-01/从我的列表中排除分区?
我有一个从其中一个网站获得的脚本。当我运行它时,它给出了“Hello”作为输出,但我无法理解脚本的工作原理。
谁能解释一下脚本实际上在做什么?
#!/bin/bash
echo hello
if test -t 1; then
# Stdout is a terminal.
exec >log
else
# Stdout is not a terminal.
npipe=/tmp/$$.tmp
trap "rm -f $npipe" EXIT
mknod $npipe p
tee <$npipe log &
exec 1>&-
exec 1>$npipe
fi
echo goodbye
Run Code Online (Sandbox Code Playgroud)