小编Ame*_*ina的帖子

具有 +x 权限的目录,没有它的父母。这什么时候有用?

假设我有一个folder在以下路径中调用的文件夹:

my_path = /a/b/c/d/e/folder
Run Code Online (Sandbox Code Playgroud)

以及file在该文件夹中调用的文件。

然后,假设我运行此命令以删除 /a/ 下的组权限

> chmod g-rwx -R /a/
Run Code Online (Sandbox Code Playgroud)

现在,假设我授予以下+rx权限folder

> chmod g+rx /a/b/c/d/e/folder
Run Code Online (Sandbox Code Playgroud)

然后,如果我组中的第二个用户运行:

> ls /a/b/c/d/e/folder
Run Code Online (Sandbox Code Playgroud)

或者

> cat /a/b/c/d/e/folder/file 
Run Code Online (Sandbox Code Playgroud)

她得到许可错误,据我所知,这是因为我需要提供g+xfolder. 我的问题则,当或为什么会它曾经是有用的给+x权限的目录中的父对象不是有吗?

谢谢

permissions

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

在 zsh 中扩展变量

下面的脚本在 bash 中有效,但在 zsh 中无效。我认为这是因为在变量中OPTS,我正在“扩展”(不确定这是否是正确的词)变量$EXCLUDE,而这种语法在 zsh 中不起作用。我将如何替换该行以使其在 zsh 上工作?

SRC="/path_to_source"
DST="/path_to_dest"
EXCLUDE=".hg"  
OPTS="-avr --delete --progress --exclude=${EXCLUDE} --delete-excluded"                                               

rsync $OPTS $SRC $DST   
Run Code Online (Sandbox Code Playgroud)

shell zsh

11
推荐指数
3
解决办法
6318
查看次数

zsh 中的数组和循环

我正在尝试在zsh.

假设我在 zsh 中有两个数组,它们具有相同的未知元素#,每个数组都包含一个路径列表,例如

LOCAL_ARRAY=($LOCAL_PATH_1 $LOCAL_PATH_2 $LOCAL_PATH_3)
REMOTE_ARRAY=($REMOTE_PATH_1 $REMOTE_PATH_2 $REMOTE_PATH_3)
Run Code Online (Sandbox Code Playgroud)

我想使用公共索引同时遍历两个数组,以便我可以执行以下操作:

cd $LOCAL_PATH_i
hg pull $REMOTE_PATH_i
Run Code Online (Sandbox Code Playgroud)

在每次迭代中。我怎样才能在 zsh 中做到这一点?

另外,我在zsh 文档中搜索了循环控制和数组,但收效甚微。有没有介绍zsh中循环数组等基础知识的好教程?适合那些几乎没有 bash 或 shell 脚本经验但有编程背景的人吗?

zsh array

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

更改终端模拟器

我可以通过 ssh 访问远程机器。在这台机器上,如果我运行,echo $TERM我会得到xterm.

如果我想将我的终端模拟器更改为其他模拟器(假设它安装在远程机器上),我该怎么做?

terminal-emulator terminal xterm

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

跨壳的反斜杠处理

如何处理echoprintf处理zsh,bash和其他 shell 中的反斜杠?

zsh 下,我得到以下行为:

$ echo "foo\bar\baz"
foaaz
$ echo "foo\\bar\\baz"
foaaz
$ echo 'foo\bar\baz'
foaaz
$ echo 'foo\\bar\\baz'
foo\bar\baz
Run Code Online (Sandbox Code Playgroud)

bash 下,事情似乎更加一致:

bash$ echo "foo\bar\baz"
foo\bar\baz
bash$ echo 'foo\bar\baz'
foo\bar\baz
bash$
Run Code Online (Sandbox Code Playgroud)

但更具体地说:如何传递包含反斜杠的字符串,例如\\foo\bar\something

  • echo
  • printf
  • print

并获得完全相同的字符串?(在zshbash)?

下面是另一个 zsh 函数的实验:

function foo
{
    echo -E '$1'
}

$ foo \\here\is\some\path
$1
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它打印出来\\here\is\some\path

