linux基本指令

linux基本指令

先介绍两个简单的指令: 复制和粘贴

  • Linux下的复制: ctrl + insert
  • Linux下的粘贴: shift + insert

1.创建新用户并设置密码 

先查看当前操作系统有哪些用户?

指令:ls /home

 

我事先创建了一个名叫zzy的用户. 

 查看我是哪个用户?

指令:whoami

 

我当前是root用户 

创建新用户: 

指令: adduser 用户名 

 

为用户设置密码: 

指令:passwd 用户名

注意:输入密码不会有回显.

此外,创建一个用户名重复的用户会失败: 

2. 查看当前目录下的文件 

ls 指令

语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 

常用选项:

-a 列出目录下所有文件

-l 列出文件的详细信息        

使用一下: 

可以看到当前目录下没有任何文件. 

创建一个文件夹试试: 

 查看文件的详细信息:

从左到右依次代表:

  • 文件的权限

  • 文章的拥有者和所属组

  • 文件最近的修改日期

  • 文件名

 查看所有文件:

多出来了一些不加-a选项显示不出来的文件,它们前面都有一个.号

以.开头的文件是隐藏的文件,用普通的ls指令是看不见隐藏文件的

ls指令的简写操作

ls指令后面可以加很多选项,它们可以连在一起使用 :

指令: ls -l 和 ls -a一起使用为: ls -la 或ls -al或ls -l -a

将普通和隐藏文件的信息也显示了出来

指令:ls -l 简写方式 为ll,它的功能和ls -l一样.

 ll -a等价于指令: ls -al

cd [文件夹名]进入目录,新建一个.dir隐藏文件夹,可以看到 

更多的ls选项:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。

pwd指令 

pwd指令用于显示当前所在目录 

类似windows下的查看路径:

 3.进入目录和返回上级目录

cd 指令

Linux下的目录就是Windows下的文件夹,如何进入目录?

指令: cd 目录名        

功能: 改变工作目录, 将当前工作目录改变到指定的目录下 

 cd指令就类似于Windows下双击进入文件夹

当前目录和上级目录

在ls部分提过, 以.开头的文件是隐藏文件

而在目录中,符号.代表当前目录,符号 ..代表上级目录

绝对路径和相对路径

在Linux下,文件系统其实是一颗多叉树! 其中,叶子节点一定是普通文件或空目录.

这里的/我们把它叫做Linux下的根目录。对于/root/test/test.txt像这样的一个Linux下的路径,最开始的第一个/是根目录,后面的/是路径分隔符。 

另外可以发现:

从根节点到任一叶子节点的路径是唯一的.

从非根节点到任一叶子的路径是不唯一的.

所以就有了绝对路径和相对路径:

相对路径: 以当前路径为参考点定位文件(相对于我当前的目录,有自己的有效范围.)

绝对路径: 以根目录为参考点定位文件(不用随意更改,一直都是有效的)

 cd也可以使用这两种路径进入目录:

也可以通过绝对路径或者相对路径查看目录下的文件:

 

 cd常用选项:

 cd ~: 进入当前用户(whomi可查看当前用户)的家目录

我们当前是root用户登录,root用户的家目录就是/root,普通用户的家目录是在/home/用户名下。

cd -: 返回最近访问的上一次所处的路径

 touch指令

在学习touch之前,再介绍一个指令:

tree指令

这个指令叫做tree,它可以以树状结构显示Linux指定目录下的目录结构。

令:tree 目录名

如果没有安装这个指令的话, 可能会报错, 安装一下就行了:

在root用户下输入yum install -y tree这条命令就会自动去安装tree命令, 然后就可以用了.

小技巧

如果我们执行某些命令时, 遇到疯狂刷屏的情况, 使用ctrl+c可以终止命令的执行。比如tree /:

touch指令 

功能:

1. touch命令参数可更改文档或目录的日期时间, 包括存取时间和更改时间

2. 或者新建一个不存在的文件.

指令: touch [选项]... 文件...

touch 文件名就可以在当前路径下创建一个普通文件。

当然也可以指定路径去创建  

touch的后面也可以跟选项,除了新建文件它还有其它作用,后面再介绍:

-a   或--time=atime或--time=access或--time=use只更改存取时间。
-c   或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m   或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。 

再来认识一个指令叫做:

stat指令

它可以获取文件的所有属性

mkdir指令(重要)

指令: mkdir [选项] dirname... 

 功能:在当前目录下创建一个名为 “dirname”的目录

mkdir我们上面也用过了, 它可以用来创建目录, 如果我现在想创建一串目录(路径)呢? 

创建一个d1,在d1里面再创建一个d2, d2里面再创建一个d3, 以此类推,创建一串路径. 

创建这样的文件系统, 如果像这样操作:

法一: 创建d1, cd进入d1再创建d2, cd进入d2创建d3, 很麻烦.

法二: 直接mkdir d1/d2/d3/d4/也是不行的:

一次性创建多个目录需要加一个选项-p 

指令: mkdir -p d1/d2/d3/d4/

总结:

语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:-p或–parents 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后,系统将自动建立好那些尚不存在的目录, 即一次可以建立多个目录
 

4.删除一个目录或文件

rmdir指令 && rm 指令(重要): 

rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除目录。

指令: rmdir [-p][dirName]

适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录

常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

当前路径下有3个目录(蓝色的是目录), 我想删除一个目录dir1:

再删一个:

怎么删不了, 我们看报错Directory not empty, 说目录不是空的。所以rmdir只能删除空目录

 rm命令可以同时删除文件或目录

语法:rm [-f-i-r-v][dirName/dir]

适用对象:所有使用者

功能:删除文件或目录 

常用选项:
        -f 即使文件属性为只读(即写保护),亦直接删除
        -i 删除前逐一询问确认
        -r 删除目录及其下所有文件 

先删除一个文件: 

 删除目录呢?

删除目录需要加一个选项: -r(递归删除) 

 确实删除了,但是我们发现每删一个,它都询问一下:

可以发现rm其实是rm -i的别名,所以每次删除都会询问一次.

 加一个选项:-f(force强制)

这次删除就没有询问. 

 5,查看Linux手册

man指令(重要)

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。

指令: man [选项] 命令 

 输入man ls:

就会出现相应的解释, 按q退出。 

man man可以查看man手册的相关介绍:

常用选项: 

-k 根据关键字搜索联机帮助
num 只在第num章节找 (man 3 printf)
-a 可以查看与特定命令或主题相关的所有可用手册页,而不仅仅是默认的第一个手册页 

man手册分为8章

1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig 

6.简单的程序编写与查看

nano介绍和使用 

nano它是一个文本编辑器,前期如果我们想打开一个文件并编辑它,就可以使用nano(后面我们会学vim) 如果第一次也需要我们安装一下:

先新建一个test.c文件, 然后nano test.c: 

打开后就可以直接写入了,那写完怎么保存退出呢?
其实下面有提示的,我按着提示操作就行了,退出(exit)就是ctrl+X

它会询问是否保存修改,我们输入Y,然后回车就保存退出来了

用一个命令cat test.c可以查看文本内容: 

 用gcc test.c编译文件,会生成一个可执行程序:a.out,运行一下a.out即可.

cat 指令 

指令:cat [选项][文件]

功能: 查看目标文件的内容

先用nano写一些内容:

 

这里就把new.c文件的内容打印显示出来了 

echo 命令

补充:Linux里面还有一个命令echo, 它可以帮我们输出信息: 

这里我们看到用echo打印信息的时候默认是通过显示器就直接打印出来了 (不加双引号也可以, 但建议加上)

输出重定向

那其实还可以这样:

