Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。



2
删除名称中没有字符串的文件
我要删除名称中不包含字符串“ 999”(不带“'')的文件。 我努力了: grep -vlr 999 . | xargs -0 rm -f -- find . -print0 | grep --null-data -v 999 | xargs -0 rm -- 但是它们都不起作用。我正在使用bash 3.2.57的macOS Sierra。
9 bash  osx  filenames  rm 


3
如何从ifconfig命令捕获第一个IP地址?
如何捕获来自ifconfig命令的第一个IP地址? ifconfig -a enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255 inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link> ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet) RX packets 26846250 bytes 12068811576 (11.2 GiB) RX errors 0 dropped 58671 overruns 0 frame 0 TX packets 3368855 bytes 1139160934 (1.0 GiB) TX errors 0 …
9 linux  bash  awk  sed  ifconfig 

3
外壳扩展(A | B)的文件名?
or例如,当读取文件时,是否可以在shell中扩展选择范围。 我的意思是,例如,它grep支持类似于(A|B)文件中的A或B的语法。 同样,如果我有这些文件: file1.txt file2.txt file3.txt file4.txt file5.txt 我能做到cat file{1..5}.txt的bash,因为它扩大了范围。是否有等效的方法仅对几个文件执行此操作? 例如cat file(1|5).txt,仅打印那些2?

1
在STDERR之前显示STDOUT?
我是bash的新手,我一生都./fff无法解决如何在stderr之前运行某个命令,假设并打印常规stdouts(我对自己的含义感到困惑) 例如 $ printf "I am a\ndrill\n" > fff; $ cat fff nofile fff nofile fff I am a drill cat: nofile: No such file or directory I am a drill cat: nofile: No such file or directory I am a drill 需要打印如下: I am a drill I am a …

7
与`source`命令相反
我source在bash脚本中使用命令以读取/打印变量值 more linuxmachines_mount_point.txt export linuxmachine01="sdb sdc sdf sdd sde sdg" export linuxmachine02="sde sdd sdb sdf sdc" export linuxmachine03="sdb sdd sdc sde sdf" export linuxmachine06="sdb sde sdf sdd" source linuxmachines_mount_point.txt echo $linuxmachine01 sdb sdc sdf sdd sde sdg source取消设置变量的反义词是什么? 预期成绩 echo $linuxmachine01 < no output >

