⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bash.txt

📁 基于LINUX操作系统下的各种详细配置(如FTP
💻 TXT
📖 第 1 页 / 共 4 页
字号:
  name=value 

  例如说: 

  MYHOST="foxman" 

  而要使用它时,则是加个"$"符号。 

  echo $MYHOST 

  *************************

  位置参数(Positional Parameters) 

  *************************

  所谓的位置参数便是0,1,2,3,4,5,6,7,8,9...。使用时,用$0,$1,$2...。 
  位置参数是当script被载入时,后面所附加的参数。$0是本身,$1则为第一个参数,$2为第二个,依此类推。而当Positional 
Parameters被function所使用时,它们会被暂时取代(下一节会介绍function)。 

  例如以下这个script: 
  #!/bin/sh 
  # Filename : position 
  echo $0 
  echo $1 

  执行时: 
  [foxman@foxman bash]# ./position abc 
  ./position 
  abc 

  当位置参数超过两位数时,有特别的方法来展开,称为Expansion。 

  *************************

  特殊参数(Speical Parameters) 
  这些符号,非常不人性,对新手来说很困扰。但上手后,会觉得方便无比,有些如果您看不懂的话,就--算了,不用浪费太多时间在
上面。 

  *************************

  * 星号 
  将Positional Parameters合成一个参数,其间隔为IFS内定参数的第一个字元(见内建变数一节)。 
  例: 
  #!/bin/sh 
  # starsig 
  echo $* 

  执行: 
  [foxman@foxman bash]# starsig a b c d e f g 
  a b c d e f g 

  *************************

  @ at符号 
  与*星号类同。不同之处在于不参照IFS。 

  例: 
  #!/bin/sh 
  # atsig 
  echo $@ 

  执行: 
  [foxman@foxman bash]# atsig a b c d e f g 
  a b c d e f g 


  *************************

  # 井字号 
  展开Positional parameters的数量。 

  例: 
  #!/bin/sh 
  # poundsig 
  echo $# 

  执行 
  [foxman@foxman bash]# poundsig a b c d e f g 
  7 

  *************************

  ? 问号 
  最近执行的foreground pipeline的状态。 


  *************************

  - 减号 
  最近执行的foreground pipeline的选项参数。 

  *************************
  $ 钱钱钱 
  本身的Process ID。 

  [foxman@foxman bash]# ps ax | grep bash 
  1635 p1 S  0:00 /bin/bash 

  [foxman@foxman bash]# echo $$ 
  1635 

  *************************

  ! 惊号 
  最近执行背景命令的Process ID。 

  *************************

  0 零 
  在Positional Parameters一部份已经说明过了,是执行的shell script本身。但如果是用"bash -c",则$0被设为第一个参数。 

  [foxman@foxman bash]# echo $0 
  /bin/bash 

  *************************

  _ 底线符号 
  显示出最后一个执行的命令。 

  [foxman@foxman bash]# echo $_ 
  bash 


  *************************

  内建变数(Shell Variables) 
  Bash有许多内建变数,像PATH、HOME、ENV......等等。这些内建变数将在另一节中,专门一一说明。
  函数function 

  [ function ] name () { list; } 
  function的参数是Positional Paraments。 

  例 
#!/bin/sh 

function func() { 
 echo $1 
 echo $2 
 return 1 
} 

func "Hello" "function" 

  局部变数可用local来宣告。 

  函数可export,使用下一层的shell可以使用。 

  函数可递,没有递层数的限制。 

  Bash内建指令集 

  以下的命令,大部份都没有使用例,您可能会看不出所以然,摸不著头脑。在我加入例说明前,建议您"man bash",然后自己实际操作
一次。 

  *************************
  : [arguments] 
  不做任何事,除了[arguments]一些参数展开及一些特定重导向的作业外。 

  永远返回零。它的用法跟true一样。 

  *************************
  . filename [arguments] 
  source filename [arguments] 
  由filename中读取命令,并执行。 
  您会在/etc/rc.d/*中发现很多 
  . /xxxx 
  的指令,而xxxx的permission都不是可执行的。事实上,在tcsh中,需要用 
  source /xxxx 
  来做同样的指令。 
  注意到"."的后面是有空格的(比较一下". /"跟"./",不一样)。filename是内含指令的纯文字档即可,无须chmod 755 filename。 

  例 
  filename : my_source 
  DEV=lo 
  IP=127.0.0.1 
  NETMASK=255.0.0.0 
  BROADCAST=127.255.255.255 

  ifconfig $IP netmask $NETMASK broadcast $BROADCAST dev $DEV 

  接下来 
  . my_source 
  或 
  source my_source 

  便可执行该script,而不需要"chmod 755 my_source" 

  *************************
  alias [name[=value] ...] 
  昵称命令 
  例如您如果来自DOS的世界,对UNIX的指令不习惯,可用alias来修改,以符合您的习惯。 

  例 
  alias ls="ls --color" 
  alias dir="ls" 
  alias cd..="cd .." 
  alias copy="cp -f" # dangerous, recommend, "cp -i" 
  alias del="rm -f" # dangerous, recommend, "rm -i" 
  alias move="mv -f" # dangerous, recommend, "mv -i" 
  alias md="mkdir" 
  alias rd="rmdir" 
  *************************
  unalias [-a] [name ...] 
  unalias取消alias的设定。"unalias -a"将全部alias取消。 

  例 
  unalias copy 

  *************************
  bg [jobspec] 
  将指定任务放到背景中,如果jobspec未指定,内定为目前的。 

  *************************
  fg [jobspec] 
  将指定任务放到前景中,如果jobsepc没有指定,那么内定为目前的。 

  *************************
  jobs [-lnp] [ jobspec ... ] 
  第一种形式列出目前正在工作的任务。 
  -l : 除了列出一般资讯外,还列出Process IDs。 
  -p : 仅列出该工作群"首脑"(Process group leader)的Process ID. 
  -n : 则仅列出有改变的jobs的状态。 
  如果给定jobspec,输出资讯则只有该jobspec。 

  返回值为零,除非有非法的选项发生。 

  jobs -x command [ args ... ] 

  如果使用第二种形式(-x),jobs取代指定的command及args,并执行返回其Exit Status。 

  *************************
  kill [-s sigspec | -sigspec] [pid | jobspec] ... 
  将sigspec的信号送到pid或jobspec。 
  sigspec可以是SIGKILL/KILL这种形式或是信号号码。如果sigspec是signal name,则大小写无关,而且可以没有SIG。 
  kill -l [signum] 
  列出信号名称。 

  [foxman@foxman bash]# kill -l 
  1) SIGHUP    2) SIGINT    3) SIGQUIT   4) SIGILL 
  5) SIGTRAP   6) SIGIOT    7) SIGBUS    8) SIGFPE 
  9) SIGKILL   10) SIGUSR1   11) SIGSEGV   12) SIGUSR2 
  13) SIGPIPE   14) SIGALRM   15) SIGTERM   17) SIGCHLD 
  18) SIGCONT   19) SIGSTOP   20) SIGTSTP   21) SIGTTIN 
  22) SIGTTOU   23) SIGURG   24) SIGXCPU   25) SIGXFSZ 
  26) SIGVTALRM  27) SIGPROF   28) SIGWINCH  29) SIGIO 
  30) SIGPWR 

  *************************
  wait [n] 
  等待指定的行程,并返回其结束状态。n可以是个jobspec或Process ID。如果n未指定,则等待所有的子行程,及返回值为零。若n为不存
在的job或process,则返回127。否则,返回值为最后一个job/process的Exit Status。 

  *************************
  bind [-m keymap] [-lvd] [-q name] 
  bind [-m keymap] -f filename 
  bind [-m keymap] keyseq:function-name 
  显示出目前readline的按键及链结函数设定或是巨集。 

  -m keymap : 设定keymap binding。 
  -l : 显示出所有readline function的名称。 
  -v : 显示出目前的function name及bindings。 
  -d : 显示出function name及bindings。 
  -f filename : 从filename读取key bindings。 
  -q function : 询问那个按键触发function。 

  *************************
  break [n] 
  跳出控制回圈for/while/until中使用。如果有指定n,则跳出n层。n必须是大于等于1。若n大于巢状圈数,则所有的圈都会跳离。返回值
回零。 


  *************************
  continue [n] 
  还原控制回圈for/while/until中使用。如果有指定n,则返回n层。n必须是大于等于1。若n大于巢状圈数,则还原到最上层。返回值回零。 

  *************************
  exit [n] 
  离开程式。n是Exit Status。 

  *************************
  return [n] 
  在function中使用。n为返回值,其作用与Exit Status一样。 

  *************************
  builtin shell-builtin [arguments] 
  执行内建函数。当您定义了与内建函数相同的指令时,可用此命令来执行内建函数。 

  *************************
  cd [dir] 
  更换目录到dir。如果没有指定,内定为HOME所指定的目录。 

  *************************
  command [-pVv] command [arg ...] 
  用command指定可取消正常的shell function寻找。只有内建命令及在PATH中找得到的才会被执行。"-p"选项,搜寻命令的方式是用PATH来
找。"-V"或"-v"选项,会显示出该命令的一些简约描述。 

  *************************
  declare [-frxi] [name[=value]] 
  typeset [-frxi] [name[=value]] 
  宣告参数并给它们设定属性。如果没有给定名称,将会显示各参数值。 

  -f : 仅使用函数名称。 
  -r : 将name设为readonly。 
  -x : 将name输出给后续环境使用。 
  -i : 该参数被设为integer来使用,可用于算术表述。 

  用"+"时,关闭该属性。 

  *************************
  dirs [-l] [+/-n] 
  显示目前记忆的目录。目录可透过pushd/popd来操作。 

  +n : 显示开始的记录n个。 
  -n : 显示结尾的记录n个。 
  -l : 显示较多的资讯。 

  *************************
  echo [-neE] [arg ...] 
  输出显示args,由空白分隔。返回值永为零。 

  -n : 不跳行。 
  -e : 启动""符号的解译。 
  -E : 将ESC解译功能取消。 

  "a" : alert(bell),发出声响。 
  "b" : backspace,倒退。 
  "c" : suppress trailing newline,不跳行。 
  "f" : form feed,跳行跳格。 
  "n" : new line,新行。 
  "r" : carriage return,回到行起点。 
  "t" : horizontal tab,水平跳位。 
  "v" : vertical tab,垂直跳位。 
  "" : 输出""。 
  "nnn" : 输出ASCII Code号码nnn(八进位)。 

  *************************
  enable [-n] [-all] [name ...] 
  启动或关闭内建函数命令。使用"-n"将所有指定命令皆关闭,否则都是启动的。如果只有"-n"参数,它将会显示所有关闭的函数。如果只
有"-all",它将会显示所有内建命令。 

  *************************
  eval [arg ...] 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -