“第003课 linux入门命令”的版本间的差异

来自百问网嵌入式Linux wiki
 
(未显示4个用户的17个中间版本)
第1行: 第1行:
 
+
<div body style="width:800px;">
 
= 001节_linux命令入门演示 =
 
= 001节_linux命令入门演示 =
  
第36行: 第36行:
  
 
=002节_shell命令解析器功能说明 =
 
=002节_shell命令解析器功能说明 =
 +
*1. shell是什么
 +
*2. 怎么设置PATH
 +
*3. Hello程序示例
 +
===1. shell是什么===
 +
shell就是一个应用程序,我们可以通过键盘、串口给它发送命令,回车后它就会去执行这些命令。
 +
以'''<code>ls  -l</code>'''命令为例,<br>
 +
① 接收键盘数据并回显<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;比如:我们使用键盘给shell程序发送字母l,它收到后会在屏幕上显示出来<br>
 +
② 解析输入的字符串,寻找程序,执行程序:<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;当我们使用键盘给shell程序发送回车时,它就知道字符输入结束了<br>
 +
a. shell会解析字符串,这些字符串用空格分为好几部分<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;第1部分就是程序名、命令名,其他部分是参数<br>
 +
b. shell会去寻找该程序,去哪里找?去PATH环境变量所指示的位置找。<br>
 +
&nbsp;&nbsp;&nbsp;&nbsp;你当然也可以指定绝对、相对路径,shell就会直接去这些路径找到程序<br>
 +
c. 找到程序后,会启动该程序,并传入参数<br>
 +
===2. 怎么设置PATH===
 +
以在PATH中添加/home/book目录为例:
 +
*2.1 永久设置之方法1,对所有用户都有效:
 +
修改/etc/environment,比如:<code>sudo gedit /etc/environment</code>,然后添加下行红包部分:
 +
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games<span style="color:#ff0000">:/home/book</span>"
 +
然后重启系统或重新登录。
  
在Shell中输入字符串并回车的过程:<br>
+
*2.2 永久设置之方法2,只对当前用户有效:
1.Shell根据第一个字符串去环境变量PATH所指定的目录中找到同名的应用程序;<br>
+
修改<code>~/.bashrc</code>,在行尾添加或修改:
2.然后执行它;<br>
+
export PATH=$PATH:/home/book
 
+
然后重启系统或重新登录。
我们可以通过设置PATH环境变量来添加我们的目录:
 
<syntaxhighlight lang="c" >
 
export PATH=$PATH:/my/dir
 
</syntaxhighlight>
 
 
 
  
command not found的原因:
+
*2.3 临时设置:
 +
在终端执行以下命令,这只对当前终端有效:
 +
export PATH=$PATH:/home/book
  
1.PATH所指定的目录中无此程序;<br>
+
===3. Hello程序示例===
2.它不是可执行的程序;<br>
 
  
 
=003节_linux命令提示符和linux命令格式 =
 
=003节_linux命令提示符和linux命令格式 =
第83行: 第100行:
 
在一些参考书里,是以英文写的,它们是一个意思。
 
在一些参考书里,是以英文写的,它们是一个意思。
  
[[File:chapter3_lesson3_002.png.png|800px]]
+
[[File:chapter3_lesson3_002.png|800px]]
  
  
第91行: 第108行:
 
如果我们想查看非当前路径下的内容,比如/home这个路径下的内容:<code>ls -l /home</code>
 
如果我们想查看非当前路径下的内容,比如/home这个路径下的内容:<code>ls -l /home</code>
  
[[File:chapter3_lesson3_003.png.png|800px]]
+
[[File:chapter3_lesson3_003.png|800px]]
  
 
可以发现:
 
可以发现:
第168行: 第185行:
  
 
这是前面讲解过的Ubuntu结构,当你在Ubuntu下面新建一个book用户后,它会在/home目录下新建一个book目录。
 
这是前面讲解过的Ubuntu结构,当你在Ubuntu下面新建一个book用户后,它会在/home目录下新建一个book目录。
/home/book这个目录来存放book用户他自己的一些文件。同理,你在Ubuntu下面新建guest这个用户在话,他也会在/home下面guest这个目录。/home/guest来存放guest用户,他自己的一些文件。
+
 
 +
/home/book这个目录来存放book用户他自己的一些文件。
 +
 
 +
同理,你在Ubuntu下面新建guest这个用户在话,他也会在/home下面guest这个目录。/home/guest来存放guest用户,他自己的一些文件。
  
 
[[File:chapter3_lesson7_001.png|800px]]
 
[[File:chapter3_lesson7_001.png|800px]]
第244行: 第264行:
 
=012节_ls命令__独家记忆方法 =
 
=012节_ls命令__独家记忆方法 =
  
 
+
接下来,我们讲解<code>ls</code>命令。
接下来,我们讲解`ls`命令。
+
<code>ls</code>命令它的来源是英文单词<code>list</code>。学过数据结构的同学知道,<code>list</code>表示链表,不过在这里,<code>list</code>是个动词,表示列举、列出。<code>ls</code>的功能是列出目录内容。
`ls`命令它的来源是英文单词`list`。学过数据结构的同学知道,`list`表示链表,不过在这里,`list`是个动词,表示列举、列出。`ls`的功能是列出目录内容。
+
<syntaxhighlight lang="c" >
 
 
 
 
 
  ls  //列出目录内容
 
  ls  //列出目录内容
 +
</syntaxhighlight>
  
 
+
前面我们刚刚讲过<code>cd</code>命令,<code>cd</code>命令是切换路径。
前面我们刚刚讲过`cd`命令,`cd`命令是切换路径。
+
一般的话,都是用<code>cd</code>切换路径,然后再使用<code>ls</code>来查看目录内容。
一般的话,都是用`cd`切换路径,然后再使用`ls`来查看目录内容。
 
  
 
在前面讲过,Linux的命令组成是:
 
在前面讲过,Linux的命令组成是:
 
+
<syntaxhighlight lang="c" >
 
  命令  [选项]  [参数]
 
  命令  [选项]  [参数]
 
+
</syntaxhighlight>
 
其中选项,参数可有可无。
 
其中选项,参数可有可无。
  
 
举例:
 
举例:
 +
 
1) ls
 
1) ls
`ls`    //则显示当前所在目录的内容
+
<syntaxhighlight lang="c" >
 +
ls    //则显示当前所在目录的内容
 +
</syntaxhighlight>
  
 
2)ls 目录名
 
2)ls 目录名
`ls /home` //则指定显示/home的内容
+
<syntaxhighlight lang="c" >
`ls ~`   //则指定显示/home/book的内容
+
ls /home//则指定显示/home的内容
 +
ls ~  //则指定显示/home/book的内容
 +
</syntaxhighlight>
  
 
3)ls 选项 或 ls 选项 目录名
 
3)ls 选项 或 ls 选项 目录名
 
常用的选项:
 
常用的选项:
`-l`(long的缩写),显示目录下文件的更详细的信息(文件权限、文件最后修改时间、文件大小);
 
`-a`(all的缩写),显示了隐藏文件;
 
`-h`(human-able的缩写),将文件大小以K(KB)、M(MB)、G(GB)来表示;
 
  
`ls -lh`的详细的信息含义:
+
<code>-l</code>(long的缩写),显示目录下文件的更详细的信息(文件权限、文件最后修改时间、文件大小);
 +
 
 +
<code>-a</code>(all的缩写),显示了隐藏文件;
 +
 
 +
<code>-h</code>(human-able的缩写),将文件大小以K(KB)、M(MB)、G(GB)来表示;
 +
 
 +
 
 +
<code>ls -lh</code>的详细的信息含义:
  
[[File:chapter3_lesson12_001.png]]
+
[[File:chapter3_lesson12_001.png|800px]]
  
 
演示效果见视频。
 
演示效果见视频。
第283行: 第310行:
 
= 013节_目录操作mkdir和rmdir_独家记忆方法 =
 
= 013节_目录操作mkdir和rmdir_独家记忆方法 =
  
下面我们讲解mkdir这个命令。`mkdir`来源于`make  directory`
+
下面我们讲解mkdir这个命令。<code>mkdir</code>来源于<code>make  directory</code>
  
**目录的操作**
+
'''目录的操作'''
  
- mkdir:创建目录
+
* mkdir:创建目录
  
 
举例:
 
举例:
 +
 
1)mkdir  目录名
 
1)mkdir  目录名
`mkdir dir0`  //创建了dir0这个目录
+
<syntaxhighlight lang="c" >
 +
mkdir dir0    //创建了dir0这个目录
 +
</syntaxhighlight>
  
 
2)mkdir -p  父目录/子目录
 
2)mkdir -p  父目录/子目录
`mkdir -p  dir1/dir2` //连续创建多级目录(父目录和子目录),如果父目录不存在,则需要加入-p参数。-p(parents的缩写)
+
<syntaxhighlight lang="c" >
 +
mkdir -p  dir1/dir2 //连续创建多级目录(父目录和子目录),如果父目录不存在,则需要加入-p参数。-p(parents的缩写)
 +
</syntaxhighlight>
  
