Linux Shell 学习

1. 查看系统上可用的shell
cat /etc/shells

2. 得到目前使用的shell类型
echo $SHELL
ps $$
ps -p $$

3. 查看某个命令是否是是一个shell内部命令
type [-a] [command]

4. 显示shell command的全路径
which [command]
root@localhost :/home/James/mypro/shell# which pwd
/bin/pwd
root@localhost :/home/James/mypro/shell# which bash
/bin/bash
root@localhost :/home/James/mypro/shell# which gcc
/usr/bin/gcc
root@localhost :/home/James/mypro/shell# which emacs
/usr/bin/emacs
root@localhost :/home/James/mypro/shell# which history
root@localhost :/home/James/mypro/shell# (如果命令是shell内部命令,不显示任何路径)

5. Starting a Script With #! (shebang line, 组织行)
它告诉系统用哪个interpreter来执行这个脚本。
e.g.
#!/usr/bin/python
print "hellO"

6. 一个语言的基本元素
data
和大部分脚本语言一样,动态类型的。

assignment
var=xxxx ##注意=左右不能有空格,否则系统认为var是命令,如果在if [ ]中,会认为是相等判断。(说实话,我觉得这个真没有Tcl的set var xxxx好,简洁明白,还不容易出错)

statement
command [option] [args] ...

branch
if-else-fi branch
case - ) - esac branch
(这里我再次出来吐槽。各种语言标识一块block的方法各不相同。有用{}的,如c/c++/java/Tcl等;有用强制缩进的,如python;还有就是如shell这种用关键词来标识的,在shell中[] () {}都有用处,而强制缩进显然不合适(你在闹哪样啊强制缩进!),所以用关键词来标识一个block比较合理。然后我要吐槽下强制缩进,你没有一个合适的编辑器真心闹不住啊!你直接开python写两个简单分支都要记得按tab键,DT不DT!)

iteration
for-do-done
while-do-done
until-do-done

input and output
read, printf, echo等。(对于输出,我推荐用printf)

7. 查看所有系统变量
set
env
printenv

你可能感兴趣的:(linux,学习,PS)