ubuntu系列-Shell下推进工作
(上一篇遗留的问题只能遗留到最后了,否则看完就太累了)
这里,控制台确实可以用“菜单-附件-终端模拟器”或者alt+f2运行xterm来做。不过个人喜欢telnet上去。。
首先,在控制台上打入who或者whoami。查看用户名。如果你还是root。赶紧打入startx去建立别的用户,再登入。否则。太危险。。。root是轻易能搞掉系统的角色。
主要遵循的是dos的基本文件操作来讲。首先,还请记住,linux区分大小写。bash和Bash和BaSh和bAsH等等总共16种不同的命令。
在linux中,列出目录可以用dir。什么,你真的去试了?
很好,你上当了。也许你没看出来。。。确实可以dir查看目录的内容。。。但是不要因此泄露了你是win上来的。。。
比较有用的是:ls命令-列印目录:
phoeagon@phoeagon-desktop:~$ ls
Examples psd test VMwareTools-5.5.2-29772.tar.gz 图片
Notepad++ psd.o test~ 公共的 文档
notepad++.zip psd.pas test.odt 模板 音乐
prog res.db test.pas~ 视频 桌面
在你的屏幕上可能还会是彩色的。。。
ls还可以跟要打印的目录,如果要查阅的不是当前目录。如ls /dev
常用的ls命令参数有:
ls -a 列出所有文件,包括隐藏文件
ls -F (注意是大写)给每个file加上一个字母的标识标志种类
ls -s 列印大小
ls -t 按时间排序
还可以叠加使用,如ls -aF 或 ls -a -F
值得注意的是,ls不能像windows的dir一样跟一个文件名表示列出哪些文件。。。至少ls不可以。。等到后面。。。
还有,试一下:ls -R
列出目录和子目录的内容(-R 表示 Recursive是很常见的参数)
我相信你屏幕花了。。。
试一下clear清屏。。。
接下来,复制文件,windows叫copy。。。linux复制文件用cp.
这两个东西很像。。跟两个参数表示cp source destination。cp也有个-R表示包括子目录。有个-i表示覆盖前确认(interactive)。一般这就足够了。更多的同样man cp。
移动文件用mv,表示move。
同样mv source destination 如果destination在同一个目录下,那么通过指定不同的文件名实现“重命名”,这在win下是不允许的,win用ren。而linux没有ren。。。
和windows/dos一样,操作文件可以用通配符来选定。其实应该说是可以用“正则表达式”。正则匹配是很复杂的课题。。
删除用rm,表示remove。用样有-R参数,有-i参数,足够了。
改变目录用cd。这个跟win一样。
最后还有和win很类似的mkdir, rmdir, mvdir分别对文件夹操作。pwd可以列印出当前目录.(print working directory). 基本上文件基本管理就够了。还有个touch。。。
另外,可以用cat来显示文件。。。cat filename。随便cat /boot/grub/menu.lst。屏幕花了吧。。。clear?可是还要看呢。。闪过去了真不好。。。其实除了cat显示文件,还有和cat很相似的more/less阅读器。more filename. less的功能多,more的功能少,基本功能差不多。less进去以后可以上下键翻阅,可以page up/down,最后到END时记得按q键(quit)就退出了。如果只显示头或者尾还可用head/tail.
综合试试。现在从控制台登录。
phoeagon@phoeagon-desktop:~$ pwd
/home/phoeagon
phoeagon@phoeagon-desktop:~$ ls
Examples psd test VMwareTools-5.5.2-29772.tar.gz 图片
Notepad++ psd.o test~ 公共的 文档
notepad++.zip psd.pas test.odt 模板 音乐
prog res.db test.pas~ 视频 桌面
phoeagon@phoeagon-desktop:~$ cd prog
phoeagon@phoeagon-desktop:~/prog$ ls
test.cpp
phoeagon@phoeagon-desktop:~/prog$ cp test.cpp ../teset.txt
phoeagon@phoeagon-desktop:~/prog$ cd ../
phoeagon@phoeagon-desktop:~$ cat teset.txt
#inlcude <cstdio>
using namespace std;
int main(){
printf("Hello World\n");
return 0;
}
phoeagon@phoeagon-desktop:~$ rm teset.txt
phoeagon@phoeagon-desktop:~$
可以看到默认我的shell是会列印出当前目录的。。。
补充一点,在任何一个目录中都有两个文件夹"./"和"../"。前者表示当前文件夹,后者表示上一层。
接下来研究一下touch。。。touch filename用于。。。原本用于改变文件的读取次数和读取时间。。。(这也就是 touch-摸 的含义)作为副作用,如果不存在该文件,会自动创建。。所以基本上教材都说是创建空文件。
基本的文件操作就说完了、、、会这些基本上可以telnet到远程的服务器用shell服务来管理网站了。。。不过我们还可以稍微多说一些。。。
基本操作。。。在图形下是ctrl+alt+fn。。切换控制台记得吗?如果死锁了控制台就可以那样了。在shell下快捷键是alt+fn。。(这里n=1,2,3,4,5,6,7,或者更多,如果你的系统自定过,但不是laptop那个Fn键).
随时可以ctrl+c。把程序退出。
随时可以ctrl+z。这个用户把程序挂到后台运行,让你先做别的事。。。但是,,,那个程序千万别在屏幕上乱写东西。否则就不用看了。。。如果它有大量输出。。。就要参考下面,重定向到文件了。这时:
敲入jobs回车。
可以看当前任务列表。按fg [编号]如fg 1把第一个任务“叫”回来。如果程序等待输入,后台程序会暂停运行,等待你fg他。
更详细的进程管理还将留到后面。。。
好吧,最后又个不得不补充的问题。。。(细说linux挂载)
用linux,就一定要用linux的方式去思维。
嗯,说的容易做起来难。
我的D盘哪去了?恐怕每一个新手初次进入linux桌面后,第一个想知道的就是这个答案吧?
我们就来说说这个D盘。
首先,请放心,他不会莫名其妙的被xx掉。除非你在分区的时侯乱来一气;
其次,你应该明白硬盘分区是怎么回事,否则下面的就别看了,还不会走路就想跑马拉松那是……,根本不可能滴;
再者,你应该明白,文件其实是储存在硬盘的某个分区里,并不是C盘或者D盘里;
最后,抛弃你被widows“固化”了的思维,其意义不仅仅是使你更懂linux,而是可以令你拥有一种更加活跃的思考方式,对你的整个人生可是大大的好喔。
原来事情还可以这样做!
这是我们每一个走向知识的更高阶段后必然会发出的感叹。回想一下,你有多久没有发出过这样的感叹了?如果有一年以上的话——抱歉,你已经老了,至少你的思维是这样。(以上这段纯属复制粘贴,我也老了)
整理一下思路吧:
**C盘,这是一个编号,一般来说它就是指硬盘的第一分区;
**这种C盘D盘E盘的概念,是被windows赋予的。因为在一块硬盘没有装入机箱并被windows检测到以前,它就是一个个的分区,没有盘符!第一分区 就是第一分区,不是C盘!就算你在上面装入了windows操作系统,但如果没有启动windows,那么它就是第一分区而不是C盘!
**反之,这种概念,是windows“内在”的,就算windows没有被安装到硬盘的任何分区,这个“构架”依然存在,也就是说这种C盘D盘E盘的概念不依赖于是否有分区供其命名
**这种概念,在windows接管了电脑硬盘的管理权以后,才具有实际的意义(可以通过类似c:\windows这样的路径存取文件了)。
请注意,这里所说的“文件系统”,跟一般意义上的NTFS、EXT3文件系统不是一码事,别拿来对比哈!
和windows的C盘D盘E盘的概念一样,这个“文件系统”或者叫“组织体系”是软件级别的,是linux系统“内在”的体系,就像你脑子里的一个“想法”,并无需依赖于任何的实际一样。
linux的系统组织方式是——整个系统从根开始,按树形目录依次向下逐渐扩大,分类存放不同用途的文件,/读作“斜线”,英文slash;当其写作一个路径时,第一个/表示根,即root,其他的/表示路径分割符,但都读作“斜线”或“slash”。
OK,现在让我们把“理想”变成“现实”吧!
系统启动时,首先有一个分区被挂载到了/,可以理解为该分区被分配了/这个奇怪“盘符”(注意,在windows里,这个符号被用做命令参数引导符号,而反斜线\,英文backslash作为路径分割符,习惯不同而已,就像英国行车靠左一样,没啥可奇怪的)。
这 个被挂载为/的分区,就叫做根分区(不管它是主分区还是逻辑分区),它从此开始在整儿linux系统里具有了特殊的地位,因为整儿电脑里的所有硬盘,包括 其上的所有其他分区,不管是主分区、逻辑分区,都将以这个“根分区”为主干,开始构造linux大树,并最终成为这颗树上的一个分支或树叶。(原文未予澄清的一点是,事实上整个linux在是这一棵树,那个根分区是整个系统的根)整个 linux的系统结构里,有且只有一个root(根分区),不可能有第二个。
你的其他分区只能被继续挂载到/(根分区)下的某个目录里,比如“/mnt”或者“/media”或者“/什么什么”目录,看你喜欢喽。挂载好之后,当你 向这个目录读写数据的时候,其实是在向被挂载到该目录的另一个分区读写数据。多个分区在同一个时候只能被挂载到多个不同的目录,比如“/mnt/a”、“ /media/123”或者“/home/anywhere”,任何一个处于/之下的目录,都可以用来作为挂载其他分区的“平台”,当然系统需要的目录可 不要用哈,你自己新建你自己的用吧。
挂载好之后,你硬盘里的数据,就可以通过类似/path/to/anywhere这样的方式找到;如果没有挂载就找不到喽。
用 一个庸俗的比喻来说,“/”相当于c:\,而“/etc、/bin、/sbin、/lib”这些目录大概相当于c:\windows和c: \program files,“/home”相当于c:\Documents and Settings,而当你把第二分区挂载到“/mnt/partition2”的时候,这个目录就相当于d:\了。
挂载一次试试:
cd /mnt (切换到/mnt目录)
sudo mkdir partition2 (新建一个名为partition2的空目录,你可以随意用其他名称)
sudo mount /sda5 partition2 (如果你只有一个硬盘且第二分区是逻辑分区的话,这个命令就将挂载该分区到partition2)
cd partition2 (切换到/mnt/partition2目录)
ls (列出该目录的文件)
现在应该可以看到你的D盘了。
反挂载:sudo umount /dev/sda5 (或者/mnt/partition2)
/*
这里我补充一点,我不知道你的会不会是hda2. sd表示sata硬盘。有关hda、hdb、hdc和hdb或者sda什么的详见上一篇吧。
另外,其实mount还可以手工指定分区格式。。如此等等。如果你需要NTFS写入支持。你可能需要进一步参阅其他文档。
*/
(如果你赶时间,机房快关门了或者要赶着去见MM,这段还是可以跳过)到这里,有人可能会说“linux太麻烦了,我有十几个分区,难道让我每次都要敲几十行命令?为什么不像windows那样启动时就全给我自动挂上呢?”
1. 我是说过要敲命令,可我没说过“每次”!下面将会介绍的fstab文件将会使你在这件事上一劳永逸的解决问题;事实上,甚至还有一种“零”劳永逸的方法,你甚至一个命令都不用敲,点几下鼠标就好了;
2. 像windows那样全自动挂上?也没有问题啊,装上一两个软件即可,不过我想提醒你:
这样真的好吗?未必。我可以肯定,你大多数时间只会使用几个特定的分区;再退一步讲,即使你是例外,但你也应该为别人想想吧?比如我,有一个分区有“敏 感”数据(是啥你自己猜),而且不常用,以前用windows的时候,我对这种做法就很讨厌,谁都可以随便瞅一瞅,不好!后来全搬家到linux分区了, 平时不挂载,要用才挂上,哈哈哈,我的系统我做主!从此不再受那微软的苦∼∼∼
“像windows那样”,你的脑子里为什么每时每刻都在这样想?是因为windows的方法最“好”?也未必,顶多只是你习惯了“那样”而已。试想如果 你从来都用linux的“这样”,然后有一天我突然给你一台windows电脑的时候,你也一样会疑惑的问我:“我的家目录哪去了?”,“为什么不能搞得 像linux那样?”。
承认了吧,所谓“最好”的“那样”是没有的,除了你那个有衰老迹象的思维里,哪儿都没有!赶快活动活动吧。
好了,回来。fstab文件在/etc/fstab.
用根权限才能编辑。试试sudo xemacs出来,如果你安装了xEmacs。否则,随便怎么搞,反正root下用什么编辑器打开它,根据上面的内容照葫芦画瓢添一行。试到可以用。。。
如果关于设备、文件、系统还想了解深一点,还得留到下一篇~\(≧▽≦)/~。。。
什么,我怎么知道fstab在哪里?
对了,还没有说怎么找文件。。。
find可以查找文件。。。真金实银地找,跟win的查找功能一样,也可以用locate。那个是基于数据库的。如果没更新到就没办法了。。。大概用法都是locate filename之类的,具体看man。
具体到现在还没展示出shell的威力?!
|