该篇为第一部分,主要介绍的Linux指令有:

mkdir、cd、ls、rm、touch、vi/vim、echo、cat、cp、mv、pwd、rm、rmdir

1、创建一个目录/data

提示:Windows下的目录路径样式为"d:\data\test",而Linux下的路径就是"/data/test"

命令答案:

mkdir_/data 或者 cd_/;mkdir_data  <== 使用分号可以在一行内分隔两个命令,如果不加分号分隔,执行起来会报错

实践过程:

法 1:

[root@biyoulin ~]# mkdir /data
[root@biyoulin ~]# ls -ld /data <==查看data目录是否创建成功,ls 是list列表的意思,-ld 是ls的常用参数,是长格式查看目录属性
drwxr-xr-x. 2 root root 4096 Aug 14 17:07 /data

法 2:

[root@biyoulin ~]# rm -r /data <== 删除法1建立的目录ls
rm: remove directory `/data'? y <== 输入y表示确认删除,y是yes的缩写
[root@biyoulin ~]# cd /  <==进入到根目录/下,“/”在Linux里是根的意思,即所有目录的顶点
[root@biyoulin /]# mkdir data <==创建data目录,不带斜线/,因为已经进入了“/”。
[root@biyoulin /]# ls -ld data <==查看data目录本身
drwxr-xr-x. 2 root root 4096 Aug 14 17:07 data

总结:mkdir == make directory  创建目录cd == change directoty   更改目录ls == list   列表rm ==remove  移除

cd 后跟相对路径或者绝对路径,表示进入目录。如果不跟任何东西,会进入当前用户的家目录(home)。相对路径:不从/开始,二是从当前目录开始。例如:data/,mnt/test绝对路径:从/开始的目录。例如:/data,mnt/test

mkdir [-mp] [目录名称] <== 建立目录    -m: 这个参数用来指定要创建目录的权限,但是很少用,都会用chmod来处理。    如:mkdir -m 777 /tmp/test <== 即创建一个权限为777的目录    -p: 这个参数用来递归创建目录,创建给定路径中缺少的中间目录,这是mkdir的常用参数。

命令实例:

[root@biyoulin ~]# mkdir -p dir1/dir2/dir3/dir4/dir5 <== 使用“-p”选项,在创建目录的同时也创建中间缺少的目录

[root@biyoulin ~]# mkdir mydir_{1,2,3,4,5,6,7,8,9}  <== 与shell通配符搭配使用,批量创建“mydir_1”到“mydir_9”共9个目录;

2、在/data下面建立一个文件test.txt

命令答案:

touch_/data/test.txt 或者 cd_/data;touch_testxtxt

拓展:创建文件也可以用echo等,只不过touch是专业的。例如 "echo > /data/test.txt" 或者 "> /data/test.txt"也可以创建文件。当然还有很多可以间接创建文件的命令,如vi,cat等。

实践过程:

法 1:

[root@biyoulin ~]# touch /data/test.txt <== 在/data目录下创建test.txt
[root@biyoulin ~]# ls -l /data/test.txt  <== 查看创建的test.txt,注意没有上文提到的-d参数,-d参数意义为仅显示目录名,而不显示目录下的内容列表。显示符号连接文件本身,而不显示其所指向的目录列表
-rw-r--r--. 1 root root 0 Aug 15 00:17 /data/test.txt

法 2:

[root@biyoulin ~]# cd /data
[root@biyoulin data]# touch test.txt
[root@biyoulin data]# ls -l /data/test.txt
-rw-r--r--. 1 root root 0 Aug 15 00:18 /data/test.txt <== 如果同名文件存在,不会提示页不会覆盖,会更新文件的时间戳

总结:

touch == 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。


路径分隔符区别:

Windows的目录分隔 D:\PIC\test

Linux 的目录分隔  /data/test

3、为test.txt增加内容为“I am studing Linux.”

法1:常规编辑方法

[root@biyoulin data]# vi test.txt <== 进入vi编辑器(默认命令模式),点击a或i(insert) 进入编辑模式,敲入内容“I am studing Linux.”,然后按键盘上的esc键退出编辑模式(进入到命令模式),最后敲“:wq”保存并退出。wq解释为write quit,就是写入后退出编辑器的意思。vi就是类似记事本一样的Linux下的常用编辑器,如果想功能更丰富可以用vim替代vi。

法2:单行文本插入常用命令,内容都是放到文件内的尾部

[root@biyoulin data]# echo 'I am studing linux.'>>/data/test.txt <== 单行文本追加到文件结尾,特殊的编辑文件方法,通过echo命令使用单引号把引号的内容通过>>追加到/data/test.txt,这个在企业很常用。
[root@biyoulin data]# cat /data/test.txt <== 查看追加的结果
I am studing linux
I am studing linux.

说明:echo 是一个打印输出的常用命令,配合“>或>>”可以为文件覆盖及追加内容,这个命令需要重点掌握。“>”意思为重定向,会清除文件里所有以前的数据,“>>”为内容追加,只在文件尾部追加需要的内容,还有一个较复杂不常用的类似命令printf。

法3:写脚本常用,追加多行,内容都是放到文件的尾部

[root@biyoulin data]# cat >>/data/test.txt <<EOF
> I am studing Linux.
> EOF    <== 结尾的EOF要顶格写,EOF也可以用别的字符替代,只要是一对就好。
[root@biyoulin data]# cat /data/test.txt <== 查看追加的结果
I am studing linux
I am studing linux.
I am studing Linux.

提示:

法2和法3为命令行或脚本中常使用的方法,都很重要,必须要掌握;法2用于单行文本,法3用于多行文本(文本中如果有特殊字符,如$等需要用\转义才可);

法4:

[root@biyoulin ~]# cat >>/data/test.txt  <== 编辑新文件
echo 'I am biyoulin'

^C            <== 按Ctrl+c组合键结束编辑。此法作为特殊编辑方法,作为扩展知识面提及
[root@biyoulin ~]# cat /data/test.txt <== 查看追加的结果
I am studing linux
I am studing linux.
I am studing Linux.
echo 'I am biyoulin'        <== 追加的内容

总结:vi,vim,echo,cat  这几个是企业常见的编辑文件的命令。echo 是一个打印输出的常用命令,配合“>或>>”可以为文件覆盖及追加内容。命令“echo $PATH”为打印出PATH的值

重定向和标准输入、输出:

重定向:意思是将“数据传到其它地方”,将某个命令执行后本应该显示在屏幕上的数据,传输到其它地方。执行命令时,这个命令可能会通过读入数据,经过处理之后,在将数据输出到屏幕。

>或1>    输出重定向 <== 把前面输出的东西输入到后边的文件中,会删除文件原有内容

>>或1>>  追加重定向 <== 把前面输出的东西追加到后边的文件中,不会删除文件原有内容

<或<0    输入重定向    <== 用于改变命令的输入,后面指定输入的内容,前面跟文件名

<<或<<0  追加输入重定向 <== 后跟字符串,用来表示“输入结束”,也可用Ctrl+c来结束输入

2>      错误重定向    <== 把错误信息输入到后边的文件中,会删除文件原有内容

2>>     追加错误重定向 <== 把错误信息追加到后边的文件中,不会删除文件原有内容

标准输入(stdin): 代码为0,使用<或<<,数据流向从右向左;

标准正常输出(stdout):代码为1,使用>或>>,数据流向从左向右;

标准错误输出(stderr): 代码为2,使用2> 或2>>.

范例:

[root@biyoulin ~]# date 1>/data/test.txt <== 标准输出范例,将时间和日期信息输入到/data/test.txt中
[root@biyoulin ~]# cat /data/test.txt  <== 查看文件信息
Wed Aug 15 21:42:47 CST 2018

[root@biyoulin ~]# echo 111 >oldboy.txt  <==标准输出范例
[root@biyoulin ~]# cat oldboy.txt  
111

[root@biyoulin ~]# echo 111 2>oldboy.txt
111
[root@biyoulin ~]# cat oldboy.txt

[root@biyoulin ~]# echol 111 2>oldboy.txt <== 标准错误输出案例
[root@biyoulin ~]# cat oldboy.txt <== 查看文件内容,错误日志信息已经存放在文件里
-bash: echol: command not found

[root@biyoulin ~]# echo 111 1>oldboy.txt 2>oldgirl.txt <== 如果输出正确,将内容重定向至oldboy.ext中;如果输出不正确,将错误提示信息重定向至oldgirl.txt中
[root@biyoulin ~]# cat oldboy.txt
111
[root@biyoulin ~]# ech 111 1>oldboy.txt 2>oldgirl.txt
[root@biyoulin ~]# cat oldgirl.txt
-bash: ech: command not found

[root@biyoulin ~]# echo 'Hello,My name is biyoulin' 2>log.txt 1>log.txt  <== 将正确和错误的信息重定向至同一个文件
[root@biyoulin ~]# cat log.txt
Hello,My name is biyoulin
[root@biyoulin ~]# echol 'Hello,My name is biyoulin' 2>log.txt 1>log.txt
[root@biyoulin ~]# cat log.txt
-bash: echol: command not found

[root@biyoulin ~]# echol 'Hello,My name is biyoulin' &>log.txt <== 通过"&>"将正确和错误的信息重定向至同一个文件
[root@biyoulin ~]# cat log.txt
-bash: echol: command not found
[root@biyoulin ~]# echo 'Hello,My name is biyoulin' &>log.txt
[root@biyoulin ~]# cat log.txt
Hello,My name is biyoulin

4、把history.txt文件拷贝到/tmp下

答案:

[root@biyoulin ~]# cd data
[root@biyoulin data]# ls
a b byl c command.txt d e history.txt
[root@biyoulin data]# cp history.txt /tmp/

总结:

cp == copy  用来将一个或者多个源文件或者目录复制到指定的目的文件或目录;他可以将单个源文件复制成一个指定文件名的具体文件或一个已经存在的目录;cp指令还支持同时复制多个文件,当一次复制多个文件是,目标文件参数必须是一个已经存在的目录,都则将出现错误。


cp [-adfilprsu] [源文件] [目标文件]

  -a: 保持源文件的原有结构和属性,与选项‘-dpr’的功能相同;

  -d: 如果复制的源文件是符号链接,金复制符号链接本身,而且保留符号链接所指向的目录文件或者目录

  -f: 强制覆盖已经存在的目标文件,而不提示用户进行确认。为防止覆盖重要文件,通常不使用此选项

  -i: 在覆盖已存在的目标文件前提示用户进行确认。使用此选项可以防止覆盖掉重要文件

  -l: 为源文件创建硬链接(与‘ln’指令的功能相同)。此选项可以节省硬盘空间,但是要求源文件和目的文件必须在同一分区(或文件系统)上;

  -p: 复制文件时保持源文件的所有者、权限信息和时间属性;

  -r-R:对目录进行复制操作,此选项一递归的操作方式,将指定目录及其子目录中的所有文件复制到指定的目标目录

  -s: 不进行真正的复制操作,仅为源文件创建爱你符号链接(与“ln -s”指令的功能相同);

  -u: 当目标文件不存在或者源文件毕目标文件新时才进行复制操作,否则,不进行复制。

  [源文件]:指定文件列表。默认情况下,cp指令不能复制目录,如果要复制目录,则必须使用-r选项;

  [目标文件]:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

5、把/data目录移动到/root下

命令答案:mv_/data_/root/    <== 移动目录是,原文件目录结尾不要多余斜线,虽然此处是可以的,但是我们要养成好的规范和习惯。

总结:
mv == move   <== 该指令用于移动文件或为文件改名

mv [-ifub] [源文件/源目录] [目标文件/目标目录]

  -i: 在覆盖已存在的目标文件前不提示用户确认,防止覆盖重要的文件;

  -f: 在覆盖已存在的目标文件前不提示用户确认。此选项具有一定的风险,可能导致覆盖重要的文件;

  -u: 当源文件毕目标文件新或者目标文件不存在时,才执行移动操作;

  -b: 当目标文件存在时,覆盖前,围棋创建一个备份;

说明:

  • 如果“目标文件”是文件则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标目录”下;
  • 在同一文件系统(即同一硬盘分区)中,无论移动的文件有多大,速度都非常快的;但是,如果在两个不同的Linux硬盘分区间移动文件,速度将明显降低。这是因为,在同一个分区移动文件时,仅仅需要修改文件对应的指针即可;但是,在不同分区间移动文件时,必须要执行复制的操作,所以执行导致速度明显降低。
  • 为防止误操作二覆盖已经存在的文件,在使用mv指令时,最好加上“-i”选项。绝大多数的Linux发行版都为mv指令设置了命令别名“alias mv='mv -i'”,可以直接使用mv指令而无须添加“-i”选项。

命令实例:

[root@biyoulin ~]# mv oldfile newfile <== 将文件“oldfile”改名为“newfile”

[root@biyoulin data]# ls  <== 查看目录下内容
newfilea newfileb newfilec newfiled newdirectory
[root@biyoulin data]# mv newfile[a-d] newdirectory/ <== 将4个文件移动到指定目录,本例中的“newfile[a-d]”为shell的通配符,匹配了4个文件

6、进入root目录下的data目录,删除history.txt

命令答案:cd_/root/data/;rm_history.txt  <== rm指令用于删除指定的文件和目录

答案示例:[root@biyoulin ~]# cd /root/data <== 进入root目录下的data目录
[root@biyoulin data]# pwd  <== (print work directory)以绝对路径的方式显示用户当前工作目录
/root/data
[root@biyoulin data]# ls  <== 显示当前目录里的内容
a  b  byl  c  command.txt  d  e  history.txt
[root@biyoulin data]# rm history.txt  <== 使用rm指令删除指定文件
rm: remove regular file `history.txt'? y  <== 确认删除操作,输入y确认删除
[root@biyoulin data]# ls   <== 显示当前目录里的内容,已经没有了history.txt文件
a  b  byl  c  command.txt  d  e