我们看到这次echo并没有直接把后面的字符串直接显示出来, 而且当前目录下新创建了一个文件echo.txt, 然后echo后面的字符串被写入了文件中. 其中>这个符号可以实现输出重定向.其实就可以理解为重新确定了输出的方向 ,把本应该输出到显示器的信息写入到echo.txt文件中, 这个文件原来是不存在的, 而系统会去自动创建对应的文件。

上面我们提到echo可以直接通过显示器打印信息,那通过显示器打印信息其实我们可以理解为把信息写入到显示器,所以,其实我们也可以把显示器看成一种“文件”
另外呢,C语言的scanf或者C++的cin去获取数据,这些数据来源是来自于我们从键盘输入的数据,所以其实键盘我们也可以看作一种“文件”。
那这里,我们可以引出一个结论就是——Linux下一切皆文件。

刚才演示的是重定向到一个不存在的文件, 那我们看到结果是自动创建了目标文件, 并且把原本要输出到显示器的内容写入到了目标文件夹中。那如果重定向到一个已经存在并且有内容的文件呢? 

通过结果我们其实可以得出>的重定向是一种覆盖式的, 会把文件原来的内容覆盖掉, 不过其实它是在写入之前把原来的内容清空,然后在把echo后面的内容写入文件中。 

所以清空文件就可以这样写:

新建空文件就可以这样: 

 追加重定向

这次我们用>>: echo "hello linux" >> echo.c
然后我们发现这次并没有覆盖,而是把内容追加到原来内容的后面了 ,所以>>可以实现追加重定向,把指定内容追加到目标文件中。

输入重定向

上面介绍了cat指令,一般后面会跟一个文件,就可以显示文件的内容,那如果cat之后不跟文件名呢:

如果我们只输入一个cat,这时我们输入什么,按回车后,显示器就回显什么,一直输入,就一直回显,按crtl+c可以结束。
也就是说,cat如果后面不跟文件的话,它默认是从键盘去读取数据的,我们输入什么,它就读取什么然后并显示出来。那如果我们不想让它从键盘读呢,那就可以这样: 

cat 后面加一个<,然后跟文件名,这时他就去读取目标文件的内容并显示出来。那这里的<我们把它叫做输入重定向。

那这和cat new.c不是一样吗? 其实它们是有区别的.这个后面再说。

回到cat的选项介绍: 

常用选项:
        -b 对非空输出行编号
        -n 对输出的所有行编号
        -s 不输出多行空行

 -n可以在显示信息的同时显示文本的行号。

-s 作用是不输出多行空行

 

-b 对非空输出行编号

可以-ns合并空行后编号:

wc指令

wc可以统计文件的行数,单词数字节数这些信息:

加选项-l可以只显示行数

uniq 指令

uniq 指令可以对相邻的重复文件内容进行去重

 如果不相邻呢?

不相邻的内容并不会去重 .

sort指令

sort可以对文本内容进行排序,排序规则其实是比较每行数据第一个字母的ASCII码值(相同比较后面的),默认升序. -r 选项是降序.

这里用了管道,下面会解释:. 

7.查看文件

more指令

先创建一个大文本:cnt=0; while [ $cnt -le 1000 ]; do echo "hello $cnt"; let cnt++; done > new.c.还是放到test.c文件中,把产生的文本内容重定向到test.c中,需要的话直接用就行了。
那写入之后我们用cat查看一下:

现在文件里面已经有1000条文本了,上面的已经看不到了.那我们说cat可以查看文件的内容,但是呢,一般我们用cat查看一些短文本是比较好的,如果是比较长的,cat一下直接刷屏了,想看上面的还得拉上去,比较麻烦。 

这种情况我们就可以用一个命令叫做more,那more的功能呢类似cat。但是more会默认按照我们屏幕的大小去显示文本信息.

指令:more [选项][文件]

常用选项:
        -n 对输出的所有行编号
        q 退出more 

它就会从第一行开始显示,这一屏幕满了,就停止显示后面的信息了.然后我们敲回车就可以一行一行往下查看,退出的话按q就可以退出

less指令(重要)