10
Bash:提取IPv4地址的四个部分之一
我们可以使用语法${var##pattern}并${var%%pattern}提取IPv4地址的最后一部分和第一部分: IP=109.96.77.15 echo IP: $IP echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*} echo 'Extract the last section using ${var##pattern}: ' ${IP##*.} 我们如何使用参数扩展来提取IPv4地址的第二部分或第三部分? 这是我的解决方案:我使用数组并更改IFS变量。 :~/bin$ IP=109.96.77.15 :~/bin$ IFS=. read -a ArrIP<<<"$IP" :~/bin$ echo ${ArrIP[1]} 96 :~/bin$ printf "%s\n" "${ArrIP[@]}" 109 96 77 15 此外,我已经写了使用一些解决方案awk,sed以及cut命令。 现在,我的问题是:是否有一个不使用数组和IFS更改的基于参数扩展的简单解决方案?

2
如何使在相同管道中读取和写入相同文件始终“失败”?
说我有以下脚本: #!/bin/bash for i in $(seq 1000) do cp /etc/passwd tmp cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line cat tmp done 在关键行上,我读写同一文件tmp,有时会失败。 (我读这是因为竞争条件,因为管道中的进程是并行执行的,我不明白为什么-每个进程都head需要从上一个进程中获取数据,不是吗?这不是我的主要问题,但您也可以回答。) 当我运行脚本时,它输出大约200行。有什么方法可以强制此脚本输出始终为0行(因此tmp始终首先准备对I / O重定向,因此始终破坏数据)?需要明确的是,我的意思是更改系统设置,而不是更改此脚本。 感谢您的想法。

3
用户输入后使文本消失
有没有一种方法可以使显示的内容在用户输入后立即消失? 例如,在下面获取此文件 #!/bin/bash read -n 1 -p 'how are you ? ' var if [ "$var" == "y" ] then echo 'Have fun' else echo 'Go to Doctor' fi 如果运行此命令,则输出为 how are you ? yHave fun 我正在寻找能让how are you ?用户在按下按键后就消失的东西 然后消失后,打印 Have fun 所以,我希望上面程序的最后输出是 Have fun 注意:此外,在外壳屏幕上打印的该脚本之上的所有内容都不应删除。 我在用 bash
9 bash  scripting 

6
(bash)脚本A,等待脚本B,但不等待其子进程
所以我有scriptA可以做到: ssh server1 -- scriptB & ssh server2 -- scriptB & ssh server3 -- scriptB & wait otherstuffhappens ScriptB可以: rsync -av /important/stuff/. remoteserver:/remote/dir/. rsync -av /not/so/important/stuff/. remoteserver:/remote/dir/. & exit 我期望的结果是scriptA在继续进行之前将等待scriptB的所有实例完成,这是它当前正在执行的操作,但是它也在等待不太重要的东西的后台rsync。这些是我不想等待的较大文件。 我已经阅读了nohup,disown和&之间的区别,并尝试了不同的组合,但是我没有得到想要的结果。 在这一点上,我很沮丧。任何帮助,将不胜感激!

1
为什么我不能打印在env输出中看到的变量?
我对设置一个外壳实例与另一个外壳实例的环境变量感兴趣。所以我决定做一些研究。阅读了许多与此有关的问题后,我决定对其进行测试。 我生成了两个外壳A和B(PID 420),它们都在运行zsh。从外壳程序AI运行以下命令。 sudo gdb -p 420 (gdb) call setenv("FOO", "bar", 1) (gdb) detach 从外壳B运行时,env我可以看到变量FOO确实设置为bar值。这使我认为FOO已在shell B的环境中成功初始化。但是,如果我尝试打印FOO,则会出现一个空行,表明未设置FOO。对我来说,这里似乎有矛盾。 这已在我自己的Arch GNU / Linux系统和Ubuntu VM上进行了测试。我还在bash变量甚至未在env中显示的地方对此进行了测试。尽管这让我感到失望,但如果shell在生成时缓存其环境的副本并仅使用它(在链接的问题之一中建议),则是有意义的。这仍然不能回答为什么zsh可以看到变量。 为什么输出为echo $FOO空? 编辑 输入评论后,我决定进行更多测试。结果可以在下表中看到。第一列是FOO注入变量的外壳。第一行包含该命令的输出,可以在其下面看到。FOO使用:注入变量sudo gdb -p 420 -batch -ex 'call setenv("FOO", "bar", 1)'。zsh:专用的命令zsh -c '...'也已使用bash进行了测试。结果是相同的,为简洁起见,省略了它们的输出。 Arch GNU / Linux,zsh 5.3.1,bash 4.4.12(1) | | env | grep FOO | echo …

4
如何同时移动和重新创建文件夹?
我statistics在Ubuntu服务器中有一个名为定期存储数据文件的文件夹。重新创建文件夹以用于存储新文件时如何重命名statistics文件夹?backup-xxstatistics 文件statistics夹中的文件由PHP创建file_put_contents。 我更喜欢重命名文件夹,因为文件夹中有很多文件statistics。

6
如何获取sudo命令以使用/root/.bashrc中的设置
我已经定制.bashrc了一些别名,特别是ll和export LS_OPTIONS='--color=auto' 不幸的是,当与一起使用时sudo,这不起作用,因此我也进行了修改/root/.bashrc,但这似乎没有什么区别。 sudo env显示HOME=/root和SHELL=/bin/bash 如何获得sudo命令以使用中的设置/root/.bashrc? 我知道只有在bash以交互方式执行时才会发生这种情况,因此我对其他有关自定义的建议持开放态度。
9 bash  debian  sudo 

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.