*   rmdir :删除目录
+
* rmdir :删除目录
 
举例:
 
举例:
  
 
1) rmdir  目录名
 
1) rmdir  目录名
`rmdir dir0`  //删除dir0这个没有内容的空目录
+
<syntaxhighlight lang="c" >
**注意:**rmdir不能删除非空目录(非空目录:该目录下面有子目录或者文件)
+
rmdir dir0  //删除dir0这个没有内容的空目录
 +
</syntaxhighlight>
 +
 
 +
'''注意:'''rmdir不能删除非空目录(非空目录:该目录下面有子目录或者文件)
 +
 
 +
2)rm -r 目录名
 +
<syntaxhighlight lang="c" >
 +
rm -r dir0  //删除dir0这个目录
 +
</syntaxhighlight>
  
2)rm -f 目录名
+
'''注意:'''可以删除非空目录
`rm -f dir0`  //删除dir0这个目录
 
**注意:**可以删除非空目录
 
  
 
演示效果见视频。
 
演示效果见视频。
 
  
 
= 014节_文件操作touch_mv_cp_rm =
 
= 014节_文件操作touch_mv_cp_rm =
第314行: 第351行:
 
'''文件的操作'''
 
'''文件的操作'''
  
- touch  :用来新建文件
+
 
 +
* touch  :用来新建文件
  
 
举例:
 
举例:
 +
 
1) touch  文件名
 
1) touch  文件名
`touch file1`  //在当前目录新建名为file1的文件
+
<syntaxhighlight lang="c" >
 +
touch file1  //在当前目录新建名为file1的文件
 +
</syntaxhighlight>
  
 
'''注意:'''
 
'''注意:'''
 +
 
1)同一目录无法创建同名的文件
 
1)同一目录无法创建同名的文件
 +
 
2)linux的文件名是区分大小写的,如file1和File1是不同文件。这一点跟windows不同。
 
2)linux的文件名是区分大小写的,如file1和File1是不同文件。这一点跟windows不同。
  
- mv(move的缩写) :用来修改文件(目录)名、移动路径
+
 
 +
* mv(move的缩写) :用来修改文件(目录)名、移动路径
  
 
举例:
 
举例:
 +
 
1) mv  旧文件名  新文件名  修改文件名
 
1) mv  旧文件名  新文件名  修改文件名
`mv file1 filea` //将当前目录的文件file1改名为filea
+
<syntaxhighlight lang="c" >
 +
mv file1 filea //将当前目录的文件file1改名为filea
 +
</syntaxhighlight>
  
 
2)mv  旧目录名  新目录名  修改目录名
 
2)mv  旧目录名  新目录名  修改目录名
 
+
<syntaxhighlight lang="c" >
`mv dir1 dira`  //将当前目录下的目录dir1改为dira
+
mv dir1 dira  //将当前目录下的目录dir1改为dira
 +
</syntaxhighlight>
  
 
3)mv  文件名    目录名  移动路径
 
3)mv  文件名    目录名  移动路径
 +
<syntaxhighlight lang="c" >
 +
mv filea dira //将当前目录下filea移动到dira子目录
 +
mv filea  ~  //将当前目录下filea移动家目录
 +
mv ~/filea  .. //将家目录下的fila移动到上一个路径
 +
</syntaxhighlight>
  
`mv filea dira` //将当前目录下filea移动到dira子目录
 
`mv filea  ~`  //将当前目录下filea移动家目录
 
`mv ~/filea  ..` //将家目录下的fila移动到上一个路径
 
  
 
*  cp(copy的缩写) :用来复制文件(目录)
 
*  cp(copy的缩写) :用来复制文件(目录)
  
 
1)cp  源文件名  目标文件名
 
1)cp  源文件名  目标文件名
`cp File1  file2` //将当前目录下的文件File1拷贝成file2
+
<syntaxhighlight lang="c" >
 +
cp File1  file2 //将当前目录下的文件File1拷贝成file2
 +
</syntaxhighlight>
  
 
2)cp  源文件名  目标目录名
 
2)cp  源文件名  目标目录名
`cp file2 dira/` //将当前目录下的文件file2拷贝到dira子目录
+
<syntaxhighlight lang="c" >
 +
cp file2 dira/ //将当前目录下的文件file2拷贝到dira子目录
 +
</syntaxhighlight>
  
 
2)cp  源目录名  目标目录名
 
2)cp  源目录名  目标目录名
`cp -r dira dirb` //复制dira目录下的所有内容到dirb,其中,-r参数时递归复制
+
<syntaxhighlight lang="c" >
`cp -i file2 dira` //如果dira目录下面有同名的file2,加入-i参数就会要求你确认是否覆盖同名的文件
+
cp -r dira dirb //复制dira目录下的所有内容到dirb,其中,-r参数时递归复制
 +
cp -i file2 dira //如果dira目录下面有同名的file2,加入-i参数就会要求你确认是否覆盖同名的文件
 +
</syntaxhighlight>
  
 
'''注意:'''cp的常用参数有:-i,-r,-f,-d等,在后面讲解了linux权限之后,我们会加深cp这个命令的讲解。
 
'''注意:'''cp的常用参数有:-i,-r,-f,-d等,在后面讲解了linux权限之后,我们会加深cp这个命令的讲解。
 +
  
 
*  rm(remove的缩写) :删除文件(目录)
 
*  rm(remove的缩写) :删除文件(目录)
常用命令格式:rm   [选项]  [文件名 | 目录名]
+
常用命令格式:
 +
<syntaxhighlight lang="c" >
 +
rm   [选项]  [文件名 | 目录名]
 +
</syntaxhighlight>
  
 
常用选项:
 
常用选项:
`-i`(interactive(交互)的缩写),删除文件(目录)之前,要求你确认是否同意删除
+
<code>-i</code>(interactive(交互)的缩写),删除文件(目录)之前,要求你确认是否同意删除
`-r`(recursive(递归)的缩写),递归删除指定目录下的子目录和文件
+
<code>-r</code>(recursive(递归)的缩写),递归删除指定目录下的子目录和文件
`-f`(force(强制)的缩写),强制删除     
+
<code>-f</code>(force(强制)的缩写),强制删除     
  
 
举例:
 
举例:
`rm File1`   //删除当前目录下的文件File1
+
<syntaxhighlight lang="c" >
`rm -i file2` //删除文件file2,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除
+
rm File1   //删除当前目录下的文件File1
`rm -r dira`  //删除目录dira
+
rm -i file2  //删除文件file2,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除
`rm -ir dirb`  //删除目录dirb,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除   
+
rm -r dira  //删除目录dira
 +
rm -ir dirb  //删除目录dirb,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除   
 +
</syntaxhighlight>
  
 
'''注意:'''
 
'''注意:'''
 +
 
1)删除文件(目录)前,确定该文件(目录)是否可以被删除。
 
1)删除文件(目录)前,确定该文件(目录)是否可以被删除。
 +
 
2)rm的常用参数有:-i,-r,-f等,在后面讲解了linux权限之后,我们会加深rm这个命令的讲解。
 
2)rm的常用参数有:-i,-r,-f等,在后面讲解了linux权限之后,我们会加深rm这个命令的讲解。
  
 +
=015节_文件查看和编辑cat_gedit =
  
=015节_文件查看和编辑cat_gedit =
+
'''文件的查看和编辑:'''
  
**文件的查看和编辑:**
+
1) cat用来查看文件内容
  
- 1) cat用来查看文件内容
+
常用命令格式:
 +
<syntaxhighlight lang="c" >
 +
cat  文件名
 +
</syntaxhighlight>
  
常用命令格式:cat  文件名
 
 
举例:
 
举例:
 `cat file1`     将file1的内容打印到标准输出中(默认标准标准输出指向终端)
+
<syntaxhighlight lang="c" >
 `cat file1 file2`  将file1和file2的内容串联并依次全部打印到标准输出中
+
 cat file1     将file1的内容打印到标准输出中(默认标准标准输出指向终端)
 `cat -n file1`    显示内容并在内容前显示行号。
+
 cat file1 file2  将file1和file2的内容串联并依次全部打印到标准输出中
 +
 cat -n file1    显示内容并在内容前显示行号。
 +
</syntaxhighlight>
  
类似的查看命令:`more`、`less`、`head`、`tail`等后面讲解    
+
类似的查看命令:more、less、head、tail等后面讲解    
  
- 2) gedit 图形应用程序的编辑器
+
 
 +
2) gedit 图形应用程序的编辑器
  
 
这个前面讲过了,就不再重复了
 
这个前面讲过了,就不再重复了
  
- 3) vi 编辑器
+
 
 +
3) vi 编辑器
  
 
vi编辑器非常重要,在后面的视频,以专题的形式讲解。
 
vi编辑器非常重要,在后面的视频,以专题的形式讲解。
 +
 
=016节_清除屏幕_clear和reset =
 
=016节_清除屏幕_clear和reset =
  
**清除屏幕命令:**
+
'''清除屏幕命令:'''
 +
 
 +
<code>clear</code>:刷新屏幕,保留历史命令操作记录
  
