Questions tagged «shell»

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

1
为什么会出现“ ...之间的名称冲突”错误,我该如何解决?
每次我尝试启动vim或者emacs甚至是top(我认为这实际上是任何命令使用的ncurses)在UNIX终端(群集计算机通过ssh上),我得到这样的错误“XXX之间的名称冲突”的AA连续流: Name collision between dumb dumb Name collision between unknown unknown Name collision between lpr lpr Name collision between glasstty glasstty Name collision between vanilla vanilla Name collision between ansi+local1 ansi+local1 Name collision between ansi+local ansi+local ...... Name collision between terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 …
11 shell  vim  emacs  gnu-screen 

4
使用ssh以编程方式创建远程目录
使用Shell脚本,如何使用ssh从serverA-> serverB远程创建目录?我可以通过ssh命令传递create directory命令吗?怎么样? 我基本上希望基于日期(例如20110304)远程创建目录(如果尚不存在)。
11 shell  ssh  directory 

2
如何使zsh中的RPROMPT在每次输入时自动更新?
我RPROMPT设置为使用显示svn信息vcs_info。它读RPROMPT=${vcs_info_msg_0_}。vcs_info被称为使用precmd()。但是,当我更改目录时,RPROMPT不会更新。仅当我再次调用提示符(通过源〜/ .zshrc或提示符)并且在chdir上不变时,它才起作用,除非再次调用提示符。有什么办法可以改变这种行为?

