一、vi有两种工作模式,任何时刻都处于两种模式之一
命令模式(打开或者创建一个文件时,vi处于命令模式。)
输入模式(在输入模式下通过按ESC返回命令模式。)
二、基本命令
:w 保存
:q 退出
:q! 强行退出vi,在这种情况下文件的内容不变(不会自动保存)。
:wq 保存并退出 或 用 :x
:n,mw filename 将第n~m行的文本保存到指定的文件filename中
三、移动光标
光标的移动必须是在命令模式下
方向键←↑↓→ 或者 h k j l
nG ——代表跳转到第n行,如9G,就跳转到第9行
G ——代表跳转到最后一行
0 (数字0)——跳转到句子的首部
$ ——跳转到句子的尾部
<enter> ——移动到下一行行首
3<enter> ——光标下移3行
四、文本输入
通过vi常用命令操作练习
cd
cp /etc/profile .
vi profile
最基础的是 a,i,o 三种
a ——在光标当前所在字符位置后输入数据
A ——在光标当前所在行的行尾输入数据
i ——在光标当前所在字符位置前输入数据
I (大写i)——在光标当前所在行的行首输入数据
o ——在光标当前所在行后插入数据
O ——在光标当前所在行前插入数据
五、删除命令
最基础的是 x,dw,dd 三种
nx ——代表删除光标内及以后的n个字符
nX ——代表删除光标之前n个字符
dw ——代表删除光标之后的字(单词)或部分字(单词)
ndd ——代表删除n个文本行
D —— 代表删除光标之后的字(单词)或部分字(单词)并向前移
六、撤回操作
u ——撤销刚才那个动作
七、复制与粘贴
nyy ——拷贝当前光标所在的连续n行
p ——将上一步的复制操作在光标处进行粘贴
八、多行注释
将光标移动至需要注释的文本行行首
在命令模式下输入Ctrl+v
移动光标至需要注释的最后一行文本行行尾
然后输入(大写)I后 输入注释符(“//”、“#”等)
最后按下“Esc”键
若要取消注释 则使用 Ctrl+v 将要删除的注释符选中后 输入x或d即可
九、替换所需字符
替换每一行中所有 j为 a1
:%s/j/a1/g
十、压缩和解压缩文件
tar用于将文件进行归档,即将一系列的文件归档到一个文件中,需要时也可以将归档的文件解开,归档之后的大小和原来一样。其格式如下:
tar [参数] 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
(1)、压缩
使用tar命令将指定目录中的所有文件打包到tbak.tar中
tar cvf tbak.tar tdir
tar xvf tbak.tar
x表示解压文件; v表示显示解压过程; f是必须的选项
xvfz cvfz
tar命令中的参数-z和-j用于压缩文件,前者为以gzip格式压缩,后者则是以bzip2格式压缩
十一、安装tree
预安装tree的命令:sudo apt-get install tree (安装之前需要连接互联网)
十二、C语言编译:
gcc -o tt tt.c 将tt.c文件的内容编译并保存文件为tt
十三、cat命令
cat命令后面可以接多个文件名,依次将其内容显示出来。还可以使用重定向符“>”将多个文件合并输出(重定向符“>”的使用,后面将详细阐述)到另一个文件中。
cat c1.txt c2.txt > c3.txt
意为: c1.txt 和 c2.txt 中的内容 输入 c3.txt 中
cat -n .profile
意为: 查看.profile文件内容 -n表示加入行号
十四、ls -l
用ls -l命令可以查看指定目录的7个字段的列表
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
十五、文本内容显示
1、head命令
head /etc/passwd 显示文件前10行
head –c 100 /etc/passwd 显示前100个字节数据内容
head –n 3 /etc/passwd 显示前3行数据内容
2、tail命令
默认显示组后十行
tail /etc/passwd 显示文件最后10行
tail –c 100 /etc/passwd 显示最后100个字节数据内容
tail –n 3 /etc/passwd 显示最后3行数据内容
3.Sort命令
将文件数据排序后显示在屏幕上
sort -r xxxx 将文件数据逆序后显示在屏幕上。
4.Uniq 命令
将重复行从输出文件中删除
5.diff 命令
diff逐行比较两个文件
比较两个文件,观察其不同之处。将/etc/profile文件拷贝到当前目录,修改profile文件的若干行内容。使用如下命令进行比较:
十六、文件和命令查找
1.搜索命令
grep命令:在指定文件中搜索特定的字符内容,并将含有这些字符内容的行输出:
例: 搜索/etc/vsftpd目录下后缀为.conf文件中,其内容中包含“anon”字符串的文本行:
grep anon /etc/vsftpd/*.conf
查看/etc/passwd文件,查看含有home的行。
此时可以使用命令:cat /etc/passwd |grep home
这句话的含义是,将/etc/passwd文件内容打印出来,但是不是打印到屏幕上,而是将输出内容重定向到grep中,在grep命令中对home字符串进行过滤。将含有home的字符串,打印到屏幕上。
-c选项:表示匹配字符串的数量,默认情况下,grep是打印出包含模式的所有的行,加上-c之后。就只显示包含模式的行的数量!
2.ps -ef命令
观察是否有syslog进程在后台运行。
ps –ef显示有大量的进程信息。使用ps -ef|wc –l 将ps –ef的信息作为输入
在文本中搜索syslogd关键词 ps -ef|grep syslogd
3.wc -l 命令
计算输入文本的行数
4.find命令
查找/etc目录下所有以*.conf为扩展名的文件:
find /etc -name *.conf
查找/etc中的所有目录:
find /etc -type d
十七、拷贝命令
将/etc/passwd 拷贝到本地
cp /etc/passwd ./passwd2
十八、系统信息显示
1、uname 命令:显示计算机和操作系统相关信息
2、hostname命令:显示或修改主机名、
3、free命令 : 查看内存信息
4、du 命令 : 显示目录或者文件的磁盘占有量
5、whoami : 显示自身用户名称
十九、关闭和重启Linux系统
1、shutdown命令 (需要在命令前增加sudo)
shutdown -h now 立即关闭计算机
shutdown –h 45 45分钟后关闭计算机
shutdown -r now “system will reboot now” 立刻重启并且给出警告
shutdown –r 01:38
2、reboot 命令
引发重启
二十、查看系统的进程
ps [参数]——查看系统的进程。
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -e 此参数的效果和指定"A"参数相同。
3)ps e 列出程序时,显示每个程序所使用的环境变量。
4)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
5)ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
6)ps u 以用户为主的格式来显示程序状况。
7)ps -l 较长较详细地显示进程信息
二十一、进程控制
1、 kill命令——给进程发送信号
kill命令的格式为:kill [参数] 进程1 进程2…
-signal:signal是信号类别,如:SIGKILL。
kill –SIGKILL 835
二十二、文件的权限管理
1、文件的用户对象:
分为属主用户、属组、其他用户和所有用户,分别以如下的符号表示:
u:属主,即文件或目录的所有者,拥有对文件最大的读写权限。
g:属组,即与文件属组有相同组ID的所有用户。
o:表示其他用户,通常只具有浏览权限。
a:表示以上所以用户。
2、接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行
如果没有权限,就会出现减号[ - ]
3、Linux文件属主和属组
4、更改文件属性
1)chgrp:更改文件属组
语法:chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2)chown:更改文件属主,也可以同时更改文件属组
语法:chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
3)chmod:更改文件9个属性
文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的。
例:去掉文件profile的可写属性
chmod -w profile
例: 为run文件增加可执行属性使其可以被执行
chmod +x run
例 : 为profile文件不同用户设置不同权限
chmod u=rwx,g=r profile
注: u为属主 g为属组
例 : 为profile文件直接设定所有的访问权限:
chmod 777 profile
二十三、认识用户和组
1、用户账号信息
/etc/passwd
通常在Linux中的所有账户信息都记录在/etc/passwd中。对所有用户可读,但只用root组中的用户才能修改。
2、使用命令less /etc/passwd 可以观察passwd文件:
3、当用户较多的时候,可以使用grep命令搜索到需要的行
二十三、管理用户账号
1)adduser 添加用户账号
2)切换到新建用户账号
su user1
3)useradd添加用户账号
useradd 的命令格式为: useradd [option] username
sudo useradd -s /bin/sh -g group gem
此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组
例 : 创建用户newuser,设置用户家目录,且指定其用户属于hadoop群组
4)修改密码
passwd
在超级用户权限下为newuser用户修改口令
5)删除用户
userdel [-r] [用户名]
如果使用参数-r,则表示在删除用户的同时,将该用户的主目录一并删除
如果不使用-r则该用户的家目录会残留,需要使用sudo rm -rf /home/user1进一步清理
例 :删除用户newuser
二十四、Shell入门
Shell 是一个用 C 语言编写的程序
Shell 既是一种命令语言,又是一种程序设计语言。
例 :
#!/bin/bash
echo "Hello World!"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
这里采用bash shell
二十五、Shell变量
定义变量:
1)定义变量时,变量名不加美元符号
2)变量名和等号之间不能有空格
变量名的命名须遵循如下规则:
1、命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
2、中间不能有空格,可以使用下划线(_)。
3、不能使用标点符号。
4、不能使用bash里的关键字(可用help命令查看保留关键字)。
使用变量:
使用一个定义过的变量,只要在变量名前面加美元符号即可
例 :
二十六、Linux目录结构
常见的 Linux 系统目录如下:• / : Linux 系统的根目录,包含 Linux 系统的所有目录和文件。• / etc :有关系统设备与管理的配置文件。• / sbin :存放系统启动时所需的运行程序。• /bin :该目录中含有常用的命令文件,不能包含子目录。• /boot :操作系统启动时的核心文件。• /usr/local :存放用户后期安装的应用程序文件。• /root :超级用户主目录。• /dev :接口设备文件目录,保存外围设备代号。• /mnt :设备文件的挂接点,默认有 /mnt/cdrom 和 /mnt/floppy 两个目录,分别用于挂载光驱和软驱。• /home: 这是系统预设的使用者家目录 (home directory) 。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号: ~ :代表当前使用者的家目录
二十七、Linux 逻辑表达式(≥、≤、=)
-lt ——功能相当于<
-le ——功能相当于≤
-gt ——功能相当于>
-ge ——功能相当于≥