与more类似,还有一个命令叫做less,它也可以对文件内容进行分页显示: 

1.less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
2.less 的用法比起 more 更加的有弹性。less与more类似,但使用less可以随意浏览文件(上下键或者PgUp和PgDn),而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
3.除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

 指令: less [参数] 文件

选项:
        -i  忽略搜索时的大小写
        -N  显示每行的行号
        /字符串:向下搜索“字符串”的功能
        ?字符串:向上搜索“字符串”的功能
        n:重复前一个搜索(与 / 或 ? 有关)
        N:反向重复前一个搜索(与 / 或 ? 有关)
        q:quit 

如果要查找80,在/后输入80,然后回车 

 

接着按n就可以查找下一个: 

 按q退出

head指令

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。

指令:head [参数]... [文件]... 

功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。 

选项:
        -n<行数> 显示的行数 

 

 tail指令

 tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.

指令: tail[必要参数][选择参数][文件] 

功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理.常用查看日志文件。 

选项:

        -f 循环读取
        -n<行数> 显示行数 

命令行管道(了解) 

如果我现在想统计一个文件有多少行,那我们上面了解过一个指令wc可以统计文件的信息,-l就是只显示行数.

 

 现在如果这样呢:

这个 在Linux中我们把它叫做管道,那在我们的计算机里面,最重要的资源就是数据。所以计算机中的管道就可以理解成连接两条指令去传输数据的一个东西。

对于管道,我们也可以把它当作一个文件来看,那现在再来看上面那条指令cat test.c | wc -l,在 | 的两侧其实是两个指令,首先cat test.c,正常情况下它是把文件的内容直接显示到显示器上(可以理解成把文件内容写入到显示器这个“文件”中了),那现在它连接到了管道上,所以就把文件的内容写入到了管道里。那后面的wc -l,它正常情况是后面跟一个文件,统计该文件的信息,但是现在它接收了管道里面输出的文件数据,所以就可以统计管道输出的文件的信息.

管道,包括前面提到的重定向,我们后面都会进行详细的讲解,现在简单了解一下.

对于我们上面创建的那个大文本test.c,现在有了head和tail,我们想拿到文本的前几行或者后几行都是很容易的。

那如果我现在想拿到中间的,比如500到520行的内容,可以怎么做呢?

大家可能会想到这样的方法:
先用head获取前520行的数据,但是head直接显示到显示器上了,所以,我可以把它head重定向到一个tmp.txt文件里面.然后,我们用tail获取tmp.txt的后20行就行了.

 如果不创建临时文件呢?那可以通过管道来实现:

head -520 test.c,只取前520行,然后再通过管道传给tail -20,就拿到了500到520行的内容。

那继续我想统计一下输出的结果的行数,怎么办?

再添一条管道,输给wc统计就可以了。 

8.移动文件或目录 

cp 指令(重要)

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息 

在Windows中我们经常可能会复制一个文件,然后粘贴到另一个地方。那在Linux也可以对文件或者目录进行复制,对应的命令就是cp

当前目录下有一个目录dir1,里面是空的,还有一个文件test.c

如果我现在想把文件test.cc拷贝到dir目录里,怎么做呢?

指令:cp [选项] 源文件或目录 目标文件或目录 

 

a.out被拷贝到dir1目录下了. 

 把目录dir1拷贝到上一级目录:

报错了,这是因为默认只能拷贝普通文件,那拷贝目录怎么做呢?
还是加个 -r(递归拷贝,因为目录其实就是递归定义的) 

可以看到指令选项的顺序可以换.

可以一次把多个文件拷贝到目录下:

cp src文件名 dst文件名 可以把原文件复制并重命名为目标文件名到当前目录下 :

常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

mv 指令(重要) 

在Windows上,有一种操作叫做剪切,mv是在Linux上类似剪切的操作.

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

指令: mv [选项] 源文件或目录 目标文件或目录 

常用选项:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! 

功能:

1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。


