Questions tagged «shell»

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

4
sudo为什么忽略别名?
我正在运行Ubuntu 10.04,并upstart用于守护程序管理。我的企业应用程序作为守护程序运行,由于各种特权,必须作为root用户运行。例如: sudo start my-application-long-ID sudo stop my-application-long-ID etc 我想介绍一个alias将这些命令缩写为: alias startapp='sudo start my-application-long-ID' 并以它的方式运行它startapp,但我希望别名中没有sudo。 alias startapp='start my-application-long-ID' 使用时不sudo startapp返回,返回sudo: startapp: command not found。 但是,当我添加别名时: alias sudo='sudo ' sudo startapp 现在可以使用,但我仍然好奇sudo为什么忽略别名。
22 shell  sudo  alias 

17
如何找到最少字符的行
我正在使用任何常规UNIX命令编写Shell脚本。我必须检索具有最少字符(包括空格)的行。最多可以有20条线。 我知道我可以head -$L | tail -1 | wc -m用来查找第L行的字符数。问题是,我想到的唯一方法是使用手动编写一堆if语句,比较值的方法。 示例数据: seven/7 4for 8 eight? five! 4for由于该行的字符最少,将返回。 在我的情况下,如果多行的长度最短,则应返回一行。只要选择最小长度,就无关紧要。但是我看不到在其他情况下向其他用户显示两种方式的危害。

3
将变量作为字符串或整数进行比较时,有什么主要区别
出于好奇,在进行bash变量比较(其值为an integer)时,可以对照声明为an int或as的一些预定义值对其进行测试string。 示例脚本: #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2() { [[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int" } f1 $1 f2 $1 输出: $ ./param.sh 1 f1: "1" compared as string f2: "1" …
22 bash  shell  test 

3
Unix工作目录中的Tilde(〜)
因此,我在UNIX环境中工作,我注意到在工作目录(距离UNIX主目录数英里)内,有一个~。 现在,过去,我rm -rf ~从工作目录中进行操作,最终彻底删除了我的主目录,并且不得不涉及IT。 我不想再做一次。同时,我想知道 为什么~在我的工作目录中创建?保存时手指是否滑倒(:w!但是会发生什么:w~?!) 在签入之前,有一个脚本会查找p4无法识别的其他文件或文件夹,因此~可能会导致问题。那么,如何才能~从工作目录中删除,同时又不删除我的家? 我确实有一个del代替我使用的备份命令rm -rf。它只是将东西放在一个临时位置。我可以使用它并摆脱它~。但是我更想知道为什么会这样,以及如何删除它?
22 shell  filenames  home 


4
Linux如何处理Shell脚本?
对于这个问题,让我们考虑一个bash shell脚本,尽管这个问题必须适用于所有类型的shell脚本。 当某人执行Shell脚本时,Linux是一次将所有脚本加载(可能是加载到内存中)还是一次(一行一行地)读取脚本命令? 换句话说,如果我执行一个shell脚本并在执行完成之前将其删除,该执行将终止还是继续进行?

2
除非手动启动,否则Bash不会读取.bashrc
bash.bashrc除非我bash从终端手动运行,否则不会从交互式终端获取信息: $ bash 或手动获取: $ source ./.bashrc 或正在运行: $ st -e bash 我希望这是一些有用的输出: $ echo $TERM st-256color $ echo $SHELL /bin/sh $ readlink /bin/sh bash $ shopt login_shell login_shell off 我使用的是CRUX Linux 3.0,并且使用dwm和st。我尝试使用.bash_profile并且.profile没有成功。 有任何想法吗?
22 linux  bash  shell  bashrc 

4
为什么在.bashrc / .bash_profile中没有shebang?
简单的查询:我刚刚意识到我从未见过脚本顶部的shebang.bashrc,这使我认为系统在登录(${SHELL})时使用默认的shell来提供源代码。我正在考虑这种情况的原因,即使用默认外壳程序以外的其他内容来运行登录脚本是否被视为一种坏习惯。


4
为什么有些命令将终端“挂起”直到完成?
有时您从终端运行一个程序,例如lxpanel†。终端不会将您带回到提示,它将挂起。您可以按Ctrl+ C返回到提示,但这将终止lxpanel。但是,按Alt+ F2(会弹出一个窗口以接受命令)并正常运行lxpanel。 为什么是这样?从终端运行命令和按Alt+ 时出现的“运行”窗口有什么不同F2? †这里仅以lxpanel为例。我在多个程序中都经历过

8
使用sed将换行符转换为空格
假设我有一个shell变量$string,其中包含一些带有多个换行符的文本,例如: string="this is a test" 我想将此字符串转换为新的字符串new_string,其中所有换行符都转换为空格: new_string="this is a test" 我试过了: print $string | sed 's/\n/ /g' 但这没用 我也想知道是否有一种使用 perl -0777 's/\n/ /g'或命令的方式tr?
22 shell  sed 


5
导出一个env变量以在所有子shell上可用,并且可以对其进行修改吗?
假设我有 export MY_VAR=0 在~/.bashrc。 我有一个打开的gnome终端,在这个终端中,我将$MY_VARvalue 更改为200。所以,如果我愿意 echo $MY_VAR 显示在此终端200中。 现在,我在gnome终端中打开了另一个标签,然后执行 echo $MY_VAR ...而不是200,我有0。 当终端修改环境变量,并使此修改(设置为200)可用于所有后续子shell等时,我该怎么做才能保持200的值?这可能吗?

11
UNIX中用于减去日期的工具
Solaris UNIX中是否有任何工具(因此没有可用的GNU工具)来减去日期?我知道在Linux中,我们gawk可以从另一个日期中减去一个日期。但是在Solaris中,我们拥有的最大值nawk(已改进awk)无法执行日期计算。我也不能使用perl。 有什么办法可以进行日期计算20100909 - 20001010吗? 更新:bc能够执行日期计算吗?
22 shell  solaris  awk  utilities  date 


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.