Linux基础命令

用户管理

  • useradd 选项 用户名,创建账号

-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组
-G 用户组,用户组 指定用户所属的附加组
-s Shell文件 指定用户的登录Shell
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

创建一个chan用户,并创建主目录:

dylan@DESKTOP-FRA3DA2:~$ sudo useradd -d /home/chan -m chan

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

  • userdel 选项 用户名,删除账号

-r 同时删除用户主目录

  • usermod 选项 用户名,修改账号

选项同useradd

  • passwd 选项 用户名,管理账号密码

-l 锁定口令,即禁用账号
-u 口令解锁
-d 使账号无口令,这样用户下一次登录时,系统就不再允许该用户登录了
-f 强迫用户下次登录时修改口令

passwd 用户名,修改密码
passwd,修改当前用户密码

通过sudo passwd root修改root的密码,通过su root命令切换到root用户,通过exit退出root用户,或者用su dyaln切换到dylan用户;使用echo $LOGNAME来查看当前登录的用户名
su 的语法为:

su [-] username

后面可以跟”-”也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。
切换用户
加”-“后会连同用户的环境变量一起切换过来。su test 后虽然切换到了test用户,但是当前目录还是切换前的/root目录,然后当用su - test时切换用户后则到了test的家目录/home/test。当用root切换普通用户时,是不需要输入密码的。
默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用visudo命令去编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用” yum install -y sudo”安装。
visudo
默认root能够sudo是因为这个文件中有一行” root ALL=(ALL) ALL”。在该行下面加入” test ALL=(ALL) ALL”就可以让test用户拥有了sudo的权利。
如果每增加一个用户就设置一行,这样太麻烦了,可以把想让有sudo权利的所有用户加入到sudo这个组中使得用户能够使用sudo。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

用户标识号是一个整数,一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

伪用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
常见的伪用户如下所示:

bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lp lp或lpd子系统使用
nobody NFS使用

用户组管理

  • groupadd 选项 用户组,新增用户组

-g GID 指定新用户组的组标识号(GID)
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

  • groupdel 用户组,删除用户组

  • groupmod 选项 用户组,修改用户组

-g GID 为用户组指定新的组标识号
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
-n 新名字 将用户组的名字改为新名字

  • newgrp 用户组,切换用户至用户组,前提是当前用户已经在root组中

用户组的所有信息都存放在/etc/group文件中。
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表
groups   #查看当前登录用户的组内成员
groups test #查看test用户所在的组,以及组内成员
whoami   #查看当前登录用户名

文件属性

在Linux系统中,对于文件来说,它都有一个所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组:

dylan@DESKTOP-FRA3DA2:~$ ls -l
total 0
drwxr-xr-x 1 dylan dylan 512 Sep 16 19:41 test

其中 drwxr-xr-x 为文件属性,第 0 位确定文件类型,第1-3位确定该文件的所有者拥有该文件的权限。
第4-6位确定所有者的同组用户拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
第0位为 d 则是目录,为 - 则是文件,为 l 则表示为链接文档(link file),类似windows下的快捷方式,为 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置),为 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置);
第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;
第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。对于 root 用户来说,一般情况下,文件的权限对其不起作用。
另外,上述两个dylan分别表示文件的所有者及文件所属分组。
注:在linux系统中,默认一个目录的权限为 755,而一个文件的默认权限为644。

文件属性处理:

  • chgrp:更改文件属组

语法:
chgrp [-R] 属组名 文件名
参数选项
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

dylan@DESKTOP-FRA3DA2:~/test2$ ll
total 0
drwxr-xr-x 1 dylan dylan 512 Sep 18 11:12 ./
drwxr-xr-x 1 dylan dylan 512 Sep 17 19:46 ../
drwxrwxr-x 1 dylan dylan 512 Sep 17 17:43 test_in_test/
-rw-r--r-- 1 dylan dylan 191 Sep 18 11:12 test_vim.txt
-rw-r--r-- 1 dylan dylan 191 Sep 17 19:46 test_vim1.txt

dylan@DESKTOP-FRA3DA2:~/test2$ sudo chgrp chan test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test2$ ll
total 0
drwxr-xr-x 1 dylan dylan 512 Sep 18 11:12 ./
drwxr-xr-x 1 dylan dylan 512 Sep 17 19:46 ../
drwxrwxr-x 1 dylan dylan 512 Sep 17 17:43 test_in_test/
-rw-r--r-- 1 dylan chan  191 Sep 18 11:12 test_vim.txt
-rw-r--r-- 1 dylan dylan 191 Sep 17 19:46 test_vim1.txt
  • chown:更改文件属主,也可以同时更改文件属组

语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

将test_vim.txt的拥有者改为chan这个账号:

dylan@DESKTOP-FRA3DA2:~/test2$ sudo chown chan test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test2$ ll
total 0
drwxr-xr-x 1 dylan dylan 512 Sep 18 11:12 ./
drwxr-xr-x 1 dylan dylan 512 Sep 17 19:46 ../
drwxrwxr-x 1 dylan dylan 512 Sep 17 17:43 test_in_test/
-rw-r--r-- 1 chan  chan  191 Sep 18 11:12 test_vim.txt
-rw-r--r-- 1 dylan dylan 191 Sep 17 19:46 test_vim1.txt

将test_vim.txt的拥有者与群组改回为dyaln:

dylan@DESKTOP-FRA3DA2:~/test2$ sudo chown dylan:dylan test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test2$ ll
total 0
drwxr-xr-x 1 dylan dylan 512 Sep 18 11:12 ./
drwxr-xr-x 1 dylan dylan 512 Sep 17 19:46 ../
drwxrwxr-x 1 dylan dylan 512 Sep 17 17:43 test_in_test/
-rw-r--r-- 1 dylan dylan 191 Sep 18 11:12 test_vim.txt
-rw-r--r-- 1 dylan dylan 191 Sep 17 19:46 test_vim1.txt
  • chmod:更改文件9个属性
    Linux文件属性有两种设置方法,一种是数字,一种是符号。
    Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
  1. 数字类型改变文件权限
    文件的权限字符为: -rwxrwxrwx ,
    根据用户组不同分为3组,通过数字类型改变文件权限时需要将权限字符转化为数字,权限字符rwx,对应二进制数000,当拥有某一权限时,该位置1,将该二进制数转化为十进制数即为对应的数字,例如,具有读写但没有执行权限,字符为rw-,对应的二进制位110,即十进制的6。
    变更权限的指令 chmod

语法:
chmod [-R] xyz 文件或目录
选项与参数:
xyz : owner/group/others三个分组对应的权限属性的数字
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将 test_vim.txt 这个文件所有的权限都设定启用,那么命令如下:

dylan@DESKTOP-FRA3DA2:~/test$ ls -l
total 0
-rw-r--r-- 1 dylan dylan 185 Sep 16 19:36 test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test$ chmod 777 test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test$ ls -l
total 0
-rwxrwxrwx 1 dylan dylan 185 Sep 16 19:36 test_vim.txt
  1. 符号类型改变文件权限
    我们使用 u, g, o 来代表三种身份的权限。a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x。
    如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
dylan@DESKTOP-FRA3DA2:~/test$ chmod u=rwx,g=rw,o=r test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test$ ls -l
total 0
-rwxrw-r-- 1 dylan dylan 185 Sep 16 19:36 test_vim.txt

拿掉全部人的可执行权限:

dylan@DESKTOP-FRA3DA2:~/test$ chmod a-x test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test$ ls -l
total 0
-rw-rw-r-- 1 dylan dylan 185 Sep 16 19:36 test_vim.txt

给文件所有者新增可执行权限:

dylan@DESKTOP-FRA3DA2:~/test$ chmod u+x test_vim.txt
dylan@DESKTOP-FRA3DA2:~/test$ ls -l
total 0
-rwxrw-r-- 1 dylan dylan 185 Sep 16 19:36 test_vim.txt

目录相关命令:

  • / 为根目录
  • ls [-adl] 目录名称,列出目录(list files)

可选参数:
-a:全部的文件,连同隐藏文件(开头为.的文件) 一起列出来
-d:仅列出目录本身,而不是列出目录内的文件数据
-l:长数据串列出,包含文件的属性与权限等数据

  • cd 相对路径或绝对路径,切换目录(change directory)

cd … 返回上级目录
cd ~ 进入用户根目录

当前位于home/dylan目录下,要进入home/dylan/test有2中方式:

cd ./test,#"."表示当前路径
cd test
  • pwd 显示当前目录(Print Working Directory),加上-P参数后显示出确实的路径,而非使用连结 (link) 路径

  • mkdir [-mp] 目录名称,创建目录

-m:配置文件的权限
-p:直接将所需要的目录(包含上一级目录)递归创建起来

