bash shell shell:命令行解释器,是用户与系统沟通时的媒介。在unix系统中有各种shell,linux用bash为默认shell。系统可以使用的shell记录在 /etc/shells中。 如: [root@redhat root]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/bash2 /bin/ash /bin/bsh /bin/tcsh /bin/csh [root@redhat root]# a=luowei //设置变量a的值为luowei [root@redhat root]# echo $a //显示a变量的值 luowei [root@redhat root]# echo ${a} //显示a变量的值 luowei [root@redhat root]# a=$a123 //这样不能把a赋成luowei123 [root@redhat root]# echo $a
[root@redhat root]# a=luowei [root@redhat root]# a=${a}123 //这样可以把a赋成luowei123 [root@redhat root]# echo $a luowei123 [root@redhat root]# unset a //删除a变量
环境变量 使用set可以查看本地变量和环境变量,如: [root@redhat root]# set //查看本地变量与环境变量 [root@redhat root]# env //查看环境变量 预定义环境变量 系统通过预定义的环境变量来定义shell环境,用户可以用set或env查询当前的环境变量。 常用的预定义环境变量: HOME:当前用户的主目录 PATH:当前用户的可执行文件搜索路径 LANG:程序应该使用的默认语言 PS1:行提示符 如: [root@redhat /]# cd $home //进入到家目录 [root@redhat root]# LANG=en //更改在英文语系 [root@redhat root]# echo $PS1 //显示PS1中的值 [\u@\h \W]\$ \u:显示当前用户的名称 \h:仅列出主机名的第一个名字 \W:显示当前工作目录的最后个目录名称 [root@redhat root]# basename /etc/X11 //截取目录的最后一个目录名 [root@redhat root]# PS1='[\u@\H \w \A \#]\$' //设置PS1 [root@redhat ~ 16:44 32]# \H:显示完整的主机名 \w:显示当前完整工作路径,家目录用~表示 \A:显示当前时间 \#:显示当前是第几条命令 \$:显示提示符 [root@redhat root]# export a //将a变量转换成环境变量
History History:可以查询用户以前的过往操作 如: [root@redhat root]# history //列出用过的命令 [root@redhat root]# history 10 //列出最后使用过的10条指令 内存中记录的过往指令数由环境变量HISTSIZE而定。History表存储在内存中,在用户logout时会记录用户主目录下的.bash_history文件中。在下次login时载入。 .bash_history中的指令由环境变量中的HISTFILESIZE而定。 如: [root@redhat root]# echo $HISTSIZE 1000 [root@redhat root]# echo $HISTFILESIZE 1000 [root@redhat root]# history –w //将历史指令强制写入.bash_history文件中
调用过往指令 使用 ! 来调用过往指令:如 !!:重复执行上一条指令 !a:重复执行上一条以a为首的的指令 !number:重复执行上一条在history表中记录号码为number的指令 !-number:重复执行前第number条指令 可以用<ctrl+r>来在history表中查询过往指令 例: [root@redhat root]# !e //执行最近的以 e 开头的指令 [root@redhat root]# !$ //截取上一条指令的最后一个参数 127.0.0.1 -bash: 127.0.0.1: command not found [root@redhat root]# ping !$ //直接ping 127.0.0.1,因为 !$ 截取到的是127.0.0.1 ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
Alias(别名) 例: [root@redhat root]# alias //列出系统中目前存在的别名 alias cp='cp -i' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias mc='. /usr/share/mc/bin/mc-wrapper.sh' alias mv='mv -i' alias rm='rm -i' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@redhat root]# alias a='ls -al' //设置 a 为 ls –al 的别名 [root@redhat root]# unalias a //删除a 这条别名
命令行表达式 命令行输出——" " 将一串字符当成一个字符串对待,如果字符串中包含特殊含义的字符(/,`,$,!),则转义。 命令行输出——' ' 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。 执行引用符——` ` 引用命令的执行结果 例: [root@redhat root]# echo "$PWD" /root [root@redhat root]# echo '$PWD' $PWD [root@redhat root]# ls -l `PWD` //列出当前目录下的详细信息 数学运算——$[] 在中括号内的表达式会被数学计算 逸脱符——\ 用于取消命令行中字符的特殊含义 用于表示一行未结束 例: [root@redhat root]# echo $[1+4] 5 [root@redhat root]# echo \$[1+4] $[1+4] [root@redhat root]# mkdir a\ b //建立一个名为"a b"的目录,\取消了空格的间隔作用 [root@redhat root]# ls \ // \表示一行未结束 > /home luowei test1 [root@redhat root]#
命令行结束符——; 用于在一行内分隔几个独立命令,表示一行已结束,作用相当于回车键。 了shell激活——() 在小括号内的命令行表示激活一个子shell后在子shell中运行。 [root@redhat root]# ls;pwd;ls –a //依次分别执行这三条指令 [root@redhat root]# echo $HOME /root [root@redhat root]# HOME=/usr [root@redhat root]# echo $HOME /usr [root@redhat root]# HOME=/root [root@redhat root]# (HOME=/usr) //表示这个HOME=/usr 在子shell中运行 [root@redhat root]# echo $HOME /root [root@redhat root]#
逻辑运算符 &&:当前一条指令执行成功时再执行后一条指令 ||:当前一条指令执行失败时再执行后一条指令 例: [root@redhat root]# ls /home && touch /home/test1 //如果存在/home则建立/home/test1 [root@redhat root]# ls /root/test1 || mkdir /root/test1 //如果不存在/root/test1,则建立 /root/test1目录 [root@redhat root]# ls /root/test && echo "exist" || echo "no exist" ls: /root/test: 没有那个文件或目录 no exist [root@redhat root]#
定制登录shell Bash在用户登录时从四个文件中读取环境,设定: 全局设置文件:/etc/profile , /etc/bashrc 用户设置文件:~/.bashrc , ~/.bash_profile 其他shell设定文件 ~/.bash_logout:在用户logout的时候自动执行。 ~/.bash_history:用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。 /etc/profile.d/*.sh:在/etc/profile中被执行,其中的环境设定,也会被全局引用。
常用快捷键 Ctrl+d:输入已结束。在shell下相当于一个exit。 Ctrl+c:键盘中断请求。 Ctrl+s & ctrl+q:暂停/恢复屏幕输出。 Ctrl+l:清屏,相当于clear。 Tab:自动补完命令行与文件名。 Tab键双击可以列出所有可能匹配的选择。 例: [root@redhat ~ 20:22 35]#cat > test2.txt cat > test2.txt hello ,i'm luowei. welcome to linux's world! //ctrl+d结束输入 [root@redhat ~ 20:23 36]#cat test2.txt cat > test2.txt hello ,i'm luowei. welcome to linux's world! [root@redhat ~ 20:24 37]#
|