`clear`:刷新屏幕,保留历史命令操作记录
 
 
说明:此命令本质上只是让终端向后翻一页,当向上滚动鼠标时,还是可以看到之前命令的操作记录
 
说明:此命令本质上只是让终端向后翻一页,当向上滚动鼠标时,还是可以看到之前命令的操作记录
 
也可使用快捷键“Ctrl”+“L”。
 
也可使用快捷键“Ctrl”+“L”。
  
`reset`:重新初始化屏幕,清除历史命令操作记录
+
<code>reset</code>:重新初始化屏幕,清除历史命令操作记录
  
 
= 017节_帮助信息man_info_help =
 
= 017节_帮助信息man_info_help =
第410行: 第483行:
  
 
学习Linux最麻烦的是什么?
 
学习Linux最麻烦的是什么?
 +
 
不停的上网或者翻阅书籍查找linux命令、相关函数的用法。
 
不停的上网或者翻阅书籍查找linux命令、相关函数的用法。
 +
 
其实,没那么麻烦,linux发行版(如ubuntu)自带帮助命令。
 
其实,没那么麻烦,linux发行版(如ubuntu)自带帮助命令。
  
Linux系统中提供了 三种 帮助方式。
+
Linux系统中提供了'''三种'''帮助方式。
  
man和info是独立的命令, --help是个命令的参数,
+
<code>man</code>和<code>info</code>是独立的命令, <code>--help</code>是个命令的参数,
 
它们都是Linux中获取帮助信息最权威,最快捷的途径。
 
它们都是Linux中获取帮助信息最权威,最快捷的途径。
  
- 1) man使用的最多
+
 
 +
1) man使用的最多
  
 
举例:
 
举例:
 `man man`  //查看man手册的说明
+
<syntaxhighlight lang="c" >
 `man ls`   //当没有指定使用那一页,默认使用第1页
+
 man man  //查看man手册的说明
 `man 1 ls`  //与 man ls 一样
+
 man ls   //当没有指定使用那一页,默认使用第1页
 `man 1 gcc` //gcc是一个应用程序,在linux中一般使用gcc编译器来编译c/c++语言的程序 
+
 man 1 ls  //与 man ls 一样
 `man 2 open` //查看系统调用open的man手册说明。open/write/read/close等等都是系统调用
+
 man 1 gcc //gcc是一个应用程序,在linux中一般使用gcc编译器来编译c/c++语言的程序 
 +
 man 2 open //查看系统调用open的man手册说明。open/write/read/close等等都是系统调用
 +
</syntaxhighlight>
 +
 
 
'''注意:'''
 
'''注意:'''
 
 man手册的9册内容的侧重点,最好记一下。
 
 man手册的9册内容的侧重点,最好记一下。
第452行: 第531行:
 
|}
 
|}
  
- 2) info
+
2) info
  
 
举例:
 
举例:
`info ls`  //查看ls的帮助信息
+
<syntaxhighlight lang="c" >
 +
info ls  //查看ls的帮助信息
 +
</syntaxhighlight>
  
- 3) --help
+
3) --help
  
 
举例:
 
举例:
`ls --help` //查看ls的帮助信息
+
<syntaxhighlight lang="c" >
 
+
ls --help //查看ls的帮助信息
 +
</syntaxhighlight>
 +
</div>
 
='''《《所有章节目录》》'''=
 
='''《《所有章节目录》》'''=
 
<categorytree mode=all  background-color:white;">ARM裸机加强版</categorytree>
 
<categorytree mode=all  background-color:white;">ARM裸机加强版</categorytree>
 
[[Category:ARM裸机加强版 ]]
 
[[Category:ARM裸机加强版 ]]
 +
[[Category:LinuxBase]]

2019年12月26日 (四) 11:05的最新版本

001节_linux命令入门演示

前面我们讲解了在Ubuntu图形界面下怎么新建目录、新建文件等等。
来提个问题:除了这个图形界面,Ubuntu下面有没有其它的方式也可以创建目录、创建文件呢?
我们回到比较熟悉的Windows界面,或许大家听说过dos命令行工具,没有听说过也没关系,同时按下“Windows键”和“R键”,输入cmd,再点击“确定”,就出现了命令工具。 Chapter3 lesson1 001.png

打开之后,默认进入计算机用户目录,在该目录输入dir,可以看到显示目录和文件的名称。
执行md 123,在资源管理器可以看到创建了“123”这个文件夹。
执行rd 123,就删除了“123”这个文件夹。
输入cls,即可清除屏幕显示信息。
这里演示的dirmdrdcls这些命令,都是这个命令行所支持的命令。他们可以实现创建目录、删除目录、清屏等操作。