dylan@DESKTOP-FRA3DA2:~$ mkdir -m 775 test3
dylan@DESKTOP-FRA3DA2:~$ mkdir test2/test_in_test2
mkdir: cannot create directory ‘test2/test_in_test2’: No such file or directory
dylan@DESKTOP-FRA3DA2:~$ mkdir -p test2/test_in_test2
  • rmdir [-p] 目录名称,删除空目录(remove directory)

-p:连同上一级空目录也一起删除

当前目录如下

| .
  | test
    | test_in_test
      |
    | test_vim.txt
  | test1
    |
  | test2
    | test_in_test2
      |
  | test3

执行 rmdir -p test2/test_in_test2 后,目录如下:

| .
  | test
    | test_in_test
      |
    | test_vim.txt
  | test1
    |
  | test3

使用rm才能删除非空目录

  • cp [-adfilprsu] 来源(source) 目标(destination),复制文件及目录(copy file)

-a:相当于-pdr
-d:若来源为连结档的属性(link file),则复制连结档属性而非文件本身
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
-r:递归持续复制,用於目录的复制行为
-s:复制成为符号连结档 (symbolic link),亦即捷径文件
-u:若 destination 比 source 旧才升级 destination

  • rm [-fir] 文件或目录,移除文件或目录

-f:就是 force 的意思,忽略不存在的文件,不会出现警告信息
-i:互动模式,在删除前会询问使用者是否动作
-r:递归删除

  • mv [-fiu] source destination,移动文件与目录,或修改名称

-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u:若目标文件已经存在,且 source 比较新,才会升级 (update)

注意,当destination不存在时,相当于重命名,例如当前目录下有 test,test1,test2 3个文件夹,执行mv test test3 后,test就被重命名为test3了

文件操作命令:

  • cat [-AbEnTv] 文件名,从第一行开始显示文件内容

-A:相当于-vET
-b:列出行号,仅针对非空白行做行号显示,空白行不标行号
-E:将结尾的断行字节 $ 显示出来
-n:列印出行号,连同空白行也会有行号,与 -b 的选项不同
-T:将tab按键以 ^I 显示出来
-v:列出一些看不出来的特殊字符

  • tac 文件名,从最后一行开始显示文件内容,刚好与cat相反

  • nl [-bnw] 文件名,显示行号

-b:指定行号指定的方式,主要有两种:

-ba:表示不论是否为空行,也同样列出行号(类似 cat -n)
-bt:如果有空行,空的那一行不要列出行号(默认值)

-n:列出行号表示的方法,主要有三种:

-n ln:行号在荧幕的最左方显示
-n rn:行号在自己栏位的最右方显示,且不加0
-n rz:行号在自己栏位的最右方显示,且加0

-w :行号栏位的占用的位数

  • head [-n number] 文件名,取出文件前number行,默认显示10行
  • tail [-n number] 文件名,取出文件后number行,默认显示10行

在Linux系统中,有几个目录是比较重要的:
/etc:这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动
/bin,/sbin,/usr/bin,/usr/sbin: 这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls 目录下的
其中,/bin,/usr/bin是给系统用户使用的指令(除root外的通用户),而/sbin,/usr/sbin则是给root使用的指令
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log目录下,另外mail的预设放置也是在这里

搜索文件:

  • which用来查找PATH环境变量中出现的路径下的可执行文件的绝对路径。
  • whereis 通过预先生成的一个文件列表库去查找跟给出的文件名相关的文件。

语法: whereis [-bmsu] [文件名称]
-b:只找binary 文件
-m:只找在说明文件manual路径下的文件
-s:只找source来源文件
-u:没有说明档的文件

  • locate 类似于whereis,也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里。后边直接跟文件名。需要安装软件包locate。

  • find

语法: find [路径] [参数]
-atime +n :访问或执行时间大于n天的文件
-ctime +n :写入、更改inode属性(例如更改所有者、权限或者连接)时间大于n天的文件
-mtime +n :写入时间大于n天的文件
-name filename 直接查找该文件名的文件
-type type:通过文件类型查找。文type 包含了f,b,c,d,l,s等等。

文件的Access time,atime是在读取文件或者执行文件时更改的。
文件的Modified time,mtime是在写入文件时随文件内容的更改而更改的。
文件的Create time,ctime是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。 因此,更改文件的内容即会更改mtime和ctime,但是文件的ctime可能会在mtime未发生任何变化时更改,例如,更改了文件的权限,但是文件内容没有变化。

