一、简述
? 记录简单的Linux 基础操作、常用shell命令、vi编辑器常用命令、man帮助手册的使用。
二、Linux 基础操作
? 1、按 Ctrl+Alt+t 快捷键或者双击桌面的“Terminal”调出伪终端(命令行窗口)。
? 超级终端:
? Ctrl+Alt+F6: tty6
? Ctrl+Alt+F5 tty5
? Ctrl+Alt+F4 主机与虚拟机的共享路径
?
? Ctrl+Alt+F3 tty3
? Ctrl+Alt+F1 返回正常使用的界面
? 2、Liang@ubuntu:~$ ls
? Liang:用户名;
? ubuntu:主机名;
? ~:家目录(当前登录用户的主目录),/home/Liang
? $:命令提示符(一个标志)
? ls:以列表方式罗列出当前目录的文件
? 3、使虚拟机获取鼠标:Ctrl+G;使宿主计算机获取鼠标:Ctrl+Alt
? 4、列出当前目录的所有文件信息 ls -la 。-l 选项是以详细的列表方式罗列;-a选项是表示所有文件(all),即包括隐藏文件。
5、在终端窗口,按Ctrl+C 强行停止当前正在执行的命令或程序。
6、关机命令:在终端窗口,输入命令:poweroff
三、shell命令介绍
常用文件操作:
1、编辑文件 vi 文件名 (或者说是新建文件并用vi编辑)
2、复制文件 cp a文件 b文件 (将a文件复制一份,b就是复制文件(副本)。(两个文件都在当前路径,可以分别指定路径)
3、复制文件目录 cp a目录 b目录 -r 将a目录(包含里面的全部文件)内容 复制到b目录下,(-r 递归复制)
4、新建文件 touch 文件名 (文件不存在就新建,存在就更新新建的最新修改时间)
5、移动文件 mv a文件 b目录 (将a文件移动到b目录下)
6、重命名文件 mv a文件 b文件 (将a文件命名为b文件,注:都是在当前路径下)
7、删除文件 rm a文件 (删除a文件)
8、删除文件目录 rm a目录 -r (删除a目录,包括里面的文件)
命令 | 功能 | 示例 | 备注 |
---|---|---|---|
alias | 给命令起别名 | alias c=’clear’ | 取 clear 的别名为 c |
cat | 显示文本内容 | cat file | 显示 file 的内容 |
cd | 改变当前路径 | cd /etc | 转到/etc 中去 |
chmod | 修改文件访问权限 | chmod 644 file | 改 file 的权限为 644 |
chown | 修改文件所有者 | chown foo file | 改 file 的所有者为 foo |
clear | 清屏 | clear | 清屏 |
cp | 拷贝文件 | 1: cp file1 file22: cp dir1.0/ dir2.0/ -r | 1: 拷贝 file1 为 file22: 拷贝 dir1.0/为 dir2.0/ |
df | 查看文件系统信息 | df -h | 显示文件系统信息 |
diff | 比较两文件的异同 | 1: diff file1 file2 -uN 2: diff dir1/ dir2/ -urN | 1: 比较 file1 和 file22: 比较 dir1/和 dir2/ |
dpkg | 手工安装软件包 | dpkg -i example.deb | 安装 example.deb |
echo | 显示字符串 | echo “hello!” | 显示“hello!” |
find | 查找文件 | find / -name “*.c” | 找出/下的所有.c 文件 |
grep | 查找字符串 | grep “abc” ./* -rwHn | ./*中找字符串 “abc” |
ifconfig | 查看或修改网络 | ifconfig eth0 | 查看 eth0 的网络信息 |
kill | 发送信号 | kill -s SIGKILL 1234 | 给进程 1234 发送信号 SIGKILL |
ln | 创建链接文件 | 1: ln apple a2: ln apple a -s | 1: 取 apple 别名为 a2: 创建一个符号链接 a 指向 apple |
ls | 列出文件信息 | ls | 列出(当前目录)文件信息 |
man | 查找帮助信息 | man ls | 查找关于 ls 命令的帮助 |
mount | 挂载或卸载分区 | mount /dev/x /mnt | 将/dev/x 挂接到/mnt 下 |
more | 分屏显示信息 | ps -ef | more | 分屏显示 ps -ef 的信息 |
less | 与more类似 | less a.txt | 显示a.txt文件内容 |
head | 显示文件的 开头若干行 | more a.txt | 显示a.txt的前10行内容 |
tail | 显示文件的末尾若干行 | tail a.txt | 显示a.txt的最后10行内容 |
mkdir | 创建目录 | mkdir dir/ | 创建新目录 dir/ |
mv | 移动或重命名文件 | 1: mv file1 file2 2: mv file dir/ | 1: 改 file1 名字为 file22: 将 file 移动到 dir/去 |
pwd | 显示当前路径 | pwd | 显示当前路径 |
ps | 查看系统进程信息 | ps -ef 或者 ps ajx | 查看系统进程信息 |
rm | 删除文件 | 1: rm file2: rm dir/ -r | 1: 删除 file2: 递归地删除 dir/ |
sort | 排序 | sort file | 对 file 排序后打印到屏幕 |
tar | 归档或释放 压缩或解压 | 1: tar cjf a.tar.bz2 *2: tar xjf a.tar.bz2 3: tar czf a.tar.gz *4: tar xzf a.tar.gz | 1: 将所有文件压缩为.bz22: 解压.bz2 文件3: 将所有文件压缩为.gz4: 解压.gz 文件 |
uniq | 去掉相邻重复的行 | uniq file | 去除 file 中相邻的重复行 |
wc | 计数器 | wc a | 计算 a 的行、单词和字符 |
which | 查找所在路径 | which ls | 显示命令 ls 所在路径 |
touch | 修改文件的时间戳,或创建文件 | touch a.txt | a.txt存在就修改其时间戳,不存在就创建 |
补充说明:
(1)ls命令:ls 罗列当前目录的所有文件 可直接指定目录(路径) ls 路径
? ls -l 以更加详细的方式罗列当前目录的所有文件 可直接指定目录(路径) ls -l 路径
(2)clear命令:实际上clear命令只是上拉屏幕,并没有清屏。自己实现一个类似windos的清屏命令:cls
? 在/usr/bin/目录下。使用root用户,新建一个名为cls的文件,加上执行权限,写入如入内容:
#/bin/bash
printf "\033c"
注:普通用户切换到root用户,输入命令 sudo -s,然后回车,输入密码(密码不回显)。然后直接 vi cls,编辑内容,保存退出。添加权限命令:chmod 777 cls 。退出root状态,返回之前用户状态,输入命令:exit。然后就可以使用cls作为清屏命令了。
(3)tree 命令,罗列目录的文件结构,后面可以跟一个目录(路径),默认是当前目录路径。
如果目录文件太多,可带参数执行,比如说根目录有非常多的文件,可使用命令 tree / -d -L 1 (-d List directories only。
-L level,Max display depth of the directory tree。数字1表示只列出一级目录),可以使用 man tree查询详细用法。
?
(4)mount命令。挂载硬盘、U盘,或远程共享目录等。
? 举例挂载U盘:
? a)查找刚识别出的U盘分区:sudo fdisk -l (这是查看当前系统已识别的分区,比如说识别到的U盘分区为:/dev/sdb )
? b)将U盘分区挂载到/mnt目录下:sudo mount /dev/sdb /mnt (之前的/mnt文件会被掩盖,直到卸载U盘分区)
? c)卸载U盘分区:sudo umount /mnt
? 查看设备挂在路径信息:df -h
(5)more命令:分屏(分页)显示信息,比如需要查看的一个文件内容比较大,而又不想打开时,可使用命令more test.txt进行分页浏览。按空格或者回车向下翻页,按b向上翻,按q退出。
(6)<、>重定向:比如命令ps -ef >1.txt ,将命令ps -efd的输出内容输出到1.txt文件(不存在的话会创建,已存在则覆盖);
使用>>:ps -ef >>1.txt (将命令ps -efd的输出内容追加到1.txt文件)。清空1.txt文件可以使用:> 1.txt 命令。< 重定向输入。
(7)mkdir命令,如果需要创建多级目录,添加-p选项。比如创建 a/b/c 这种连续空目录,使用命令:mkdir a/b/c -p
?
(8) tar命令,压缩文件。
a)压缩为.tar文件
tar -cxf test.tar a.txt b.txt (将a.txt和b.txt压缩为test.tar)
b)解压.tar格式的压缩包
tar xvf test.tar (解压test.tar文件到当前路径)
c)解压.tar格式的压缩包到指定路径
tar xvf test.tar -C /tmp (解压test.tar文件到/tmp)
命令选项:
-c 创建压缩文件
-x 释放压缩文件(解压缩)
-f 指定要压缩后解压缩的文件名
-v 显示命令执行的过程 (比如当前压缩到哪个文件等等信息)
-z 使用gzip压缩工具进行压缩、解压缩,文件后缀是.gz
-j 使用bzip2压缩工具进行压缩、解压缩,文件后缀是.bz2
a)压缩成.gz格式的压缩包
tar -czvf test.tar.gz a.txt b.txt (将a.txt和b.txt压缩为test.tar.gz)
b)解压.gz格式的压缩包
tar -xzvf test.tar.gz (将test.tar.gz压缩包解压到当前路径)
tar -xzvf test.tar.gz -C /tmp (将test.tar.gz压缩包解压到/tmp)
c)压缩成.bz2格式的压缩包
tar -cjvf test.tar.bz2 a.txt b.txt (将a.txt和b.txt压缩为test.tar.bz2)
d)解压.bz2格式的压缩包
tar -xjvf test.tar.bz2 (将test.tar.bz2压缩包解压到当前路径)
tar -xjvf test.tar.bz2 -C /tmp (将test.tar.bz2压缩包解压到/tmp)
(9)wc命令,计算文件的行数(l)、单词数(w)、字符数(c)。
?
(10)which命令 ,例如which ls,表示查看ls命令所在路径,其实ls命令就是一个可执行文件。
(11)diff命令:比较两个文件的异同。例如:diff file1 file2,比较file1与file2的异同并输出。可以使用此命令产生补丁
? 例如:diff dir1/ dir2/ > -urNB dir.patch (比较dir1目录的所有文件与dir2的异同并输出为dir.patch补丁)
? 打补丁使用命令:patch -p1 < 补丁文件的路径 (需要进入到要打补丁的路径,比如 patch -p1< ../dir.patch 需要进入到dir1目录,打完补丁之后,dir1的内容就与dir2的内容相同。)
(12)find命令,find 命令会递归地查找你所执行的目录下的所有子目录。find 命令除了可以按照文件的名字来查找,还可以按文件的权限、文件的类型、文件的索 引节点编号等等来查找。
? 比如按名字找,find 路径 -name "文件名" 。例如要在./Desktop/code/中查找所有以.c 结尾的文件。
?
(13)grep命令,用来在文件中查找字符串。命令格式:grep 寻找的内容 寻找的路径 -参数
例如要在 hello.c 中查找字符串”hello”
?
grep 常用的选项:
-r:如果有子目录,则递归地查找。
-w:严格匹配指定的单词(比如指定查找”apple”,”appletree”将被剔除)
-n:打印行号
-H:打印文件名
例如,递归地在/project/src 下查找所有包含单词”hello”的.c 文件,并打印出含有该单词的 文件名称和该单词在文件中的行号,命令是:Liang@ubuntu:~$ grep “hello” /project/src/*.c -rwnH
查找某一类文件,再在这些文件中查找我们需要的字符串或者单词,可以将 find 和 grep 命令通过管道‘|’连接起来一起用,实现更加强大的功能,比如: 要在/project/src 的所有普通文件中查找单词”hello”,要求剔除像”helloworld”这样的单词:
Liang@ubuntu:~$ find /project/src -type f | xargs grep “hello” -wnH
xargs 代表 find 的输出作为 grep 的参数(否则 grep 只会在 find 找出来的文件列表名称 中查找”hello”,而不会进入文件内部查找)。
(14)date命令,不带参数显示当前日期/时间。 设置时间日期/时间(需要超级权限)
? 设置时间命令:sudo date -s "20180723 19:00" (设置时间为2018年7月23日19:00时)
?
? 格式化输出:date "+%Y-%m-%d %H:%M:%S" (年月日时分秒)
?
(15)cal命令,显示日历
?
(16)head命令,显示文件前几行内容
?
? (17) tail命令,显示文件最后几行
?
? 注:可以使用tail -f xxx.log 来查看log文件的新内容 (当xxx.log日志有新的数据时,tail会显示新的数据)
四、vi常用命令
? vi编辑器的键盘输入分成两种情况,一种情况下你的输入就是你编辑的文 档,另一种情况下你的输入是你要编辑器帮你完成的动作。简而言之,vim 需要两个操作模 式:一个模式下键入的信息,作为文本本身的内容,称之为编辑模式. 一个模式下键入的信息,作为执行的动作,称之为命令模式。刚一启动的 vim 编辑器自动进入命令模式,此模式下键入一个命令对应 vim 一个动作, 比如进入编辑模式、保存文本、复制黏贴、查找替换等等;在命令模式下再按下i按键,进入编辑模式。再编辑模式下,按Esc按键退出编辑模式,进入命令模式。
vim 命令 | 含义 |
---|---|
:w | 保存当前文件 |
:w filename | 保存当前文件(如果进入 vim 的时候没有指定要编辑的文件名,需要在保存文件的时候加上文件名 filename,如果进入 vim 的时候指定了 文件名,那么该用法相当于“另存为”) |
:q | 退出当前正在编辑的文件 |
:q! | 强制退出当前正在编辑的文件并放弃最近一次保存到现在的所有操作 |
:wq | 保存文件并退出 |
u | 撤销最近一次操作。(按 Ctrl+r 恢复撤销掉的操作) |
i | 在光标所在的位置前面插入字符 |
a | 在光标所在的位置后面插入字符 |
o | 在光标所在行的下一行插入新的一行 |
O | 在光标所在行的上一行插入新的一行 |
x | 剪切光标处所在的字符。(x 前可先按一个数字,则剪切若干个字符) |
dd | 剪切光标处所在的一行。(dd 前可先按一个数字,则剪切若干行) |
yy | 复制光标处所在的一行。(yy 前可先按一个数字,则复制若干行) |
:数字 | 跳转到指定行(:18表示跳转到18行) |
p | 将剪切板中的资料粘贴到光标所在处 |
r | 修改光标所在的字符,r 之后接跟你要修正的字符(比如你要把 fox 中 的 o 改成 i,只需将光标停在 o 上,接着连续按下 r 和 i) |
h | 将光标向前移动一个字符 |
j | 将光标向下移动一个字符 |
k | 将光标向上移动一个字符 |
l(小写的 L) | 将光标向后移动一个字符 |
gg | 跳到文本的最初一行 |
G | 跳到文本的最末一行 |
Ctrl + u | 向上(up)翻页 |
Ctrl + d | 向下(down)翻页 |
:%s/old/new | 将文件中所有的 old 字符串替换成 new |
/string | 从光标处往下查找字符串 string,注意在输完你要查找的字符串 string之后要按回车键。如果你要找的字符串 string 有多个,你可以按 n 将 光标跳到下一个位置,按 N 将光标跳到上一个位置 |
?string | 跟上面的是一样的,区别是它从光标处往上查找 |
常用vi操作:
1、进入编辑模式: 按i
2、进入命令模式: 按Esc
3、保存文件命令 :w
4、退出编辑命令 :q
5、保存并退出命令 :wq
6、复制行命令 yy
7、剪切行命令 dd (或者说是删除效果)
8、粘贴命令 p
9、撤销命令 u
10、反撤销命令 Ctrl+r
11、查找命令 /str (str是要查找的字符串)
12、替换命令 :%s/old/new (将文件中所有的 old 字符串替换成 new)
13、去到到文件开头 gg
14、去到文件末尾 G
15、去到行首 ^
16、去到行尾 $
17、剪切从光标处(含)开始到该行行末的所有字符 d$
18、剪切从光标处(不含)开始到该行行首的所有字符 d^
19、复制从光标处(含)开始到该行行末的所有字符 y$
20、复制从光标处(不含)开始到该行行首的所有字符 y^
21、区块选择复制:
复制方式1:鼠标选中,按y复制,p粘贴。
复制方式2:按v键,进入Visual状态,按上下左右方向键进行区域选择(从当前光标处(含)开始),按y复制,p粘贴。
22、区块选择剪切 (删除效果):
剪切方式1:鼠标选中,按y剪切(或者按Delete键),p粘贴。
剪切方式2:按v键,进入Visual状态,按上下左右方向键进行区域选择(从当前光标处(含)开始),按d复制(或者按Delete键),p粘贴。
23、将一个文件中的内容复制到另外一个文件
例如将a文件中的一部分内容复制到b文件中
a)打开终端 cat a文件 (显示a文件的内容,然后可以选择、右键复制(copy))
b)用vi打开要粘贴到的文件 vi b文件
c)右键粘贴(paste)
24、命令行模式下:ZZ 保存并退出
25、全选,在命令行模式,按ggvG (其中gg是回到开头,v是进入visual模式,相当于区块选择,大写G是到文章末尾,ggvG结合起来就是从开头选到结尾) (或者是在终端cat出来再进行右键复制)
补充:
(1)【命令行模式】设置vi显示行号、自动缩进等,命令行模式下:set option (选项前加no 等于禁止)
? 选项:
? number 显示行号
? ruler 屏幕底部显示光标所在行、列的位置
? autoindent 自动缩进
? all 列出所有选项
比如set number 设置侧边显示行号。set nonumber 设置为不显示行号
上面的设置方法仅仅在当前编辑的文档生效。全局生效需要设置vi的配置文件。所有用户的vim配置文件/etc/vim/vimrc,对某个用户的vim配置文件/home/用户名/.vimrc。
例如设置当前用户的配置文件,(若是还没有的话就创建)
?
? set backspace=2 可随时用退格键进行删除
? set mouse=a 允许鼠标移动光标” (我们习惯鼠标点到哪,哪就可以编辑的,但是有vi默认光标是通过方向键移动的)
? syntax on 语法检验,关键字着色
? set tabstop=4 设置tab键的宽度
? 配置所有用户则需要修改文件/etc/vim/vimsrc (需要超级权限) 例如默认显示行号、自动缩进、允许鼠标移动光标
?
(2)【命令行模式】Ctrl+v 方形选择,(类似与notepad++上的按着Shift+Alt键进行鼠标选择)
?
(3)【编辑模式】Ctrl+n 自动补全 例如键入pri,然后按Ctrl+n,就会补上ntf。
五、man帮助手册
1、man 命令帮助我们查找需要的信息,而这些信息被归类为以下几大类别(详细的信息 可以用 man 命令查询自己):
实际上有 9 册 man 帮助文档来分别管理这些信息,但可能系统默认只安装了第 1 册(即查找 Shell 命令的 man 手册),其他的 man 手册需要手动安装。
Liang@ubuntu:~$ man man
1 Shell 命令(默认已安装)
2 系统调用
3 库函数
4 特殊文件(通常出现在/dev 目录下)
5 文件的特殊格式或协定(例如/etc/passwd 的格式)
6 游戏
7 杂项(例如一些宏定义)
8 系统管理员命令(通常只能由管理员执行)
9 非标准内核例程
2、有了完整 man 手册之后就可以查找想要的信息了,比如想要找关于 read 的用法和说明 的信息。
查找那本手册有read这个函数:
Liang@ubuntu:~$ man -f read
read (2) - read from a file descriptor
read (1posix)- read a line from standard input
read (3posix) - read from a file
其中,read (1posix)提供的是 Shell 命令帮助信息,read (2)提供的是系统调用,read (3posix)提供的是库函数等等,假如你想要的是库函数 read 的帮助信息,输入命令:man 3posix read(或者简写为man 3 read)