免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 16898 | 回复: 61
打印 上一主题 下一主题

大家跟我学SHELL (与本教程有关的疑问可在此提问)  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-05 16:30 |只看该作者 |倒序浏览
一、选择一个好SHELL

Unix 中常见的 shell 主要分为两大门派:

sh:
  1. burne shell (sh)
  2. burne again shell (bash)
复制代码


        csh:
  1. c shell (csh)
  2. tc shell (tcsh)
  3. korn shell (ksh)
复制代码


本人的教学环境是 FreeBSD6.1 + sh ,你也可以使用bash来学习,bash兼容sh。我尽量将所有的SHELL语句也在Redhat上面验证一下。

FreeBSD上bash的安装方法有二:
  1. 1、pkg_add -r bash
  2. 2、cd /usr/ports/shell/bash2 && make install clean
复制代码


Linux 上默认的SHELL已经是bash了。

查看自己机器上支持 Shell 种类的方法:
# cat /etc/shells


  1. /bin/sh
  2. /bin/csh
  3. /bin/tcsh
  4. /usr/local/bin/bash
复制代码


设置自己的SHELL为sh

  1. # chsh
  2. # vipw
复制代码


使用chsh命令会打开一个编辑器(类似vi),需要修改其中的Shell: /bin/csh一项为Shell: /bin/sh
使用vipw命令会打开一个编辑器(类似vi),需要修改指定用户所在行的最后一项为/bin/sh

如果你是在FreeBSD上安装了 bash ,一般修改为 /usr/local/bin/bash


二、SHELL基础(UNIX中的常用命令)

列出目录中的内容
ls

FreeBSD需要使用使用-G参数,才能按文件类型显示为约定的颜色
ls -G

使用长格式,更出目录中的内容
ls -l

显示一个文本文件的内容
cat <文件名>
cat -n /etc/passwd  (显示文件,并加行号)
less <文件名>
more <文件名>

复制文件cp <源文件名> <目标文件名>

文件更名或移动文件至其他目录

mv <文件名1> <文件名2>
mv <目录1><文件名> <目录2><文件名>

显示当前工作的目录
pwd

建立目录(-p 建立多级目录)
mkdir <目录名>
mkdir -p <目录1>/<目录2>

删除文件(或目录)
rm <文件名>
rm -rf <目录>

显示时间和日期
date

显示N天前的时间和日期

date -v -2d

其他格式请自己试一下,或查看手册  man date
date +%F
date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"

显示字符串
echo "hello c shell"
printf "hello c shell\n"

显示带颜色的字符串
echo -e "\e[31mRed String\e[0m"
printf  "\e[31mRed String\e[0m\n"

具体的颜色代码,请参考: http://www.51sincere.com/2006-11/20061123123521.htm

[ 本帖最后由 levopat 于 2007-1-4 08:14 编辑 ]

评分

参与人数 1可用积分 +1 收起 理由
r2007 + 1 加分鼓励

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2006-12-05 16:39 |只看该作者
支持一下!偶没基础,是得听听

论坛徽章:
0
3 [报告]
发表于 2006-12-05 18:28 |只看该作者
yes,这些都会,但是没有找过man,很多命令的option都是不懂,en太差,唉。。。。。。。。。

论坛徽章:
0
4 [报告]
发表于 2006-12-05 20:49 |只看该作者
三、字符统计( wc )
wc 可以按单词(-w)、行数(-l)、字符(-c)进行统计

wc -w 文件名
wc -w < 文件名

论坛徽章:
0
5 [报告]
发表于 2006-12-05 20:59 |只看该作者
四、字符匹配(*、?)

ls
ls *
ls ?
星号(*)匹配0个或0个以上的字符
问号(?)匹配1个字符

ls [a-z]*
配置以小写字母开头的文件名

ls [0-9]*
配置以数字开头的文件名

ls *[!a-z]
匹配不以小写字母结尾的文件名

echo *
相当于显示当前所有匹配的文件名
其实SHELL是经过以上转换步骤的
1、* 被当前目录下所有的文件名替换
2、显示(echo)出这些文件名

论坛徽章:
0
6 [报告]
发表于 2006-12-05 21:08 |只看该作者
五、查看谁在线(who)
w
who
users
列出目前在线人名单

whoami
who am i
查看自己的登录名

id
id -p
查看自己的登录ID及登录名

uptime
显示系统运行情况
时间 系统运行时间 登录用户数 系统负载

last
显示用户最后一次的登录终端等信息

lastlogin
显示用户最后登录时间

[ 本帖最后由 levopat 于 2006-12-8 10:37 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-12-05 21:30 |只看该作者
六、管道(>、>>、|、<)

who > users (将who的输出保存到文件users)
who >> users (将show的输出追加到文件users后面)

true > access.log (清空文件)
echo '' > access.log (清空文件)

wc -l < users (统计users文件的行数)
cat users | wc -l (同上)
ps  (显示进程列表)
ps | sort (对进程列表进行排序)

[ 本帖最后由 levopat 于 2006-12-7 15:02 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-12-05 21:33 |只看该作者
好啊!支持!跟你一起学。。。基础

论坛徽章:
0
9 [报告]
发表于 2006-12-05 21:33 |只看该作者
七、将命令发送到后台运行 (&)
sort date > out &

nohup sort date > out & (退出当前登录,命令仍可在后台运行)

论坛徽章:
0
10 [报告]
发表于 2006-12-05 21:38 |只看该作者

设置文本终端的颜色

例:
echo -e "\e[44;37;5m Hello \e[0m Color"

以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“Hello ”,
然后重新设置屏幕到缺省设置,输出字符“Color”。“e”是命令echo的
一个可选项,它用于激活特殊字符的解析器。“\e”引导非常规字符序
列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有
效的字符是“44;37;5” 和“0”。

修改“44;37;5”可以生成不同颜色的组合,数值和编码的前后顺序没有关系。可以选择的编码如下所示:

编码 颜色/动作
0 重新设置属性到缺省设置
1 设置粗体
2 设置一半亮度(模拟彩色显示器的颜色)
4 设置下划线(模拟彩色显示器的颜色)
5 设置闪烁
7 设置反向图象
22 设置一般密度
24 关闭下划线
25 关闭闪烁
27 关闭反向图象
30 设置黑色前景
31 设置红色前景
32 设置绿色前景
33 设置棕色前景
34 设置蓝色前景
35 设置紫色前景
36 设置青色前景
37 设置白色前景
38 在缺省的前景颜色上设置下划线
39 在缺省的前景颜色上关闭下划线
40 设置黑色背景
41 设置红色背景
42 设置绿色背景
43 设置棕色背景
44 设置蓝色背景
45 设置紫色背景
46 设置青色背景
47 设置白色背景
49 设置缺省黑色背景

其他有趣的代码还有:

\e[2J 清除屏幕
\e[0q 关闭所有的键盘指示灯
\e[1q 设置“滚动锁定”指示灯 (Scroll Lock)
\e[2q 设置“数值锁定”指示灯 (Num Lock)
\e[3q 设置“大写锁定”指示灯 (Caps Lock)
\e[15:40H 把关闭移动到第15行,40列
\007 发蜂鸣生beep
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP