小编Tyi*_*ilo的帖子

如何取消设置位置参数?

我该怎么做呢:

set foo bar baz
unset # Something else here
echo $# # Should ouput 0
Run Code Online (Sandbox Code Playgroud)

通过这样做set ""$#仍将是 1 而不是 0。

shell parameter

12
推荐指数
2
解决办法
4622
查看次数

判断文件夹/文件是否在 Mac OS X 中隐藏

我知道您可以通过执行chflags hidden foo.txt和来设置或取消设置文件夹/文件的隐藏标志chflags nohidden foo.txt

但是无论如何都可以告诉文件夹/文件当前是否隐藏?

我不想只是确定文件夹/文件是否以点开头。

osx ls files xattr

11
推荐指数
2
解决办法
6038
查看次数

如何让 ls 仅显示有关指定目录的信息,而不是有关其子文件或文件夹内容的信息?

假设我有文件夹“foo”,即主目录。我想获取它的一些信息,所有者,组,权限等...

然后我这样做是为了尝试获取信息:

cd ~
ls -l foo
Run Code Online (Sandbox Code Playgroud)

当然它现在列出了“foo”内容的信息

然后我可以做这样的事情

cd ~
dir=foo
ls -l $foo/.. | awk 'BEGIN { dir="'$foo'" } { if($9 == dir) { print $0 }  }'
Run Code Online (Sandbox Code Playgroud)

但是没有更简单的方法来做到这一点吗?

ls directory

11
推荐指数
1
解决办法
4万
查看次数

在查找中排除目录

如何找到匹配模式的每个文件和目录,不包括使用 的一个目录find

假设我有以下文件结构;

.
  foo-排除-我/
    foo.txt
  foo-exclude-me-not/
    foo.txt
  酒吧/
    foo.txt
    foob​​ar/
      栏.txt
      foofoo.txt

我将如何使用以下输出find

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt

我尝试使用以下两个命令:

找 。-name 'foo-exclude-me' -prune -o -name 'foo*'
找 。-name 'foo*' \! -path './foo-exclude-me/*'

但他们都返回这个:

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me # << this should be excluded
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt
Run Code Online (Sandbox Code Playgroud)

如何正确排除foo-exclude-me目录?

find

11
推荐指数
1
解决办法
2万
查看次数

判断当前用户是否对目录有写权限

我知道您可以通过执行以下操作来确定目录的所有者:

ls -ld ~/foo | awk '{ print $3 }'
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过执行以下操作将其与当前用户进行比较:

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi
Run Code Online (Sandbox Code Playgroud)

但是您可以在不是所有者的情况下拥有写入权限。你如何确定这一点?

shell permissions

9
推荐指数
1
解决办法
1万
查看次数

奇怪的控制行为

我可以cat通过做一个非常简单的文本编辑器来使用cat > foo.txt
如果我然后输入:

bar
baz
Run Code Online (Sandbox Code Playgroud)

然后按ctrl+ D,它现在看起来像这样:

$ cat > foo.txt
bar
baz^D
Run Code Online (Sandbox Code Playgroud)

光标在^. 如果我再按一次,文件将被保存。但是,如果我按任何东西(好吧也许不是任何东西,但主要是任何东西),我只是继续编辑文件。

这是正常行为吗?

bash keyboard-shortcuts cat

9
推荐指数
2
解决办法
551
查看次数

在另一个“屏幕”上显示输出并在完成后恢复正常

我想要与less vim nano等使用类似的行为。

这可以用 bash 实现吗?

bash terminal

9
推荐指数
2
解决办法
2585
查看次数

将文件添加到 zip 文件的深处

说我要添加的文件file.txtfoo.zip,我只是做zip -u foo.zip file.txt

但是在 zip 文件中已经存在一个带有路径的文件夹foo.zip/very/many/paths/(相对于 zip 文件)。

我将如何添加file.txt到 zip 文件中,以便它在 zip 文件中的位置是foo.zip/very/many/paths/file.txt

我可以先创建所需的目录结构,但没有更简单的方法吗?

我通常会这样做:

$ls
文件.txt
压缩包
$ mkdir 非常
$ mkdir 非常/很多
$ mkdir 非常/许多/路径
$ cp file.txt 非常/许多/路径
$ zip -u foo.zip very/many/paths/file.txt
$ rm -rf 非常

zip

7
推荐指数
1
解决办法
7759
查看次数

忽略或捕捉除以零

如何在 Bash 中忽略除以零错误?

示例 1:(不起作用)

echo $((1/0)); echo "yay";
echo $((1/0)) || echo "yay";
Run Code Online (Sandbox Code Playgroud)

示例 2:

echo -n $(echo -n $((1/0))) 2> /dev/null; echo "yay";
Run Code Online (Sandbox Code Playgroud)

有没有比示例 2 更简单的方法,当遇到被零除时,默认为特定值。

bash

6
推荐指数
1
解决办法
9936
查看次数

确定当前外壳名称

可能的重复:
如何测试我在终端中使用的外壳?

如何确定当前的 shell 路径或 shell 名称?

我只需要区分shbash,但是便携式解决方案会很好。

shell bash

6
推荐指数
1
解决办法
5700
查看次数

标签 统计

bash ×4

shell ×3

ls ×2

cat ×1

directory ×1

files ×1

find ×1

keyboard-shortcuts ×1

osx ×1

parameter ×1

permissions ×1

terminal ×1

xattr ×1

zip ×1