FreeBSD配置笔记 让普通用户可以使用bash

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FreeBSD配置笔记(2006-10-15 05:34:55)
分类:电脑应用
让普通用户可以使用bash
Freebsd默认安装之后用户的shell是sh,平时都已经习惯了使用bash。

通过下面的步骤可以配置用户来使用bash作为shell。

1. 安装bash。

cd /usr/ports/shells/bash; make install clean
这样安装完之后,bash会被安装在/usr/local/bin/目录下面。

2. 在/bin目录下面做一个符号连接。

ln -f /usr/local/bin/bash /bin
3. 修改 /etc/shells文件,将bash增加进去,这样在添加用户的时候就可以指定使用bash 作为shell了。

否则的话,会警告pwd_mkdb: warning, unknown root shell
4. 如果已经添加过的用户,可以使用chsh命令来修改默认的shell.
---------------------------------------------
freebsd命令速记大全
第一步
我如何离线?(exit)
我如何停止电脑?(shutdown -h now)
我如何重新激活计算机? (shutdown -r now)
我如何在单使用者模式下停止系统? (shutdown now)
我如何切换终端机? (ALT-F*)
文件
我如何阅读 manual page? (man)
使用者管理 (1)
我该如何增加一个使用者? (adduser)
我如何移除使用者? (rmuser)
我如何改变我的密码? (passwd)
"su" 指令
我如何 "su" 至 root 帐号? (su)
我如何 "su" 至其它使用者的帐号? (su username)
四处观察
我在哪? (pwd)
我如何观察目录下有什么? (ls)
我如何看到以点开始的隐藏档? (ls -a)
我如何看到更多的讯息 (存取许可,拥有者,群组,大小,日期)? (ls -l) 我如何看出那些档是什么? (ls -F)
这些是什么档: ".." 与 "."? (ls -aF)
四处移动
我该如何改变工作目录? (cd)
如何回到上一层目录? (cd ..)
我如何回到自己的工作目录? (cd, cd ~/)
屏幕控制
我如何卷回 (在终端机中,非 X)? (The Scroll Lock Key)
我该如何清除屏幕? (clear)
文章
我如何不使用文书编辑器就可以观看小的档案? (more)
最普遍的文书编辑器是? (vi)
"vi" 看起来有点难,我可以从 "ee" 开始吗? (ee)
"visual" 编辑器
学习 "vi" 最有效的方法为何? (vilearn)
"vi" 是如何工作的? (man vi)
什么是储存指命? (:w)
什么是离开指令? (:q)
什么是可以储存与离开的命令? (:wq)
如何离开而不使用储存指令? (:q!)
我如何移动? (h, j, k, and l)
Esc 键有什么用途? (The Esc Key)
我如何加入新的文字? (a and i)
我如何建立新的一行? (o and O)
我如何删除文字? (x and dd)
我如何拷贝文章内容? (yy and p)
我如何替代文章? ®
我如何使用数个指令? (nCommand)
我如何搜寻文章? (/text)
我如何起动 "vi" 于只读模式? (view)
使用者管理 (2)
我如何新增使用者至群组? (vi /etc/group)
计算机信息
我如何能观看开机记录文件? (dmesg)
有什么方法可以让我慢慢地观看开机记录文件吗? (dmesg |more)

显示谁在系统上? (who)
他们正在做什么?? (w)
"w" 可以显示出所有的处理吗? (w)
何时
我如何显示或设定日期时间? (date)
我如何显示月历? (cal)
有什么方法可以让我慢慢地观看月历吗? (cal | more) Communications(通讯)
我如何显示 (或不显示) 其它使用者送来的讯息? (mesg y, mesg n) 我如何传送讯息到其使用者的屏幕? (write)
我如何送讯息到每一个人的屏幕? (wall)
我如何与他人交谈 (chat)? (talk)
档案管理
我如何建立一个空档案? (touch)
我如何删除档案? (rm)
我如何建立一个目录? (mkdir)
我如何移除一个空的目录? (rmdir)
我如何移除一个目录包括里面所有的东西 (包括子目录)? (rm -r) 我如何移除以 "-" 起头的档案? (rm -- -filename)
我如何拷贝档案? (cp)
我如何拷贝整个目录包括它所有的内容? (cp -R)
我该如何搬移档案与目录? (mv)
我如何改变档案/目录名称? (mv)
我如何执行 rm、cp 与 mv 时,须要我的许可? (-i)
我如何执行 rm、cp 与 mv 时,不须要我的确认? (-f)
档案连结
我如何连结一个档案或目录? (ln -s)
我如何 hard link 一个档案? (ln)
档案拥有权/存取许可
我如何观察谁是档案拥有者? (ls -l)
我如何观察档案/目录的存取许可? (ls -l)
我如何改变档案/目录的使用者拥有人? (chown)
我如何改变档案/目录的群组拥有人?s group owner? (chgrp)
我如何改变档案/目录的使用者与群组拥有人? (chown user:group) 我如何改变存取许可? (chmod)
如果我拥有这个目录,我可否修改不是我的档案? (yes)
软盘机装置
我如何挂上我的软盘? (mount)
我如何挂上 MS-DOS 格式的软盘机? (mount -t msdos)
我如何卸下我的软盘? (umount)
应用程序
我如何起动应用程序? (./)
我如何由文件名称来起动应用程序? (PATH)
我如何在背景起动应用程序? (&)
我如何知道我的 PATH 是? (echo $PATH)
所有的应用程序在那? (The FreeBSD Ports Collection)
我如何安装一个 port? (make install clean)
那里有编辑好的二进制文件? (The FreeBSD Packages Collection) 我如何移除应用程序? (pkg_delete)
使用者环境
使用者的 profile 档案在那? (vi ~/.profile)
我如何改变我的 shell? (chsh)
处理管理
我如何列出处理? (ps)
我如何列找到处理? (ps -waux | grep "name of the process") 我如何砍掉处理? (kill)
磁盘管理
我如何检查可用的磁盘空间? (df)
我如何检查每个目录下用了多少磁盘空间? (du)
工具
哪里有计算器? (bc)
附加:
一些小技巧
bsd的daemon在哪里?
# ls /usr/share/examples/BSD_daemon
FreeBSD.pfa beastie.eps eps.patch
README beastie.fig poster.sh
如何把上面的daemon化为gif或者png?
# pkg_add -r transfig
# fig2dev -L gif -g '#f0f0f0' -t '#f0f0f0' beastie.fig beastie.gif # fig2dev -L png beastie.fig beastie.png
Unix家谱在哪里?
more /usr/share/misc/bsd-family-tree
超级经典如何在我的脚本加上交互式对话框?
# ls /usr/share/examples/dialog
# sh /usr/share/examples/dialog/yesno
如何更新离线文档?
#file of CVS supfile
doc-all tag=.
# pkg_add -r docproj-nojadetex
# echo "Updating docs"
# cd /usr/doc
# cp Makefile.orig Makefile
# make install > /dev/null
有图形版的rc.conf吗?
# cd /usr/ports/sysutils/thefish
# make install clean
[ ] CONSOLE Disable X11 support
[x] GTK Use GTK+ for the X11 interface
[ ] QT Use Qt for the X11 interface
如何重新知道port安装时候,我在菜单的选择?
---------------------------------------------
FreeBSD带有许多简单而功能强大的命令
FreeBSD带有许多简单而功能强大的命令以使你的计算机工作更容易。

不管你对任何Unix 系统有多少经验,都会发现有效完成工作的新捷径和新方法。

在这篇文章中,我们将讨论命令以帮你记住你是谁,你在哪儿,如何找东西以及如何像Unix 鬼精灵一样地思考问题和完成任务!
我喜欢虚拟终端的概念,而且通常我都运行所有8个终端以及XWindows会话。

通常,我会运行一个PPP会话、一个打开邮件客户端的终端、几个不同的打开手册页所占的终端、以root身份运行命令的终端以及以普通用户身份运行命令的终端。

当然功能越强带来的混乱越多。

我会用一些命令来帮我解决混乱。

如果我忘了把手册页开在哪个终端上的话,PrintScrn键会以升序依次滚动列出所有虚拟终端。

如果没有运行X Window会话,可以永远继续重复1到8号终端。

否则,它会在9号终端上停下来,也就是X服务器。

如果我进入了一个终端并希望知道这是哪个终端的话,可以用tty命令:
tty
/dev/ttyv4
注意,这实际上是5号虚拟终端,因为这些终端是从0开始排列的。

如果离开了该终端,就可以用Alt-F5返回。

如果我想知道在该终端上的是哪个用户,可以用whoami:
whoami
root
如果我想知道有谁登录进了终端,可以用who:
who
genisis ttyv0 Jun 3 15:45
genisis ttyv1 Jun 3 15:46
genisis ttyv2 Jun 3 21:09
genisis ttyv3 Jun 3 21:10
genisis ttyv4 Jun 3 21:27
genisis ttyv5 Jun 4 09:40
genisis ttyv6 Jun 4 09:43
genisis ttyv7 Jun 4 10:46
注意who和whoami之间的区别。

在ttyv4,我本来是以genisis身份登录的,然后再成为超级用户。

who命令告诉你谁拥有登录命令解释器而不返回非登录解释器的信息。

也就是说,因为我的X Window会话不是一个登录解释器,ttyv8就不会显示在输出信息中。

如果我忘了自己在哪个目录中,可以用pwd:
pwd
它会显示我当前所在的工作目录:
/usr/home/genisis
好的经验是:不要在还没有用pwd查看一下你实际所处的位置之前就创建或删除文件。

现在,如果我忘了时间信息:
date
Sun Jun 4 11:15:46 EDT 2000
或者更糟的话,忘了今天的日期:
cal
June 2000
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
或者需要知道2020年的圣诞节时哪一天:
cal 12 2020
December 2020
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
或者签署独立宣言那一周的日程:
cal 07 1776
July 1776
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
最后两个关于cal的小技巧同样可以使你的朋友很吃惊;试一下这个:
cal 9 1752
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
空缺的日期是由于恺撒历到阳历的切换。

还有:
ncal -e
April 23 2000
这会显示耶稣降临日;用-o就可以知道东正教日历。

到此,你可能会想我一定是个非常出色的打字员。

让我们看一下命令历史列表:
h
110date >; /usr/home/genisis/cal
111 cal >; /usr/home/genisis/cal
112cal 12 2020 >; /usr/home/genisis/cal
113cal 07 1776 >; /usr/home/genisis/cal
117cal 9 1752 >; /usr/home/genisis/cal
122ncal -e >; /usr/home/genisis/cal
134h >; /usr/home/genisis/cal
我很讨厌打字,而且还用了这么多重定向符>;。

如果你要保存命令行上的结果到一个文件中就要用这个重定向符;它的语法总是一样的:
command >; filename
因为我要你看到以上历史列表中每个命令的输出,所以把它们重定向到了一个文件中。

然后再贴到我的文档里来。

注意我覆盖了七次同样的文件;因为我只用了一个重定向符。

让我们假定你已经向FreeBSD问答列表中发出一个问题,这时就会有人要你提供uname -a,dmesg和fstab的输出内容。

你就可以用>;创建三个文件然后把它们贴到你的电子邮件文档中。

但是你也可以把所有三个输出重定向到一个文件,只要用>;>;这个重定向符替换即可:uname -a >; /usr/home/genisis/help
dmesg >;>; /usr/home/genisis/help
more /etc/fstab >;>; /usr/home/genisis/help
如果我现在输入:
more /usr/home/genisis/help,
就会看到以上三个文件的输出了。

让我们更仔细地看一下这些命令:
在uname -a命令中我只用了一个>;,因为我正在创建一个新文件,不会覆盖它本身的内容。

因为我在dmesg命令中用了>;>;,就不会覆盖那个文件中uname -a的那部分了。

注意,我需要为/etc/fstab使用更多的命令。

如果我用:
fstab >;>; /usr/home/genisis/help,
fstab: Command not found:
将会出现错误信息。

你不能重定向文件;你只能对命令输出进行重定向。

在这种情况下,读/etc/fstab的命令就是more了;读取的结果就会被重定向到/usr/home/genisis/help。

这样你已经成功地发送了三个命令到一个文件中,而不会覆盖每个命令的输出。

但为什么要打上三个命令呢?完全可以有一种方法用一个命令就完成这些工作。

如果我打:
uname -a dmesg more /etc/fstab >;>; /usr/home/genisis/help2,
usage: uname [-amnrsv]
我就会收到这样的信息。

再看一下这个命令;它的确有你要做的每件事儿,但你能说出倒底哪个是命令,哪个是开关,哪个是文件呢?如果你对此感到因惑的话,想象一下你的命令解释器在试图解释你的意图时会感觉怎样。

所以我们需要一些分隔命令的方法;试一下这个:uname -a; dmesg; more /etc/fstab >;>; /usr/home/genisis/help3
这会使uname -a和dmesg的输出送到终端上;如果你用这个命令:
more /usr/home/genisis/help3
你只会看到more /etc/fstab命令的输出。

所以,我们已经有点接近了。

我们已经分隔了这些命令,现在要让命令解释器知道我们想要的是三个输出都送到那个文件中,而不是最后那个命令的输出。

最后再试一下这个:(uname -a; dmesg; more /etc/fstab) >;>; /usr/home/genisis/help4
more /usr/home/genisis/help4
你就会得到想要的结果了。

上面的圆括号告诉命令解释器,你想先运行括号里的命令,然后再把它们所有的输出重定向到那个文件中。

FreeBSD还有几个好用的工具用于查找信息。

使用哪个工具就取决于你要找什么。

如果你要找应用程序的话,可以用whereis:
whereis ls
ls: /bin/ls
如果你要找一个文件的话,可以用locate:
locate fstab
/etc/fstab
如果你要找些东西但不知道它是什么的话,可以用whatis:
whatis ls
ls(1) - list directory contents
whatis fstab
fstab(5) - static information about the filesystems
注意whatis这个命令会在括号中包含手册页的号码。

如果你要上面两样东西的附加信息的话,可以用:
man 1 ls
man 5 fstab
但你是否需要找一段指定的文本呢?就需要用grep工具了,它有一套很简单的语法:
grep whatyou'relookingfor filename
让我们假设我记不清在FreeBSD 4.0的缺省内核里是否允许了bpf这个设备。

虽然我可以打开这个文件开始阅读,但更快的办法是:
grep bpf /usr/src/sys/i386/conf/GENERIC
# The `bpf' pseudo-device enables the Berkeley Packet Filter.
pseudo-devicebpf#Berkeley packet filter
如果你记不清bpf选项所在的行号是多少,可以向grep里加一个开关:
grep -n bpf /usr/src/sys/i386/conf/GENERIC
212:# The `bpf' pseudo-device enables the Berkeley Packet Filter.
214:pseudo-devicebpf#Berkeley packet filter
这样就可以列出相应的行号了。

当然,我也可以把这些输出重定向到一个文件里,把它寄给向我要的人。

grep -n bpf /usr/src/sys/i386/conf/GENERIC >; /usr/home/genisis/reply
看另一个例子,如果你想取得计算机的CPU信息,可以运行dmesg,打开你的scroll lock 按钮,往上翻屏,查找描述CPU的那些行。

或者你可以用:
dmesg | grep CPU
CPU: AMD-K6tm w/ multimedia extensions
(199.96-MHz 586-class CPU)
这样会更快地取得同样的信息。

注意,如果你这样用那个命令:
grep CPU dmesg
grep: dmesg: No such file or directory)
就会得到错误信息了。

dmesg是一个命令,而你只能对文件进行grep。

但是你可以用管道把输出信息送到grep,这样你就可以打到特定的信息了。

现在总结一下:当你使用grep时,问一下自己要找的东西是在文件里还是命令结果。

如果在文件里,用:
grep text filename
如果是命令结果,用:
command | grep text
文章引用自:/node/327。

相关文档
最新文档