《Linux私房菜》笔记和问题记录

简介:

鸟哥的Linux私房菜简体首页

对Linux的学习侧重于基本命令和运维相关的部分,最后章节的测试问题不错。

1.VIM程序编辑器

1.所有的Linux都会内建VI;很多软件的编辑接口都会主动呼叫VI;VIM具有程序编辑的功能,支持语法高亮等。
VIM即vi的进阶版本。
2.VI的使用:
vi共分为三种模式,“一般模式”“编辑模式”“指令命令模式”。一般模式,vi打开档案后直接进入,可以进行删除、复制、粘贴等;
编辑模式,可以编辑内容,通过按下“i I o O a A r R”等字母进入;指令命令模式,一般模式中,输入“: / ?”等可以进入。
3.一般可以与其他两种模式切换,但是其他两种模式无法相互切换。在指令模式下[:wq]即可存盘并离开。
4.一般模式可用的按钮说明,光标移动、复制贴上、搜寻替代等

 

一般模式: 移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的上一列
n<space> 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。
0 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行
M 光标移动到这个屏幕的中央那一行
L 光标移动到这个屏幕的最下方那一行
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n<Enter> n 为数字。光标向下移动 n 行(常用)
一般模式: 搜寻与取代
/word 向光标之下寻找一个字符串名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表『重复前一个搜寻的动作』的意思。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
一般模式: 删除、复制与贴上
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除游标所在的那一整列(常用)
ndd n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用)
d1G 删除游标所在到第一行的所有数据
dG 删除游标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用)
y1G 复制游标所在列到第一列的所有数据
yG 复制游标所在列到最后一列的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在列与下一列的数据结合成同一列
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,您的编辑,嘿嘿!很快乐的啦!
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果您想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
进入编辑模式
i, I 插入:在目前的光标所在处插入输入之文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)
a, A a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)
o, O 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)
r, R 取代:r 会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT/REPLACE 才能输入喔!
Esc 退出编辑模式,回到一般模式中(常用)
指令列命令模式
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟您对该档案的档案权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
:e! 将文件还原到最原始的状态!
ZZ 若档案没有更动,则不储存离开,若档案已经经过更动,则储存后离开!
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 暂时离开 vi 到指令列模式下执行 command 的显示结果!例如
『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!

 

2.Linux账号管理与ACL权限设定
1.使用者标识符: UID与GID,即使用者ID userId和群组ID groupId。
2.通过"head -n 4 /etc/passwd"查看文档中的前4条数据。
以root账号为例分析:
root :x : 0: 0: root: /root: /bin/bash
账号名称,对应UID;
密码,早期unix密码字段就是在这里,后来考虑到安全性,密码数据放到/etc/shadow中,所以显示"X";
即UID,UID是0时,代表系统管理员,1~499系统账号,500~65535可登入账号。
GID,与/etc/group有关;
用户信息说明栏;
家目录,登入以后,root会跳转到/root目录里面;
预设Shell,root一般会是bash;
3.下面运行"head -n 4 /etc/shadow"

 

3.Vi的使用问题
1.如何进入Vi的编辑模式,如何跳回?
2.上下左右键无法使用,如何在一般模式移动光标?
3."pgup"等在一般模式无法使用时,如何往前或后翻一页?
4.如何到本档案的最后一行,第一行;本行的第一个字符,最后一个字符?
5.如何删除一行、n行或者删除一个字符?
6.如何复制一行并粘贴?
7.如何搜寻string这个字符串?
8.如何取代word1成为word2,如需确认机制,又如何?
9.如何将一个档案的名称读入目前档案?
10.如何另存新档?
11.如何设定与取消行号?
12.存档相关的操作?

 

4.档案与目录管理相关问题
1.下面的目录主要放置什么数据?
/etc/:
/etc/rc.d/init.d:
/boot/:
/usr/bin/,/bin/:
/usr/sbin/,/sbin/:
/dev:
/var/log/:
2.绝对路径与相对路径
3.在非根目录的任一目录中,执行 "ls -al"时,"."".."两个目录分别代表什么?
4.显示,变换目录使用什么指令?
5.新增 移除 移动与复制目录有什么命令可用?
6.如何查看一个档案的内容?不使用vi的情况下。
7.hardlink与softlink的档案有何不同?
8.如何在root的家目录下建立一个/bin的连接快捷方式?

5.磁盘挂载与虚拟内存问题

