Linux知识学习

来源:互联网 发布:pandora软件 编辑:程序博客网 时间:2024/04/30 16:23

Linux常用命令

(1)查看已安装软件的版本号

以gettext软件为例

gettext -V 或者 gettext --version

(2)查看软件的安装目录

which gettext

whereis gettext

(3)安装一个本地软件包

Linux程序的安装主要是两种方式:

1.手动从网站上下载程序安装包到本地来安装,有点windows普通程序安装的意思:

a.下载到的是程序源码包
b.下载到的是已编译好的二进制安装包

2.从发行版提供的软件源,使用软件包管理器安装,这个有点windows的自动更新的意思。

1.a.下载到的是程序源码包:

源码包,就是程序源代码,下载到的格式一般为*.Z,*.bz2,*.gz,*.tar,*.tar.gz。后缀名看着很奇怪吧,解释一下:
 *.Z      使用compress程序压缩的格式;
 *.bz2    使用bzip2程序压缩格式;
 *.gz     使用gzip程序压缩格式;
 *.tar    使用tar程序打包的格式,注意只是打包没有压缩;
 *.tar.gz 使用tar程序打包的格式,并且使用gzip压缩;

源码包下载回来,首先需要解压缩或者说解包,类似在windows使用winrar解压缩。然后去找里面的readme文件,里面会有安装方法和特殊参数的说明。
一般编译安装通常是:
./configure
make
make install


1.b.下载到的是已编译好的二进制安装包

下载到的格式一般为*.bin,*.rpm,*.deb。

对于*.bin文件 安装:./ *.bin    卸载:直接删除程序即可

对于*.rpm文件 安装:rpm -ivh *.rpm    卸载:rpm -e *

对于*.deb文件 安装:dpkg -i *.deb    卸载:dpkg -r *

普通只需要掌握安装即可 至于卸载因为后两个可以用包管理器解决 命令只需要了解下 。。。


2.使用软件源和包管理器:


Ubuntu的包管理器是Synaptic
Suse的包管理器是YaST
Fedora的包管理器是yum


软件源是包含有所有可用软件的服务器,对于从软件源安装装软件,一般都要做下面两个步骤:


a.选择软件源,即要告诉系统从哪获得软件。系统都会自带了些软件源地址,但是由于都是国外的,速度比较慢,所以需要要修改,是为了在几个慢的里面选择一个比较快的,或者如果有的话就选择使用国内较快的源地址。


b.更新软件列表,即把软件源服务器上所存有的软件列表下载到本地,这样在本地可以及时查询到软件信息,不至于每次都去服务器查询。


对于不同发行版的具体操作方法请参照发行版的使用手册。
Fedora
Ubuntu
Suse

(4)删除文件夹和文件

直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思

/usr的由来及/usr目录结构

linux 文件结构中,有一个很神奇的目录 —— /usr。之前一直没有怎么关注过它,反正程序都是安装在里边的,也没有什么值得追根溯源的东西。直到有一天 fedora 要简化整个文件系统体系,看到讨论才想到,usr 到底是什么的缩写呢,它又是怎么来的呢?讨论中,大部分观点认为:
usr 是 unix system resources 的缩写;
usr 是 user 的缩写;
usr 是 unix software resources 的缩写。


根据常识判断,是 user 缩写的可能性不大,因为和 /home 冲突了嘛。不过是 system resources 还是 software resources 的缩写还真不好说。特此查了好多东西,却发现竟然连 wikipedia 也模棱两可。


后来终于找到了 相关的文档和介绍。

/usr usually contains by far the largest share of data on a system. Hence, this is one of the most important directories in the system as it contains all the user binaries, their documentation, libraries, header files, etc…. X and its supporting libraries can be found here. User programs like telnet, ftp, etc…. are also placed here. In the original Unix implementations, /usr was where the home directories of the users were placed (that is to say, /usr/someone was then the directory now known as /home/someone). In current Unices, /usr is where user-land programs and data (as opposed to ’system land’ programs and data) are. The name hasn’t changed, but it’s meaning has narrowed and lengthened from “everything user related” to “user usable programs and data”. As such, some people may now refer to this directory as meaning ‘User System Resources’ and not ‘user’ as was originally intended.(via 1,2)


/usr 是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,x,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。

曾经的 /usr 还是用户的家目录,存放着各种用户文件 —— 现在已经被 /home 取代了(例如 /usr/someone 已经改为 /home/someone)。现代的 /usr 只专门存放各种程序和数据,用户目录已经转移。虽然  /usr 名称未改,不过其含义已经从“用户目录”变成了“unix 系统资源”目录。值得注意的是,在一些 unix 系统上,仍然把 /usr/someone 当做用户家目录,如 Minix。


至此,真相大白。看来就像前一阵子的 /var/run 移到 /run 一样。


真的是不看不知道,一看吓一跳呀。原来 linux 几经进化,好多目录的诞生和用途已经产生了根本的变化。历史车轮在前进,长江后浪推前浪,正所谓:学习历史,收获真知;尽心竭力,前进不止。

附录:/usr 目录结构
/usr/bin : 所有可执行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 内的);
/usr/include : 各种头文件,编译文件等时需要使用; /usr/include/’package-name’ : 程序特定的头文件;

