从windows到*nix(二) 日常操作

在windows下,我们有这样一个使用流程:登录系统->浏览文件系统->找到程序执行/找到文档打开->退出系统。

 

登录

在*nix中,有两种登录方式,一种是直接在本地终端上登录,一种是通过ssh或者telnet远程访问。不管哪种方式,在输入用户名、密码并成功登录后,出现在面前的是一个提示符,一般来说是$符号或者#,提示符也可以自己定制,如下所示

$ oyd@localhost ~ $ localhost oyd #  

 

这是*nix的shell给你显示出来的,shell相当于windows的外壳程序explorer.exe,在*nix上你在提示符后面键入命令与shell打交道,windows中你用鼠标,键盘通过GUI界面与windows的外壳程序交互。

 

*nix的shell有很多种,如csh,ksh,bash,最流行的就是bash,我相信没有怪癖的用户都会使用bash。shell的选择可以在添加用户的时候指定,也可以输入命令切换。键入下面命令可以看出你的shell究竟是不是bash。

localhost oyd # echo $SHELL /bin/bash localhost oyd # 

如果显示的是其他的shell,你可以手工输入bash命令切换过去

$ echo $SHELL /bin/tcsh $ bash bash: not found $  

不过上面的提示bash: not found表示失败了,如果成功,应该是直接给你一个新的提示符,这个失败的原因是系统中没有安装bash,这也从一个侧面说明bash的地位,如果你工作的shell不是bash,那么八成是你系统中没有安装。

 

如果不是bash也没什么,各种shell在基本操作上大同小异,bash只不过让你更舒服一些。

 

浏览

先看看如何浏览你的文件系统,有下述一些命令可以使用

pwd 看看你现在在哪

ls 列出当前目录的文件

cd 进入某目录,cd .. 进入上级目录 cd ~ 进入用户主目录

df 列出当前文件系统分区

示例如下:

oyd@localhost ~ $ cd / oyd@localhost / $ ls bin boot dev etc home lib lost+found mnt opt proc root sbin sys tmp usr var oyd@localhost / $ cd ~ oyd@localhost ~ $ pwd /home/oyd oyd@localhost ~ $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 7692908 2412544 4889584 34% / udev 10240 160 10080 2% /dev /dev/sda1 38856 11552 25298 32% /boot oyd@localhost ~ $  

 

初次使用,你可能会觉得这种方式浏览起来远不如windows方便。但是如果你善用shell的tab自动补全的话,你就会发现优势。

举个例子来说,我正在写博客,突然我想到D:/CODE/sgfc-1.16下面去看看,那么在windows中,我需要先点开始菜单,然后点我的电脑,当运行的程序有点多时,这里要等待好一会儿(不要以为你的电脑快,用久了都会变成我这样的),然后双击D盘,文件有点多,找CODE花了不少时间,随后双击进去,找sgfc-1.16又花了不少时间,再双击进去。

那么在*nix下,假定我要去/home/oyd/CODE/sgfc-1.16,那么我只需要键入cd ~/C<tab>/sg<tab><enter>就可以了(<tab>表示制表键,<enter>表示回车键),这个过程非常的快捷。

 

windows的浏览方式特别适合陌生的东西,例如你去浏览别人的系统。*nix的浏览方式适合你已经很熟的东西,例如你自己电脑上的目录结构。

 

查看/执行

和windows的文档为中心不同,*nix的操作上依旧是程序为中心。也就是说你必须先知道能打开这个文档的程序是什么,你才能打开这个文档。

你会觉得*nix这种操作相当落后,但至少,你对你在做什么很清楚,不是吗?

在windows下,鬼知道你双击一个txt的时候,背地里是哪个木马在接管。何况,文档为中心的操作方式根本就不是一种能贯彻的理念,例如在文件进化到数据库之后,没见过谁是双击哪一条数据关联什么操作的。

 