回到前面提的问题:除了图形界面,Ubuntu下面有没有其它的方式也可以创建目录、创建文件呢?
答案是有的,可以通过Linux命令。
下面,我先给大家演示一下Linux命令,大家先看着我是如何操作的,在后续视频中我会详细的讲解Linux命令如何快速记忆和快速掌握。
现在我们只是来演示一下,在这里强烈建议,不要做笔记,也不要记忆。 演示效果见视频。

在Ubuntu下面,我们通过文件搜索器,输入terminal,即可找到终端,或者使用快捷键:Ctrl + Alt + T也可打开终端。Linux命令是每一个Linux学习者必须掌握的基础知识,入门阶段掌握常用的一些命令即可。 演示中使用到命令:

    pwd   //显示当前所在的目录
    ls   //显示当前目录下的文件
    cd   //切换路径
    cd ..   //返回上一级路径
    mkdir  //新建目录
    rmdir  //删除目录
    touch  //新建文件
    cp   //复制文件
    rm   //删除文件
    cat   //将文件内容显示到终端中
    clear  //清除屏幕的显示内容

002节_shell命令解析器功能说明

  • 1. shell是什么
  • 2. 怎么设置PATH
  • 3. Hello程序示例

1. shell是什么

shell就是一个应用程序,我们可以通过键盘、串口给它发送命令,回车后它就会去执行这些命令。 以ls -l命令为例,
① 接收键盘数据并回显
    比如:我们使用键盘给shell程序发送字母l,它收到后会在屏幕上显示出来
② 解析输入的字符串,寻找程序,执行程序:
    当我们使用键盘给shell程序发送回车时,它就知道字符输入结束了
a. shell会解析字符串,这些字符串用空格分为好几部分
    第1部分就是程序名、命令名,其他部分是参数
b. shell会去寻找该程序,去哪里找?去PATH环境变量所指示的位置找。
    你当然也可以指定绝对、相对路径,shell就会直接去这些路径找到程序
c. 找到程序后,会启动该程序,并传入参数

2. 怎么设置PATH

以在PATH中添加/home/book目录为例:

  • 2.1 永久设置之方法1,对所有用户都有效:

修改/etc/environment,比如:sudo gedit /etc/environment,然后添加下行红包部分:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/book"

然后重启系统或重新登录。

  • 2.2 永久设置之方法2,只对当前用户有效:

修改~/.bashrc,在行尾添加或修改:

export PATH=$PATH:/home/book

然后重启系统或重新登录。

  • 2.3 临时设置:

在终端执行以下命令,这只对当前终端有效:

export PATH=$PATH:/home/book

3. Hello程序示例

003节_linux命令提示符和linux命令格式

这节课我们正式学习Linux命令,只有掌握了Linux基础命令,我们才能成功迈入Linux的世界。
前面演示过一些Linux的命令,这些Linux命令非常基础,每个同学都必须掌握。我们重新来讲解,并且补充一些Linux相关的基础知识。

Linux的命令提示符

使用快捷键:Ctrl + Alt + T打开终端,打开终端之后,可以看到它已经显示了一串字符,这一串就是命令提示符。 命令提示符表明了当前终端的状态,这一串的含义如图:

Chapter3 lesson3 001.png

首先book表示当前登陆的用户名,因为Linux是一个多用户的操作系统,所以说指明一下当前是哪一个用户名登陆的。
接下来是一个@,它是一个连接符,连接前后。
接着的www.100ask.org是一个主机名,如果大家没有使用我们百问网提供的Ubuntu环境的话,这主机名可能不同,但没有关系。
再接着是一个:它也是一个连接符,连接前后。 再接着是一个~,它是一个目录,表明了book这用户的家目录/home/book,在后面我们会说明。
再接着是一个$,因为book是一个普通用户,普通用户显示$,如果book是一个root(超级)用户,就会显示#。这个root用户在后面会说明。


因此我们需要记住两点,命令提示符,显示了:

  • 1.当前登陆的用户名
  • 2.用户当前所在的路径

Linux命令的格式

命令  [选项]  [参数]


在一些参考书里,是以英文写的,它们是一个意思。

Chapter3 lesson3 002.png


举例: 如果我们只需要查看当前路径的文件内容:ls
如果我们想查看当前路径下文件的创建时间和大小等等这些详细内容:ls -l
如果我们想查看非当前路径下的内容,比如/home这个路径下的内容:ls -l /home

Chapter3 lesson3 003.png

可以发现:

  • 1.命令这一部分肯定是存在的
  • 2.选项和参数不一定存在,可有可无;选项和参数取决于里使用该命令实现的具体目的;
  • 3.选项是以“-”来指明的;
  • 4.命令、选项、参数之间以空格隔开(一个或多个空格都视为是一个空格);
  • 5.完成命令输入后,按下“enter键”,即可执行命令;