2
如何使用awk就地更改文件?(与“ sed -i”一样)
我有一个awk脚本new.awk: BEGIN { FS=OFS="," } NR==1 { for (i=1; i<=NF; i++) { f[$i] = i } } NR > 1 { begSecs= mktime(gensub(/[":-]/," ","g",$(f["DateTime"]))) endSecs = begSecs + $(f["TotalDuration"]) $(f["CallEndTime"]) = strftime("%Y-%m-%d %H:%M:%S", endSecs) } { print } 我在shell中称呼它 awk new.awk sample.csv ...但是我可以在终端中看到更改。与使用时一样,如何在文件中进行更改sed -i?
11 linux  shell  awk 

1
GNU Makefile中的进程替换
在bash提示下,可以使用伪文件执行diff: diff <(echo test) <(echo test) 将其原样添加到Makefile中失败: all: diff <(echo test) <(echo test) 错误(提示:/ bin / sh指向此系统上的/ bin / bash): /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `diff <(echo test) <(echo test)' 这是什么意思,有没有办法在不使用临时文件的情况下仍然比较两个输出?

2
采购.bashrc之后,使用ssh在交互式shell中运行命令
我想ssh进入远程Ubuntu计算机,获取我的源文件.bashrc并运行取决于该计算机设置的参数的命令.bashrc。交互式外壳中的所有内容在命令完成后不会关闭。 我到目前为止尝试的是 ssh user@remote_computer -t 'bash -l -c "my_alias;bash"' 要不就 ssh user@remote_computer -t "my_alias;bash" 这适用于常规命令(例如ls,例如),但是当我尝试运行中定义的别名时,.bashrc出现错误: bash: my_alias: command not found 但是,当我再次手动编写并运行它时,它就可以工作了! 那么,如何.bashrc在调用命令之前确保的来源?
11 bash  shell  ssh  alias 

2
如何使用ln -s创建命令行快捷方式?
我有一个sh文件,希望可以随时从终端打开。我想在终端中输入“ studio”,并打开android studio 我记得ln -s曾经这样做,但是我已经忘记并且已经浪费了很多时间在网上搜索。 另外,创建的符号链接保存在哪个目录中? 这是我的努力语法,找不到命令 ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio ricardo@debian:~$ studio bash: studio: command not found


3
比较bash中两个文件的头
我可以diff filea fileb看到文件之间的区别。我也head -1 filea可以看到filea或fileb的第一行。如何合并这些命令以显示filea第一行和fileb第一行之间的区别?
11 bash  shell  diff  head 

2
如何从父外壳中的子外壳中获取变量
我编写了一个简单的脚本来为Web服务中的一些报告计时: BASE_URL='http://example.com/json/webservice/' FIRST=1 FINAL=10000 for report_code in $(seq 1 $FINAL); do (time -p response=$(curl --write-out %{http_code} --silent -O ${BASE_URL}/${report_code}) ) 2> ${report_code}.time echo $response # <------- this is out of scope! How do I fix that? if [[ $response = '404' ]]; then echo "Deleting report # ${report_code}!" rm ${report_code} …

4
从Vim脱壳时,如何使Shell别名可用?
在我的中.zshrc,我声明了一些别名。例如,which dbstart显示该别名的内容。 如果我从该shell打开vim,则它是一个子进程。在Vim中,我可以使用运行shell命令:! some_command。如果我确实:! echo $0要查看Vim使用的shell,它将输出'/ bin / zsh'。但是,我的别名在那里不可用。 从Vim剥壳时,如何使我的常规壳别名可用? 两个想法: 以某种方式EXPORT,别名从原始shell到其子进程vim,再到其shell子进程 配置Vim .zshrc在创建其子外壳时读取我的信息

1
过滤剪贴板内容而不使用中间文件
我正在尝试修改剪贴板中的文本,删除其中包含某些字符串的某些行,然后获取输出以进行进一步的操作(我更喜欢仅在需要时应对剪贴板)。我在想这样的事情: cat > swapfile ##Paste all grep -v string swapfile ## Read all rm swapfile 我试图阻止文件创建以及在shell stdin / out本身中执行所有操作。我尝试使用管道,重定向,来自输入的grep / sed,但没有一个导致没有不想要的模式的情况下打印输入。

2
多行命令:注释掉一行
我喜欢在脚本中使用以下格式来编写带有很多参数的命令(以提高可读性): docker run \ --rm \ -u root \ -p 8080:8080 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$HOME":/home \ jenkinsci/blueocean 但是,有时我想将这些参数之一注释掉: # -p 8080:8080 这不起作用,因为EOL被解释为return并且命令失败。也尝试过这个: \ # -p 8080:8080 这也没有用。 问题:有没有办法注释掉参数,所以它仍然在自己的行上,但是我能够执行脚本?

2
带有引号的ssh命令
我有一个奇怪的错误,就是我找不到任何东西。我想使用以下命令更改用户注释。 $ sudo usermod -c "New Comment" user 这将在登录到服务器时起作用,但我想在20多个服务器上实现自动化。通常,我能够使用列表并遍历服务器并运行命令,但在这种情况下会出现错误。 $ for i in `cat servlist` ; do echo $i ; ssh $i sudo usermod -c "New Comment" user ; done serv1 Usage: usermod [options] LOGIN Options: lists usermod options serv2 Usage: usermod [options] LOGIN Options: lists usermod options . . …
11 shell  ssh  quoting 

5
移动驻留在单个目录中的大量文件的最有效方法是什么?
CentOS 5.x 如果这是一个重复的问题,我深表歉意。我见过很多类似的问题(关于删除文件),但情况并不完全相同。 我有一个包含成千上万个文件的目录(可能超过一百万个),作为对一个不同问题的短期修复,我需要将这些文件移动到另一个位置。 为了讨论的目的,假设这些文件最初位于其中/home/foo/bulk/,我想将它们移至/home/foo2/bulk2/ 如果尝试mv /home/foo/bulk/* /home/foo2/bulk2/ ,会出现“参数过多”错误。 Google先生告诉我,批量删除文件的另一种方法是运行find。就像是: find . -name "*.pdf" -maxdepth 1 -print0 | xargs -0 rm 如果我要删除内容,那很好,但是在这种情况下,我想移动文件...如果我输入类似find . -name "*" -maxdepth 1 -print0 | xargs -0 mv /home/foo2/bulk2/bash的内容,则抱怨该文件不是目录。 在此处将批量文件从一个目录移动到另一个目录的最佳命令是什么?
11 linux  bash  shell  find  rename 

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.