我正在寻找创建一个 bash 函数来过滤选定目录中的所有点文件(无目录)。我只需要文件名,而不是完整路径。
目前,我只有这个命令:
find . -maxdepth 1 -type f -print0
Run Code Online (Sandbox Code Playgroud)
打印除目录之外的所有文件。现在我仍然必须排除非点文件。所以我尝试将输出通过管道传递给 grep,如下所示:
find . -maxdepth 1 -type f -print0 | grep "^\."
Run Code Online (Sandbox Code Playgroud)
它似乎没有用。->
Binary file (standard input) matches
Run Code Online (Sandbox Code Playgroud)
你们有一个优雅的解决方案吗?
谢谢!
我正在编写一个Bash函数来启动需要从某个文件夹启动的服务器,但我不想启动此服务器来影响我当前的工作.我写了以下内容:
function startsrv {
pushd .
cd ${TRUNK}
${SERVERCOMMAND} &
popd
}
Run Code Online (Sandbox Code Playgroud)
我的变量都已设置,但是当执行时,我得到一个关于输出中意外分号的错误,看来Bash在后面开始的&符号后插入分号${SERVERCOMMAND}.
有什么我可以做的事情${SERVERCOMMAND}在后台启动,同时仍然使用pushd和popd以确保我最终回到我当前的目录中?
编辑:输出echo ${SERVERCOMMAND},因为它被请求:
yeti --server --port 8727
Run Code Online (Sandbox Code Playgroud)
错误信息:
-bash: syntax error near unexpected token `;'
Run Code Online (Sandbox Code Playgroud) 我在Bash脚本中有这个功能:
comp() {
rsync -v --archive $1/ $TMP/$2 $3 $4 $5 $6 $7 $8 $9
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我正在做一些特殊的论点$1和$2.然后我匆匆将其余的所有其余部分追加到命令的末尾.他们去了$9,但事实上所有都应该附加.
必须有一个更简单的方法吗?
大家好我正在学习如何在linux中使用.bashrc文件,因为我的标题声明我想知道如何使函数将参数识别为别名
我有一个名为home的别名定义为: alias home=$HOME
并且函数定义为
function go(){
cd $1
ls $1
}
Run Code Online (Sandbox Code Playgroud)
但是当我go home
得到的时候
bash: cd: home: No such file or directory
ls: cannot access home: No such file or directory
当我想要它去做$ HOME
我将如何实现这一目标?
你好 Bash 超级英雄,
我正在尝试创建一个简单的 bash 函数,该函数将输出从find传送到 aa pdf 查看器,类似于但仅限于evince。
function findpapers {
find ~/papers/ -name *$1* | evince
}
Run Code Online (Sandbox Code Playgroud)
上述功能打开查看器但不显示任何所需的文件/路径。最终,我想显示从find输出的所有pdf 。一个简单的查找命令,例如:
$ find /home/alex/papers/ -name *erebus*
Run Code Online (Sandbox Code Playgroud)
创建一个输出,如:
/home/alex/papers/2000/rowe/seismic_and_acoustic_observations_at_mount_erebus_volcano_ross_island_antarctica.pdf
/home/alex/papers/2008/Jones/infrasonic_tracking_of_large_bubble_bursts_and_ash_venting_at_erebus_volcano_antarctica.pdf
Run Code Online (Sandbox Code Playgroud)
然后的想法是在查看器中显示这两个 pdf 文件。
有什么想法或建议吗?如果有帮助,我正在使用 Linux Mint。提前致谢!
我坚持使用 bash scipt,它应该同时写入标准输出和文件。我正在使用函数和其中的一些变量。每当我尝试将函数重定向到文件并使用 tee 在屏幕上打印时,我都无法使用我在函数中使用的变量,因此它们以某种方式成为本地变量。这是一个简单的例子:
#!/bin/bash
LOGV=/root/log
function var()
{
echo -e "Please, insert VAR value:\n"
read -re VAR
}
var 2>&1 | tee $LOGV
echo "This is VAR:$VAR"
Run Code Online (Sandbox Code Playgroud)
输出:
[root@testbox ~]# ./var.sh
Please, insert VAR value:
foo
This is VAR:
[root@testbox ~]#
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:
回应@Etan Reisner 建议使用
var 2>&1 > >(tee $LOGV)
这种结构的唯一问题是日志文件不会收到所有内容......
[root@testbox~]# ./var.sh
Please, insert VAR value:
foo
This is VAR:foo
[root@testbox ~]# cat log
Please, insert VAR value:
Run Code Online (Sandbox Code Playgroud) 我是unix shell脚本的新手.我试图用参数执行示例函数,但shell不会将第一个参数识别为第一个参数而是识别为第二个参数.
#!/bin/bash
func(){
echo "func"
if [ -z $1 ]
then echo "$1 received"
else echo "not received"
fi
}
func "hello"
Run Code Online (Sandbox Code Playgroud)
没有收到输出功能
应该给予的地方
func
hello received
Run Code Online (Sandbox Code Playgroud)