ls -l 命令可用来列出文件的atime、ctime和mtime。
ls -lc filename 列出文件的ctime
ls -lu filename 列出文件的atime
ls -l filename 列出文件的mtime

软件包管理器

  • yum, Yellow dog Updater, Modified

命令:yum [options] [command] [package …]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
command:要进行的操作。
package:安装的包名。

常用命令:

  1. 列出所有可更新的软件清单命令:yum check-update
  2. 更新所有软件命令:yum update
  3. 仅安装指定的软件命令:yum install <package_name>
  4. 仅更新指定的软件命令:yum update <package_name>
  5. 列出所有可安裝的软件清单命令:yum list
  6. 删除软件包命令:yum remove <package_name>
  7. 查找软件包命令:yum search
  8. 清除缓存命令:
    yum clean packages: 清除缓存目录下的软件包
    yum clean headers: 清除缓存目录下的 headers
    yum clean oldheaders: 清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
  • apt, Advanced Packaging Tool

命令: apt [options] [command] [package …]
options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
command:要进行的操作。
package:安装的包名。

列出所有可更新的软件清单命令:sudo apt update
升级软件包:sudo apt upgrade
升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
安装指定的软件命令:sudo apt install <package_name>
安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
更新指定的软件命令:sudo apt update <package_name>
显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
删除软件包命令:sudo apt remove <package_name>
清理不再使用的依赖和库文件: sudo apt autoremove
移除软件包及配置文件: sudo apt purge <package_name>
查找软件包命令: sudo apt search
列出可更新的软件包及版本信息:apt list --upgradeable
列出所有已安装的包:apt list --installed
列出所有已安装的包的版本信息:apt list --all-versions

linux硬链接与软链接的区别

  • hard link是直接再建立一个inode连接到文件放置的块区域Block。也就是说,进行hard link的时候实际上该文件内容没有任何变化,只是增加了一个指到这个文件的inode,不过这样一来就会有个问题,因为增加的inode会连接到块区域Block,而目录本身仅仅消耗inode而已,那么hard link就不能连接目录了。所以,hard link有两个限制:1 不能跨文件系统,因为不通的文件系统有不同的inode table; 2 不能连接目录。

  • Symbolic Links:跟hard link不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个连接文件时,它会把读取的行为转发到该文件所link的文件上。现在有文件a,我们做了一个软连接文件b(只是一个连接文件,非常小),b指向了文件a。当读取b时,那么b就会把读取的动作转发到a上,这样就读取到了文件a。所以,当你删除文件a时,文件b并不会被删除,但是再读取b时,会提示无法打开文件。而当你删除b时,a是不会有任何影响的。

ln 语法: ln [-s] [来源文件] [目的文件]
ln 常用的选项就一个-s ,如果不加就是建立硬连接,加上就建立软连接。

注:
1.Block是记录“档案内容数据”的地区,而inode则是记录“该档案的属性、及该档案放置在哪一个Block之内”的信息。当系统要读取一个文件时,就会先去读inode table,然后再去根据inode中的信息到块区域Block去将数据取出来。
2.文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
ls -l输出的第二列就是文件的硬链接数,即inode节点的链接数

文档打包与压缩

在windows下压缩文件大多是.rar格式。但在linux下这样的格式是不能识别的,它有自己所特有的压缩工具。另外,.zip格式的文件在windows和linux下都能使用。
linux系统中的后缀名要不要其实无所谓,但是对于压缩文件来讲必须要带上,这是为了判断压缩文件是由哪种压缩工具所压缩,之后才能正确的解压缩这个文件。
常见的后缀名所对应的压缩工具:

.gz gzip压缩工具压缩的文件
.bz2 bzip2压缩工具压缩的文件
.tar tar打包程序打包的文件(tar并没有压缩功能,只是把一个目录合并成一个文件)
.tar.gz 可以理解为先用tar打包,然后再gzip压缩
.tar.bz2 同上,先用tar打包,然后再bzip2压缩

  • gzip

语法: gzip [-d#] filename 其中#为1-9的数字
-d :解压缩时使用
-# :压缩等级,1压缩最差,9压缩最好,6为默认

注 :gzip不可以压缩目录

dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt
dylan@DESKTOP-FRA3DA2:~/test1$ gzip test.txt #压缩
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt.gz
dylan@DESKTOP-FRA3DA2:~/test1$ gzip -d test.txt.gz #解压缩
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt
  • bzip2

语法:bzip2 [-dz] filename
-d :解压缩
-z :压缩,可省略

dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt
dylan@DESKTOP-FRA3DA2:~/test1$ bzip2 test.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt.bz2
dylan@DESKTOP-FRA3DA2:~/test1$ bzip2 -d test.txt.bz2
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt
  • tar

语法:tar [-zjxcvfpP] filename
-z:是否同时用gzip压缩
-j:是否同时用bzip2压缩
-x:解包或者解压缩
-t:查看tar包里面的文件
-c:建立一个tar包或者压缩文件包
-v:可视化
-f:后面跟文件名,压缩时跟-f文件名,意思是压缩后的文件名为filename,解压时跟-f文件名,意思是解压filename。注意,如果是多个参数组合的情况下带有-f,要把f写到最后面
-p :使用原文件的属性,压缩前什么属性压缩后还什么属性
-P :可以使用绝对路径
–exclude filename 打包的时候过滤掉文件filename;要过滤多个时则多次使用,如:–exclude filename1 --exclude filename2

  1. tar打包与解包:
dylan@DESKTOP-FRA3DA2:~/test1$ mkdir test11
dylan@DESKTOP-FRA3DA2:~/test1$ cd test11
dylan@DESKTOP-FRA3DA2:~/test1/test11$ touch test11.txt
dylan@DESKTOP-FRA3DA2:~/test1/test11$ ls
test11.txt
dylan@DESKTOP-FRA3DA2:~/test1/test11$ cd ..
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11
dylan@DESKTOP-FRA3DA2:~/test1$ tar -cvf test11.tar test11
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar
dylan@DESKTOP-FRA3DA2:~/test1$ rm -rf test11
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11.tar
dylan@DESKTOP-FRA3DA2:~/test1$ tar -xvf test11.tar
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar

注意:无论是打包还是解包,原来的文件都是不会删除的。

  1. 打包的同时用gzip压缩与解压缩.tar.gz:
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar
dylan@DESKTOP-FRA3DA2:~/test1$ tar -zcvf test11.tar.gz test11
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.gz
dylan@DESKTOP-FRA3DA2:~/test1$ rm -rf test11
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11.tar  test11.tar.gz
dylan@DESKTOP-FRA3DA2:~/test1$ tar -zxvf test11.tar.gz
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.gz
  1. 打包的同时用bzip2压缩与解压缩.tar.bz2:
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.gz
dylan@DESKTOP-FRA3DA2:~/test1$ tar -jcvf test11.tar.bz2 test11
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.bz2  test11.tar.gz
dylan@DESKTOP-FRA3DA2:~/test1$ rm -rf test11
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11.tar  test11.tar.bz2  test11.tar.gz
dylan@DESKTOP-FRA3DA2:~/test1$ tar -jxvf test11.tar.bz2
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.bz2  test11.tar.gz
  1. 用 tar -tf 包名 显示包内的文件:
dylan@DESKTOP-FRA3DA2:~/test1$ tar -tf test11.tar
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ tar -tf test11.tar.gz
test11/
test11/test11.txt
dylan@DESKTOP-FRA3DA2:~/test1$ tar -tf test11.tar.bz2
test11/
test11/test11.txt
  • 使用zip filename.zip dirname将dirname压缩成filename.zip
    使用unzip filename.zip解压缩
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.bz2  test11.tar.gz
dylan@DESKTOP-FRA3DA2:~/test1$ zip test11.zip test11
  adding: test11/ (stored 0%)
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.bz2  test11.tar.gz  test11.zip
dylan@DESKTOP-FRA3DA2:~/test1$ rm -rf test11
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11.tar  test11.tar.bz2  test11.tar.gz  test11.zip
dylan@DESKTOP-FRA3DA2:~/test1$ unzip test11.zip
Archive:  test11.zip
   creating: test11/
dylan@DESKTOP-FRA3DA2:~/test1$ ls
test.txt  test11  test11.tar  test11.tar.bz2  test11.tar.gz  test11.zip

注:zip包需要先用sudo apt install zip安装

其他命令

man 命令 # 查看命令说明
sync # 将数据由内存同步到硬盘中
# shutdown:
shutdown –h 10 'This server will shutdown after 10 mins' # 10分钟后关机,并且会显示在登陆用户的当前屏幕中
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 重启,等同于 shutdown –r now
halt # 关闭系统,等同于 shutdown –h now 和 poweroff
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值