/usr/lib : 所以可执行文件所需要的库文件;
/usr/local : /usr 通常只包含系统发行时自带的程序,而 /usr/local 则是本地系统管理员用来自由添加程序的目录;
/usr/X11R6 : x 系统的二进制文件,库文件,文档,字体等。它不等同于 /usr 的作用,只有 x 才能调用这些库文件等,其他程序不读取或者使用。因为 linux 没有原生图形界面,而且 linux 大部分情况下是 for server 的,所以图形界面没有意义;其中 X11R6 代表 version 11 release 6; /usr/X11R6/bin : x 的二进制文件,包含运行 x 的必须文件;
/usr/X11R6/include : x 相关的头文件;
/usr/X11R6/lib : x 库文件;
/usr/X11R6/lib/modules : x 的模块,启动时加载。缺少 video4linux, DRI and GLX 和 输入输出设备 模块,将工作不正常;
/usr/X11R6/lib/X11/fonts : x font server 的字体文件;

/usr/doc : 文档。实际是 /usr/share/doc 的软链接;
/usr/etc : 一个极少用到的配置文件存放地;
/usr/games : 曾经包含游戏等文件,现在很少用到;
/usr/info : 系统相关信息,是 /usr/share/info 的软链接;
/usr/man : man 手册,已经移至 /usr/share/man;
/usr/sbin : 类似 /sbin,root 可以执行。但此目录不包含在环境变量 $PATH 中,它包含的程序类似于 chroot, useradd, in.tftpd and pppconfig;
/usr/share : 它包含了各种程序间的共享文件,如字体,图标,文档等。(/usr/local 对应的目录是  /usr/loca/share); /usr/share/doc : 类似应用程序的 man 手册。它包含程序的说明文件,默认配置文件等;
/usr/share/info : 不常用,已经被 man 代替;
/usr/share/man : app 的 manual;
/usr/share/icons : 应用程序的图标等文件,分为 png,svg 等多种格式;
/usr/share/fonts : 字体文件,系统范围内可使用,~/.fonts 仅当前用户可用;

/usr/src : linux 内核的源码和说明文档等; /usr/src/linux : linux 源代码;
/usr/src/linux/.config : 内核编译过程产生的文件;通常由命令 ‘make config’ , ‘make menuconfig’ 或 ‘make xconfig’ 执行后产生;
/usr/src/linux/.depend, /usr/src/linux/.hdepend : ‘make dep’ 检测编译依赖时需要的文件,由 /usr/src/linux/.config 产生;
/usr/src/linux/COPYING : GNU license;
/usr/src/linux/Makefile : 编译内核所需的 Makefile;
/usr/src/linux/Rules.make : 当有多个 Makefile 时,根据它的规则执行 make;

/usr/tmp : 已经被众多发行版抛弃的临时文件夹。


Shell相关知识

知乎粘贴过来的

先提一下, shell 像其它泛滥的名词一样,有广义和狭义之别,广义上应该指所有操作系统中用来调用系统服务的用户界面,比如说 MSDN 上对 Windows shell 的定义:Windows Shell (Windows)
。狭义上,指的是操作系统的命令行界面,更进一步地, Unix-like 系统的命令行界面。这种情况下 ksh, csh, tcsh 这些都被称为 Unix shell ,由于这些 shell 程序太牛逼了,以至于被移植到不少非 Unix 操作系统上,甚至是 Windows 上,显然,但是它们还是 Unix shell ,由于其它——基本上就是 Windows ——操作系统的命令行界面实在太弱。于是 Unix shell 这个名词摇身一变,成了命令行界面的代名词,有了更广的含义。shell 也就变成了 Unix shell 的特指。而 Unix shell 也就成了所有 Unix-like 操作系统上的传统的命令行的特指。

接下来是 Linux 或者更正确的提法 GNU Linux 。在历史上,先有 GNU (革奴计划)后有 Linux 内核, Linux 成就了 GNU ,也很杯具地盖住 RMS 的工作以及政治目标。于是 RMS 年年讲,月月讲,天天讲,这个操作系统应该叫GNU Linux ,……然后出场的就是 bash 或者说是 GNU Bash ,也就是为 GNU 开发的 shell ,由于大家都把 GNU Linux 叫 Linux 了,这过程很自然的就是 GNU Bash -> GNU Linux Bourne again Shell -> Linux Shell,于是 bash 就成了 Linux Shell (假如 Linux Shell 成立的话)。当然在提到 Linux Shell 编程之类的时候,不要忘了 GNU 提供的的一系列其它命令,如 awk, sed, uniq, sort, cut 等等这些也统统在 Linux Shell 编程这个概念之下。

当然,题主的意思其实是想说明这个提法很诡异。这么一大堆字下来,我想,确实有点诡异。不过,由于 Unix 市场份额的消融和 Linux 的崛起, "linux shell" 这个提法木已成舟,甚至于在极少的情况下取代 Unix Shell 来用来称呼命令行界面。历史无法改变。不管是 RMS 还是 K&R 还是 Bill Gates 或者其它一堆的 CS 相关人士或者是题主对此有多么不满。




0 0