假设我有一个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+x对folder. 我的问题则,当或为什么会它曾经是有用的给+x权限的目录中的父对象不是有吗?
谢谢
下面的脚本在 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) 我正在尝试在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 脚本经验但有编程背景的人吗?
我可以通过 ssh 访问远程机器。在这台机器上,如果我运行,echo $TERM我会得到xterm.
如果我想将我的终端模拟器更改为其他模拟器(假设它安装在远程机器上),我该怎么做?
如何处理echo和printf处理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:
echoprintfprint并获得完全相同的字符串?(在zsh和bash)?
下面是另一个 zsh 函数的实验:
function foo
{
echo -E '$1'
}
$ foo \\here\is\some\path
$1
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它打印出来\\here\is\some\path?
我在 zsh 5.0.2 …
此答案讨论了如何从终端的命令行运行多行 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 代码段之间共享变量。
如何在bash脚本中收集python下标的输出?(例如在诸如 的变量中$output)。
如何将 bash 变量(例如$some_text)传递给 Python 脚本?
我有一些日志文件,其中包含 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 也正确显示这些文件?
我浏览了这个有用线程中的答案,但我的问题似乎不同到我想不出好的答案(至少与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) 我需要找出导致特定文件系统 ( /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? …
看看人们如何在 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 中定义了“全局”键盘快捷键吗?