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