Questions tagged «bash»

Bash是来自GNU Project的类Unix操作系统的免费外壳。

2
通过ssh或putty设置自定义bash提示符
当登录到服务器时,我希望在我的bash提示符上显示时间,所以当我检查以前的事情时,我可以看到我什么时候做了。我认为在尝试调试时这是一个特别有用的功能。 它看起来像这样: [root@server 11:46:02 ~]# ls file1 file2 [root@server 11:47:50 ~]# whoami root 我发现我可以这样做ssh: ssh root@server -t "export PS1='[\u@\h $(date +%H:%M:%S) \W]\$ '; exec bash" ssh root@server -t "export PS1='[\u@\h \t \W]\$ '; exec bash" 但显然每次输入新内容时,日期都不会更新。 我根本没想过如何从PuTTY中做到这一点 - 我看到Connections - > Data中有一个设置将环境变量发送到服务器,但这不起作用。 请注意,我不想在服务器端更改任何内容(没有sshd更改,没有bashrc或配置文件更改):)
1 linux  bash  ssh  putty 

1
使bash命令历史记录像Windows命令shell一样
在bash中,向上箭头会调用上一个命令。点击它二十次,我从五十分钟前跑过的历史中的二十个地方得到命令。假设我现在运行该命令。现在,当我点击箭头时,我想起了最新的命令 - 那个我刚重新开始的命令,并且额外的水龙头让我像以前一样回顾历史。 也许五分钟前,我已经连续运行了四个命令,我想再次运行。我必须再次点击二十次箭头,一次又一次。 在Microsoft Windows中,在他们的命令shell中,我可以回想起前一段时间的命令,重新运行它,然后当我点击箭头时,我从那之前的五分钟前得到命令。我可以在五分钟前完成那个命令之后的命令,省力,减少箭头键的磨损。 所以,bash(我猜大多数unix / linux shell)总是从最近的命令开始回忆历史记录,而Windows会记住一个很久以前命令的位置并相对于此回忆。 是否有可能以Windows的方式回忆bash中的历史记录?