*nix的一个基础信念,会使你在处理文档时比在windows下更轻松。*nix信奉一切都是文本。

例如你要在windows下查看账户信息,你需要专用的工具,但是*nix下,它只是一个文本文件(/etc/passwd),你可以用任意你习惯的方式去查看(例如cat)。

 

也就是说,windows下,你看到什么就双击,而*nix下,你看到什么就cat。举个例子,查看CPU的信息:

ouyangde@localhost ~ $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 14 model name : Genuine Intel(R) CPU T2400 @ 1.83GHz stepping : 8 cpu MHz : 0.000 cache size : 2048 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss nx constant_tsc up arch_perfmon pebs bts tsc_reliable pni pdcm bogomips : 134637.15 clflush size : 64 power management: ouyangde@localhost ~ $ 

 

cat命令查看整个文件

more和less以一种一次一屏的方式查看整个文件

head查看文件的开头n行

tail查看文件的结尾n行

more或less你可以不管,但请记住head和tail,它们非常有用,对于程序员来说,在*nix下的日常操作也像在编程。

tail还有一个超级常用的用法,tail -f,它用来监视日志文件非常有用,如果你在windows下用ultraedit看日志文件的话,你会切换一下,再回来看看日志是否改变,虽然麻烦,但已经比用记事本好多了。要不就是有专用工具来查看日志,那些专用工具提供了一个ListView控件以一行一行列出日志(说来惭愧,小时候我也做过类似的工具)。

但是tail -f,简单的就好像它不存在一样,但是你一旦用过,不会再寻求其他了。

 

也有非文本文件,对于这类文件,有一个命令file,可以先探明它是什么类型的:

$ file main.c main.c: ASCII C program text $ file main.o main.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped $ file 1.JPG 1.JPG: JPEG image data, JFIF standard 1.01 $ file vim-7.2-3-src.tar.bz2 vim-7.2-3-src.tar.bz2: bzip2 compressed data, block size = 900k $  

 

 

*nix命令,除了shell内置的以外,都是一个个*nix可执行文件,它们放在不同的目录下,有一个PATH环境变量向shell指出应该在哪个目录找到它们。

ouyangde@localhost ~ $ echo $PATH /usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.1.2:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 ouyangde@localhost ~ $

一般默认设置中的PATH都不包含当前目录,当前目录用点(.)表示,所以你执行当前目录的程序时,要在前面加./。例如./configure,这说明执行的是当前目录下的configure程序。

要执行一个程序,必须要有程序文件的执行权限。可执行的文件不一定是二进制,也可以是脚本。用ls -l来查看文件权限。

$ ls -l configure ttt -rwxr-xr-x 1 oyd oyd 152953 Dec 18 18:35 configure -rwxr-xr-x 1 oyd oyd 8349 Dec 18 18:32 ttt

如上-rwxr-xr-x中的x表示可执行。因此这两个文件都是可执行文件。

$ file configure ttt configure: Bourne shell script text executable ttt: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped

但是configure是一个文本脚本,可由shell执行,ttt则是一个*nix下的32位可执行程序,如你所见,它还是动态链接的。

 

如果你确认一个文件是可执行的,例如ttt,那么你可以用下面几种方式来执行:

$ pwd /home/oyd $ ls -l auto/ttt -rwxr-xr-x 1 ouyangde ouyangde 8349 Dec 18 18:32 auto/ttt $ auto/ttt Hello, world! $ /home/oyd/auto/ttt Hello, world! $ cd auto $ ./ttt $ Hello, world! $

 

*nix程序有一些通用的对命令行参数的约定,有两种风格,长选项和短选项。一般来说,-h 或者 --help能够查看关于这个程序用法的简短帮助。

如果输入错误,Ctrl+C可以中断当前一行的输入,shell会输出新的提示符

 

退出*nix系统可以用exit命令。

你可能感兴趣的:(windows,ListView,shell,File,bash,文档)