我该怎么做呢:
set foo bar baz
unset # Something else here
echo $# # Should ouput 0
Run Code Online (Sandbox Code Playgroud)
通过这样做set "",$#仍将是 1 而不是 0。
我知道您可以通过执行chflags hidden foo.txt和来设置或取消设置文件夹/文件的隐藏标志chflags nohidden foo.txt。
但是无论如何都可以告诉文件夹/文件当前是否隐藏?
我不想只是确定文件夹/文件是否以点开头。
假设我有文件夹“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)
但是没有更简单的方法来做到这一点吗?
如何找到匹配模式的每个文件和目录,不包括使用 的一个目录find?
假设我有以下文件结构;
.
foo-排除-我/
foo.txt
foo-exclude-me-not/
foo.txt
酒吧/
foo.txt
foobar/
栏.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目录?
我知道您可以通过执行以下操作来确定目录的所有者:
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)
但是您可以在不是所有者的情况下拥有写入权限。你如何确定这一点?
我可以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)
光标在^. 如果我再按一次,文件将被保存。但是,如果我按任何东西(好吧也许不是任何东西,但主要是任何东西),我只是继续编辑文件。
这是正常行为吗?
说我要添加的文件file.txt来foo.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 非常
如何在 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 更简单的方法,当遇到被零除时,默认为特定值。