1
用zipgrep搜索方括号
我在Cygwin和git-bash中试过这个 - 结果相同。 使用普通grep,[可以使用反斜杠转义模式中的字符,以指示[要搜索文字字符。 但这不适用于zipgrep: $ zipgrep '\[HashMap' /c/Users/greerob/.gradle/caches/modules-2/files-2.1/com.twitter/jsr166e/1.1.0/7558d13056c1f98be269fed58ae5a8e76c7616d4/jsr166e-1.1.0-sources.jar grep: Unmatched [, [^, [:, [., or [= 即使逃避它两次也行不通: $ zipgrep '\\[HashMap' /c/Users/greerob/.gradle/caches/modules-2/files-2.1/com.twitter/jsr166e/1.1.0/7558d13056c1f98be269fed58ae5a8e76c7616d4/jsr166e-1.1.0-sources.jar grep: Unmatched [, [^, [:, [., or [= 并尝试指定整个模式是固定字符串而不是正则表达式也不起作用: $ zipgrep -F '[HashMap' /c/Users/greerob/.gradle/caches/modules-2/files-2.1/com.twitter/jsr166e/1.1.0/7558d13056c1f98be269fed58ae5a8e76c7616d4/jsr166e-1.1.0-sources.jar grep: conflicting matchers specified 如何[在zip文件的内容中搜索字符?
1 bash  cygwin  unzip 

1
重定向 - 为什么它不能这样工作
我知道运行时有3个流附加到进程,即输入,输出和错误流。 并且重定向执行从左到右。 我打算执行一个命令,将其输出流重定向到一个文件,并将其错误流重定向到同一个文件。 - nofile不存在,text1文件确实存在 head nofile text1 1> output.txt 2> output.txt -- I know this won't work. head nofile text1 1> output.txt 2>&1 -- while this will work, passing the error stream to the output ste q1)为什么? 如果它是“假设以这种方式编写”的问题,那么为什么下面的工作也不能 head nofile text1 2>&1 1> output.txt head nofile text1 2>&1> output.txt …

1
Bash / Cygwin - 别名不像命令
我试图让Cygwin设置我在Windows中使用的工具并且遇到一些麻烦。从这篇文章中,我发现我可以将Notepad ++指定为我的编辑器使用 alias notepad="/cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe" 当我通过命令行运行它时,这可以工作 notepad $( cygpath -pw ~/.bashrc ) & 打开我的.bashrc文件,但是当我尝试将其设为别名时 alias settings="notepad $( cygpath -pw ~/.bashrc ) &" 和类型settings我得到了错误 C:\Program Files (x86)\Notepad++\cygwin64homeuser.bashrc doesn't exist. Create it? 我尝试定义变量,甚至还有更多问题。我究竟做错了什么?

4
如何在UNIX中检测NIC是否已启动?
我目前正在编写一个bash脚本(对于Nagios),我希望能够检测特定的网卡是否已启动。 我最好的猜测是做这样的事情: ifconfig eth0 | grep UP | wc -l 要么: ethtool eth0 | grep "Link detected: yes" | wc -l 如果网卡正常运行,或者是否有更好的选择,是这两种可靠的测试方式吗?也许有一面旗帜ethtool可以正是我想要的?

1
在文件中排队bash命令
我想在我可以修改的文件上排队一些bash脚本。所以我启动了文件“lauchscripts.py”或“lauchscripts.sh”,其中包含启动脚本的命令: 1:> source folder1/script1.sh 2:> source folder2/script2.sh 3:> source folder3/script3.sh 4:> 这样:1)当我启动它时,它启动script1.sh,然后当它完成时启动script2.sh等等。2)在运行的任何时候,我都可以在我的“lauchscripts”文件中添加行,稍后将执行该文件。让我们说在运行script3.sh(第3行)时,如果我在第4行添加一个命令: 1:> source folder1/script1.sh 2:> source folder2/script2.sh 3:> source folder3/script3.sh 4:> source folder4/script4.sh 完成script3.sh后,该行将执行script4.sh 那可能吗? 谢谢
1 bash  script 

2
使用Sed Ampers和Array替换
我试图使用sed的&符号替换原始字符串,然后从数组中读取,但它无法正常工作。我只是得到错误:'操作数预期(错误标记是“&”)'。 以下是相关的代码行: gawk -F '\t' '{ print $5"\t"$1"\t"$2"\t"$3"\t"$4 }' $TEMPFILE | sed "s/^[0-9]\+/${CATEGORY[&]}/g" 第一个gawk语句在行的开头生成一个两位数字。如果我用手动替换sed语句中的&符号,一切正常。我真的很感激一些帮助。
1 linux  bash  sed 

1
将命令发送到现有的屏幕会话?
我有一个在屏幕会话(游戏服务器)中运行的Java应用程序,我希望能够编写一个脚本来定期向它发送命令(可能是cron),但我不知道如何发送命令到正在运行的屏幕会话。 这可能吗?可能因为我不只是向屏幕发送更多shell命令,而是将文本放入正在运行的Java控制台这一事实而变得复杂。

3
尝试打开shell时,SSH会话挂起
从今天早上起,我无法使用SSH在我的服务器上正常登录。 通常,在输入时: ssh foo@bar.org shell挂起并且没有获得shell。使用-vv的最后一行详细信息告诉我: debug2: shell request accepted on channel 0 也就是说,如果我直接在SSH中启动命令,例如: ssh foo@bar.org 'ls ~' ......它似乎正常工作,它给了我预期的输出。实际上,我可以通过输入以下命令强制bash以交互模式启动来获取shell: ssh foo@bar.org 'bash -i' 我还尝试禁用我的.bashrc文件(通过将其移动到.bashrc_OLD),但它似乎没有任何帮助。 任何建议将不胜感激,谢谢! 编辑:我也尝试用sh登录,但它既不起作用。因此,我认为这与配置文件问题无关。 编辑2:当我设法使用-i标志获取shell时,这是我从控制台获得的附加消息: bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell
1 linux  bash  shell  ssh 

3
为什么不是bash找到我明显存在的桌面文件夹?
我可能在这里做了一些愚蠢/明显错误的事情,但是我试图在curl脚本中管道并在OS X上的终端中运行它。我用来执行此操作的命令是: sh -s stable < <(curl -L http://path_to_my_script/) 这看起来工作得非常正确; 但是,下载脚本中的第一行无效。由于某种原因,“cd~ / Desktop”导致错误“没有这样的文件或目录”。我很确定我的桌面存在,并且当我手动运行它时此命令有效。当我尝试将“ls”作为诊断问题的第一行时,它甚至都不识别该命令。我需要做些什么才能使“cd”和“ls”等命令正常工作? 谢谢您的帮助! 编辑:问题似乎与卷曲没有任何关系,好像我将脚本下载到“file.sh”然后执行“sh file.sh”,我得到相同的错误。 编辑:这是我正在尝试运行的脚本的完整内容: #!/bin/bash ls cd ~/Desktop curl https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg -o chrome.dmg hdiutil attach chrome.dmg cp "/Volumes/Google Chrome/Google Chrome.app" "~/Desktop/chrome.app" hdiutil detach chrome.dmg rm chrome.dmg open -a chrome.app --args --make-default-browser --disable-instant-extended-api -- install-from-webstore="chrome-rdp/cbkkbcmdlboombapidmoeolnmdacpkch" osascript 'tell application "System …

2
只查找和执行文件名
我需要查找超过X天的所有文件,并在本地和我的s3存储桶中删除它们。问题是find命令也返回完整路径和文件名。我试过搞乱basename和其他一些东西,但是无法让它工作。任何帮助将不胜感激。 现在,当我在玩它时,'删除它们本地'部分是ls而不是rm。对于rm我需要完整的路径。 我需要从s3cmd调用中删除/ home / ec2-user / backups /。 $ find /home/ec2-user/backups -type f -mtime +3 -exec ls {} \; -exec s3cmd del s3://kisnardonline/{} \; /home/ec2-user/backups/FILESYSTEM-2016-04-09_00-00.tar.gz File s3://kisnardonline//home/ec2-user/backups/FILESYSTEM-2016-04-09_00-00.tar.gz deleted
1 linux  bash  find  exec 

1
使用带有多个通配符的mv命令
我还是比较新的Linux,所以在菜鸟上放轻松,嗯? 我设置了脚本以根据文件名将媒体文件移动到特定目录。我使用通配符来实现这一点,但我需要使它更具体,以便它只移动我想要的。 例: mv /home/user/Downloads/*Horror* /home/user/Downloads/transmission/completed/Series/AHS/ 我需要知道是否可以在单个移动命令中包含多个通配符。在前面的示例中,我希望脚本将所有American Horror Story剧集移动到AHS目录。该脚本有效,但如果我下载其他任何带有“恐怖”字样的内容,该文件也会被移动。 我问的是可能的,还是我应该使用的是一种不同的方法?

2
sed在最后一行之前插入变量
我想在最后一行之前插入一个变量。 这是我的档案。 $ cat file.txt one two three four five 当我尝试不使用变量时,它工作正常。 $ sed -i '$i name' file.txt $ cat file.txt one two three four name five 当我使用变量时,它不起作用。我尝试了双引号和反斜杠的不同组合。 $ NAME=name $ sed -i '$i "$NAME"' file.txt $ cat file.txt one two three four "$NAME" five
1 bash  sed 

1
在脚本里面执行的编译命令给出错误,在外面执行很好......可能是gcc
我有一个名为buildgcc.sh的脚本,其中包含以下内容。 mymac$more buildgcc.sh g++ -Wno-write-strings A.cpp B.cpp B.cpp c.cpp D.cpp E.cpp F.cpp artgdg.cpp G.cpp H.cpp I.cpp J.cpp K.cpp L.cpp M.cpp N.cpp O.cpp P.cpp 当我运行脚本时,我收到一个错误: mymac$./buildgcc.sh No such file or directory+-4.2: P.cpp 但是当我将脚本的内容复制/粘贴到命令行时: mymac$g++ -Wno-write-strings A.cpp B.cpp B.cpp c.cpp D.cpp E.cpp F.cpp artgdg.cpp G.cpp H.cpp I.cpp J.cpp K.cpp L.cpp M.cpp N.cpp …
1 macos  bash  script  gcc 

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.