Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

6
ls -l和ll之间的区别?
我对整体编程还是比较陌生,一些教程告诉我使用它ls -l来查看目录中的文件,而其他则一直在说ll。我知道这ls是一个简短的列表,但是其他两个之间有区别吗?
59 shell  shell-script  ls 


5
将shell变量作为/ pattern /传递给awk
在我的一个shell函数中具有以下内容: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } ,因此当称为时_process $arg,$arg将作为传递$1,并用作搜索模式。它以这种方式工作,因为shell扩展$1代替了awk模式!也l可以在awk程序中使用,用声明-v l="$line"。一切都很好。 是否有可能以相同的方式将模式作为变量进行搜索? 以下操作无效, awk -v l="$line" -v search="$pattern" ' BEGIN {p=0} /search/ {p=1} END{ if(p) print l >> "outfile.txt" } ' ,因为awk不会解释/search/为变量,而是按字面意义。
59 shell  awk  quoting  variable 

2
>&-是否比> / dev / null更有效?
昨天我读了这样的SO评论,它说在shell中(至少bash)>&-“具有与...相同的结果” >/dev/null。 该评论实际上是将ABS指南作为其信息来源。但是那个消息来源说>&-语法“关闭文件描述符”。 我不清楚关闭文件描述符并将其重定向到空设备这两个动作是否完全等效。所以我的问题是:是吗? 从表面上看,关闭描述符就像关闭一扇门,但是将其重定向到一个空设备则意味着陷入困境。这两个对我来说似乎并不完全相同,因为如果我看到一扇关闭的门,我不会尝试扔掉任何东西,但是如果我看到一扇敞开的门,我会假设我可以。 换句话说,我一直想知道是否>/dev/null意味着cat mybigfile >/dev/null将实际上处理文件的每个字节并将其写入/dev/null而忘记了它。另一方面,如果外壳遇到一个封闭的文件描述符,我倾向于认为(但不确定)它将根本不写任何内容,尽管问题仍然在于是否cat仍将读取每个字节。 这个评论说>&-和>/dev/null“ 应该 ”相同,但是对我来说却不是那么响亮的答案。我想有一个更权威的答案,参考或不参考标准或源核心。

1
单个命令即可登录SSH并运行程序?
有没有一种方法可以构造单个命令以通过SSH登录到远程服务器并在远程登录Shell上运行程序? 在OpenSSH手册中,其内容为:“如果指定了命令,那么它将在远程主机而不是登录shell上执行。” 因此,例如,ssh user@server mail将登录到远程服务器,显示邮箱状态,然后将您返回到本地外壳程序。显示邮件状态后,是否可以保留在远程外壳程序上? 此外,ssh user@server [command]如果命令是程序,例如vim或mutt ,则似乎不起作用。有没有一种方法可以登录到远程Shell并在运行过程中停留在远程Shell中并在退出程序之后运行程序,仅最终通过特定logout命令退出(就像在普通SSH会话中一样)? 我最终希望能够将这样的命令作为别名放入本地.bashrc中,以便可以在需要时快速运行。一个示例是通过SSH登录到远程服务器,然后在远程服务器上打开mutt以读取或发送电子邮件。
58 bash  shell  ssh  openssh 

3
“ rm被散列”是什么意思?
我正在浏览http://mywiki.wooledge.org/BashGuide/CommandsAndArguments并遇到以下问题: $ type rm rm is hashed (/bin/rm) $ type cd cd is a shell builtin 不久之前,该指南列出了Bash可以理解的各种命令:别名,函数,内建函数,关键字和可执行文件。但是没有提到“散列”。那么,在这种情况下,“散列”是什么意思?
58 bash  shell  command 

5
只需输入目录名称即可cd?
我或者20年前在某个地方有这个,或者我梦到了。 基本上: 如果blobblob我得到 blobblob: command not found 很公平。 我想要这样,以便当我的shell遇到这些错误时-找不到命令-它会检查是否存在具有该名称的目录('blobblob'),如果存在,则cd指向该目录。 我确定有某些原因不这样做或谨慎进行。 我只是认为这会很整洁,我想尝试通过找到某个地方(例如这里!)来尝试一下。 我不知道该如何暗示可能要进行的shell编程。

5
为什么zip和rm命令之间的通配符*如此不同?
我整理了一个脚本来为我执行一些文件操作。我正在使用通配符运算符*将函数应用于一种类型的所有文件,但是我没有得到一件事。我可以将unzip所有文件放在这样的文件夹中 unzip "*".zip 但是,要稍后删除所有zip文件,我需要 rm *.zip 也就是说,它不需要引号。另一方面,如果我只给它*,则解压缩不起作用(警告我“文件不匹配”)。 为什么有什么不同?对我来说,这似乎是完全相同的操作。还是我使用通配符不正确? Unix中通配符的介绍并没有真正涉及到这一点,而且我在rm或zip文档中找不到任何内容。 我在Mac(优胜美地)上使用终端。
58 shell  wildcards  rm  zip 

6
出于安全原因禁用用户外壳
我们为需要精细权限的自动化任务创建了多个用户帐户,例如跨系统的文件传输,监视等。 我们如何锁定这些用户帐户,以便这些“用户”没有外壳并且无法登录?我们希望避免有人可以以这些用户帐户之一的身份进行SSH登录的可能性。
58 shell  ssh  users  login 

2
grep在变量上
假设我有一个变量 line="This is where we select from a table." 现在我想重复一下句子中选择的次数。 grep -ci "select" $line 我尝试过,但是没有用。我也试过 grep -ci "select" "$line" 它仍然不起作用。我收到以下错误。 grep: This is where we select from a table.: No such file or directory
58 shell  grep  string 


7
如何将不区分大小写的模式与ls匹配?
我想列出所有匹配特定模式的文件,而忽略大小写。 例如,我运行以下命令: ls *abc* 我想查看所有以“ abc”作为文件名一部分的文件,忽略大小写,例如 -rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file1abc.txt -rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file2ABC.txt 注意 我已经在手册页中搜索了案例,但是找不到任何东西。

2
如何将输出重定向与here-document和cat结合使用?
假设我有一个脚本,该脚本想通过管道传递到另一个命令或重定向到文件(sh示例使用管道)。假设我正在使用bash。 我可以使用echo: echo "touch somefile echo foo > somefile" | sh 我也可以使用cat以下方法做几乎相同的事情: cat << EOF touch somefile echo foo > somefile EOF 但是,如果我将“ EOF”替换为“ EOF | sh”,它只是认为这是heredoc的一部分。 如何使它cat从stdin输出文本,然后将其通过管道传输到任意位置?

11
使用触摸屏和vi吗?
在编辑之前通过触摸创建文件是否有好处。例如: touch foo vi foo 与直接将其提交给编辑器?喜欢: vi foo 我看到了很多使用前者(touch然后vi)的教程。
55 shell  vi  touch 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.