Questions tagged «shell»

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

3
如何比较不同行中具有相同数据的两个xml文件?
我有两个文件具有相同的数据,但行不同。 文件1: <Identities> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> 文件2: <Identities> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> 如果我使用diff file1 file2命令,则会得到以下响应: 1,10d0 < …


2
如何使cd参数不区分大小写?
有时,在访问各种目录时,多数情况下我记得我们Linux系统下目录的名称或至少一部分名称。但是某些目录的名称以大写字母开头或大写字母中间的一个字符开头。 任何人都可以建议我如何才能让下面的参数cd命令不区分大小写,这样,如果我执行cd BackupDirectory或者cd backupdirectory它可以进入该目录名BackupDirectory。 当然,我不想为其他用户搞麻烦,因此,如果上述可行,是否可以将更改仅应用于我正在使用的会话,而不会影响其他用户? 好的,我试过了 set completion-ignore-case,但是这行不通。如果我键入cd b和Tab或Esc Esc它填充目录名而忽略大小写,则只会有所帮助。但是,我需要做的是cd backupdirectory,它只是忽略大小写并BackupDirectory自行输入。

2
POSIX测试和-a
我使用checkbashisms检查了我的脚本,并收到以下警告: possible bashism in check_ssl_cert line 821 (test -a/-o): if [ -n "${ALTNAMES}" -a -n "${COMMON_NAME}" ] ; then 在POSIX规范的4.62.4节中,我发现 primary -a primary对binary和primary的结果执行二进制运算。-a运算符优先于-o运算符。 为什么-a和-o被认为是不可携带的?

6
如何查看在另一个shell中执行的命令?
有什么方法可以观察正在执行的命令在另一个shell中的执行情况?两个shell都是bash,如果有关系的话,我具有root用户访问权限。我无法安装任何额外的软件,并且我不希望其他外壳必须执行任何特殊操作,例如运行屏幕。 情况:我远程登录了Linux计算机,同事也是如此。我想看看她正在外壳中运行的命令。我知道我可以结合使用watch和ps来查看所有需要花费一秒钟以上时间才能运行的命令,但是我认为这对于非常短的命令没有帮助。

2
为什么--text =“ $ @”仅传递第一个单词?
当我运行带有某些参数的以下脚本时arg1 arg2 arg3: #!/bin/bash zenity --entry --text="$@" zenity使用以下文本创建一个输入对话框:“ arg1”,而我期望“ arg1 arg2 arg3” 如果我使用像以下脚本这样的变量,它将显示条目文本的所有参数。 #!/bin/bash text="$@" zenity --entry --text="$text" 这些脚本之间有什么区别?为什么第一个$@仅替换为第一个参数?
9 bash  shell  quoting 

1
输出重定向和空格
我对此感到偏执,但希望这是一个简单的问题: 之间有什么区别 cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt 和 cat file1|egrep -oP "[Mm]y string">/home/user/file.txt 即,是否有空格填充竖线(|)和重定向(>)字符有关系吗?我真的很偏执,如果我不想要空格,空格会以某种方式最终出现在输出文件中。谁能澄清?(如果重要,请使用Ubuntu 12 / bash。)

2
为什么即使正确指定了$ PATH,Bash也无法找到命令?
我在文件/ etc / profile中指定命令的路径: export PATH=$PATH:/usr/app/cpn/bin 我的命令位于: $ which ydisplay /usr/app/cpn/bin/ydisplay 因此,当我执行“ echo $ PATH”输出时,如下所示: $ echo $PATH ...:/usr/app/cpn/bin 一切正常,但是当我尝试通过SSH启动命令时,出现错误: $ ssh 127.0.0.1 ydisplay $ bash: ydisplay: command not found 但是我的道路仍然存在: $ ssh 127.0.0.1 echo $PATH ...:/usr/app/cpn/bin 请向我解释为什么Bash在SSH会话期间无法找到ydisplay,以及如何正确配置SSH以避免此问题。 而且,如果我在当前用户的本地文件.bashrc中指定$ PATH,则它们都可以正常工作。但是我只想修改一个文件,而不是为每个用户指定很多文件。这就是为什么我要问。
9 linux  bash  shell  ssh  path 

1
dd:写入“ / dev / null”:设备上没有剩余空间
我正在将550MB文件读取到/ dev / null中,并且 dd: writing '/dev/null': No space left on device 我很惊讶。我以为/ dev / null是一个黑洞,您可以在其中发送任意数量的消息(因为它是虚拟的fs)。 是的,出现此错误时,我的磁盘几乎已满。除了从磁盘删除内容外,我还能做什么? ls -l /dev/null -rw-r--r-- 1 root root 0 July 7 21:58 /dev/null 代替 crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null 我正在使用的命令: time sh -c "dd if=$filename of=/dev/null"

4
在几个目录之间找到一组通用文件?
我正在寻找比较Drupal主题的目录。一个drupal主题是一个由几个文件组成的目录,我试图找出哪些文件是必不可少的。例如,它们可能都有一个名为template.php或的文件page.tpl.php。 如何找到几个目录的所有通用文件集?就我而言,所有“相同”文件(相同名称的文件)都将位于同一级别的目录中。
9 shell 

8
删除最旧的文件
我正在尝试从目录中删除旧文件,仅保留3个最新文件。 cd /home/user1/test while [ `ls -lAR | grep ^- | wc -l` < 3 ] ; do rm `ls -t1 /home/user/test | tail -1` echo " - - - " done 条件语句有问题。
9 shell  files  rm 

1
两个管道到一个命令
我对以下语法有点困惑。虽然有效,但不知道为什么有效。好像有两个管道连接到diff命令。但是不是只有一个STDIN吗? 例子: diff <(echo "foobar") <(echo "barbaz") diff <(cat foo.txt) <(cat bar.txt)
9 bash  shell 

1
如何检测外壳程序何时归远程SSH会话所有?
我的问题与此类似,但是我正在寻找稍微不同的东西。我有一台笔记本电脑,用于在两种不同情况下访问网络上的Linux机器: 我有直接的有线连接到网络。 我与网络有间接连接。网络上有一台暴露于Internet的网关计算机,我可以使用它来建立到网络主机的SSH隧道。这显然是一个慢得多的,更高延迟的连接。 我的主目录可从所有机器通过网络访问,因此它们共享我的副本.bashrc。我想添加功能以.bashrc检测我处于两种情况中的哪一种并采取相应的措施(从技术上讲,将有三种情况,其中第三种是我登录到本地计算机,但是应该易于处理) )。我想做类似的事情: alias ssh ssh -X 当我在本地网络上,但是我不想在Internet上使用X转发时。 export EDITOR=gvim当我在本地网络上但export EDITOR=vim在远程时。 等等。根据先前的答案,看来我应该能够通过检查SSH_CLIENT(如果存在)的内容并查看客户端IP地址是否与本地计算机上的网络适配器之一匹配来完成类似的操作。我想我会看看是否有一种更流畅或更强大的方法来完成此任务。
9 shell  ssh  bashrc 



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.