更新(注意:现在已经在 Stephane 的评论中回答了这个问题)

我在 zsh 5.0.2 …

shell bash zsh quoting

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

shell 脚本中的混合代码。共享变量

此答案讨论了如何从终端的命令行运行多行 Python 代码段。我注意到答案在 shell 脚本中效果很好,即使使用嵌套缩进,这非常好,例如

#!/bin/bash
some_text="Hello world"
echo $some_text

cat <<EOF | python -
import sys;
for r in range(3):
  print r
  for a in range(2):
    print "hello"
EOF
Run Code Online (Sandbox Code Playgroud)

印刷:

0 
hello
hello
1
hello
hello
2
hello
hello
Run Code Online (Sandbox Code Playgroud)

但是,我很难在 shell 脚本和 Python 代码段之间共享变量。

  1. 如何在bash脚本中收集python下标的输出?(例如在诸如 的变量中$output)。

  2. 如何将 bash 变量(例如$some_text)传递给 Python 脚本?

scripting bash zsh python

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

在 Emacs 中正确可视化日志文件中的 ansi 颜色转义码

我有一些日志文件,其中包含 ansi 颜色代码。当我在 Emacs 中打开它们时,我看到了垃圾:

          在此处输入图片说明

例如,我运行以下命令:

ls --color=yes -ald -- * > my_files.txt
Run Code Online (Sandbox Code Playgroud)

在通用文件夹上(在带有 zsh 的 Ubuntu 中使用 gnome-terminal)

有趣的是,如果我跑

cat my_files.txt
Run Code Online (Sandbox Code Playgroud)

外壳以颜色正确显示内容(即外壳知道如何解释这些 ansi 代码)

有没有办法让 Emacs 也正确显示这些文件?

colors emacs escape-characters

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

重新索引大型 CSV 文件

我浏览了这个有用线程中的答案,但我的问题似乎不同到我想不出好的答案(至少与sed)。

我有一个大型 CSV 文件(200+ GB),其中的行如下所示:

<alphanumerical_identifier>,<number>
Run Code Online (Sandbox Code Playgroud)

where<alphanumerical_identifier>在整个文件中是唯一的。我想创建一个单独的文件,用索引替换第一列,即

<index>,<number>
Run Code Online (Sandbox Code Playgroud)

以便我们得到:

1, <number>
2, <number>
3, <number>
Run Code Online (Sandbox Code Playgroud)

可以awk在不将完整文件加载到内存中的情况下生成递增索引吗?

由于索引单调增加,因此删除索引可能会更好。解决方案会有所不同吗?,即:

<number>
<number>
<number>
Run Code Online (Sandbox Code Playgroud)

sed awk csv files

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

特定文件系统上的磁盘使用情况

我需要找出导致特定文件系统 ( /dev/sda2)上磁盘使用量的原因:

$ df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              96G   82G  9.9G  90% /
Run Code Online (Sandbox Code Playgroud)

我不能这样做,du -csh /因为我在下面安装了许多其他文件系统/,其中一些又大又慢:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              96G   82G  9.9G  90% /
/dev/sdb1             5.2T  3.7T  1.3T  76% /disk3
/dev/sda1              99M   18M   76M  20% /boot
tmpfs                  16G  4.0K   16G   1% /dev/shm
nfshome.XXX.net:/home/userA
                      5.3T  1.6T  3.5T  32% /home/userA
nfshome.XXX.net:/home/userB
                      5.3T  1.6T  3.5T  32% /home/userB
Run Code Online (Sandbox Code Playgroud)

如何在 上检索磁盘使用情况/dev/sda2? …

filesystems mount disk-usage

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

Emacs 中“define-key global-map”和“global-set-key”的区别

看看人们如何在 Emacs 中编写键盘快捷键,我注意到两种不同的模式:

一种用途:

(global-set-key (kbd "M-N) 'select-next-window)
Run Code Online (Sandbox Code Playgroud)

另一个:

(define-key global-map (kbd "M-N") 'select-next-window)
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?他们不是都在 Emacs 中定义了“全局”键盘快捷键吗?

emacs

10
推荐指数
1
解决办法
1335
查看次数