I am from Zhengzhou
> f
[root@superman-vm01 ~]#
[root@superman-vm01 ~]# cat abc.txt
this is superman
I am from Zhengzhou
[root@superman-vm01 ~]#
```
### 10 head命令详解
head命令主要用于查看文件内容,通常查看文件前10行,head -10 /var/log/messages可以查看该文件前10行的内容,常用参数详解如下:
```
用法:head [选项]... [文件]...
将每个指定文件的头10 行显示到标准输出。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为"-",则从标准输入读取数据,长选项必须使用的参数对于短选项时也是必需使用的;
-q, --quiet, --silent 不显示包含给定文件名的文件头;
-v, --verbose 总是显示包含给定文件名的文件头;
--help 显示此帮助信息并退出;
--version 显示版本信息并退出;
-c, --bytes=[-]K 显示每个文件的前K 字节内容,如果附加"-"参数,则除了每个文件的最后K字节数据外显示剩余全部内容;
-n, --lines=[-]K 显示每个文件的前K 行内容,如果附加"-"参数,则除了每个文件的最后K 行外显示剩余全部内容。
```
### 11 tail命令详解
tail命令主要用于查看文件内容,通常查看末尾10行,tail –fn 100 /var/log/messages可以实时查看该文件末尾100行的内容,常用参数详解如下:
```
用法:tail [选项]... [文件]...
显示每个指定文件的最后10 行到标准输出。
若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。
如果不指定文件或文件为"-" ,则从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-n, --lines=K 输出的总行数,默认为10行;
-q, --quiet, --silent 不输出给出文件名的头;
--help 显示此帮助信息并退出;
--version 显示版本信息并退出;
-f, --follow[={name|descriptor}] 即时输出文件变化后追加的数据;
-f, --follow 等于--follow=descriptor
-F 即--follow=name –retry
-c, --bytes=K 输出最后K字节;另外,使用-c +K 从每个文件的第K字节输出。
```
### 12 chmod命令详解
chmod命令主要用于修改文件或者目录的权限,例如chmod o+w test.txt,赋予test.txt其他人w写权限,常用参数详解如下:
```
用法:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...
或:chmod [选项]... --reference=参考文件 文件,将每个文件的模式更改为指定值。
-c, --changes 类似 --verbose,但只在有更改时才显示结果
--no-preserve-root 不特殊对待根目录(默认);
--preserve-root 禁止对根目录进行递归操作;
-f, --silent, --quiet 去除大部份的错误信息;
-R, --recursive 以递归方式更改所有的文件及子目录;
--help 显示此帮助信息并退出;
--version 显示版本信息并退出;
-v, --verbose 为处理的所有文件显示诊断信息;
--reference=参考文件 使用指定参考文件的模式,而非自行指定权限模式。
```
### 13 chown命令详解
chown命令主要用于文件或者文件夹宿主及属组的修改,命令格式例如chown –R root.root /tmp/test.txt,表示修改test.txt文件的用户和组均为root,常用参数详解如下:
```
用法:chown [选项]... [所有者][:[组]] 文件...
或:chown [选项]... --reference=参考文件 文件...
更改每个文件的所有者和/或所属组。
当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。
-f, --silent, --quiet 去除大部份的错误信息
--reference=参考文件 使用参考文件的所属组,而非指定值;
-R, --recursive 递归处理所有的文件及子目录;
-v, --verbose 为处理的所有文件显示诊断信息;
-H 命令行参数是一个通到目录的符号链接,则遍历符号链接;
-L 历每一个遇到的通到目录的符号链接;
-P 历任何符号链接(默认);
--help 显示帮助信息并退出;
--version 显示版本信息并退出。
```
### 14 echo命令详解
echo命令主要用于打印字符或者回显,例如输入echo ok,会显示ok, echo ok > test.txt 则会把ok字符覆盖test.txt内容。>表示覆盖,原内容被覆盖,>>表示追加,原内容不变。
例如echo ok >> test.txt,表示向test.txt文件追加OK字符,不覆盖原文件里的内容,常用参数详解如下:
```
使用-e扩展参数选项时,与如下参数一起使用,有不同含义,例如:
\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab; \v 与\f相同;
\\ 插入\字符;
\033[30m 黑色字 \033[0m
\033[31m 红色字 \033[0m
\033[32m 绿色字 \033[0m
\033[33m 黄色字 \033[0m
\033[34m 蓝色字 \033[0m
\033[35m 紫色字 \033[0m
\033[36m 天蓝字 \033[0m
\033[37m 白色字 \033[0m
\033[40;37m 黑底白字 \033[0m
\033[41;37m 红底白字 \033[0m
\033[42;37m 绿底白字 \033[0m
\033[43;37m 黄底白字 \033[0m
\033[44;37m 蓝底白字 \033[0m
\033[45;37m 紫底白字 \033[0m
\033[46;37m 天蓝底白字 \033[0m
\033[47;30m 白底黑字 \033[0m
```
echo颜色打印扩展,auto_lamp_v2.sh内容如下:
```
echo -e "\033[36mPlease Select Install Menu follow:\033[0m"
echo -e "\033[32m1)Install Apache Server\033[1m"
echo "2)Install MySQL Server"
echo "3)Install PHP Server"
echo "4)Configuration index.php and start LAMP server"
echo -e "\033[31mUsage: { /bin/sh $0 1|2|3|4|help}\033[0m"
```
执行结果如图所示:

### 15 df命令详解
df命令常用于磁盘分区查询,常用命令df –h,查看磁盘分区信息,常用参数详解如下:
```
用法:df [选项]... [文件]...
显示每个文件所在的文件系统的信息,默认是显示所有文件系统。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all 显示所有文件系统的使用情况,包括虚拟文件系统;
-B, --block-size=SIZE 使用字节大小块;
-h, --human-readable 以人们可读的形式显示大小;
-H, --si 同-h,但是强制使用1000而不是1024;
-i, --inodes 显示inode 信息而非块使用量;
-k 即--block-size=1K;
-l, --local 只显示本机的文件系统;
--no-sync 取得使用量数据前不进行同步动作(默认);
-P, --portability 使用POSIX 兼容的输出格式;
--sync 取得使用量数据前先进行同步动作;
-t, --type=类型 只显示指定文件系统为指定类型的信息;
-T, --print-type 显示文件系统类型;
-x, --exclude-type=类型 只显示文件系统不是指定类型信息;
--help 显示帮助信息并退出;
--version 显示版本信息并退出。
```
### 16 du命令详解
du命令常用于查看文件在磁盘中的使用量,常用命令du -sh,查看当前目录所有文件及文件及的大小,常用参数详解如下:
```
用法:du [选项]... [文件]...
或:du [选项]... --files0-from=F
计算每个文件的磁盘用量,目录则取总用量。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all 输出所有文件的磁盘用量,不仅仅是目录; --apparent-size 显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大;
-B, --block-size=大小 使用指定字节数的块;
-b, --bytes 等于--apparent-size --block-size=1;
-c, --total 显示总计信息;
-H 等于--dereference-args (-D);
-h, --human-readable 以可读性较好的方式显示尺寸(例如:1K 234M 2G);
--si 类似-h,但在计算时使用1000 为基底而非1024;
-k 等于--block-size=1K;
-l, --count-links 如果是硬连接,就多次计算其尺寸;
-m 等于--block-size=1M;
-L, --dereference 找出任何符号链接指示的真正目的地;
-P, --no-dereference 不跟随任何符号链接(默认);
-0, --null 将每个空行视作0 字节而非换行符;
-S, --separate-dirs 不包括子目录的占用量;
-s, --summarize 只分别计算命令列中每个参数所占的总用量;
-x, --one-file-system 跳过处于不同文件系统之上的目录;
-X, --exclude-from=文件 排除与指定文件中描述的模式相符的文件;
-D, --dereference-args 解除命令行中列出的符号连接;
--files0-from=F 计算文件F中以NUL结尾的文件名对应占用的磁盘空,如果F 的值是"-",则从标准输入读入文件名。
```
如上为Linux初学者必备命令,当然Linux命令还有很多,后面章节会随时学习新的命令。
### 17 vi|vim编辑器
vi是一个命令行界面下的文本编辑工具,最早在1976年由Bill Joy开发,当时名字叫做ex。vi支持绝大多数操作系统(最早在BSD上发布),并且功能已经十分强大
1991年Bram Moolenaar基于vi进行改进,发布了vim,加入了对GUI的支持。
随着VIM更新发展,vim已经不是普通意义上的文本编辑器,而是被广泛的作为在文本编辑、方本处理、代码开发等用途,Linux中主流的文本编辑器包括:vi、vim、sublime、emacs、light table、eclipse、gedit等。
vim强大的编辑能力中很大部分是来自于其普通模式命令。vim的设计理念是命令的组合。
- “5dd”5表示总共5行,删除光标所在后的5行,包含光标行;
- “d$” $"代表行尾,删除到行尾的内容,包含光标;
- “2yy”表示复制光标及后2行,包括光标行;
- “%d” %代表全部或者全局,%d表示删除文本所有的内容,也即是清空文档所有的内容。
vim是一个主流开源的编辑器,其默认执行vim命令,会显示帮助乌干达贫困的孩子,如图为vim与键盘键位功能对应关系:

#### 17.1 vim编辑器模式
Vim编辑器模式常用有三种,分别是:
- 命令行模式;
- 文本输入模式;
- 末行模式。
vim是vi的升级版本,它是安装在Linux操作系统中的一个软件,官网为:[www.vim.org](http://www.vim.org/)
在Linux Shell终端下默认执行vim命令,按Enter键后:
- 默认进入命令行模式;
- 在命令行模式按i进入文本输入模式;
- 按ESC进入命令行模式;
- 按:进入末行模式。
#### 17.2 vim编辑器必备
vim 编辑器最强大的功能,就在于内部命令及规则使用,如下为vim编辑器最常用的语法及规则:
```
命令行模式:可以删除、复制、粘贴、撤销,可以切换到输入模式,输入模式跳转至命令行模式:按ESC键。
yy 复制光标所在行;
nyy 复制n行;
3yy 复制3行;
p,P 粘贴;
yw 复制光标所在的词组,不会复制标点符号;
3yw 复制三个词组;
u 撤消上一次;
U 撤消当前所有;
dd 删除整行;
ndd 删除n行;
x 删除一个字符;
u 逐行撤销;
dw 删除一个词组;
a 从光标所在字符后一个位置开始录入;
i 从光标所在字符前一个位置开始录入;
I 从光标所在行的行首开始录入;
o 跳至光标所在行的下一行行首开始录入;
O 跳至光标所在行的上一行行首开始录入;
末行模式主要功能包括:查找、替换、末行保存、退出等;
:w 保存;
:q 退出;
:s/x/y 替换1行;
:wq 保存退出;
1,5s/x/y 替换1,5行;
:wq! 强制保存退出;
1,$sx/y 从第一行到最后一行;
:q! 强制退出;
:x 保存;
/word 从前往后找,正向搜索;
?word 从后往前走,反向搜索;
:s/old/new/g 将old替换为new,前提是光标一定要移到那一行;
:s/old/new 将这一行中的第一次出现的old替换为new,只替换第一个;
:1,$s/old/new/g 第一行到最后一行中的old替换为new;
:1,2,3s/old/new/g 第一行第二行第三行中的old改为new;
```
> ? 欢迎关注我的微信公众号【**超哥的IT私房菜**】获取更多技术干货!
>
> 
>
> ? 有什么吐槽或反馈意见,直接告诉我!
> ? 我会解决您说的问题,进一步更好的服务您哦!Linux云计算-03_必备基础命令
原文:https://blog.51cto.com/u_237826/2995150