2. 当第二个参数类型是不存在的文件或者目录时,mv命令完成移动并重命名,此时,源文件或源目录名只能有一个,它将所给的源文件或目录移动并重命名为给定的目标文件名。

(mv 已存在的源文件名(目录名) 不存在的指定文件名(目录名))


3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。 

移动并重命名(仅限两个文件参数): 

这两个操作都是在同一目录下进行,所以没有体现出"移动".

注意: 两个文件(目录)名不能重名.

移动:

将当前目录下的 a.out test.c test.txt 一次移动到dir2目录下:

 将dir2目录移动到上级目录下:

9.时间相关的指令

显示时间

首先如果我们想在Linux中获取时间信息,就可以用一个命令叫做date:

date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]

1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下 :

%Y : 完整年份 (0000..9999)

%m : 月份 (01..12)

%d : 日 (01..31)
%F : 相当于 %Y-%m-%d 

%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S

如果想按照指定格式查看时间呢?

注意,中间的 -和_是随意指定的,可以任意更改

 时间戳

然后我们再来了解一个东西——时间戳

时间->时间戳:date +%s

显示的这个东西就是时间戳,那这个数值其实是从1970年1月1日0时0分0秒(格林威治时间,北京时间是1970年01月01日08时00分00秒)到现在这一时刻的累计的秒数。

时间戳->时间:date -d@时间戳

也可以指定格式去显示:

cal指令

cal命令可以用来显示公历(阳历)日历. 公历是现在国际通用的历法,又称格列历,通称阳历.“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”.

指令: cal [参数][月份][年份] 

功能:

用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份.

只敲一个cal,默认显示本月的日历
 指定年份查看某一年的日历

还有cal -3显示系统前一个月,当前月,下一个月的月历 

其他常用选项:

-3 显示系统前一个月,当前月,下一个月的月历
-j  显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y  显示当前年份的日历 

 10.查找相关的指令

find指令

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。
  • Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
  • 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

指令: find 路径 -选项

功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘) 

常用选项:-name  按照文件名查找文件。 

find 指定路径 -name 文件名 

which 指令 

which可以帮我们查找一个指令(指令其实也是文件,.exe的可执行文件)存在于什么路径下

 whereis 指令

该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。 

 grep指令

grep是一个文本搜索工具,可以从文本文件或管道数据流中筛选匹配的行和数据

功能: 在文件中搜索字符串,将找到的行打印出来 

指令:grep [选项] 搜寻字符串 文件 

常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行 

 加选项-n,顺便输出行号:

加选项-i,忽略大小写 :

 加选项-v反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行

可以看到除了刚才的前五行,剩下995行全被打印出来. 

配合管道:

在多文件中搜索: 

 多文件配合管道:

可以看到不像上面单独使用grep会显示文件名. 

11.压缩有关的指令 

zip指令和unzip指令

zip和unzip指令其实对应的就是对文件进行压缩和解压缩(zip后缀)的操作

指令:zip 压缩文件.zip 要压缩的目录或文件

        unzip 压缩文件 

zip常用选项:
        -r 递归处理,将指定目录下的所有文件和子目录一并处理 

unzip常用选项: 

        -d 解压到指定路径下

没有zip可以先安装: 

yum -y install zip unzip 

把当前目录下的tmp1.txt tmp2.txt tmp3.txt和dir2文件夹压缩: 

看到生成了一个dir.zip文件 

 压缩包被解压缩到了指定目录下: 

不加-d默认解压到当前目录下,要解压到指定目录下,unzip后面加一个选项-d,并指定具体的路径就行 

但仔细看解压后的dir2目录和解压前的dir2目录, ​​​​

发现原dir2目录下的文件都没有解压出来,因为我们刚才只是打包压缩了一个空目录,并没有对里面的内容打包压缩,那怎么办呢?

-r 递 归处理,将指定目录下的所有文件和子目录一并处

那我们现在重新对dir压缩和解压 : 

 tar指令(重要)

