- 浏览: 2181003 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
今天散仙,要说的,是关于linux中的环境变量的使用,环境变量是用来存储有关shell会话和工作环境的信息,它允许在内存中访问存储数据,以便运行在shell上的程序和脚本访问。
在最常用的bash shell里,环境变量共分为二大类,一类是全局变量,另一类是局部变量。
全局变量:不仅对shell会话,可见,而且对所有的shell创建的子进程也可见。
局部变量:只对创建他们的shell可见。
在linux中(散仙这里是centos6.5),使用printenv,查看全局变量:
我们可以采用echo $变量名,来查看具体的环境变量值,注意变量名区分大小写
使用set命令,可以查看,全局变量和局部变量的并集
设置局部环境变量:使用=号赋值,就可以,注意=号左右不要有空格(这是新手容易犯的错误)
如果环境变量的值之间, 有空格,那么需要用单引号或者双引号,引起来。
每个会话shell设置的变量,仅仅在当前的shell里有效,如果开启新的会话,原来的设置会失效,但是我们退出后,又可以正常使用了:
设置全局环境变量我们需要使用export命令,来激活它,这样以来,它就会对所有的shell会话,生效:
卸载一个环境变量我们需要unset命令:
注意,如果是全局变量,卸载只会在当前的shell有效,如果退出当前的shell后,那么这个变量依然有效。
在所有的环境变量里$PATH这个变量,非常重要,它是系统中查找的路径,这说明所有的shell脚本都会在这里面的几个目录下查找,PATH的每个目录都由冒号分隔,你可以通过在PATH变量的末尾,加个冒号来引用新添加的环境变量目录,这一点散仙相信,配置过JAVA系列的环境变量的工程师们都有体会。
那么为什么需要PATH环境变量了,如果有了这个全局的变量,那么我们就可以在任何位置,执行这个脚本了:
假如,我在/root/test/下面有个,a.sh脚本,现在我想在任何位置都直接能够引用到这个脚本,该怎么做,此时,环境变量就该大显身手了,我们只需要把这个/root/test/配置到系统的PATH里面即可:
当登陆一个linux系统时,bash shell依次会从4个不同的地方启动文件里的读取命令,顺序是:
1: /etc/profile
2:$HOME/.bash_profile
3:$HOME/.bash_login
4:$HOME/.profile
根目录下的几个文件以.开头的文件是隐藏的,我们可以使用ls -lFa查看:
除此之外,在/etc/profile.d/下的文件,会作为默认的加载的启动目录,这下面的所有的shell脚本都会被登陆时,激活,利用这个特性,我们可以将我们在系统登陆时,需要加载的脚本配置到这里,散仙在这里就是把JAVA系列有关的所有的HOME单独配置在这里的java.sh下:
另外一个很强大的功能是,通过一个可变数组,给某个变量赋值,记住=号左右不允许有空格出现,取值,使用${mytest[number]}
*号,可以显示所有的值,改变值使用mytest[number]=value即可。
如果想卸载某个值,可以使用unset mytest[number]即可。
最后介绍一个,如何使用命令别名来简化shell命令写法,别名功能类似我们常用的SQL里面的as别名一样,可以给一个很长的表名,做一个简化的别名。
使用alias -p命令,查看系统默认的别名:
当然我们也可以定义自己的别名命令,例如散仙把lx='ls -lFa'可以显示隐藏文件的命令:
alias命令非常好用,是我们简化一长串命令的神器。
如果我们觉得这个命令,比较符合自己的胃口,我们可以在/etc/profile.d/目录下,新建自己的alias.sh脚本,里面定义自己的别名风格,这样以来,就可以在全局的shell会话里起作用了。
在最常用的bash shell里,环境变量共分为二大类,一类是全局变量,另一类是局部变量。
全局变量:不仅对shell会话,可见,而且对所有的shell创建的子进程也可见。
局部变量:只对创建他们的shell可见。
在linux中(散仙这里是centos6.5),使用printenv,查看全局变量:
[root@h1 ~]# printenv HOSTNAME=h1 TERM=linux SHELL=/bin/bash HADOOP_HOME=/home/search/hadoop HISTSIZE=1000 SSH_CLIENT=192.168.46.22 61369 22 SSH_TTY=/dev/pts/0 ANT_HOME=/usr/local/ant USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: MAVEN_HOME=/usr/local/maven MAIL=/var/spool/mail/root PATH=.:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin:/home/search/hadoop/bin:/home/search/hadoop/sbin:/usr/local/ant/bin:/usr/local/maven/bin:/home/search/hive/bin:/home/search/hive/conf:/root/bin HIVE_HOME=/home/search/hive PWD=/root JAVA_HOME=/usr/local/jdk LANG=zh_CN.UTF-8 HADOOP_CONF_DIR=/home/search/hadoop/etc/hadoop/ HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root CLASSPATH=.:.::/usr/local/jdk/lib:/usr/local/jdk/jre/lib:/home/search/hadoop/lib:/usr/local/ant/lib:/usr/local/maven/lib:/home/search/hive/lib SSH_CONNECTION=192.168.46.22 61369 192.168.46.32 22 LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/usr/bin/printenv [root@h1 ~]#
我们可以采用echo $变量名,来查看具体的环境变量值,注意变量名区分大小写
[root@h1 ~]# echo $HIVE_HOME /home/search/hive [root@h1 ~]# echo $HADOOP_HOME /home/search/hadoop [root@h1 ~]# echo $JAVA_HOME /usr/local/jdk [root@h1 ~]# echo $java_home [root@h1 ~]#
使用set命令,可以查看,全局变量和局部变量的并集
[root@h1 ~]# set ANT_HOME=/usr/local/ant BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu") BASH_VERSION='4.1.2(1)-release' CLASSPATH=.:.::/usr/local/jdk/lib:/usr/local/jdk/jre/lib:/home/search/hadoop/lib:/usr/local/ant/lib:/usr/local/maven/lib:/home/search/hive/lib COLORS=/etc/DIR_COLORS COLUMNS=176 DIRSTACK=() EUID=0 GROUPS=() G_BROKEN_FILENAMES=1 HADOOP_CONF_DIR=/home/search/hadoop/etc/hadoop/ HADOOP_HOME=/home/search/hadoop HISTCONTROL=ignoredups HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HIVE_HOME=/home/search/hive HOME=/root HOSTNAME=h1 HOSTTYPE=x86_64 ID=0 IFS=$' \t\n' JAVA_HOME=/usr/local/jdk LANG=zh_CN.UTF-8 LESSOPEN='|/usr/bin/lesspipe.sh %s' LINES=56 LOGNAME=root LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:' MACHTYPE=x86_64-redhat-linux-gnu MAIL=/var/spool/mail/root MAILCHECK=60 MAVEN_HOME=/usr/local/maven OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=.:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin:/home/search/hadoop/bin:/home/search/hadoop/sbin:/usr/local/ant/bin:/usr/local/maven/bin:/home/search/hive/bin:/home/search/hive/conf:/root/bin PIPESTATUS=([0]="0") PPID=1129 PS1='[\u@\h \W]\$ ' PS2='> ' PS4='+ ' PWD=/root SHELL=/bin/bash SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor SHLVL=1 SSH_CLIENT='192.168.46.22 61369 22' SSH_CONNECTION='192.168.46.22 61369 192.168.46.32 22' SSH_TTY=/dev/pts/0 TERM=linux TMOUT=3600 UID=0 USER=root _=clear colors=/etc/DIR_COLORS [root@h1 ~]#
设置局部环境变量:使用=号赋值,就可以,注意=号左右不要有空格(这是新手容易犯的错误)
[root@h1 ~]# test=qindongliang [root@h1 ~]# echo $test qindongliang [root@h1 ~]# test = abc -bash: test: =: unary operator expected [root@h1 ~]#
如果环境变量的值之间, 有空格,那么需要用单引号或者双引号,引起来。
[root@h1 ~]# name=a yellow dog -bash: yellow: command not found [root@h1 ~]# name='a yellow dog' [root@h1 ~]# echo $name a yellow dog [root@h1 ~]# name2="a red dog" [root@h1 ~]# echo $name2 a red dog [root@h1 ~]#
每个会话shell设置的变量,仅仅在当前的shell里有效,如果开启新的会话,原来的设置会失效,但是我们退出后,又可以正常使用了:
[root@h1 ~]# name=a yellow dog -bash: yellow: command not found [root@h1 ~]# name='a yellow dog' [root@h1 ~]# echo $name a yellow dog [root@h1 ~]# name2="a red dog" [root@h1 ~]# echo $name2 a red dog [root@h1 ~]# bash [root@h1 ~]# echo $name [root@h1 ~]# exit exit [root@h1 ~]# echo $name2 a red dog [root@h1 ~]#
设置全局环境变量我们需要使用export命令,来激活它,这样以来,它就会对所有的shell会话,生效:
[root@h1 ~]# color=red [root@h1 ~]# echo $color red [root@h1 ~]# exp expand export expr [root@h1 ~]# exp expand export expr [root@h1 ~]# export color [root@h1 ~]# echo $color red [root@h1 ~]# bash [root@h1 ~]# echo $color red [root@h1 ~]# bash [root@h1 ~]# echo $color red [root@h1 ~]#
卸载一个环境变量我们需要unset命令:
[root@h1 ~]# test=abc [root@h1 ~]# echo $test abc [root@h1 ~]# unset test [root@h1 ~]# echo $test [root@h1 ~]#
注意,如果是全局变量,卸载只会在当前的shell有效,如果退出当前的shell后,那么这个变量依然有效。
在所有的环境变量里$PATH这个变量,非常重要,它是系统中查找的路径,这说明所有的shell脚本都会在这里面的几个目录下查找,PATH的每个目录都由冒号分隔,你可以通过在PATH变量的末尾,加个冒号来引用新添加的环境变量目录,这一点散仙相信,配置过JAVA系列的环境变量的工程师们都有体会。
[root@h1 ~]# echo $PATH .:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin:/home/search/hadoop/bin:/home/search/hadoop/sbin:/usr/local/ant/bin:/usr/local/maven/bin:/home/search/hive/bin:/home/search/hive/conf:/root/bin [root@h1 ~]#
那么为什么需要PATH环境变量了,如果有了这个全局的变量,那么我们就可以在任何位置,执行这个脚本了:
假如,我在/root/test/下面有个,a.sh脚本,现在我想在任何位置都直接能够引用到这个脚本,该怎么做,此时,环境变量就该大显身手了,我们只需要把这个/root/test/配置到系统的PATH里面即可:
-rw-r--r-- 1 root root 23 8月 5 01:44 a.sh [root@h1 test]# echo $PATH .:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin:/home/search/hadoop/bin:/home/search/hadoop/sbin:/usr/local/ant/bin:/usr/local/maven/bin:/home/search/hive/bin:/home/search/hive/conf:/root/bin:/home/search/test [root@h1 test]# PATH=$PATH:/root/t test/ tsethadoop/ [root@h1 test]# PATH=$PATH:/root/test/ [root@h1 test]# echo $PATH .:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin:/home/search/hadoop/bin:/home/search/hadoop/sbin:/usr/local/ant/bin:/usr/local/maven/bin:/home/search/hive/bin:/home/search/hive/conf:/root/bin:/home/search/test:/root/test/ [root@h1 test]# sh a.sh hellow World! [root@h1 test]# cd /etc/ [root@h1 etc]# pwd /etc [root@h1 etc]# sh a.sh hellow World! [root@h1 etc]# cd /home/ [root@h1 home]# sh a.sh hellow World! [root@h1 home]#
当登陆一个linux系统时,bash shell依次会从4个不同的地方启动文件里的读取命令,顺序是:
1: /etc/profile
2:$HOME/.bash_profile
3:$HOME/.bash_login
4:$HOME/.profile
根目录下的几个文件以.开头的文件是隐藏的,我们可以使用ls -lFa查看:
[root@h1 ~]# ls -alF 总用量 328528 dr-xr-x---. 12 root root 4096 8月 5 01:44 ./ dr-xr-xr-x. 22 root root 4096 8月 5 01:12 ../ -rw-r--r-- 1 root root 143775368 7月 28 19:30 abc1.txt -rw-------. 1 root root 1087 6月 13 19:06 anaconda-ks.cfg -rw-------. 1 root root 10215 8月 5 01:32 .bash_history -rw-r--r--. 1 root root 18 5月 20 2009 .bash_logout -rw-r--r--. 1 root root 176 5月 20 2009 .bash_profile -rw-r--r--. 1 root root 119 6月 16 21:12 .bashrc -rw-r--r-- 1 root root 52 7月 31 21:29 count2.txt -rw-r--r-- 1 root root 52 7月 31 19:46 count.txt -rw-r--r--. 1 root root 100 9月 23 2004 .cshrc -rw-r--r--. 1 root root 96183833 6月 9 17:27 hadoop-2.2.0.tar.gz -rw-r--r-- 1 root root 1 7月 31 21:25 hh.txt drwxr-xr-x 3 root root 4096 7月 29 04:47 hivesrc/ -rw-r--r--. 1 root root 2111 6月 16 13:10 initserver.sh -rw-r--r--. 1 root root 7995 6月 13 19:06 install.log -rw-r--r--. 1 root root 3384 6月 13 19:06 install.log.syslog drwxr-xr-x 2 root root 4096 7月 31 21:19 intest/ lrwxrwxrwx 1 root root 12 7月 31 21:45 jdk -> jdk1.7.0_25// drwxr-xr-x. 8 search 143 4096 6月 6 2013 jdk1.7.0_25/ -rwx------. 1 root root 96316511 11月 20 2013 jdk-7u25-linux-x64.gz* drwxr-xr-x 3 root root 4096 7月 31 21:33 li/ drwxr-xr-x 3 root root 4096 7月 9 04:08 lo/ drwxr-xr-x 3 root root 4096 7月 9 04:08 login/ drwxr-xr-x 3 root root 4096 7月 29 04:11 .m2/ -rw------- 1 root root 727 7月 29 01:44 .mysql_history -rw-r--r-- 1 root root 1048 6月 19 03:31 setlimit.sh drwx------. 2 root root 4096 6月 16 21:00 .ssh/ -rw-r--r--. 1 root root 129 12月 4 2004 .tcshrc drwxr-xr-x 2 root root 4096 8月 5 01:44 test/ drwxr-xr-x 3 root root 4096 6月 20 02:51 tsethadoop/ -rw------- 1
除此之外,在/etc/profile.d/下的文件,会作为默认的加载的启动目录,这下面的所有的shell脚本都会被登陆时,激活,利用这个特性,我们可以将我们在系统登陆时,需要加载的脚本配置到这里,散仙在这里就是把JAVA系列有关的所有的HOME单独配置在这里的java.sh下:
export PATH=.:$PATH export JAVA_HOME="/usr/local/jdk" export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/home/search/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/ export CLASSPATH=.:$CLASSPATH:$HADOOP_HOME/lib export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export ANT_HOME=/usr/local/ant export CLASSPATH=$CLASSPATH:$ANT_HOME/lib export PATH=$PATH:$ANT_HOME/bin export MAVEN_HOME="/usr/local/maven" export CLASSPATH=$CLASSPATH:$MAVEN_HOME/lib export PATH=$PATH:$MAVEN_HOME/bin export HIVE_HOME=/home/search/hive export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/conf
[root@h1 profile.d]# cd /etc/profile.d/ [root@h1 profile.d]# ll 总用量 48 -rw-r--r--. 1 root root 1127 10月 17 2013 colorls.csh -rw-r--r--. 1 root root 1143 10月 17 2013 colorls.sh -rw-r--r--. 1 root root 192 8月 27 2013 glib2.csh -rw-r--r--. 1 root root 192 8月 27 2013 glib2.sh -rwxr-xr-x 1 root root 694 7月 29 19:13 java.sh -rw-r--r--. 1 root root 1741 11月 23 2013 lang.csh -rw-r--r--. 1 root root 2706 11月 23 2013 lang.sh -rw-r--r--. 1 root root 122 2月 7 2007 less.csh -rw-r--r--. 1 root root 108 2月 7 2007 less.sh -rw-r--r--. 1 root root 97 4月 5 2012 vim.csh -rw-r--r--. 1 root root 269 4月 5 2012 vim.sh -rw-r--r--. 1 root root 169 5月 20 2009 which2.sh [root@h1 profile.d]# ls -laF 总用量 56 drwxr-xr-x. 2 root root 4096 8月 5 01:58 ./ drwxr-xr-x. 61 root root 4096 8月 5 01:12 ../ -rw-r--r--. 1 root root 1127 10月 17 2013 colorls.csh -rw-r--r--. 1 root root 1143 10月 17 2013 colorls.sh -rw-r--r--. 1 root root 192 8月 27 2013 glib2.csh -rw-r--r--. 1 root root 192 8月 27 2013 glib2.sh -rwxr-xr-x 1 root root 694 7月 29 19:13 java.sh* -rw-r--r--. 1 root root 1741 11月 23 2013 lang.csh -rw-r--r--. 1 root root 2706 11月 23 2013 lang.sh -rw-r--r--. 1 root root 122 2月 7 2007 less.csh -rw-r--r--. 1 root root 108 2月 7 2007 less.sh -rw-r--r--. 1 root root 97 4月 5 2012 vim.csh -rw-r--r--. 1 root root 269 4月 5 2012 vim.sh -rw-r--r--. 1 root root 169 5月 20 2009 which2.sh [root@h1 profile.d]#
另外一个很强大的功能是,通过一个可变数组,给某个变量赋值,记住=号左右不允许有空格出现,取值,使用${mytest[number]}
[root@h1 ~]# mytest=(one two three four) [root@h1 ~]# echo $mytest one [root@h1 ~]# echo ${mytest[0]} one [root@h1 ~]# echo ${mytest[1]} two [root@h1 ~]# echo ${mytest[3]} four [root@h1 ~]# echo ${mytest[*]} one two three four [root@h1 ~]#
*号,可以显示所有的值,改变值使用mytest[number]=value即可。
如果想卸载某个值,可以使用unset mytest[number]即可。
最后介绍一个,如何使用命令别名来简化shell命令写法,别名功能类似我们常用的SQL里面的as别名一样,可以给一个很长的表名,做一个简化的别名。
使用alias -p命令,查看系统默认的别名:
[root@h1 ~]# alias -p alias cp='cp -f' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -f' alias rm='rm -f' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@h1 ~]#
当然我们也可以定义自己的别名命令,例如散仙把lx='ls -lFa'可以显示隐藏文件的命令:
[root@h1 ~]# alias lx='ls -iFl' [root@h1 ~]# lx 总用量 328468 655837 -rw-r--r-- 1 root root 143775368 7月 28 19:30 abc1.txt 659103 -rw-------. 1 root root 1087 6月 13 19:06 anaconda-ks.cfg 663819 -rw-r--r-- 1 root root 52 7月 31 21:29 count2.txt 674329 -rw-r--r-- 1 root root 52 7月 31 19:46 count.txt 660638 -rw-r--r--. 1 root root 96183833 6月 9 17:27 hadoop-2.2.0.tar.gz 663822 -rw-r--r-- 1 root root 1 7月 31 21:25 hh.txt 663837 drwxr-xr-x 3 root root 4096 7月 29 04:47 hivesrc/ 660644 -rw-r--r--. 1 root root 2111 6月 16 13:10 initserver.sh 654083 -rw-r--r--. 1 root root 7995 6月 13 19:06 install.log 654084 -rw-r--r--. 1 root root 3384 6月 13 19:06 install.log.syslog 785488 drwxr-xr-x 2 root root 4096 7月 31 21:19 intest/ 674328 lrwxrwxrwx 1 root root 12 7月 31 21:45 jdk -> jdk1.7.0_25// 659106 drwxr-xr-x. 8 search 143 4096 6月 6 2013 jdk1.7.0_25/ 659105 -rwx------. 1 root root 96316511 11月 20 2013 jdk-7u25-linux-x64.gz* 796184 drwxr-xr-x 3 root root 4096 7月 31 21:33 li/ 796042 drwxr-xr-x 3 root root 4096 7月 9 04:08 lo/ 663800 drwxr-xr-x 3 root root 4096 7月 9 04:08 login/ 663149 -rw-r--r-- 1 root root 1048 6月 19 03:31 setlimit.sh 674331 drwxr-xr-x 2 root root 4096 8月 5 01:44 test/ 663148 drwxr-xr-x 3 root root 4096 6月 20 02:51 tsethadoop/
alias命令非常好用,是我们简化一长串命令的神器。
如果我们觉得这个命令,比较符合自己的胃口,我们可以在/etc/profile.d/目录下,新建自己的alias.sh脚本,里面定义自己的别名风格,这样以来,就可以在全局的shell会话里起作用了。
发表评论
-
如何在shell中curl一个带变量的post请求
2016-11-04 14:24 13729有时候,我们想在一个shell中,执行一段脚本,循环post一 ... -
跟散仙学shell命令(八)
2014-08-06 18:49 2138本篇是散仙shell命令篇的最后一篇博客(后阶段会写shell ... -
跟散仙学shell命令(七)
2014-08-05 19:52 1715本篇主要写关于Linux的文件系统的管理,在使用linux时, ... -
跟散仙学shell命令(六)
2014-08-05 17:58 1835继上篇散仙写的Linux下环境变量的配置与使用,本篇散仙要写的 ... -
跟散仙学shell命令(四)
2014-08-01 21:46 1262本篇主要讲述命令如下 ... -
跟散仙学shell命令(三)
2014-08-01 21:17 1849本篇散仙主要讲一些,linux进程的管理,磁盘信息统计,CPU ... -
跟散仙学shell命令(二)
2014-08-01 20:31 1922(1)rm删除命令,删除文件或目录 rm -rf source ... -
跟散仙学shell命令(一)
2014-07-31 13:51 3214linux系统的重要性不言而喻了,好多项目都要部署到linux ...
相关推荐
在Android系统中,有时我们需要执行一些底层操作,如文件管理、系统调试或自动化测试,这时候就需要用到shell命令。本文将深入探讨如何在Android平台上执行shell命令,以及它在实际开发中的应用。 首先,Android...
**Shell命令解释器**是Linux操作系统中的核心组件之一,它是一个用户与系统交互的界面,让用户能够通过输入命令来执行各种系统操作。在Linux的世界里,shell不仅是一个命令行接口,还是一个强大的脚本编程语言,允许...
在Android系统中,有时我们需要执行一些底层操作,这时就可能会用到shell命令。shell命令是Linux或类Unix系统中的命令行工具,通过它们可以进行文件管理、系统控制、进程交互等众多操作。在Android这样的基于Linux...
在IT领域,Shell命令是Linux和Unix操作系统中的一个强大工具,它允许用户通过文本界面与操作系统进行交互。这本书“shell命令文档 中文版”提供了一个全面的指南,涵盖了所有基本到高级的Shell命令,这对于系统管理...
Java 调用 Shell 命令 在 Java 中调用 Shell 命令是非常常见的操作,特别是在需要执行系统命令或脚本时。在这个例子中,我们将看到如何使用 Java 调用 Shell 命令,并介绍相关的知识点。 Java 调用 Shell 命令的...
Android Debug Bridge(ADB)就是一个强大的工具,允许开发者从计算机上对连接的Android设备进行各种操作,包括发送shell命令。本篇将深入探讨如何在APK程序中执行Adb shell命令以及它与高级语言之间的调用关系。 ...
Linux Shell 命令解释步骤程序实现 Linux Shell 命令解释是 Linux 操作系统中最基本也是最重要的一部分,它负责处理用户与操作系统之间的交互动作,并且给出相应的操作系统的输出结果。 Shell 基本上是一个命令...
ubuntu_shell命令学习
Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是...
shell 命令的用法 Shell 命令是 Linux 操作系统中最基本也是最重要的工具之一,它提供了强大的命令行接口,能够帮助用户快速高效地完成各种任务。了解 shell 命令的用法是每一个 Linux 用户的必备知识。 1. cp ...
本单元实现了一个伪的Shell,可以用于在Android程序中执行Shell命令,如果需要Root权限,则在执行前,调用AskForRoot方法来获取用户的Root授权,如果不再需要在Root账号下执行命令,则调用ExitRoot方法来退出Root...
Linux Shell命令是Linux操作系统中用于执行各种操作的指令集,从文件管理到系统维护,Shell命令无所不包。学习Shell命令对于Linux系统管理员和程序员来说是基础而重要的技能。本篇内容将详细介绍Shell命令在Linux...
放在Post Steps 的shell命令 ,一键自动部署(2021最新版)
在Android平台上,有时候开发者需要超越普通应用程序的权限范围,例如执行系统级别的操作,这就涉及到给APP授权和执行Shell命令。Android系统默认是以安全为优先,不允许应用无限制地执行shell命令,但通过获取Root...
Shell命令解析器是Linux操作系统中的一个核心组件,它充当用户与操作系统内核之间的接口,使得用户可以通过命令行界面执行各种操作。在本文中,我们将深入探讨shell命令解析器的工作原理,以及如何使用C语言编程来...
相信喜欢linux的同志会喜欢的 当然针对的是ubuntu 不过 我以后会提供更多的 呵呵
1. **执行shell命令**: ExecuteShell提供了简洁的API,允许开发者在Android应用中执行各种shell命令,包括但不限于ls, cd, mkdir, rm等,极大地扩展了Android应用的功能。 2. **异步与同步执行**: 库支持同步和异步...
### Windows命令大全与Shell命令详解 #### 一、Windows下的Shell命令概述 Windows下的Shell命令通常指的是CMD命令,这是从MS-DOS系统继承下来的特性。Shell命令提供了比图形用户界面更为快速的操作方式,尤其受到...
详细记录了vxworks的shell命令,对于初学vxworks的是极好的资料