review-exp2-常用Linux命令操作

本文章主要供班级复习使用,由于时间紧凑,整理的有些混乱,敬请谅解!部分内容摘自http://c.biancheng.net/linux_tutorial/

命令提示符

登录系统后,第一眼看到的内容是:

[root@localhost ~]#

这就是 Linux 系统的命令提示符。那么,这个提示符的含义是什么呢?

  • []:这是提示符的分隔符号,没有特殊含义。
  • root:显示的是当前的登录用户,现在使用的是 root 用户登录。
  • @:分隔符号,没有特殊含义。
  • localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
  • ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
  • #:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。


家目录(又称主目录)是什么? Linux 系统是纯字符界面,用户登录后,要有一个初始登录的位置,这个初始登录位置就称为用户的家:

  • 超级用户的家目录:/root。
  • 普通用户的家目录:/home/用户名。

用户在自己的家目录中拥有完整权限,所以我们也建议操作实验可以放在家目录中进行。我们切换一下用户所在目录,看看有什么效果。

[root@localhost ~]# cd /usr/local
[root@localhost local]#

仔细看,如果切换用户所在目录,那么命令提示符中的会变成用户当前所在目录的最后一个目录(不显示完整的所在目录 /usr/ local,只显示最后一个目录 local)。

命令的基本格式

接下来看看 Linux 命令的基本格式:

[root@localhost ~]# 命令 [选项] [参数]

命令格式中的 [] 代表可选项,也就是有些命令可以不写选项或参数,也能执行。那么,我们就用 Linux 中最常见的 ls 命令来解释一下命令的格式。如果按照命令的分类,那么 ls 命令应该属于目录操作命令。

[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog

1) 选项的作用

ls 命令之后不加选项和参数也能执行,不过只能执行最基本的功能,即显示当前目录下的文件名。那么加入一个选项,会出现什么结果?

[root@localhost ~]# Is -l
总用量44
-rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg
-rw-r--r--.1 root root 24772 1 月 14 18:17 install.log
-rw-r--r--.1 root root 7690 1 月 14 18:17 install.log.syslog

如果加一个"-l"选项,则可以看到显示的内容明显增多了。"-l"是长格式(long list)的意思,也就是显示文件的详细信息。至于 "-l" 选项的具体含义,我们稍后再详细讲解。可以看到选项的作用是调整命令功能。如果没有选项,那么命令只能执行最基本的功能;而一旦有选项,则可以显示更加丰富的数据。

Linux 的选项又分为短格式选项(-l)和长格式选项(--all)。短格式选项是英文的简写,用一个减号调用,例如:

[root@localhost ~]# ls -l

而长格式选项是英文完整单词,一般用两个减号调用,例如:

[root@localhost ~]# ls --all

一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项 -l 就没有对应的长格式选项。所以具体的命令选项可以通过后面我们要学习的帮助命令来进行査询。

2) 参数的作用

参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。例如:

[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg

但是为什么一开始 ls 命令可以省略参数?那是因为有默认参数。命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数。例如:

[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog

这个 ls 命令后面没有指定参数,默认参数是当前所在位置,所以会显示当前目录下的文件名。

练习题目

1、刚刚登陆进入Linux之后,输出当前工作目录到标准输出,要求输出为绝对路径。

pwdPrint Working Directory的缩写,其功能是显示当前所在工作目录的全路径。主要用在当不确定当前所在位置时,通过pwd来查看当前目录的绝对路径。所以本题的基础命令应该是pwd,标准输出和标准错误都会默认显示在终端上,直接利用pwd也没错,但是在Linux为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR,所以更准确的命令应为pwd >&1。

补充:

标准输入输出

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。

STDIN是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端;STDERR是标准错误,默认将输出结果输出至终端。由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。

绝对路径和相对路径

Linux 系统中,文件是存放在目录中的,而目录又可以存放在其他的目录中,因此,用户(或程序)可以借助文件名和目录名,从文件树中的任何地方开始,搜寻并定位所需的目录或文件。

说明目录或文件名位置的方法有两种,分别使用绝对路径和相对路径。绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相对路径则指的是相对于当前路径的写法。

换句话说,绝对路径必须以一个正斜线(/),也就是根目录开始,到查找对象(目录或文件)所必须经过的每个目录的名字,它是文件位置的完整路标,因此,在任何情况下都可以使用绝对路径找到所需的文件。例如:

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# cd /etc/rc.d/init.d

这些切换目录的方法使用的就是绝对路径。

而相对路径,就不是以正斜线开始,它是从当前所在目录开始,到查找对象(目录或文件)所必须经过的每一个目录的名字。例如:

[root@localhost /]# cd etc
#当前所在路径是/目录,而/目录下有etc目录,所以可以切换
[root@localhost etc]# cd etc
-bash:cd:etc/:没有那个文件或目录
#而同样的命令,由于当前所在目录改变了,所以就算是同一个命令也会报错,除非在/etc/目录中还有一个etc目录

2、(touch)在自己的主目录下生成一个以自己名字的拼音命名的空文件。

补充:

touch 命令不光可以用来创建文件(当指定操作文件不存在时,该命令会在当前位置建立一个空文件),此命令更重要的功能是修改文件的时间参数(但当文件存在时,会修改此文件的时间参数)。

Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:

  • 访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。
  • 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
  • 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。


touch 命令的基本格式如下:

[root@localhost ~]# touch [选项] 文件名

选项:

  • -a:只修改文件的访问时间;
  • -c:仅修改文件的时间参数(3 个时间参数都改变),如果文件不存在,则不建立新文件。
  • -d:后面可以跟欲修订的日期,而不用当前的日期,即把文件的 atime 和 mtime 时间改为指定的时间。
  • -m:只修改文件的数据修改时间。
  • -t:命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为 YYMMDDhhmm


可以看到,touch 命令可以只修改文件的访问时间,也可以只修改文件的数据修改时间,但是不能只修改文件的状态修改时间。因为,不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之改变(更新为操作当前文件的真正时间)。

3、(ls)列出当前用户的主目录里的文件,分别用不带任何选项的ls命令、带有-a选项的ls命令、带有-l选项的ls命令、带有-a –l选项的命令,并阐述-a和-l两个选项的各自的作用。

 

从截图结果对比可以看出

-a – 全部(all)。列举目录中的全部文件,包括隐藏文件(.filename)。位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录。

-l – 长(long)。列举目录内容的细节,包括权限(模式)、所有者、组群、大小、创建日期、文件是否是到系统其它地方的链接,以及链接的指向。 

4、(ls)给ls加--color参数,并说明—color的作用

ls -color是指 ls -c -o -l -o -r组合的意思

-c with -lt: 排序并显示,ctime(最后一次的时间

修改文件状态信息)

with -l: 显示ctime并按名称排序,否则:按CTIME排序

-l :使用长格式显示

-o :类似于-l,但不列举组信息

-r, --reverse:排序时颠倒顺序

ls –color=[when]是颜色选项,控制是否使用颜色来区分文件

类型。when可以是'never'、'always'或'auto'。

补充:

ls 命令,list 的缩写,是最常见的目录操作命令,其主要功能是显示当前目录下的内容。此命令的基本格式为:

[root@localhost ~]# ls [选项] 目录名称

表 1 列出了 ls 命令常用的选项以及各自的功能。
 

表 1 ls 命令常用选项及功能
选项功能
-a显示全部的文件,包括隐藏文件(开头为 . 的文件)也一起罗列出来,这是最常用的选项之一。
-A显示全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录。
-d仅列出目录本身,而不是列出目录内的文件数据。
-fls 默认会以文件名排序,使用 -f 选项会直接列出结果,而不进行排序。
-F在文件或目录名后加上文件类型的指示符号,例如,* 代表可运行文件,/ 代表目录,= 代表 socket 文件,| 代表 FIFO 文件。
-h以人们易读的方式显示文件或目录大小,如 1KB、234MB、2GB 等。
-i显示 inode 节点信息。
-l使用长格式列出文件和目录信息。
-n以 UID 和 GID 分别代替文件用户名和群组名显示出来。
-r将排序结果反向输出,比如,若原本文件名由小到大,反向则为由大到小。
-R连同子目录内容一起列出来,等於将该目录下的所有文件都显示出来。
-S以文件容量大小排序,而不是以文件名排序。
-t以时间排序,而不是以文件名排序。
--color=never
--color=always
--color=auto
never 表示不依据文件特性给予颜色显示。
always 表示显示颜色,ls 默认采用这种方式。
auto 表示让系统自行依据配置来判断是否给予颜色。
--full-time以完整时间模式 (包含年、月、日、时、分)输出
--time={atime,ctime}输出 access 时间或改变权限属性时间(ctime),而不是内容变更时间。


当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色(蓝色显示目录,白色显示一般文件)。除此之外,如果想使用 ls 命令显示更多内容,就需要使用表 1 相应的选项。

ls -l

5、(mkdir, cd)在当前用户的主目录下创建叫做projects的目录,并进入projects目录,在projects目录里创建git目录,并继续在projects目录内创建backup目录,目录层次的示意图如下:

 

~

|_projects

|_git

|_backup

使用tree列出目录树发现tree命令找不到,说明tree命令不是内置命令,需要安装,普通用户默认权限非常小,无法执行下载命令,这时想到sudo命令,暂时使得普通用户获得root权限,但是普通用户想要使用sudo命令,需要管理员赋予sudo执行权限。

管理员赋予sudo执行权限,编辑/etc/sudoers文件

下载tree

目录树

6、(pwd, touch)确认当前是否在第5步建立的projects目录内;如果不是,进入该目录。然后体会这个命令:

touch {ne161,ne162,ne163,ne164}_{centos,redhat,c_programming}

的奇妙之处,并描述你自己的理解。

由下图结果可以看出touch {ne161,ne162,ne163,ne164}_{centos,redhat,c_programming}实现了文件的批量创建。可以把{}里的元素想像成集合,然后进行笛卡尔积并用_拼接成文件名,由此批量创建了4x3=12个文件。

 

 

7、(mkdir)在第5步所建立的git目录内建立四个目录ne161, ne162, ne163, ne164

补充:

mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 

mkdir 命令的基本格式为:

[root@localhost ~]# mkdir [-mp] 参数

 

  • -m 选项用于手动配置所创建目录的权限,而不再使用默认权限。
  • -p 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录(递归创建)
  • --version 显示版本信息。

参数:目录名:指定要创建的目录列表,多个目录之间用空格隔开。

8、(mv)将projects目录下以 ne161_ 开头的文件移动到第7步所建立的ne161目录内

 

9、(mv)将projects目录下以 ne162_ 开头的文件移动到第7步所建立的ne162目录内

10、(mv)将projects目录下以 ne163_ 开头的文件移动到第7步所建立的ne163目录内

 

11、(mv)将projects目录下以 ne164_ 开头的文件移动到第7步所建立的ne164目录内

补充:

mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。该命令的基本格式如下:

[root@localhost ~]# mv 【选项】 源文件 目标文件

选项:

  • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
  • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
  • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
  • -v:显示文件或目录的移动过程;
  • -u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级;

需要注意的是,同 rm 命令类似,mv 命令也是一个具有破坏性的命令,如果使用不当,很可能给系统带来灾难性的后果。

通配符

他是shell的内置功能
通配符,用过DOS的应该很了解,也很常用。
通配符,指包含这些字符的字符串“?”,“*”,“[]”,{}

通配符含义===>匹配文件名

 

符号作用
*匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *
?匹配任何一个字符(不在括号内时)?代表任意1个字符 ls file 0
[abcd]匹配abcd中任何一个字符
[a-z]表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0
{..}表示生成序列. 以逗号分隔,且不能有空格
补充 
[!abcd]或[^abcd]表示非,表示不匹配括号里面的任何一个字符

12、(tar)通过tar命令的-c –z –v –f 选项将git目录归档压缩成git.tar.gz并备份到backup目录内,并要解释-c和-z选项的作用(通过查看man手册页或者搜索互联网)。

13、(rm)彻底删除git目录

 

14、(tar)通过tar命令的-zxvf解压缩backup目录内的git.tar.gz到projects目录下从而实现备份恢复

 

15、(tar)通过tar命令的-cjvf将git目录压缩成git.tar.bz2并备份到backup目录内,并说明tar命令的-j和-z选项的不同。

在压缩成bzip2格式时出现上述错误,原因是没有安装bzip2,所以利用yum在线安装bzip2

安装bzip2后用tar -jxvf对在安装bzip2前用tar –jcvf压缩的文件进行解压,发现并没有解压成功,说明系统之前确实没有安装bzip2包,之前压缩的产生的文件并不是真正的bzip2包,而是普通的压缩文件。

删除在安装bzip2之前用tar –jcvf压缩的压缩包再次用tar –jcvf压缩git文件,这时没有出错,压缩成功。

-j选项:通过bzip2方式压缩或解压,最后以.tar.bz2 为后缀。压缩后大小小于.tar.gz

-z选项:通过gzip方式压缩或解压,最后以.tar.gz 为后缀。

在压缩比率上: tar.bz2>tgz>tar
占用空间与压缩比率成反比: tar.bz2<tgz<tar
耗费时间(打包,解压)
打包:tar.bz2>tgz>tar
解压: tar.bz2>tar>tgz

 

16、(rm)彻底删除git目录

 

17、(tar)通过tar命令的-jxvf解压缩backup目录内的git.tar.bz2到projects目录下从而实现备份恢复

补充:

18、(stat)显示backup目录下两个压缩文件(后缀名分别为.gz和.bz2)的内容访问(Access)时间、内容修改(Modify)时间、属性变更(change)时间

 

19、(cd,tree)显示以当前用户的主目录下的projects目录为当前目录的目录树

20、(date)显示当前的系统时间,并用中文进行解读。

 

 

2019年 03月 14日 星期四 23:41:07 CST:CST可视为美国、澳大利亚、古巴或中国的标准时间。与我国的标准时间相差8小时。

21、(cal)列出2019年全年的日历

补充:

cal命令格式:cal [选项][参数]

选项

-l:显示单月输出;
-3:显示临近三个月的日历;
-s:将星期日作为月的第一天;
-m:将星期一作为月的第一天;
-j:显示“julian”日期;
-y:显示当前年的日历。

参数:

月:指定月份;
年:指定年份。

22、(less)查看在当前用户主目录下的bash历史命令文件(.bash_history)的内容;如果没有这个文件,则查看当前用户主目录下的zsh历史命令文件(.zsh_history)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值