如何ls使用 linux列出(使用)所有非空文件(大小 > 0)?
对于 Bash/ZSH,我有~/.profile一些导出、别名和其他东西。
我不想为 Fish 的环境变量单独配置,我想重新使用我的~/.profile. 如何?
在常见问题解答中,据说我至少可以通过 导入它们/usr/local/share/fish/tools/import_bash_settings.py,但是我真的不喜欢为每个 Fish 实例运行它。
如果没有 vi、vim、joe、mcedit,有没有办法编辑文件?换句话说,有没有办法只使用 shell 命令来编辑文件?
我在 Linux shell 中怀念的一件事是Alt+Dot快捷方式。它的作用是插入上一个命令的最后一个参数。这看起来是一个微不足道的技术,但它真的很有用。
即如果你输入这个:
$ ls /Applications/MAMP/conf/apache/
Run Code Online (Sandbox Code Playgroud)
下次您只需键入命令 + 快捷方式,参数就会为您完成。
$ cd 'alt+dot'
Run Code Online (Sandbox Code Playgroud)
在 Mac 上,我知道 2 个选择;按Esc+Dot或键入!$ , !*和魔法空间设置。
然而,虽然这两种替代方法都插入了您使用的最后一个参数,但它们无法像重复键入Alt+Dot那样在命令历史记录中向后滚动。
我现在可以接受这个选项,但我很想知道是否有人知道更好的方法。
我有一些主要使用的 bash 脚本
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
但我经常遇到一些看起来像
#!/bin/bash -e
#!/bin/bash -x
#!/bin/bash -ex
Run Code Online (Sandbox Code Playgroud)
等等。
有人可以解释这些shebang选项的含义和好处以及它们是否适用于其他shebang吗?
我有很多名为“test”的目录,我想删除它们。
我知道如何找到它们并使用以下方法打印它们:
find . -name test -print
Run Code Online (Sandbox Code Playgroud)
现在,如何删除目录?
请注意,我在目录中也有文件,它们也必须被删除。
从这个commandlinefu 帖子:
$ diff <(wget -q -O - URL1) <(wget -q -O - URL2)
Run Code Online (Sandbox Code Playgroud)
看起来像多个标准输入但是——如果我没有记错我的 Linux Porgramming 课程——这不可能。我认为,根据定义,标准输入是一个流。
也许这与标准输入有关?谁可以给我解释一下这个; 也许提供指向文档的链接。
奖励:脚本将如何处理这些多个流?如果有人可以提供 Python 或 Perl 示例,那将非常有帮助。
我知道前者在后者之前加载,但是它们的目的和其他方面有什么区别?我应该在一个变量中设置一些变量而不是在另一个中设置一些变量,有什么好的理由吗?除了/etc/environment似乎存在为系统运行的所有进程设置环境的事实,而/etc/profile用于设置从登录外壳使用和传播的环境,对吗?
另外,顺便提一下,传统上哪个程序读取/etc/environment?它与POSIX有关,还是只是一个约定?
有时当我想切换到父目录时,我错误地键入cd ,,而不是cd ... 有没有办法让 bash 认为这些语句是相同的?我从不在我的命令中使用逗号。理想情况下,我想别名,,为... 当我尝试这个时,它不起作用。为什么这不起作用?我还能如何解决这个问题?
$ alias ,,=..
$ cd ,,
-bash: cd: ,,: No such file or directory
Run Code Online (Sandbox Code Playgroud) BASH 支持$PROMPT_COMMAND定义在任何第一级交互式提示之前要执行的命令的环境变量。我正在寻找等效的 ZSH。
文档说precmd我可以定义一个函数来实现它;但是,我不知道如何从环境变量中定义它。
我考虑过传递一个环境变量,让 ZSH 读取包含该函数定义的文件,但 ZSH似乎不支持这样的事情:它只读取全局文件,然后读取每个用户的文件。我可以替换它们,但我不能在不修改文件的情况下添加它们,这是我做不到的。
那么如何通过环境变量在 ZSH 中定义预提示钩子,就像我$PROMPT_COMMAND在 BASH 中所做的那样?