命令总结:pwd == print work directory  <== 打印当前工作目录rm == remove  <== 删除给定的文件和目录

命令详解:

rm [-firv] [文件]

  -i: 以交互式的方式,提示用户进行确认是否删除文件。用户可以使用“n”和“y”进行回答。“n”表示不删除,"y"表示确认删除。使用“-i”选项可以防止误操作;

  -f: 强制执行删除操作,而不提示用户进行确认。此选项同一造成误操作,要慎用;

  -r-R: 用递归的反噬删除目录及目录下的所有内容;

  -v: 显示指令的详细执行过程;

  [文件]:指定被删除的文件列表,如果参数中含有目录,则必须加上“-r”或者“-R”选项

说明:

  • 大多数的Linux发行版已经设置了带“-i”选项的rm 指令的别名“alias rm='rm -i'”,用户在使用rm 指令时不必添加“-i”选项;
  • 如果要删除的文件较多,可以结合shell的通配符,以提高命令行的输入效率;
  • 为防止误操作二覆盖已经存在的文件,在使用mv指令时,最好加上“-i”选项。绝大多数的Linux发行版都为mv指令设置了命令别名“alias mv='mv -i'”,可以直接使用mv指令而无须添加“-i”选项。

命令实例:

[root@biyoulin data]# touch file_{1,2,3}
[root@biyoulin data]# ls
file_1 file_2 file_3
[root@biyoulin data]# rm -v -f file_1 file_2 file_3  <== 如果同时删除多个文件则需要确认多次,为了提高效率使用“-f”选项;“-v”选项用于显示指令的详细执行过程;
removed `file_1'
removed `file_2'
removed `file_3'    <== 显示的删除过程

[root@biyoulin data]# touch file_{1,2,3}
[root@biyoulin data]# rm -v -f file_[1-3]  <== 使用shell通配符删除多个文件
removed `file_1'
removed `file_2'
removed `file_3'

