QUESTIONS 问题与解答
不须要任何命令的简单介绍
-
历史
-
(APUE 提到了1990年以前的unix历史,还有各类标准 ANSI ISO IEEE posix xpg3.... 可是linux 和 BSD 尤为是freebsd 在其后才大行其道) unix 的历史与 c 是紧密相关的,不管是产生发展仍是后来的标准制定。标准的制定反映出的,是当时的竞争之激烈。竞争在标准制定以后获得了抑制,可是这段纷争的时间却使unix的发展减缓了另外一个阻碍发展的因素是版权,BSD的发展被延迟了,linux在版权上的障碍才刚刚开始历史问题能够参阅精华区的“历史”目录
-
版权模式
-
自由软件版权和开源软件版权的区别,在于对衍生工做的限制。 GPL 的限制指出,你能够修改GPL软件,可是若是要再发行修改过的版本,就必须容许其余任何人对这个版本进行再次修改。根据这一条,不少讨论都是没有必要的。若是你的修改不会再发行,那么就没必要考虑是否公布修改的细节。也就是说,政府/军队的保密限制和GPL是不会冲突的。 FDL 的限制彷佛仅仅须要保留声明这种保证用户权力的作法是否有道理,仍是不清楚开源软件版权,例如BSD和相似的X版权,要求在任何衍生工做中保留原做者的信息对再次发行修改后的版本没有限制不明白为何要这样作--其中有一种自信,“舍我其谁”的勇气吧参阅精华区“历史文化”目录
-
合做开发模式
-
有不少工具用于实现合做开发参阅精华区“软件开发”目录
-
linux最吸引人的地方是什么?
-
不少人想知道linux为何那么好,为何让人着迷我想我喜欢它,由于它的历史悠久,结构很清楚很漂亮,不少思想很巧妙也许仅仅是“历史”就足够了。怀古的人不在少数吧合做开发,集中你们的智慧,从中能够产生无限的可能自由?共产主义的狂热精神?天下大同?固然,最直接的就是能够紧紧地将计算机控制在本身手里,想把它修饰成什么样子就作成什么样子,能够想出和别人彻底不一样的生活方式,好比 iloveqhq的scheme生活环境,是通常人享受不到的各类新鲜的想法,随时能够试验一下--让想法时时刺激头脑象一个游戏,耗时,费力,须要常常上论坛找攻略,历来没有必定的玩法
-
FUD 是什么意思?
-
2003年底,伴随SCO对各个有关linux的公司的指控,还有对用户的威胁恐吓,各类媒体也纷纷兴风做浪,发表耸人听闻的新闻,例如新浪的一些报道。 FUD 不只指这些不负责任的话,还包括对linux等自由软件/开源软件的怀疑,对自身的怀疑我本身认为过度的狂热也能够叫作FUD。总之,没有平和的态度就没办法实实在在地做事情,因此技术问题以外,争论仍是少一点好,怀疑更要少一点其实全部初学者都会不由自主地自称“菜鸟”,会“问弱弱的问题”。问题在于,有没有抓紧时间提升水平
-
目录 文件 路径概念
-
APUE 中开始就讲目录 文件 路径的概念,由于这几个概念太基础了。自从 “文件”出现以后,又出现了层次目录结构,对计算机中资源的管理才逐步发展起来。文件很适合于描述计算机上的资源 unix的目录结构是很是严谨的树形结构,根目录是“/”,其余目录和文件都必须在这个目录下面。每一个目录下面均可以有子目录和文件,目录和文件名称的长度是与文件系统有关的路径是引用一个目录或文件时用到的,指示它的位置的字符串。绝对路径是说从根目录“/”开始,沿着目录树找到须要引用的目录或文件,而后将中间经历的节点都写出来。例如,“/root/abc” 是说要找到“abc” 文件,就必须从 “/”开始,中间经历 “root” 目录才能找到。当前目录是说用户正处于树形目录的哪一个节点上,相对路径就是要引用的目录或文件相对于当前目录的位置。例如,我如今在“/root” 目录当中,要引用 “/root/def/xyz” 的话,只要用 “def/xyz” 就能够了
-
文件类型
-
文件有不一样的类型,在windows里就能够看到,有文本文件,图像,声音,视频可是在linux中的文件类型要更多。例如,符号连接就是很是有用的类型另外,linux中的二进制可执行文件是ELF格式的,不须要扩展名;而windows中是PE格式,有固定的扩展名。因此,两个系统的应用程序不能换用,有朝一日也许能够 linux中很重要的一种文件就是设备文件。几乎全部的设备都有一个对应的文件,在“/dev”当中例如,硬盘harddisk简称hd,那么系统中的第一个硬盘就是hda,第二个就是hdb.....,而后对应的设备文件就是“/dev/hda”。硬盘上的各个分区用数字来编号,例如第一个硬盘的第一个分区就是“/dev/hda1”,第二个分区就是“/dev/hda2” 再举一个例子,显卡的设备文件“/dev/fb0”,鼠标设备文件“/dev/input/mice” 和“/dev/psaux” 要注意的是,linux中的可执行文件能够是二进制的,也能够是文本文件。 “可执行”仅仅是文件的一个属性而已,不像windows中因为文件系统中能保存的属性信息少,只能经过扩展名来识别文件类型。linux中的文件能够不用扩展名,也能够用任意的扩展名各类各样的文件类型,是为了将不一样的对象进行统一的处理。咱们能够用open lseek read write close 来读写一个文本文件,也能够用这几个函数来处理鼠标,让声卡播放一段声音,读写一块硬盘(若是你敢的话)。在windows中,不一样的设备处理的方法是不一样的,而unix环境中的处理方法是整齐划一的。控制方法通常是fcntl和ioctl。(谁能告诉我ioctl犯了什么错误了?)
-
硬盘分区方式
-
硬盘有不少种,分区也有各类各样的方法。linux支持它们,可是经常使用的分区方法就只有一种了。这种分区方法的要求是这样,一块硬盘上只能有最多四个主分区,最多一个扩展分区;在扩展分区中能够划分无限多的逻辑分区。记住这三个概念。每一个分区的第一个扇区通常都是保留分区信息的,数据通常从第二个扇区开始。分区信息中很重要的内容是“下一个分区的位置在什么地方”还有“本分区的大小是多少”。所以,linux对分区进行编号的顺序并非硬盘上分区的物理排列顺序,而是从第一个分区开始,不断查找下一个分区。这样的结果是编号很容易弄错。要处理分区时,必定要把当前分区状况备份一下 pqmagic分区软件不如linux中的分区软件好用,由于它对混乱的分区编号处理更容易出错启动引导程序通常都装到某个分区的第一个扇区里面,和分区信息放到一块儿。可是,若是安装启动引导程序时指定的设备错了,那么可能会把数据破坏掉,或者将其余分区的引导程序破坏掉。典型的状况是这样:windows将本身的引导程序放在第一个分区--主分区1的开头,咱们的linux fans想把linux的引导程序, lilo或者grub放到整个硬盘的开头--MBR里面。MBR的设备名是 “/dev/hda”,可是主分区1的设备名是 “/dev/hda1”。一个不当心,系统就启动不了,坏掉了
-
国际化,locale的概念,utf8 等字符编码的含义和用法
-
后两个已经不用再多说了。是很过期的话题。可是前日还有人问turbolinux是否是内核汉化的。用户并非直接和内核打交道,为何要汉化内核呢?目前的内核包含各类编码,用于文件名的转换,可是并无包含字体,由于用户不是直接和内核打交道!国际化是整个系统范围内的,对编码进行规范,对输入输出方式的函数接口和通讯协议进行总体的设计,提供处理各类语言环境的统一方法。本地化中,对编码的规定和对日期时间、货币格式的规定是国家标准,而输入法、字体还有应用程序界面的翻译,还须要你们共同努力。国际化和本地化都应当在应用程序中实现,例如zhcon和cce。窗口系统中的国际化和本地化也是由应用程序实现的,窗口系统自己只提供通讯协议 zhcon还不是很完善,支持的编码太少了
-
中文化是本地化的一种,终端的本地化不是很完整
-
对世界上全部的字符进行编码,就是unicode。可是,具体的实现方法有不少种,有的采用定长编码,有的采用变长编码。utf8编码是变长的,能实现unicode的大部分要求 zh_CN.UTF-8,zh_CN.GB18030 这些locale 的定义,前一部分是国家代码,语言代码,后一部分是编码。不一样的国家代码和语言代码对应着不一样的输入法,日期时间货币格式等等,对用户比较重要,编码则不是很重要,不一样的语言可使用相同的编码,推荐使用utf8
-
模块化的设计思想 界面无关 设备无关
-
这一段尚未想好不少程序是和界面没有关系的。例如,字体的使用通常使用Xft2字体库,可是它和窗口环境没有必然联系。大部分bt工具是和界面没有关系的。图形应用程序咱们使用计算机时,咱们的一举一动都是在和系统通讯。系统中程序执行时也在互相通讯。想要打开输入法,咱们按下ctrl-space,这时候输入法和应用程序之间就经过XIM协议开始通讯了--过些日子,也许就不是这种协议了,可是通讯是必定存在的一方面,每一个程序都关心本身的功能,另外一方面,每一个程序都要和其余程序进行通讯。
-
进程的概念 线程
-
APUE 中提到,进程是一个程序的运行中的实例。进程有不少属性,好比编号,全部者,当前运行状态,启动时的命令行,环境变量,运行时间,打开了什么文件.... 线程和进程相似,也有不少属性。同一个进程的不一样线程能够很容易地互相访问数据。so laris的线程实现很不错,很是灵活
-
什么发行版好?什么unix好?
-
精华区目录中有各类unix的对比,linux的使用感觉,能够看一看还有对书和网站的推荐 debian 发展太慢了,除非用unstable 版本,可是那又太快了。用 knoppix 上上手不错 redhat 一直很好用,可是升级时最好重装系统。如今fedora的网络升级不知道能不能彻底升级? redhat对中文的支持也很好,可是须要手动安装的软件比较多 turbolinux magic 还有国内厂商的版本 对中文支持不错我的不喜欢mandrake,很难定制。slackware 须要本身处理的东西太多了 freebsd 的使用和debian 很类似,自动化程度很高
须要综合使用命令才能够完成的操做
-
文件权限
-
文件权限并非文件类型。所谓“可执行”,仅仅是文件的权限而不是类型。传统的文件权限是九个字符rwxrwxrwx三个一组一共三组,再加上文件全部者和组。高级的文件权限就不是这么简单了,相似ntfs,能够指定任何用户/组对某个文件的各类各样的权限用 “ls -l” 命令能够看到当前目录中全部目录和文件的权限用 “chmod” “chown” 和 “chgrp” 命令能够修改权限
-
运行程序 来自bash手册页
-
假如看到文件的权限中带有x,那么它是一个可执行的程序。要执行它,可使用相对路径,也可使用绝对路径。例如,个人目录中有一个“run-me” 文件是可执行的,那么我能够运行 “/root/bin/run-me” ,或者先运行 “cd /root” 再运行 “bin/run-me”。假如说这个可执行文件的位置在 “/usr/bin” 当中,那么我没必要使用路径也能够直接执行它,由于环境变量 “PATH” 中包含了 “/usr/bin”。运行 “export” 能够看到 “ PATH” 的定义
-
具体目录的做用 来自FHS 标准
-
这个标准不是很正式,可是不少unix系统都在用。意思就是,“/” 根目录下面的子目录和文件都有它们各自的用处,不能随意增长删除。好比说,“/dev” 就是设备,“/etc”
就是全部配置文件,“/var” 是应用程序自动管理的数据,好比用rpm安装了一个软件, rpm会将那个软件的信息存在“/var” 当中。“/usr” 固然就是应用程序的目录。“/bo ot” 是内核还有启动时要用到的文件。试一试,“ls lR /” :)
-
安装和删除软件--最简单的办法
-
最简单的,把这个软件包含的文件--通常是一个可执行文件,复制到 “/usr” 当中就能够了。复制到什么地方呢?FHS 对 “/usr” 目录中的子目录也有规定。“/usr/bin”
是可执行文件,“/usr/lib” 是库文件,就是xxxxxx.so.1 之类的,“/usr/share” 是不须要修改的数据,好比帮助手册,桌面图标等等。要卸载软件,只要从“/usr” 当中把复制过去的文件删掉就能够了复制用 cp 命令,删除用 rm 命令。当心不要误删除了有用的东西和windows里面不太同样,不会在一个系统中安装四个或者五个QQ却仍然找不到QQ装在什么地方。通常安装软件要用make,rpm 或者dpkg 等等方法,不用本身操心复制删除文件
-
进程间的关系,应当使用APUE 中的叙述
-
用ps 命令能够查看进程。用top命令能够动态地查看进程。固然,要搞清楚输出是什么意思,须要仔细看看帮助 fg 和 bg 能够在一些进程中切换 kill 和killall 能够控制进程中止和退出一边执行命令,一边能够到“/proc” 目录看一看。这个目录是整个系统的状况,包括硬件和软件的信息。多练一练 “cd”,“ls” 还有 “cat”。看了足够多以后,对于ps 和 top 命令的输出就大概明白了。我认为“/proc” 是新手训练的最佳场合
-
fork exec 环境变量 守护进程(daemon)
-
-
shell 编程初步-shell,awk,perl
-
-
命令
-
cd ls ;cat less ;rm cp mv ln ;mkdir chmod chgrp ; reboot poweroff ;mount umount df du ;tar make ; fdisk parted ;vi ;man info ; rpm apt-get apt-cache dpkg ;lilo grub modprobe ; gcc g++ ;ps fg bg top ;最经常使用的命令是否是poweroff 和 reboot ?
-
命令的通用选项
-
cd - 切换到上次所在的目录 cd .. 切换到上层目录 ls -lh 不少命令的参数中,“-h” 表示的是将文件大小转换为以 “MB” 和 “kB” 为单位 “-l” 是长格式,能够看到文件更多的信息 df -h du -h 查看磁盘空间,已用多少,剩余多少 free 查看内存和交换空间使用状况。不过通常用top来看更好一些 less -isr 能够用这个命令来看看不少类型的文件的内容,包括文本文件,压缩包等等。加上参数就能处理中文了 rm -rf 强制删除,包括目录和文件 cp -a 彻底复制,保留原来文件的全部属性 cp -R 复制,包括目录和文件。默认不包括目录 ln -s 创建符号连接。符号连接的目标能够是目录或文件,也能够不存在。产生的新文件和连接目标属性和做用彻底一致。 tar zxf tar zcf tar jxf tar jcf 建立压缩文件(c)和解压缩(x) j 对应的是 .tar.bz2,而 z 对应的是 .tar.gz fdisk -l 列出一个硬盘的分区状况。fdisk 命令交互执行更有意思 rpm -ivh rpm -Uvh 安装一个软件包 或者升级一个软件包 rpm -qip rpm -qpl 查询一个软件包的信息和内容 rpm -qf 查询一个文件属于哪一个软件包 apt-get update 升级整个系统,可是不会强制升级一些不合规范的内容 apt-get install 安装一个软件。debian最吸引人的地方就在于容易地安装和删除软件 dpkg -i dpkg -l apt-cache search 若是软件名称更容易记就行了
实习
-
安装X输入法
-
X 输入法通常须要两个环境变量,一个是 XMODIFIERS, 另一个是 LC_CTYPE 好比要使用fcitx 输入法,XMODIFIERS 最好是 “@im=fcitx” (也能够是其余值),LC _CTYPE 是一个locale 类型的变量,其中的国家代码必须是zh,语言代码和编码却是无所谓再好比要使用scim 输入法,XMODIFIERS 应当是 “@im=scim” , LC_CTYPE 在输入中文时同上,输入其余文字时能够是其余国家代码。固然,若是你的系统中连中文字体都没有,就不要期望有中文输入法了。由于不一样的进程有本身独特的环境变量设置,因此彻底能够在同一个窗口系统的不一样应用程序中使用各类输入法,只要在启动应用程序以前先设置 XMODIFIERS 就能够了。安装X输入法最困难的是如何使输入法能够随着X窗口系统而启动和退出。不一样的发行版有不一样的运行输入法的方法,好比redhat/fedora 能够修改 “/etc/X11/xinit/xinit.d/xi nput” 文件
-
安装终端的中文环境
-
-
遍历 /proc 目录
-
-
安装软件 查询软件包
-
-
配置文件,fstab lilo.conf grub.conf XF86Config
-
-
配置lilo 或者 grub, 问题修复
-
建议找一个好一点的lilo.conf 或者 grub.conf 看一看,至少是能用的配置文件看一看,而后再着手进行修复工做。有可能须要手动从头开始写一个配置文件肯定真的弄清楚了硬盘分区状况了吗?在BBS上求助时,必定要把分区状况和配置文件,还
有致使出错的步骤都贴上来精华区lilo 和grub 目录都各有上百篇帖子,讲述安装和修复的过程 linux
-
mount
-
mount 命令用于将一个设备挂载到一个目录上,而后就能够访问其中的文件了。 mount 命令可选的参数很是多,可是要想正确挂载一个设备,必须搞清楚一些事情例如:
mount /dev/sda1 /mnt/u-disk/sda1 -t vfat -o defaults,users
其中,USB移动硬盘设备对应的设备文件名是 “/dev/sda1”。若是设备文件名搞错了,那么挂载确定会出错。不少出错都是由于 “/dev/sda1” 对应的设备根本不存在 -o 能够指定的选项很是多,不一样的文件系统都有本身特定的选项。经常使用的就是 users iocharset fmask dmask rw/ro 这一些。iocharset 是本身的编码,在挂载 windows 网上邻居的目录时,iocodepage 是对方的编码。看帮助,man mount 很是长。常见的/etc/fstab中的一行是这样:
/dev/hda1 /mnt/harddisk/C vfat defaults,users,umask=0 0 0 若是是kernel-2.6 那么还能够加上fmask=111,dmask=0 来控制权限
-
安装X字体
-
很是简单。字体有两个系统,一个是旧一点的X系统,一个是新一点的Xft2系统。要想在两个系统中同时使用某个字体,须要将这个字体复制到某个“/usr/local/share/fonts” 的子目录中去,而后在 “/etc/X11/fs/config” 中加入这个目录,最后执行 “fc-cache -fv” 刷新字体列表,“service xfs restart” 就能够了不一样的系统中,完成这几个步骤的具体执行的命令可能不同。复制字体应该都同样,而后可能须要将这个目录加入到 “/etc/X11/XF86Config” 当中去,最后也有可能须要重启动图形系统。要灵活一点
-
配置latex 和 ps 系统
-
-
分区,从新安装系统
-
这里是实践部分。硬盘分区,常见的分区方法是一个主分区,一个扩展分区,而后在扩展分区中能够划分不少不少逻辑分区。也有分区方法是划分两个主分区,例如IBM的系统还原分区,还有dell也是这样。为linux系统分区能够只分一个swap分区和一个 “/” 分区。swap分区大小三五百M就能够了。而 “‘/’ 分区” 的说法只是为了方便,意思是将某个分区做为 “/” 目录来使用。相似的,若是安装程序要划分 “‘/boot’ 分区”,那么也是将某个分区做为 “/boo t” 目录来使用。任何一个目录均可以单独划为一个分区,例如能够将 “/usr/local” 目录单独划为一个分区,这样把数据放在里面,重装系统时不会被删除掉。高级的lvm和lvm2 只在大硬盘上才有用
HISTORY 历史
版上讨论了好久是否是要提升技术性了。的确,大部分入门级问题在从前的帖子中都有涉及,精华区中大概也有答案,重复地提问“将有价值的论题淹没了”。shell
要提升技术水平,就要找到更多的论题和提出更好的想法。可是,鲁迅先生说得好,要有“天才的土壤”才行。因此,对于新手问题也不能封杀。一种设想,是请几位熟练的使用者专人负责某一个方面的问题,用信件联系,而后把有价值的讨论结果发上来。可是,这样效率不高。 编程
我想试行一下这样的作法,就是入门级问题以及解答就跟在这个帖子后面,过一段时间就清理一下,总结到一篇文章中。请你们配合。暂时设定精华区的第19个目录和第29个目录分别用做已解决/未解决问题的保存之处。 windows
后续的第二篇帖子是一些快速解答,能够在firefox 的搜索栏中使用 “页面内搜索”功能来查找关心的内容。 bash
欢迎修改 网络
Copyright
Permission is granted to copy, distribute and/or modify this page under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. less