Unix Shell

  Shell 指的是一种程序,用于和unix进行交互的程序.也就是我们直观上看到的命令行.Shell的实现有很多版本,最早的是肯 汤普孙的sh,还有后来比较常用的bash,还有dash,ash等,都是其他版本的shell程序.一般看到的之终端仿真器,比如terminal,或者kconsole.

 

然后我们可以尝试几个简单的命令

date,cal,df,free,powertop

几个有意思的命令

cowsay ,cowsay -f milk,sl,fortune

cmatrix

cowsay  | lolcat

https://www.youtube.com/watch?v=7FjX7r5icV8

切换目录

ls,cd,pwd

cd - 返回上个目录

cd 绝对路径 相对路径

ls -h 人类可读信息

    -l  长信息

    -a 所有文件

解释文件长信息 文件 链接 ln -s 文件block 

file 文件信息 一切都是文件,不一定.mp3后缀的就是.mp3

操作文件和目录

cp 复制

mv 移动

mkdir 创建目录

rm 移除文件

ln 创建符号链接

     软链接类似于快捷方式

     文件名本身就是一个硬链接,如果所有硬链接不存在,那么就代表这个文件被删除了

      硬链接有不能跨文件系统等限制,用得比较多的还是软链接.

命令的使用

命令的类型

可执行程序(main.exe),shell内置的命令(cd),shell函数,alias命令(ls)

type 显示命令的类型 type ls cp

which 显示可执行程序的位置

help 获取内置命令的帮助

man 获取可执行文件的帮助,分目录存储

apropos 查找man列表匹配的目录 apropos game

whatis 显示命令的简要描述 whatis ps

组合命令 alias 比如之前的ls 再来个例子

alias foo='cd /usr ; ls ; cd -'

unalias foo

重定向

一切都是文件

什么是标准输入,标准输出,标准错误

标准输出重定向符  '>' 这是我在UNIX里面见过最美的符号之一,还有一个就是pipe '|',待会儿再说.

> 是 1>的简写 2>是标准错误

2>&1 表示把标准错误重定向到标准输出中

格式 > file 2>&1

不过比较新的bash 可以直接 &> file 这种方式重定向了

 

标准输入重定向

cat

cat 命令接受标准输入

可以接受文件也可以直接接受标准输入

管道pipe

把标准输入和标准输出相连接,比如

cat file |sort| cat > text 表示什么意思?

过滤器

sort,uniq,wc,grep grep 神器也!

还有最最最最最神器tee

这张图很形象

http://en.wikipedia.org/wiki/Tee_(command)

文件权限

先ls -lh 看看

rwx 和7表示法

chmod 600 file

chmod u+rw file

su 用另一身份运行shell su mike

sudo 用另一身份运行命令 sudo apt-get install vim

经常需要超级用户权限来执行命令

chow suer:group file 更改所有者或者所有群组

chgrp group file

passwd 更改密码

进程

ps 进程列表

top 资源消耗top列表

kill 发送信号量 一般 option 是9才是kill信号 18 是CONT 19是STOP

killall 杀死多个进程 killall xlogo,可以按照名字杀死进程

xlogo &

xlogo &

xlogo &

killall xlogo

简单演示一下VIM

输入apropos vim

找点什么好玩的看看

Shell脚本

我一直把shell当作一门动态语言来看待,它实际上可以做任何的事情,又非常得难以想象.

例子1:为我的C文件建立骨架文件

 

流程控制

IF ELSE  exit code, test, or [ expr ]

if condition ; then
elif  conditon ; then
       if condition; then
       else 
       fi
else
     
fi

 

循环

FOR WHILE loops

for ( var in list)

do

done

ex:mtable.sh  

for ((expr;expr;expr))

do

done

ex:chessboard.sh

while while.sh

case

case.sh

 case  $variable-name  in
                pattern1)   command
                                ...
                                ..
                                command;;
                patternN)   command
                                ...
                                ..
                                command;;
                *)             command
                                ...
                                ..
                                command;;
           esac

函数

 

   function-name ( )
           {
                command1
                command2
                .....
                ...
                commandN
                return
           }

function.sh

基本这些,但不只这些,你需要打开你的UNIX系统,探索更多

 

 

 

 

unix 比 windows 狂拽酷炫多了,快点脱离苦海

能换MAC还是尽量换MAC,能装个好用的QQ

Unix Shel

By Gao Peng

Unix Shel

大二例会shell基本命令

  • 1,383