如何找到在那里定义了 bash 变量的文件?
假设echo命令显示
$ echo $DB_ROOT
/home/mahmood/db-4.0
Run Code Online (Sandbox Code Playgroud)
现在,我怎样才能找到在那里定义了这个变量的文件?我不得不说我没有在~/.bashrc.
我想列出 3 天前的文件。我在stackoverflow找到了这个:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012
Run Code Online (Sandbox Code Playgroud)
但我有点不明白整个命令是什么意思。我想知道是否有一些简短易懂的东西。
我有一个类似格式的文件...
16:28 asdfasdf
16:29 4398upte
16:30 34liuthr
16:31 34tertio
Run Code Online (Sandbox Code Playgroud)
如何使用 SED 打印出包括“16:30”行和之后的每一行?
结果会是...
16:30 34liuthr
16:31 34tertio
Run Code Online (Sandbox Code Playgroud)
现在,我使用 sed 如下,但我必须手动找到第一行的行号,例如“562697”:
sed -n '562697,$p'
Run Code Online (Sandbox Code Playgroud) 如何选择出现 4 次或更多的 ip,例如这里?
输入文件是
192.168.1.28
192.168.1.100
192.168.1.31
192.168.101.2
192.168.1.31
192.168.11.02
192.168.1.31
192.168.1.28
192.168.1.28
192.168.1.31
192.168.21.31
192.168.1.28
192.168.1.31
Run Code Online (Sandbox Code Playgroud)
然后我想得到这个输出:
192.168.1.28
192.168.1.31
Run Code Online (Sandbox Code Playgroud)
首选使用 AWK
谢谢你们!:)
我正在寻找的不是如何在 bash 中为另一个程序添加自动完成功能,而是一种将 bash 中发生的事情的结果转换为字符串的方法,基本上:
autocomplete "/etc/apa"
Run Code Online (Sandbox Code Playgroud)
会回来
/etc/apache2/
Run Code Online (Sandbox Code Playgroud)
所以我可以在我的脚本中使用它。
非常感谢任何帮助,因为我能找到的只是如何使用“完整”的 bash 函数,它做了一些不同的事情;)
干杯,拉斐尔
我需要制作一个 zip 文件,从包含 ~500k 文件的目录中归档 ~100k 文件。当我尝试明显的命令时,我收到“参数列表太长”错误:
zip archive.zip *pattern*.txt # fails
zip archive.zip `find . -name "*pattern*.txt"` # fails
Run Code Online (Sandbox Code Playgroud)
一种方法是使用-@选项通过标准输入提供文件列表:
find . -name "*pattern*.txt" | zip -@ archive.zip
Run Code Online (Sandbox Code Playgroud)
但是,zip手册页说:
如果文件列表指定为 -@ [Not on MacOS],则 zip 从标准输入而不是从命令行获取输入文件列表。
困扰我的是“不在 MacOS 上”。我继续尝试了这个-@选项,它似乎有效;但我对它是否真的在做正确的工作感到紧张(归档所有文件,完整无缺)。
以下是我的问题:
-@在 MacOS 上不行?-@什么?请注意,此处给出的解决方案zip: Argument list too long (80.000 files in total)将不起作用;我需要归档目录中的一些文件,而不是全部。
我正在运行 Mac OS 10.7.5。这是一些版本信息:
$ bash --version
GNU bash, version 3.2.48(1)-release …Run Code Online (Sandbox Code Playgroud) 我已将以下几行添加到 /etc/sudoers.d/my_sudoers
Defaults mail_always
Defaults mailto="email@domain.com"
Run Code Online (Sandbox Code Playgroud)
每次sudo运行时我都会收到一封电子邮件
我该如何修改它,以便我只在特定人员运行 sudo 时收到电子邮件(除 2 个用户外的所有人)
谢谢
假设您有一个带有某种终端命令的文件。每行如何执行?你能把 more 的输出传送到一个eval?
%> more ./foo.txt
Run Code Online (Sandbox Code Playgroud)
编辑:
在从评论中获得一些帮助/指导之后,我想我还应该注意,我已经有一段时间没有完成任何 shell 脚本了,所以虽然我说eval我可能是指echo或其他一些执行代码的方式。
如果 foo.txt 包含多行代码,但我想执行包含 的行echo 'bar bar',我正在寻找一种方法来做到这一点,假设一个grep. 逻辑上类似于:
grep echo foo.txt | xargs echo
Run Code Online (Sandbox Code Playgroud) 我的 $PATH 设置为很多目录,包括~/bin和~/target/bin
我想执行里面的 script.sh~/target/bin但我收到错误bash: ~/bin/script.sh: No such file or directory
这让我很困惑,因为which找到了正确的目录 ~/target/bin 并且 ~/target/bin/script.sh 执行得很好。
bash 中是否有任何特殊设置可能导致这种错误的路径处理?
我需要在系统启动后执行脚本。例如:
(sleep 5 && (sudo dhcpcd wlp4s0))
Run Code Online (Sandbox Code Playgroud)
我需要什么:执行脚本。我所拥有的:[sudo] eugene 的密码:我已经编辑了 /etc/sudoers,所以:
eugene ALL=NOPASSWD: /home/eugene/dhcpcdstart.sh
Run Code Online (Sandbox Code Playgroud)
但它是无效的。如何在没有密码的情况下执行当前脚本?Arch Linux 2013.05.01