ls有个-l选项,可能有的同学会问,那么ls到底有那些选项了?可以通过man ls来查看。 ls命令的选项有很多,入门阶段先掌握ls命令的-l、-a、-h等常用选项。 在后面的视频中,也是先介绍Linux基础命令(pwd、cd、ls等)的常用选项。 入门阶段,掌握一些常用的选项就可以了,不要贪多。

004节_linux常用命令引入

前面演示过这些命令,这节课开始重新来讲解,在讲解的过程中,我将告诉大家我自己的记忆方法,我相信这些记忆方法,可以帮助大家快速的掌握这些命令。言归正传,这里有几个单词:

序号 英语单词 含义
1 directory 目录
2 change 改变
3 list 列出
4 print 打印
5 remove 删除
6 copy 复制
7 move 移动
8 clear 清除

非常简单,我相信每个同学都能掌握。好了,等下的记忆方法,就是这些单词的组合。

005节_pwd命令__独家记忆方法

最简单的是pwd这个命令,我参考了国内很多讲解Linux命令的视频,其实很多老师讲解这个命令的时候,都讲解得不是很完善,他们只是告诉你怎么用,但是他没告诉你怎么来记,它的来源是什么。

我这里要讲解一下它的来源,它是print working directory,这三个单词得首写字母的组合。这三个单词的中文意思就是“打印当前工作路径”。我相信你只要掌握这三个单词的含义,你就能清楚的记住pwd这个命令,这样的话,你就知根知底了。

在前面讲过,Linux命令格式是由命令、选项、参数。这三个部分来构成的。在日常工作和学习中,只需要掌握命令部分为pwd就可以了,至于其它的选项、参数就可以不用掌握了。

演示效果见视频。

 pwd  //打印当前所在的路径

006节_cd命令讲解1__独家记忆方法

接着是cd命令,这cd命令的来源是change directory这两单词的首写字母组合。这两单词的意思就是“切换路径”。一般情况下,cd命令都不需要加参数,只需要加上,需要切换的目标目录就行了。

演示效果见视频。

 cd   //切换路径

演示过程中,每次都需要输入很多,是不是有时可以简化输入呢?答案是可以的。一般简化输入有这三种情况:

cd  ~  //切换到家目录
cd  .. //切换到上一级目录
cd  -  //切换到上一次所在目录

007节_linux基础知识__家目录_当前路径

  • 第一个概念是家目录,比如book用户的家目录是/home/book。

这是前面讲解过的Ubuntu结构,当你在Ubuntu下面新建一个book用户后,它会在/home目录下新建一个book目录。

/home/book这个目录来存放book用户他自己的一些文件。

同理,你在Ubuntu下面新建guest这个用户在话,他也会在/home下面guest这个目录。/home/guest来存放guest用户,他自己的一些文件。

Chapter3 lesson7 001.png

Linux中用~符号来表示用户的家目录。因此在Linux中输入cd ~即可进入家目录。

演示效果见视频。


下面都是一些Linux的基础概念,我们先补充一下。

008节_linux基础知识__上一个路径_上一次路径

  • 第二个概念是当前路径和上一级路径
cd        //切换路径
cd ~      //切换到当前用户的家目录
cd .      //切换到当前路径,很少使用
cd ..     //切换到上一级路径
cd ../..  //切换到上上级路径(其中:在linux中路径分隔符为斜杠/)
cd -      //切换到上一次的路径

Linux中用.符号来表示当前目录,用..符号来表示上一级目录。

009节_linux基础知识__linux目录结构介绍

Linux目录结构 参考前面

    /                ------------------根目录/
    |------bin       ------------------/bin
    |------home      ------------------/home
        |------book  ------------------/home/book
        |------Guest ------------------/home/Guest
    |------usr       ------------------/usr
        |------lib   ------------------/usr/lib
        |------bin   ------------------/usr/bin

010节_linux基础知识__绝对路径和相对路径

  • 第三个概念是绝对路径和相对路径

绝对路径:从根目录一级级找下去,需要写完整路径名

相对路径:参照当前所在目录进行查找

举例:

1) 当前路径为/bin,然后./pwd就是执行了/bin/pwd

2) 当前路径为/home/book/100ask,然后cd ../Videos/就到达/home/book/Videos,cd ../..就到达/home

绝对路径是从根目录开始; 相对路径一般以...来构成;

演示效果见视频。

011节_cd命令讲解2_注意事项