[root@biyoulin data]# tree   <== 使用tree指令显示当前目录下的所有文件及目录的层级关系
.
`-- dir1
  `-- dir2
    `-- test.txt

2 directories, 1 file    <== 统计显示总共有2个目录和一个文件
[root@biyoulin data]# rm -f -R -v dir1/  <== 使用“-R” 选项,实现递归删除目录及其目录下的所有内容;“-f” 无确认信息,强制删除目录;“-v”显示命令执行详细过程;
removed `dir1/dir2/test.txt'
removed directory: `dir1/dir2'
removed directory: `dir1'   <== 从上面的输出可以发现,rm指令首先删除“dir1”目录下的所有文件,然后在删除“dir1”目录

特别提示:

  • 初学者尽量不要用rm命令,可以使用mv替代rm,也就是把文件移动到/tmp下,然后等/tmp分区要满时一次性删除,减少犯错,这种把/tmp目录当做回收站使用对初学者是个不错的选择。
  • 对于文件的删除禁止使用“rm -fr 文件名”这种杀鸡用牛刀的做法,最多是“rm -f 文件名”。“rm -fr” 一般用来强制删除目录不提示,非常危险,大多数的高手都出过严重的错误。

7、退出到上级目录,删除data目录

答案:法1:[root@biyoulin data]# cd ../   <=="cd .."或者“cd ../”为返回上一级目录
[root@biyoulin ~]# rm -r data   <== 删除目录及目录下的文件和目录
rm: remove directory `data'? y  <== 确认删除操作,输入y确认删除

法2:
[root@biyoulin ~]# rmdir test   <== 使用rmdir删除test目录,test目录为空 

总结:
“ ..相对路径:表示上一级目录,例如:/mnt/test,mnt就是test的上一级目录;
“ .绝对路径:表示当前目录,及当前命令行的目录。rmdir == remove directory   <== 删除空目录,当要删除非空目录是,需要使用带有“-R”选项的rm指令

rmdir [-pv] [目录名]  
  -p--parents: 用递归的操作方式删除指定的目录路径中的所有父级目录。要求路径中出现的目录中没有普通文件,否则导致出错;  

  -v--version: 显示指令的详细执行过程;

  [目录名]: 要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。


命令实例:

[root@biyoulin data]# tree  <== 使用tree指令显示当前目录下的所有文件及目录的层级关系
.
└── dir1└── file.txt1 directory, 1 file
[root@biyoulin data]# rmdir dir1
rmdir: failed to remove `dir1': Directory not empty  <== 报错信息表明,rmdir指令不能用来删除非空目录[root@biyoulin data]# rm -R dir1  <== 使用带“-R”选项的rm指令删除非空目录
rm: descend into directory `dir1'? y
rm: remove regular empty file `dir1/file.txt'? y
rm: remove directory `dir1'? y
[root@biyoulin data]# ls
[root@biyoulin data]# mkdir -p -v dir1/dir2/dir3 <== 使用mkdir创建一个小型的目录树
mkdir: created directory `dir1'
mkdir: created directory `dir1/dir2'
mkdir: created directory `dir1/dir2/dir3'
[root@biyoulin data]# rmdir -p -v dir1/dir2/dir3 <== 使用“-p”选项,递归删除目录树
rmdir: removing directory, `dir1/dir2/dir3'
rmdir: removing directory, `dir1/dir2'
rmdir: removing directory, `dir1'

作者:biyoulin

出处:http://www.cnblogs.com/biyoulin/

版权声明:本文内容为依据老男孩教育的视频教程整理而来,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

转载于:https://www.cnblogs.com/biyoulin/p/9447403.html

第05课 Linux命令初探(一)相关推荐

  1. linux python命令无反应_Python学习第164课--Linux命令行特殊符号的意义及命令的语法规则...

    [每天几分钟,从零入门python编程的世界!] 这节我们介绍Linux系统命令行中的一些特定的符号具有什么含义,以及命令行的语法规则. ●Linux命令行中特定的符号的含义 比如我登录到系统中之后, ...

  2. python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...

    [每天几分钟,从零入门python编程的世界!] 我们都知道引号的作用就是为了引用,比如引用别人说的话,这句话就放在引号里面. 而Linux命令行中的single quote(单引号)和dubble ...

  3. Linux后台开发系列之「05.解析 Linux 命令机制」

    版权声明:本文为 cdeveloper 原创文章,可以随意转载,但必须在明确位置注明出处! 为何要了解 Linux 命令机制? 如果你每天都在使用 Linux 命令,那么你了解命令的基本原理吗?你学习 ...

  4. 每日一课——Linux命令——删除文件与文件夹

    Linux系统中删除文件的命令-- rm命令. Linux系统下删除文件是一个非常高频的需求,几乎每天都会遇到,所以rm命令是一个非常常用Linux命令. rm命令是英文单词 remove 的缩写,它 ...

  5. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---05

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  6. linux那个11命令是什么意思,11个有用的Linux命令

    11个有用的Linux命令,命令,代码,文件,行号,文件夹 11个有用的Linux命令 易采站长站,站长之家为您整理了11个有用的Linux命令的相关内容. Linux命令行吸引了大多数Linux爱好 ...

  7. linux命令的使用实验报告,Linux实验报告一-常用命令使用.doc

    Linux实验报告一-常用命令使用.doc 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称 常用命令使用 专业名称 计算机科学与技术班 级 计科1405 学生姓名 高宏伟学号(8位) 04 ...

  8. linux 命令窍门,不容错过的Linux命令行窍门

    高效地使用命令行是一个Linux系统管理员技能的重要组成部分.在本文中,我们提供了五个很酷甚至略显古怪的Linux命令行技巧,可以帮你更有效地管理你的Linux系统. More=Less 在Linux ...

  9. linux命令学习(转)

    查询命令的地方:man.linuxde.net/ Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作.文件存 Linux提供了大量的命令,利用它可以有 ...

  10. 生信入门必须掌握的 30 个 Linux 命令

    学习生物信息,Linux 是必须掌握的内容,其实常用的 Linux 命令也就 30 个左右,而且这些命令都是单词的简写,记忆起来并不困难.这里列出了常用的 30 个命令. 1. cd Change d ...

最新文章

  1. 知乎宣布完成4.34亿美元F轮融资,快手领投,融资额刷新此前记录
  2. 2503 常用格式验证
  3. ASP.NET %%,%=%,%#%区别
  4. List VS Set
  5. python爬虫利器p_Python爬虫利器五之Selenium的用法
  6. Android 应用开发 --- popupwindow
  7. maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
  8. java list api_Java核心API -- 6(Collection集合List、Set、ArrayList、HashSet)
  9. Ubuntu18.04无法进入图形界面桌面的问题及解决
  10. 一例JAVA多线程访问卡死的现象
  11. Oracle 10G安装指导
  12. Unity 快速实现镜子效果
  13. 算法实现 int sqrt(int x) 函数。
  14. 在ADF应用中,能够通过 oracle.adf.view.rich.security.FRAME_BUSTING 参数来使用framebusting功能。
  15. 深度学习AI美颜系列---人像审美
  16. 中规中矩的linux安装jdk 1.8
  17. 论文研读-基于决策变量分析的大规模多目标进化算法
  18. PMP考试资料考试重点,不看可惜了
  19. 软考论文写作这些雷区,千万要避开
  20. linux 日志 取证,Linux系统取证

热门文章

  1. SpringMVC深入信息提示(四)
  2. 【渝粤教育】国家开放大学2018年春季 0689-21T老年心理健康 参考试题
  3. [渝粤教育] 西南科技大学 英语(A)2-在线考试复习资料
  4. 23种设计模式(八)对象创建之抽象工厂
  5. 【BZOJ2816】【洛谷】【ZJOI2012】—网络(LCT)
  6. 预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别
  7. 列表页 编辑页 删除页
  8. solr(六): 集群
  9. c++构造函数分类说明
  10. JAVA-ZIP和GZIP压缩实现