18个问题的解答
1. Linux系统的结构;
在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。 文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。 在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 .. 来表示。 . :代表当前的目录,也可以使用 ./ 来表示; .. :代表上一层目录,也可以 ../ 来代表。 如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
2. 什么是shell?shell的作用;
1、shell是操作系统的最外层,是一个用户跟操作系统之间交互的命令解释器。 2、大多数linux默认的shell命令解释器是 bash(/bin/bash) 3、shell独立于内核,是链接内核和应用程序的桥梁,通俗来讲shell是内核周围的外壳 shell脚本是shell命令组成的文件。换一种说法,shell脚本是利用shell的功能所写的一个程序, 这个程序使用纯文本文件将一些shell语法和指令写在里面,让使用者很容易的就能够一个操作执行多个命令。 1、shell可以合并编程语言以控制进程和文件,以及启动和控制其他程序 2、shell能够减少大量的重复输入和交互操作,能够进行批量的处理和自动化完成维护,减轻管理层 的负担
3. Linux用户类型及其用户主目录;
Linux下用户分为3类:超级用户(root)、系统用户、普通用户。 超级用户的用户名为root,它具有一切操作权力,因此为安全起见,建议不要轻易的在root账户下面对文件进行操作。在Linux操作系统的字符界面,root账户的提示符为#,且默认情况下,root用户的UID为0。 系统用户是Linux系统正常工作所必需的内建的用户,一般是用于管理服务所用。系统用户不能用来登陆,如bin、daemon、lp等用户。系统用户的UID一般为1~499,它们的shell为/sbin/nologin。 普通用户是为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。在Linux操作系统的字符界面,普通用户的提示符为$,且普通用户的UID默认为1000~60000。 ~在Linux中代表用户主目录 对一般用户,~表示/home/(用户名) 对于root用户,~表示/root 如果要查看~的真实面貌,可以先进入~目录,然后用pwd -P命令查看~的绝对路径 cd ~ pwd -P
4. shell提示符:[用户登录名@主机名 当前目录]#、$ ;
[mozhiyan@localhost ~]$ 这种格式包含了以下三个方面的信息: 启动 Shell 的用户名,也即 mozhiyan; 本地主机名称,也即 localhost; 当前目录,波浪号~是主目录的简写表示法。 对于普通用户,Base shell 默认的提示符是美元符号$;对于超级用户(root 用户),Bash Shell 默认的提示符是井号#。该符号表示 Shell 等待输入命令。
5. 输入输出重定向及用户文件描述符;
除了能从键盘输入和输出到屏幕,还应能从文件输入和输出到文件中保存信息,这就改变了原始的输出输出反向,这种改变就是重定向,重定向又分为输入重定向和输出重定向,而输出重定向又分为输出覆盖重定向和输出追加重定向。 文件描述符 在执行一个shell命令是通常会自动打开3个标准文件,如下: 标准输入文件(STDIN,文件描述符为0):默认从键盘输入,也可以与重定向配合指定从文件或命令输入; 标准输出文件(STDOUT,文件描述符为1):默认输出到屏幕,也可以与重定向配合指定输出到文件; 错误输出文件(STDERR,文件描述符为2):默认输出到屏幕,也可以与重定向配合指定输出到文件; STDIN对应/dev/stdin设备,STDOUT对应/dev/stdout设备,STDERR对应/dev/stderr设备; 标准输入:stdin 文件描述符 0 < 、<< 0< 、0<< 标准输入默认就是0,0可以省略不写 标准输入:stdout 文件描述符 1 > 、>> 1>、1>> 标准输出默认就是1,1可以省略不写 错误输出:stderr 文件描述符 2 > 、>> 2>、2>> 错误输出是2,2必须要写 2>&1 和 &符号 ls -l /etc/* fu.txt >>outInfo.txt 2>&1 #表示把标准输出和错误输出信息内容都追加到outInfo.txt文件 ls -l /etc/* fu.txt &>>outInfo.txt #等价于上一条 ls -l /etc/* fu.txt >>outInfo.txt 2>>err.txt #标准输出和错误输出内容分别追加到不同的文件 /dev/null 是一个无底洞,可以把不想要保留的信息丢进这个洞里
command < file 等价于 command 0> file #将文件作为标准输入,即文件作为命令的标准输入,默认就是0,0可以不写 command << delimiter 等价于 command << delimiter #从标准输入中读入,直到遇到delimiter分隔符 command > file 等价于 command 1> file #将命令的标准输出内容覆盖到文件file,标准输入默认就是1,1可以不写 command >> file #命令的标准输出内容追加到文件末尾,默认就是1,1可以不写 command 2> file #命令的错误输出内容覆盖到文件,错误输出必须要写文件描述符2 command 2>> file #命令的错误输出内容追加到文件末尾,错误输出必须要写文件描述符2 command > file 2>&1 # 2>&1意思是把 标准输出和错误输出 都重定向覆盖到 file文件 command &>file #等价于上面一条,把 标准输出和错误输出 都重定向覆盖到 file文件 command >> file 2>&1 # 2>&1意思是把 标准输出和错误输出 都重定向追加到 file文件 command &>> file #等价于上面一条,把 标准输出和错误输出 都重定向追加到 file文件 还可以将标准输出和错误输出方便重定向到不同的文件: command >> file1 2>>file2 # 标准输出重定向追加到 file1文件,错误输出重定向追加到 file2文件 test.txt文件是不存在的 ls /usr/local/apache/conf/ test.txt >>/stdout.txt 2>>stderr.txt #标准输出内容追加到stdout.txt,错误输出内容追加到stderr.txt ls /usr/local/apache/conf/ test.txt &>>/stdout.txt #表示标准输出和错误输出内容都追加到相同文件 ls /usr/local/apache/conf/ test.txt >>/stdout.txt 2>&1 #同上
6. 常见的Linux文件类型及其对应的描述字符;
在Linux中,有一句经典的话叫做一切皆文件”。 文件分类: (1)普通文件(regular):存在于外部存储器中,用于存储普通文件。 (2)目录文件(directory):用于存放目录项,是文件系统管理的重要文件类型。 (3)管道文件(pipe):一种用于进程间通信的特殊文件,也称为命名管道FIFO。 (4)套接字文件(socket):一种用于网络间通信的特殊文件。 (5)链接文件(link);用于间接访问另外一个目标文件,相当于widows快捷方式。 (6)字符设备文件(character):字符设备在应用层的访问结构。 (7)块设备文件(block):块设备在应用层的访问接口。 在linux终端下输入ls -l命令,学习linux每条文件信息的最左边的一个字符即表示了该文件的类别: b:块设备文件 c:字符设备文件 d:目录文件 l:链接文件 p:管道文件 -:普通文件 s:套接字文件
7. Linux的文件目录结构
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。 /etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。 /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中 指令集合: /bin:存放着最常用的程序和指令 /sbin:只有系统管理员能使用的程序和指令。 外部文件管理: /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。 /media:类windows的其他设备,例如U盘、光驱等等,