注意事项

  • 1.切换的路径必须保证存在,可以使用</ls命令来查看某一个路径下的所有内容。
  • 2.一定要记得多使用tab键,让终端为你自动补全。

你切换的路径必须保证存在,如果路径都不存在,肯定切换不了。这相当于什么呢。 你们班上有30个学生,学号是1-30号,老师叫了31号,肯定没人应答嘛。

因此,建议切换路径前,使用</ls命令来先查看下有没有这个路径,</ls命令,后面会讲。

tab键可以减少我们的输入,提高我们的效率,我见过很多初学者,每次输入的时候都输入完整的文件名或者路径名,效率很低下。所以,记得多使用tab键。

演示效果见视频。

012节_ls命令__独家记忆方法

接下来,我们讲解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的详细的信息含义:

Chapter3 lesson12 001.png

演示效果见视频。

013节_目录操作mkdir和rmdir_独家记忆方法

下面我们讲解mkdir这个命令。mkdir来源于make directory

目录的操作

  • mkdir:创建目录

举例:

1)mkdir 目录名

mkdir dir0    //创建了dir0这个目录

2)mkdir -p 父目录/子目录

mkdir -p  dir1/dir2 //连续创建多级目录(父目录和子目录),如果父目录不存在,则需要加入-p参数。-p(parents的缩写)
  • rmdir :删除目录

举例:

1) rmdir 目录名

rmdir dir0  //删除dir0这个没有内容的空目录

注意:rmdir不能删除非空目录(非空目录:该目录下面有子目录或者文件)

2)rm -r 目录名

rm -r dir0  //删除dir0这个目录

注意:可以删除非空目录

演示效果见视频。

014节_文件操作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 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(强制)的缩写),强制删除

举例:

rm File1   //删除当前目录下的文件File1
rm -i file2  //删除文件file2,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除
rm -r dira  //删除目录dira
rm -ir dirb  //删除目录dirb,删除前要求你确认是否同意删除,其中y表明同意删除,n表示取消删除

注意:

1)删除文件(目录)前,确定该文件(目录)是否可以被删除。

2)rm的常用参数有:-i,-r,-f等,在后面讲解了linux权限之后,我们会加深rm这个命令的讲解。

015节_文件查看和编辑cat_gedit

文件的查看和编辑:

1) cat用来查看文件内容

常用命令格式:

cat  文件名

举例:

 cat file1     file1的内容打印到标准输出中(默认标准标准输出指向终端)
 cat file1 file2  file1和file2的内容串联并依次全部打印到标准输出中
 cat -n file1    显示内容并在内容前显示行号。

类似的查看命令:more、less、head、tail等后面讲解


2) gedit 图形应用程序的编辑器

这个前面讲过了,就不再重复了


3) vi 编辑器

vi编辑器非常重要,在后面的视频,以专题的形式讲解。

016节_清除屏幕_clear和reset

清除屏幕命令:

clear:刷新屏幕,保留历史命令操作记录

说明:此命令本质上只是让终端向后翻一页,当向上滚动鼠标时,还是可以看到之前命令的操作记录 也可使用快捷键“Ctrl”+“L”。

reset:重新初始化屏幕,清除历史命令操作记录

017节_帮助信息man_info_help

帮助信息:

学习Linux最麻烦的是什么?

不停的上网或者翻阅书籍查找linux命令、相关函数的用法。

其实,没那么麻烦,linux发行版(如ubuntu)自带帮助命令。

Linux系统中提供了三种帮助方式。

maninfo是独立的命令, --help是个命令的参数, 它们都是Linux中获取帮助信息最权威,最快捷的途径。


1) man使用的最多

举例:

 man man  //查看man手册的说明
 man ls   //当没有指定使用那一页,默认使用第1页
 man 1 ls  //与 man ls 一样
 man 1 gcc //gcc是一个应用程序,在linux中一般使用gcc编译器来编译c/c++语言的程序 
 man 2 open //查看系统调用open的man手册说明。open/write/read/close等等都是系统调用

注意:  man手册的9册内容的侧重点,最好记一下。

section 名称 说明
1 可执行程序或shell命令 用户可操作的命令
2 系统调用 内核提供的函数(查头文件)
3 库调用 常用的函数库
4 特殊文件 在/dev下的设备文件
5 文件格式和约定 对一些文件进行解释,如/etc/passpd
6 游戏程序 游戏程序
7 杂项 包括宏包和约定等
8 系统管理员使用的管理命令 通常只有系统管理员root可以使用
9 内核相关 Linux内核相关文件

2) info

举例:

info ls  //查看ls的帮助信息

3) --help

举例:

ls --help //查看ls的帮助信息