Questions tagged «bash»

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

1
vi shell模式的自定义键绑定,即“ set -o vi”?
我刚刚发现了的奇妙之处set -o vi,并且很好奇是否可以用与自定义vi或vim相同的方式自定义此vi shell模式? 例如,创建自定义键绑定以将更方便的键或键组合映射到esc? 如果当前不支持它,那么在某些自定义项中更改程序的源代码和硬代码将有多困难,或者这不是一个好主意?
18 bash  vi 

1
退出程序时,“ man”如何还原屏幕?
如果我打开诸如cat或的程序的手册页ls,它会打印(可能不是适当的单词)手册页的内容,当我按时q,它将显示屏幕,就像调用man命令之前一样。恢复如何发生?什么会擦除所有内容,然后打印外壳的先前内容? 例: [VAR121@Tesla Testing]$ man ls 输出: LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... ............ 当我按时q,屏幕将返回外壳的默认外观,如下面所示的提示。 [VAR121@Tesla Testing]$ man ls [VAR121@Tesla Testing]$ 屏幕如何还原?
18 bash  shell  terminal  man 

3
如何推迟变量扩展
我想用尚未设置的变量来初始化脚本顶部的一些字符串,例如: str1='I went to ${PLACE} and saw ${EVENT}' str2='If you do ${ACTION} you will ${RESULT}' 再后来PLACE,EVENT,ACTION,和RESULT将被设置。然后,我希望能够将变量扩展后的字符串打印出来。是我唯一的选择eval吗?这似乎可行: eval "echo ${str1}" 这是标准吗?有一个更好的方法吗?最好不要eval考虑变量可以是任何东西而运行。
18 bash  shell  string 

5
如何为每个目录设置别名?
假设您有一个别名go,但希望它在不同的目录中执行不同的操作? 它应在一个目录中运行cmd1,但应在另一个目录中运行cmd2 顺便说一句,我已经有一个别名可以切换到上述目录,所以可以将go别名分配附加到foo别名上吗? alias "foo=cd /path/to/foo" 在OSX上使用bash(?)。