1.如何查看Linux系统中所有已经挂载的硬盘容量与inodes?
2.如何查看目前目录所在目录的所有档案占用的硬盘空间,并且输出结果?
3.如果扇区 /dev/hda3 有问题,偏偏他是被挂载上的,请问我要如何修理此一扇区?
4.承上题,那么有问题的档案将被移动到那个目录下? 
5.试说明新增一个 partition 在 /dev/hdb 当中,且为 hdb5 时,开挂载上 /disk2 ,需要哪些步
骤? 
6. 如何新增加 64MB 的虚拟内存 swap ? 
7. 如果要设定一个新挂载上的扇区,令他可以在开机的时候被挂载上,应该编辑哪一个档案? 
8. 简易说明 quota 的设置流程?

6.BASH SHELL问题

1.简单说明bash shell的功能特征:
2. 在设定变量中,主要的规则为何? 
3. 显示环境变量不所有变量的指令是什么? 
4. 在环境变量当中,用户家目录、主机名的变量名称为: 
5. 如何让一个变量可以持续到下一个程序 (PID) 去? 
6. 在变量的设定当中,双引号和单引号有何不同? 
7. Command1 `command2` 这个指令代表什么意思? 
8. 在命令重导向当中, > 与 >> 有什么不同? 
9. 若要将错诨的输出导向“不见了”的装置,怎样实现? 
10. 在管线指令中,我要将 last 输出的结果显示 root 的“登入次数”, 如何做? 
11. 如何设定一个变量名称为 name ,使其显示为“ VBird’s testing variable.”? 
12. 请问 bash shell 的环境变量不自己的个人变量可以登入便设定的档案? 
13. 如何查询曾经操作过的指令?如何执行第 26 个操作过的指令?上一个操作过的指令? 
14. 如何设定命令别名?使 lm 不 ls –al|more 功能相同 
15. 如何将 /bin 的所有信息输出到 /home/testing.dat 这个档案? 
16. 在上一题中,若还要输出到屏幕上,要如何是好? 
17. 执行 find ,并将正确的结果输出到 right 而错误结果输出到 error 当中? 
18. 如何在指令列模式中将 /root/.bashrc 的资料加在 /home/col/.bashrc 当中? 
19. 不要显示执行的结果怎样实现? 
20. 列出这个月曾经登入主机的用户信息即可,去除重复? 
21. 通配符当中, *, ?, [] 各代表什么意思?

 

7.基本账号管理问题

1. 如何新增一个使用者 username,且该用户没有家目录? 
2. Linux 用户的账号、密码与群组的名称档案放在哪里? 
3. 建立新用户的默认家目录内容在那个目录中? 
4. 建立一个新使用者时,其使用到的相关档案有哪些? 
5. root 的 UID 不 GID 各为何? 
6. 如何让一个用户不能登入主机,但是可以收信? 
7. 试说明一个用户登入系统的流程? 
8. 在 /etc/shadow 当中的日期设定中,其数字代表的意义为何? 
9. 如何变更用户的一些属性? 
10. 如何视察一个使用者 username 所拥有的群组呢? 
11. 试说明如何手动增加一个使用者 username 与群组 groupname? 
12. 试说明 /etc/passwd 这个档案的内容不格式: 
13. 使用 id 这个指令时,可以显示什么讯息数据? 
14. 可以控制用户使用主机资源的默认档案在哪里? 
15. 基本的压缩指令有哪些?

 

8.程序与资源管理问题

1. 如何查看目前的程序? 
2. 如何查看目前的内存使用状况? 
3. 目前的工作如何丢到背景中? 
4. 如何取得目前背景中的工作,且将他拉回前景中? 
5. 如何设定一个程序在开始执行时候的优先值? 
6. 什么指令可以修改一个正在执行的程序之nice 值? 
7. 在例行性命令中,使用的两支 demane 是什么? 
8. 使用 crontab 这个指令的时候,如何可以查看目前的工作与删除目前的工作? 
9. 常用的 kill 指令之 signal 当中, 1, 9, 15 代表什么?

 

目录
相关文章
|
8月前
|
Ubuntu 关系型数据库 MySQL
一文搞定“Linux简单但实用的学习”两万字Linux通关笔记2
一文搞定“Linux简单但实用的学习”两万字Linux通关笔记2
111 0
|
8月前
|
Ubuntu Oracle Linux
一文搞定“Linux简单但实用的学习”两万字Linux通关笔记1
一文搞定“Linux简单但实用的学习”两万字Linux通关笔记1
91 0
|
10月前
|
Linux
鸟哥的Linux私房菜PDF
鸟哥的Linux私房菜PDF
110 0
|
Linux 机器学习/深度学习 安全
|
Linux Shell 数据安全/隐私保护