您的位置:首页 > 运维架构 > Linux

linux常用命令

2017-01-12 21:12 281 查看
来自鸟哥的linux http://linux.vbird.org/linux_basic/0320bash.php#bash_what

第十章 bash

10.1.4 

①history命令

在家目录内.bash_history中记录的是前一次登入以前所执行过的指令,而至于这一次登入所执行的指令都被暂存在记忆体中,当你成功的登出系统后,该指令记忆才会记录到.bash_history当中!
②alias
alias 可以查看所有别名
alias lm="ls -al"   将命令重命名

10.1.6

\ +回车   可以将很长的命令分段



10.2.2 变量

①取用 echo $PATH  或者  echo ${PATH}   /usr/local/bin.....
②设定
[dmtsai@study ~]$ echo ${myname}
<==这里并没有任何资料~因为这个变数尚未被设定!是空的!
[dmtsai@study ~]$ myname=VBird
[dmtsai@study ~]$ echo ${myname}
VBird   <==出现了!因为这个变数已经被设定了!
③规则
1>等号两边不能有空格   myname=zhang  ✅  myname = zhang ❌ ,且不能用数字凯欧
2>一旦有空格或者特殊字符如$那么可以用双引号或者单引号,区别

双引号:『var="lang is $LANG"』则『echo $var』可得『lang is zh_TW.UTF-8』
单引号:『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』
还可以用 \ 来将特殊字符进行转义
3>变量扩充变量内容
『PATH="$PATH":/home/bin』或『PATH=${PATH} :/home/bin』

4>使用export来是变数编程环境变量   export PATH
5>取消变量 unset myname
6>以后进入将路径设置一个变量,然后用 cd+变量 来直接进入,不需要输入很长的路径了   cd+${PATH}
例子
范例一:设定一变数name ,且内容为VBird
[dmtsai@study ~]$ 12name=VBird
bash: 12name=VBird: command not found...   <==萤幕会显示错误!因为不能以数字开头!
[dmtsai@study ~]$ name = VBird             <==还是错误!因为有空白!
[dmtsai@study ~]$ name=VBird               <==OK的啦!

范例二:承上题,若变数内容为VBird's name呢,就是变数内容含有特殊符号时:
[dmtsai@study ~]$ name=VBird's name
# 单引号与双引号必须要成对,在上面的设定中仅有一个单引号,因此当你按下enter后,
# 你还可以继续输入变数内容。这与我们所需要的功能不同,失败啦!
#记得,失败后要复原请按下[ctrl]-c结束!
[dmtsai@study ~]$ name="VBird's name"     <==OK的啦!
#指令是由左边向右找→,先遇到的引号先有用,因此如上所示,单引号变成一般字元!
[dmtsai@study ~]$ name='VBird's name'     <==失败的啦!
#因为前两个单引号已成对,后面就多了一个不成对的单引号了!因此也就失败了!
[dmtsai@study ~]$ name=VBird\'s\ name      <==OK的啦!
#利用反斜线(\)跳脱特殊字元,例如单引号与空白键,这也是OK的啦!

范例三:我要在PATH这个变数当中『累加』:/home/dmtsai/bin这个目录
[dmtsai@study ~]$ PATH=$PATH:/home/dmtsai/bin
[dmtsai@study ~]$ PATH=" $PATH":/home/dmtsai/bin
[dmtsai@study ~]$ PATH=${PATH}:/home/dmtsai/bin
#上面这三种格式在PATH里头的设定都是OK的!但是底下的例子就不见得啰!

范例四:承范例三,我要将name的内容多出"yes"呢?
[dmtsai@study ~]$ name=$nameyes
#知道了吧?如果没有双引号,那么变数成了啥?name的内容是$nameyes这个变数!
#呵呵!我们可没有设定过nameyes这个变数呐!所以,应该是底下这样才对!
[dmtsai@study ~]$ name="$name"yes
[dmtsai@study ~]$ name=${name}yes   <==以此例较佳!

范例五:如何让我刚刚设定的name=VBird可以用在下个shell的程序?
[dmtsai@study ~]$ name=VBird
[dmtsai@study ~]$ bash         <==进入到所谓的子程序
[dmtsai@study ~]$ echo $name   <==子程序:再次的echo一下;
<= =嘿嘿!并没有刚刚设定的内容喔!
[dmtsai@study ~]$ exit         <==子程序:离开这个子程序
[dmtsai@study ~]$ export name
[dmtsai@study ~]$ bash         <==进入到所谓的子程序
[dmtsai@study ~] $ echo $name   <==子程序:在此执行!
VBird   <==看吧!出现设定值了!
[dmtsai@study ~]$ exit         <==子程序:离开这个子程序
7> ? 关于执行指令的
[dmtsai@study ~]$ echo $SHELL
/bin/bash                                   <==可顺利显示!没有错误!
[dmtsai@study ~]$ echo $?
0                                           <==因为没问题,所以回传值为0
[dmtsai@study ~]$ 12name=VBird
bash: 12name=VBird: command not found...    <==发生错误了!bash回报有问题
[dmtsai@study ~]$ echo $?
127                                         <==因为有问题,回传错误代码(非为0)
#错误代码回传值依据软体而有不同,我们可以利用这个代码来搜寻错误的原因喔!
[dmtsai@study ~]$ echo $?
0
# 咦!怎么又变成正确了?这是因为"?" 只与『上一个执行指令』有关,
# 所以,我们上一个指令是执行『 echo $? 』,当然没有错误,所以是0 没错!

8>env 显示环境变量
9>父程序、子程序



在父程序定义的变量不会被子程序继承,所有使用export + 变量名 子程序就会继承父程序的变量名

10.2.4

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: