不管是学习编程还是运维咱们都需要会一些基础的Linux指令,最近本人在学习Linux,精心的整理了一下,分享给大家,请勿喷。
我使用的是ubuntu系统,这个系统还是很不错的。我是在电脑安装VM虚拟机,然后在安装Ubuntu。没有这些东东的老铁给我私信 看到我分享给你们。
1.首先看目录
第一个概念是家目录,比如book用户的家目录是/home/book。
这是前面讲解过的Ubuntu结构,当你在Ubuntu下面新建一个book用户后,它会在/home目录下新建一个book目录。
/home/book目录来存放book用户自己的一些文件。
同理,你在Ubuntu下面新建guest用户的话,它也会在/home下面guest这个目录。/home/guest来存放guest用户,它自己的一些文件。
其目录结构为:
2.基础命令:
在Ubuntu下,我们通过文件搜索器,输入terminal,即可找到终端,或者使用快捷键:Ctrl + Alt + T也可打开终端。Linux命令是每一个Linux学习者必须掌握的基础知识,入门阶段掌握常用的一些命令即可。
演示中使用的命令:
pwd //显示当前所在的目录
ls //显示当前目录下的文件
cd //切换路径
cd .. //返回上一级路径
mkdir //新建目录
rmdir //删除目录
touch //新建文件
cp //复制文件
rm //删除文件
cat //将文件内容显示到终端中
clear //清除屏幕的显示内容
3.linux命令独家记忆法(从别人那里学的)
最简单的是pwd这个命令,我参考了国内很多讲解Linux命令的视频,其实很多老师讲解这个命令的时候,都讲解得不是很完善,他们只是告诉你怎么用,但是他没告诉你怎么记,它的来源是什么。
我这里讲解一下它的来源,它是print workingdirectory,这三个单词的首写字母的组合。这三个单词的中文意思就是“打印当前工作路径”。我相信你只要掌握这三个单词的含义,你就能清楚的记住pwd这个命令,这样的话,你就知根知底了。
在前面讲过,Linux命令格式是由命令、选项、参数。这三个部分来构成的。在日常工作和学习中,只需要掌握命令部分为pwd就可以了,至于其它的选项、参数可以不用掌握。
pwd //打印当前所在的路径
接着是cd命令,cd命令来源是change directory这两单词的首写字母组合。这意思是“切换路径”。一般情况下,cd命令都不需要加参数,只需要加上,需要切换的目标目录就行了。
注意事项:
1.切换的路径必须保证存在,可以使用命令来查看某一个路径下的所有内容。
2.一定要记得多使用tab键,让终端为你自动补全。
你切换的路径必须保证存在,如果路径都不存在,肯定切换不了。这相当于什么呢。
你们班上有30个学生,学号是1-30号,老师叫了31号,肯定没人应答嘛。
因此,建议切换路径前,使用命令来先查看下有没有这个路径,命令,后面会讲。
tab键可以减少我们的输入,提高效率,我见过很多初学者,每次输入的时候都输入完整的文件名或者路径名,效率很低下。所以,记得多使用tab键。
cd //切换路径
在切换路径时一开始,每次都需要输入很多,是不是有时可以简化输入呢?答案是可以的。一般简化输入有这三种情况:
cd ~ //切换到家目录
cd ..//切换到上一级目录
cd -//切换到上一次所在目录
第二个概念是当前路径和上一级路径。
cd //切换路径
cd ~ //切换到当前用户的家目录
cd . //切换到当前路径,很少使用
cd .. //切换到上一路径
cd ../.. //切换到上上路径(linux中的分隔符是“/”)
cd - //切换到上一路径
第三个概念是绝对路径和相对路径
绝对路径:从根目录一级级找下去,需要写完整路径名
相对路径:参照当前所在目录进行查找
举例:
1) 当前路径为/bin,然后./pwd就是执行了/bin/pwd
2) 当前路径为/home/book/100ask,然后cd ../Videos/就到达/home/book/Videos,cd ../..就到达/home
绝对路径是从根目录开始;
相对路径一般以.和..来构成;
4.ls命令
ls命令的来源是英文单词list。学过数据结构的同学知道,list表示链表,不过在这里,list是个动词,表示列举、列出。ls的功能是列出目录内容。
ls //列出目录内容
前面我们刚刚讲过cd命令,cd命令是切换路径。
一般的话,都是用cd切换路径,然后再使用ls来查看目录内容。
在前面讲过,Linux的命令组成是:
命令 [选项][参数]
其中选项,参数可有可无。
举例:
1) ls
ls //则显示当前所在目录的内容
2)ls 目录名
ls /home //则指定显示/home的内容
ls ~ //则指定显示/home/book的内容
3)ls 选项 或 ls 选项 目录名
常用的选项:
-l(long的缩写),显示目录下文件的更详细的信息(文件权限、文件最后修改时间、文件大小);
-a(all的缩写),显示了隐藏文件;
-h(human-able的缩写),将文件大小以K(KB)、M(MB)、G(GB)来表示;
ls -lh的详细的信息含义:
5.目录操作mkdir和rmdir独家记忆方法
下面我们讲解mkdir这个命令。mkdir来源于make directory
目录的操作
· mkdir:创建目录
举例:
1)mkdir 目录名
mkdir dir0 //创建了dir目录
2)mkdir -p 父目录/子目录
mkdir -p dir1/dir2//连续创建多级目录(父目录和子目录),如果父目录不存在,则需要加入-p参数。-p(parents的缩写)
· rmdir :删除目录
举例:
1) rmdir 目录名
rmdir dir0//删除dir0这个没有内容的空目录
注意:rmdir不能删除非空目录(非空目录:该目录下面有子目录或者文件)
2)rm -f 目录名
rm -f dir0 //删除dir0这个目录
注意:可以删除非空目录
6.文件操作touch_mv_cp_rm
文件的操作
· touch :用来新建文件
举例:
1) touch 文件名
touch file1 //在当前目录新建名为file1的文件
注意:
1)同一目录无法创建同名的文件
2)linux的文件名是区分大小写的,如file1和File1是不同文件。这一点跟windows不同。
· mv(move的缩写) :用来修改文件(目录)名、移动路径
举例:
1) mv 旧文件名 新文件名 修改文件名
mv file1 filea //将当前目录的文件file1改名为filea
2)mv 旧目录名 新目录名 修改目录名
mv file1 filea //将当前目录的文件file1改名为filea
2)mv 旧目录名 新目录名 修改目录名
mv dir1 dira //将当前目录下的目录dir1改为dira
3)mv 文件名目录名 移动路径
mv filea dira //将当前目录下filea移动到dira子目录
mv filea ~ //将当前目录下filea移动家目录
mv ~/filea ..//将家目录下的fila移动到上一个路径
cp(copy的缩写) : 用来复制文件(目录)
1)cp 源文件名 目标文件名
cp File1 file2//将当前目录下的文件File1拷贝成file2
2)cp 源文件名 目标目录名
cp file2 dira///将当前目录下的文件file2拷贝到dira子目录
2)cp 源目录名 目标目录名
cp -r dira dirb//复制dira目录下的所有内容到dirb,其中,-r参数时递归复制
cp -i file2 dira//如果dira目录下面有同名的file2,加入-i参数就会要求你确认是否覆盖同名的文件
注意:cp的常用参数有:-i,-r,-f,-d等,在后面讲解了linux权限之后,我们会加深cp命令的讲解。
rm(remove的缩写) :删除文件(目录)
常用命令格式:
rm [选项] [文件名 | 目录名]
常用选项:
-i(interactive(交互)的缩写), 删除文件(目录)之前,要求你确认是否同意删除
-r(recursive(递归)的缩写), 递归删除指定目录下的子目录和文件
-f(force(强制)的缩写), 强制删除
注意:
1)删除文件(目录)前,确定该文件(目录)是否可以被删除。
2)rm的常用参数有:-i,-r,-f等,在后面讲解了linux权限之后,我们会加深rm这个命令的讲解
7.文件查看和编辑cat_gedit
文件的查看和编辑:
1)cat用来查看文件内容
常用命令格式:
cat 文件名
举例:
cat file1 将file1的内容打印到标准输出中(默认标准标准输出指向终端)
cat file1 file2 将file1和file2的内容串联并依次全部打印到标准输出中
cat -n file1 显示内容并在内容前显示行号。
类似的查看命令: more、less、head、tail等后面讲解
2)gedit 图形应用程序的编辑器
这个前面讲过了,就不再重复了
3)vi 编辑器
vim编辑器的三种模式:一般模式、编辑模式和命令行模式。
在一般模式中可以进行删除、复制和粘贴的功能,但是无法编辑文件内容。从一般模式切换到编辑模式可以按下i、I、o、O、a、A、r、R键。按下Esc键可以回到一般模式。在一般模式中输入:、/、?三个中的任意一个可以将光标移到最下面的一行。
在这个模式中可以提供查找数据的操作,而读取、保存、大量替换字符、离开vii、显示行号等操作则是在此模式中完成的。需要注意的是,编辑模式与命令行模式之间是不能互相切换的。
下面列出平时用的最多的vi命令:
移动光标的方法:
-
[Ctrl]+[f]:屏幕向下移动一页,相当于[PageDown]按键。
-
[Ctrl]+[b]:屏幕向上移动一页,相当于[PageUp]按键。
-
0或功能键[Home]:移动到这一行的最前面字符处。
-
$或功能键[End]:移动到这一行的最后面字符处。
-
G:移动到这个文件的最后一行。
-
gg:移动到这个文件的第一行,相当于1G.
-
N[Enter]:N为数字,光标向下移动N行。
查找和替换:
-
/word:向下寻找一个名称为word的字符串。
-
?word:向上寻找一个名称为word的字符串。
-
:n1,n2s/word1/word2/g:在第n1行和n2行之间寻找word1这个字符串,并且将其替换为word2.
-
:1,$s/word1/word2/g:从第一行到最后一行寻找word1这个字符串,并且将其替换为word2.
-
:1,$s/word1/word2/gc:从第一行到最后一行寻找word1这个字符串,并且将其替换为word2.且在替换前显示提示字符给用户确认是否需要替换。
-
删除、复制和粘贴:
-
x,X:在一行字中,x为向后删除一个字符(相当于[Del]键),X为向前删除一个字符(相当于[Backspace])。
-
dd:删除光标所在的一整行。
-
ndd:删除光标所在的向下n行。
-
yy:复制光标所在的一行。
-
nyy:复制光标所在的向下n行。
-
p,P:p为将已复制的内容在光标的下一行粘贴,P则为粘贴在光标的上一行。
-
u:复原前一个操作。
-
[Ctrl]+r:重做上一个操作。
-
.:小数点,重复前一个操作。
一般模式切换到编辑模式:
-
i,I:进入插入模式,i为从目前光标所在处插入。I为在目前所在行的第一个非空格字符处开始插入。
-
a,A:进入插入模式。a为从目前光标所在处的下一个字符处开始插入。A为从所在行的最后一个字符处开始插入。
-
o,O:进入插入模式。o为在下一行插入。O为在上一行插入。
-
r,R:进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键。
-
一般模式切换到命令行:
-
:w:将编辑的数据写入到硬盘中。
-
:q:离开vi.后面加!为强制离开。
-
:wq:保存后离开。:wq!为强制保存后离开。
目前主要的编辑器都有恢复功能,vim也不例外。vim是通过“保存”文件来挽回数据的。
每当我们在用vim编辑时,vim都会自动在被编辑的文件的目录下面再新建一个名为filename.swap的文件。这就是一个暂存文件,我们对文件filename所做的操作都会被记录到这个文件当中。如果系统意外崩溃,导致文件没有正常保存,那么这个暂存文件就会发挥作用。下面用一个例子来说明(Note:我用的是Ubuntu)
打开终端,输入命令,将etc目录下面的manpath.config复制到tmp目录下面,并且更改当前工作目录为tmp:
cp /etc/manpath.config /tmp
cd /tmp
用vim编辑manpath.config文件:vim manpath.config。
我们在vim的一般模式下按下Ctrl+z组合键,vim就会被丢到后台执行。回到命令提示符环境后,我们模拟将vim的工作不正常中断。
kill -9 %1;强制杀死制定的进程。
这样导致暂存盘无法通过正常的流程结束,所以暂存文件不会消失,而是继续保留下来。当再次编辑那个文件时(输入命令vim manpath.config),出现(ubuntu 11.10):
这时,有六个按钮可以使用:
-
O(pen for Read-Only):打开成只读文件。
-
E(dit):用正常方式打开要编辑的文件,并不会载入暂存文件的内容。这很容易出现两个用户相互改变对方的文件的问题。
-
R(ecover):加载暂存文件的内容。
-
D(elete):如果你确定这个暂存文件是没有用的,则可以删除。
-
Q(uit):不进行任何操作,回到命令行。
-
A(bort):忽略这个编辑行为,和Q类似。
需要注意的是:这个暂存文件不会应为你结束vim后自动删除,必须要手动删除。否则每次打开对应的文件时都会出现这样的提示。
vim的功能
【1】块选择:
这个功能可以让我们复制一个矩形区域的内容,十分方便。
-
v:字符选择,会将光标经过的地方反白选择;
-
V:行选择;
-
Ctrl+v:块选择;
-
y:复制反白的地方;
-
d:删除反白的地方。
实例如下:
需要注意的是,粘贴时候也是粘贴在一个块的范围内,而不是以行为单位来处理的。
【2】多文件编辑
我们在两个或多个文件之间复制粘贴内容时,这个功能会让我们方便很多。
使用命令vim name1 name2 name3...(各个文件名之间用空格隔开)可以同时打开多个文件。
-
:n:编辑下一个文件;
-
:N:编辑上一个文件;
-
:files:列出目前vim打开的所有文件。
【3】多窗口功能
可以在一个窗口中打开多个文件。
输入命令:sp{filename}便可以实现这个功能。如果想要在新窗口启动另外一个文件,则加入文件名。如果省略文件名,则打开的是同一个文件。
用一个例子来说明。
vim manpath.config打开一个文件。在一般模式下输入:sp。发现打开的是同一个文件。如果再输入:sp /etc/hosts。则变成:
其他的按键功能:
-
Ctrl+w+j:先按下Ctrl不放,再按下w后放开所有的按键,再按下j(或向下箭头键),则光标可以移到下方的窗口;
-
Ctrl+w+k:同上,不过光表移到上面的窗口;
-
Ctrl+w+q:离开。
【4】vim环境设置
需要注意的是,vim会将i我们的以前的行为都记录下来,以方便我们操作。它保存在文件:~/.viminfo中。
vim常用的环境设置参数命令如下:
-
:set nu 设置行号
-
:set nonu 取消行号
-
:set hlsearch 设置高亮度查找
-
:set nohlsearch 取消高亮度查找
-
:set backup 自动备份文件
-
:set ruler 开启右下角状态栏说明
-
:set showmode 显示左下角的INSERT之类的状态栏
-
:set backspace={0,1,2} 设置退格键功能。为2时可以删任意字符。为0或1时仅可以删除刚才输入的字符。
-
:set all 显示目前所有的环境参数值
-
:set 显示与系统默认值不同的参数值
-
:syntax on/off 是否开启依据相关程序语法显示不同的颜色
-
:set bg=dark/light 是否显示不同的颜色色调
但是我们没有必要每次使用vim都要重新设置一次各个参数值。我们可以通过配置文件来直接规定我们习惯的vim操作环境。整体vim的设置值一般是放在/etc/vimrc中的。
我们一般不要修改这个文件。我们可以通过修改~/.vimrc这个文件,如果不存在,可以手动创建。然后将我们所希望的设置值写入。例如,我们可以这样写:
vim ~/.vimrc set hlsearch(注意:set前面也可以加冒号,结果一样) set backspace=2 set ruler set showmode set nu syntax on
创建并保存这个文件之后,当下次重新以vim编辑某个文件时,该文件的默认环境就是这么设置的。
参考文章:http://blog.csdn.net/xiajun07061225/article/details/7039413