指令: tar [-cxtzjvf] 文件与目录 .... 参数:

-c :建立一个压缩文件的参数指令,只打包不压缩
-x :解开一个压缩文件的参数指令
-t :查看 tarfile 里面的文件
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :列出列出压缩和解压缩过程处理涉及的详细的文件的信息
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!(所以使用f选项的话,一般放在最后面)
-C : 解压到指定目录

压缩要用哪些选项:

-c(建立一个压缩文件)选项肯定要加,使用什么属性压缩呢,那我们这里以 gzip 压缩压缩为例,那就是-z,最后加个-f,给压缩之后的压缩包起个新名字。使用czf压缩的包我们一般用tgz后缀:

 解压要用哪些选项:

解压要用那些选项呢?其实我们把打包压缩时的选项czf中的c换成x就行了,如果需要解压到指定目录再加一个-C

另外有时候我们拿到一个这样一个压缩包,可能不想解压它,但想看一下它里面有哪些文件 

-z和-f还是要加上.

-t这个选项:查看 tarfile 里面的文件

-v:列出列出压缩和解压缩过程处理涉及的详细的文件的信息

​​​​​​​

 如果只想解压压缩包里的部分文件,可以在压缩包后加上压缩包内的文件(目录)名:​​​​​​​

 12.bc指令

bc回车,发现它卡在这里等待我们输入,然后我们输出表达式,它就可以返回结果

13.uname指令 

指令:uname [选项]

功能: uname用来获取电脑和操作系统的相关信息。

补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

常用选项:
        -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 .

        -r或–release  显示操作系统的发行编号

查看Linux发行版本信息: ​​​​​​​

14.关机 

指令:shutdown [选项]

常见选项:
        -h : 将系统的服务停掉后,立即关机。
        -r : 在将系统的服务停掉之后就重新启动
        -t sec : -t 后面加秒数,亦即『过几秒后关机』的意思

以下命令作为扩展:

◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

关于指令的记忆方法可参考: 

常用Linux命令记忆方法_linux命令速记-CSDN博客

关于一些命令行的快捷键:

21 个专业 Linux 用户喜爱的实用终端快捷键 | Linux 中国 - 知乎

一、实验目的 1.掌握在Linux系统下利用命令方式实现用户和组的管理; 2.掌握利用Linux-conf进行用户和组的管理; 3.理解文件权限 4.进行系统进程管理。 二、实验内容 1. 用户的管理  创建一个新用户user01设置其主目录为/home/user01:#adduser –d /home/user01 -m user01  查看/etc/passwd文件的最后一行,看看是如何记录的。  查看文件/etc/shadow文件的最后一行,看看是如何记录的。  给用户user01设置密码:#passwd user01。  再次查看文件/etc/shadow文件的最后一行,看看有什么变化。  使用user01用户登录系统,看能否登录成功。。  锁定用户user01:#passwd -l user01。  查看文件/etc/shadow文件的最后一行,看看有什么变化。  再次使用user01用户登录系统,看能否登录成功。  解除对用户user01的锁定:#passwd -u user01  更改用户user01的帐户名为user02:#usermod –l user02 user01。  查看/etc/passwd文件的最后一行,看看有什么变化。  删除用户user02。userdel. 2. 组的管理  创建一个新组,stuff:#groupadd stuff。  查看/etc/group文件的最后一行,看看是如何设置的。  创建一个新帐户user02,并把他的起始组和附属组都设为stuff:#adduser –g stuff –G stuff user02。  查看/etc/group文件的最后一行,看看有什么变化。  给组stuff设置密码:#gpasswd stuff。  在组stuff删除用户user02:#gpasswd –d user02 stuff。  再次查看/etc/group文件的最后一行,看看有什么变化。  删除组stuff。groupdel 3. 用Linux-conf创建用户和组  进入X-Window图形界面。  打开控制面板,启动用户和组群管理子程序,在打开的界面练习用户、组的设置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值