5
合并两个列表,同时删除重复项
我有一个使用Busybox(OpenWRT)的嵌入式Linux系统-因此命令受到限制。我有两个看起来像的文件: 第一个档案 aaaaaa bbbbbb cccccc mmmmmm nnnnnn 第二档 mmmmmm nnnnnn yyyyyy zzzzzz 我需要将这2个列表合并为1个文件,并删除重复项。 我没有差异(空间有限),所以我们得到使用的伟大awk,sed和grep(或可能被包含在一个标准的Busybox的实例其他工具)。转到合并文件,如: command1 > mylist.merge command2 mylist.merge > originallist 完全可以。它不必是单行命令。 我正在使用的Busybox实例中当前定义的函数(默认为OpenWRT):[,[[,arping,ash,awk,basename,brctl,bunzip2,bzcat,cat,chgrp,chmod,chown,chroot,clear,cmp, cp,crond,crontab,cut,date,dd,df,dirname,dmesg,du,echo,egrep,env,expr,false,fgrep,find,free,fsync,grep,gunzip,gzip,halt,head,hexdump, hostid,hwclock,id,ifconfig,init,insmod,kill,killall,klogd,更少,ln,锁,记录器,logread,ls,lsmod,md5sum,mkdir,mkfifo,mknod,mktemp,mount,mv,nc,netmsg, netstat,nice,nslookup,ntpd,passwd,pgrep,pidof,ping,ping6,pivot_root,pkill,poweroff,printf,ps,pwd,重新启动,重置,rm,rmdir,rmmod,route,sed,seq,sh,sleep,排序,启动停止守护程序,字符串,switch_root,sync,sysctl,syslogd,tail,tar,Tee,telnet,telnetd,test,时间,顶部,触摸,tr,traceroute,true,udhcpc,umount,uname,uniq,正常运行时间,vconfig,vi,看门狗,wc,wget,其中,xargs,是,zcat
18 bash  grep  sed  awk  busybox 

5
在命令选项中使用从管道读取而不是从文件读取的数据
根据人的定义,此命令从文件获取输入。 $ command -r FILENAME 假设该FILENAME文件包含使用生成的文件名列表ls > FILENAME。 相反,我如何才能ls直接将结果直接输入命令?在我看来,这样的事情应该是可能的: $ ls | command -r 但事实并非如此,的输出ls不会被挂钩为参数。输出: Usage: command -r FILENAME error: -r option requires an argument 我如何获得理想的效果?
18 bash  pipe 

4
如何从bash脚本中分离进程?
我正在尝试从bash脚本中分离一个进程,以便在退出该脚本时SIGINT不会转发到该进程。 我disown直接在终端中使用了该命令,但是在bash中,disown并没有阻止SIGINT的转发。该脚本的目的是通过一次调用先启动openocd,然后启动gdb。由于脚本永不退出(正在运行gdb),因此SIGINT仍从gdb转发到openocd,这是一个问题,因为SIGINT用作gdb中的暂停命令。 在终端中,它看起来像这样: $ openocd & # run openocd demonized $ disown $! # disown last pid $ gdb # invoke GDB 当按此顺序在终端上调用时,SIGINT不会从gdb传递到openocd。但是,如果在bash脚本中进行了相同的调用,则会传递SIGINT。 任何帮助将不胜感激。 ps这个问题是在OS X中出现的,但是我正在尝试使用对所有Unix工具都可移植的工具。
18 bash  disown 


5
如何将彩色pdf转换为黑白?
我想将一个带有一些彩色文本和图像的pdf转换为另一个只有黑白的pdf,以减小其尺寸。此外,我想将文本保留为文本,而不变换图片中的页面元素。我尝试了以下命令: convert -density 150 -threshold 50% input.pdf output.pdf 在另一个问题中找到了一个link,但它确实做了我不想要的:输出中的文本被转换为较差的图像,并且不再可以选择。我尝试了Ghostscript: gs -sOutputFile=output.pdf \ -q -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=pdfwrite \ -dCompatibilityLevel=1.3 \ -dPDFSETTINGS=/screen \ -dEmbedAllFonts=true \ -dSubsetFonts=true \ -sColorConversionStrategy=/Mono \ -sColorConversionStrategyForImages=/Mono \ -sProcessColorModel=/DeviceGray \ $1 但是它给了我以下错误信息: ./script.sh: 19: ./script.sh: output.pdf: not found 还有其他创建文件的方法吗?

3
env,setenv,export和何时使用之间有什么区别?
最近,我注意到我们有3个设置环境变量的选项: export envVar1=1 setenv envVar2=2 env envVAr3=3 如果还有其他方法,请赐教。 我什么时候比另一个更喜欢?请提出准则。 至于外壳兼容性,哪一个是最广泛的(涵盖更多的外壳方言)? 我已经注意到了这个答案,但是我希望扩大使用范围env和使用偏好指南。

2
运行ssh命令时如何设置PATH?
假设用户具有/bin/bash作为shell的权限/etc/passwd。然后ssh user@host command使用Bash运行命令。但是,该外壳既不是登录名也不是交互式的,这意味着也~/.bash_profile没有~/.bashrc来源。在那种情况下,如何设置PATH环境变量,以便可以找到并执行可执行文件?是否建议在实际命令前加上前缀source ~/.bashrc?
18 bash  ssh 

5
如果未定义变量,请避免运行脚本
我有一个脚本看起来像: c=0 for f in */*; do cp -v "$f" "/myhome/CE$(printf '%0*d' 2 $BATCHNUM)-new-stuctures_extracted/test-$(printf '%0*d' 5 $c)" c=$((c=c+1)) done 但是,用户必须提供一个调用BATCHNUM的变量,否则我需要强制该脚本停止运行。如果我也可以强制停止调用此脚本的脚本(甚至是调用#2脚本的#1脚本也要停止),那会更好。

4
如何在Linux命令行提示符下显示主机名
我有几个虚拟机,现在我的命令行提示符如下-bash-3.2$:在每个VM上都相同,因为它不包含主机名。hostname在执行任何操作之前,我需要始终查看正在使用的VM 。如何将主机名添加到Shell提示符? ENV:CentOS / ssh
18 bash  prompt  hostname 

3
bash globstar匹配
我有这个目录结构: ~/tmp/globstar ɀ find dir -type f dir/file.ext dir/subdir1/file.ext dir/subdir2/file.ext 并且,globstar在Bash中启用该选项后,我可以说: ~/tmp/globstar ɀ ls -1 dir/**/*.ext dir/subdir1/file.ext dir/subdir2/file.ext 我的问题是:为什么dir/file.ext从此列表中排除? Bash手册这样说globstar: 如果设置,则在文件名扩展上下文中使用的模式“ **”将匹配所有文件以及零个或多个目录和子目录。如果模式后跟一个'/',则仅目录和子目录匹配。 在本段中,“ 零 ”给我留下dir/file.ext应有的印象;除非我希望错过一些东西。
18 bash  wildcards 

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.