简答题考题预测
- makefile的编写
- 周期性任务计划编写
- 查找文件
- 增加用户名和用户组
第五章 Shell基本命令
一. Shell简介
- Shell和命令行不等价,命令行指的是供用户输入命令的界面,其本身只是接受输入,然后把命令传递给命令解释器,而Shell就是命令解释器。本质上讲,Shell是一个程序,把命令转换成指令代码发送给操作系统,是用户和操作系统的桥梁。
- Linux环境下,常用的Shell有BASH、TCSH Shell、Z-Shell。BASH Shell是默认安装和使用的Shell。
- Linux命令
(1) $代表个人用户 #代表root
(2) Linux的命令和文件都是区分大小写的,也就是说SUDO和sudo是不一样的。
(3) ls 查看当前目录下的文件 -a 可看隐藏文件
(4) cd 进入目录
(5) Tab自动补全
(6) 通配符 *(匹配文件名中任意长度的字符串) ?(只匹配一个字符) [](用于匹配所有出现在括号内的字符)
(7) pwd 查看当前目录
(8) dir vdir 查看当前目录 与ls类似
(9) cat 以文件名为参数 查看文件内容 cat -n可以使输出内容在每一行前加行号
(10) more 以文件名为参数 查看文件内容 Enter下滚一行 Space翻页 Q退出
(11) head和tail 以文件名为参数 查看文件的开头和结尾
(12) less 更好的文本阅读工具 更像一个文本编辑器 Space下一页 B上一页
(13) grep 内容搜索工具 参数为“被搜关键字”和“被搜文件名”
(14) find 文件搜索工具 参数为“路径”和“参数”和“关键词” 可以用-type来锁定文件类型和使用-atime/-mtime配合+n/-n来锁定文件修改日期 可参见p62
(15) locate 数据库型文件搜索 参数为“文件名” 可以使用通配符
(16) whereis 查找程序文件 并提供这个文件的二进制可执行文件、源码等资料的存放位置
(17) who 查看当前系统中的用户
(18) whoami 查看当前用户信息
(19) uname 查看当前系统版本信息 -r为内核信息 -a为所有信息
(20) man 查看某命令的帮助手册 参数为“命令” 内部调用less命令 man 1-9的类型参见p65
(21) whatis 从使用手册抽出一行简单的介绍性文字 了解某命令的大概含义 参数为“命令”
(21) apropos 通过需求查找命令 例如apropos search
$ head -n 2 file.txt ## 查看file.txt的头两行
$ head -f file.txt ## 动态监控file.txt的头部内容
$ grep un day.txt ## 搜索day.txt中关键字为un的行
$ grep 'Red Hat' test.txt ## 多单词的搜索要加引号
$ find /usr/bin/ -name zip -print ## 在指定目录下搜索名字为zip的文件 并打印到屏幕上
第七章 软件包管理
- dpkg 管理.deb软件包(适用于Debian和Ubuntu)
- rpm 管理.rpm软件包(适用于Red Hat和openSUSE)
- APT 高级软件包工具 配置文件位于/etc/apt/sources.list
$ sudo dpkg -i xxx.deb ## 安装
$ sudo dpkg -l | grep chrome ## 找到chrome浏览器的软件包
$ sudo dpkg -r google-chrome-stable ## 卸载该安装包
$ sudo dpkg -S openssh ## 查看软件包中复制到系统的所有文件
$ sudo rpm -i -v -h xxx.rpm ## -i 安装 -v 显示安装过程 -h 显示安装进度
$ sudo rpm -U -v -h xxx.rpm ## 升级更新一个软件包 保留原软件包在系统中的配置
$ sudo rpm -qa ## 列出系统中安装的所有软件包
$ sudo rpm -e xxx ## 卸载
$ sudo apt-get update ## 更新软件库信息
$ sudo apt-get xxx ## 安装xxx
$ sudo apt-get remove xxx ## 删除xxx软件包
$ sudo apt-cache search flight ## 搜索带"flight"字样的软件包
$ sudo apt-cache depends xxx ## 查看xxx的依赖关系
第十一章 网络配置
- 使用ifconfig配置IP和子网掩码
- 使用route配置静态路由
$ sudo ifconfig eth0 192.168.1.14 netmask 255.255.255.0 up
$ netstat -r ## 查看当前系统中的路由信息
$ sudo route add default gw 10.71.84.2 ## 增加一条默认路由
$ sudo route add -net 10.62.74.0/24 gw 10.71.84.51 ## 指定网段的数据发往指定网关
第二十章 Linux编程
$ gcc test.c ## 编译之后产生的可执行文件为a.out
$ gcc -o xx test.c ## -o让用户指定可执行文件的文件名
第六章 文件目录管理
- Linux系统没有“盘符”概念
- 文件系统中主要目录及其内容 p68
- Linux命令
## 关于mkdir
$ mkdir xxx ## 新建一个文件夹
$ mkdir -p xxx/xxxx ## 新建级联文件夹
$ touch 1.c ## 创建文件1.c
## 关于mv
$ mv file dir/ ## 将file移动到dir文件夹下
$ mv -i file dir/ ## 有提示,可以避免文件覆盖
$ mv -b file dir/ ## 若存在同名文件,则后来的文件加~,以避免文件覆盖
## 关于cp
$ cp file dir/ ## 将file复制一份 放到dir文件夹中
$ cp -i file dir/ ## 与mv同理
$ cp -b file dir/ ## 与mv同理
$ cp -r dir1/ dir2/ ## 级联复制 将dir1下的所有内容赋值到dir2下
## 关于rm
$ rmdir xxx ## 删除目录 但只能删除空目录
$ rm -i xxx ## 有提示的删除某文件
$ rm -r dir/ ## 级联删除
### 关于chown和chgrp
$ sudo chown Linda:root file ## 修改文件file的属主为Linda 属组为root
$ sudo chown Linda file ## 可以只修改属主
$ sudo chown :root file ## 也可以只修改属组 但要注意":"
$ sudo chown -R Linda dir/ ## 级联修改文件夹下的所有文件
$ sudo chgrp newgroup file ## chgrp专门用于修改属组
### 关于chmod (u属主 g属组 o其他) (r读取 w写入 x执行)
$ sudo chmod u+r file ## 修改文件权限
$ sudo chmod u=rw o=r file
$ sudo chmod 777 file
## 关于新增用户组和用户
$ sudo addgroup workgroup ## 新建一个用户组workgroup
$ sudo useradd -G workgroup Linda ## 在workgroup组中添加一个新成员Linda
$ sudo passwd Linda ## 为用户Linda配置密码
## 关于链接ln
$ ln -s file file_sln ## 为文件file创建了一个软连接file_sln
$ ln file file_hln ## 为文件file创建了一个硬链接file_hln
注:原文件被删除,软链接虽然还在,但没有任何作用
硬链接相当于对原文件进行了一次分身,对链接文件进行修改也会被反映到原文件
## 关于重定向
$ ls > ./ls_print ## 将ls后产生的内容保存到ls_print中
$ ls >> ./ls_print
注:> 是直接覆盖掉原文件;>> 是追加到原文件尾部
$ cat < file ## 从文件读取内容给命令cat
$ cat << END ## "立即文档" 将屏幕输入当成参数并以END判断输入结束
$ cat<<END > file ## 将屏幕输入的内容重定向到file文件中
## 关于管道(链接两条命令)
$ ls | grep ay ## 在ls的输出中匹配关键字"ay"
第八章 磁盘管理
- Linux文件系统
(1) ext3fs ext4fs
(2) ReiserFs
(3) swap(不是文件系统,只是一个类似于硬盘型虚拟内存区) - Linux命令
$ sudo mount /dev/sda3 /mnt/vista ## 挂载文件系统
$ sudo unmount /dev/sda1 ## 卸载文件系统
$ sudo fsck /dev/sda1 ## 检查和修复文件系统
$ sudo mkfs -t ext4 -c /dev/sdb1
$ df ## 查看文件系统中磁盘使用情况
$ tar -cf xxx.tar /tmp/ ## 压缩/tmp/下的内容到xxx.tar
$ tar -zcf xxx.tar.gz /tmp/ ## 压缩/tmp/下的内容到xxx.tar.gz
$ tar -xf xxx.tar [-C /home]## 解压xxx.tar[到/home下]
第九章 用户与用户组管理
- UID:唯一标识系统中的用户,root用户的UID为0;GID唯一标识系统中的用户组
- 用户信息保存在/etc/passwd中;口令保存在/etc/shadow中;组信息保存在/etc/group中
- Linux命令
## 添加新用户
$ sudo useradd -m Linda ## 添加一个用户Linda 并自动建立主目录
$ sudo useradd -s /bin/bash Linda ## -s指定用户登录后所使用的Shell
$ sudo useradd -g users Linda ## -g创建用户的同时 分配用户组
$ sudo passwd Linda ## 为用户添加密码
## 添加新组
$ sudo groupadd xxx ## 创建一个新的用户组
## 删除用户
$ sudo userdel Linda ## 删除用户
$ sudo userdel -r Linda ## 删除用户 包括其主目录
## 管理用户账号
## 将用户Juli改名为Linda 修改其主目录为newDir 有效期至17年6月15日
$ sudo usermod -l Linda -d /home/newDir -e 6/15/17 Juli
-d 修改主目录; -e 修改有效期 MM/DD/YY; -g 修改属组;
-l 修改用户名; -s 修改登录后的Shell
## 其他
$ history [n] ## 记录用户操作(仅在BASH中适用)
$ id Linda ## 查看用户信息
$ su Linda ## 用户切换
$ exit ## 退出当前用户
第十章 进程管理
- 名词概念
(1) 进程:进程是操作系统的一种抽象概念,用来标识正在运行的程序。
(2) PID:进程的ID号
(3) PPID:父进程的PID号
(4) UID和EUID
(5) GID和EGID
(6) 谦让度和优先级(只能设置谦让度)
(7) 守护进程:在后台运行的执行特定系统任务的进程。 - 进程的操作权限只有root用户和进程创建者才有,进程的UID就是创建者的用户ID号。
- 命令
## 监视进程
$ ps aux # 显示当前系统上运行的所有进程信息
## 实时跟踪进程信息
$ top # 即时监视进程
## 查看占用文件的进程
$ lsof abc.doc
## 杀死进程
$ kill -l # 查询所有信号及其编号
$ kill [-signal] pid
$ kill -9 pid # 强制退出