Linux入门的基础知识点,有这篇就够了(持续更新)

Posted 一口Linux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux入门的基础知识点,有这篇就够了(持续更新)相关的知识,希望对你有一定的参考价值。

很多粉丝给一口君留言,想要学习Linux资料,其实关注一口君的公众号,后台回复 1024 ,就有很多非常不错的电子书,但是有一个问题,很多粉丝是初学者,而这一大堆电子书,估计随便一本,还没看完就基本上开始劝退了。

为什么呢?

因为Linux的知识体系非常的庞大,IT行业很多领域都需要使用到Linux,有运维的、有应用程序开发的、有驱动开发的、有系统优化的、有搞单片机的、有做系统移植的、有做网络产品的等等。

总结一句话,IT的很大部分从业者都需要掌握Linux的部分知识,但是由于每个人的从事领域不一样,对Linux的要求也不一样,这就直接导致,网上搜索学习路线有很多种,还有就是推荐的书籍很多都不利于初学者。

比如Linux命令的学习,很多人都力推《鸟哥的私房菜》这本书,一口君在直播间多次强调,初学者不要看这本书,不是说这本书不好,而是,这本书其实你要当做一本工具书来看,如果你的目标是想快速的基于Linux做一些开发工作,最迫切的就是快速掌握一些基本的命令,一些和开发相关的最基础的知识,而不是去学习那些可能这辈子都用不到的命令。

为了让初学者更好的学习Linux,入门Linux,一口君特地整理了Linux入门必须掌握的一些基础知识点,掌握这些知识点之后,就可以学习C编程的知识了,后续遇到一些不熟悉的命令和配置,只需要网上搜索下就可以很快上手了。

后续一口君会陆续录制Linux入门的视频,手把手教大家Linux入门。

欢迎大家访问我的B站空间,《从0学Linux驱动》正在更新中。

下面是一口君的公众号,也欢迎大家加我好友[yikoupeng],拉你进高效技术讨论群,一起讨论Linux相关的技术。
一口Linux

一、Linux操作系统概述

1、发展

1991 Linus Linux 0.0.1版,代码为8K行。现在最新版本为5.12.4。Linux加入了GNU,整体基于GPL协议,允许开源、分享传播、修改。

内核下载的地址【初学者知道即可】:
https://www.kernel.org/

2、组成

  1. kernel内核:

核心程序,用于管理硬件设备、系统的线程进程、内存、交换空间、文件系统、精灵进程(守护进程)等。主要实现系统程序与硬件之间的控制管理功能。

  1. Shell:

包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows的cmd。
通过Shell将输入的命令与内核通讯,好让内核可以控制硬件开正确无误的操作工作。

Shell有着不同的分类,比如Bourne shell(sh),Korn shell(ksh)、C shell (csh)、Bourne-again shell(bash)、tcsh。其中最常用的有csh和bash。

ubuntu 16.04的terminal如下:

  1. user application
    Linux根据程序的运行,分为用户空间和内核空间,简单的理解就是,普通的应用程序运行在用户空间,一些涉及到系统核心资源的操作的程序运行在内核空间,比如TCP/IP协议栈、驱动、进程调度、内存管理、文件系统等都运行于Linux内核空间,

其实一些应用程序当需要访问系统资源的时候,必须通过系统调用,通过一些内核函数将系统资源由内核空间拷贝到用户空间。

  1. Files System:
    文件系统,管理文件和目录。

3、Linux的特性:

多用户、多任务(进程、线程处理),多平台,图形化界面(x-windows)、硬件低配置、通信与联网、应用程序的支持(编辑器、编辑工具、数据库、办公软件、图形处理、Internet应用、游戏)。

二、Linux操作系统安装

1、Linux的选择

red hat:
企业级的,已经开始收费(商用)。

CentOS
是RHEL的克隆版本。RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码重新编译一次,形成一个可使用的二进制版本。由于Linux的源代码是GNU,所以从获得RedHat的源代码到编译成新的二进制,都是合法。只是RedHat是商标,所以必须在新的发行版里将RedHat的商标去掉。
通常搭建服务器选用CentOS。

ubuntu:
桌面开源的,比较纯正的Linux,android官方指定的编译操作系统,发展快、已支持ARM架构。
ubuntu在开发者中,非常受欢迎,一口君所有的文章和视频都以ubuntu为主。

2、安装Ubuntu Desktop

Linux环境安装篇幅较长,安装详细步骤参考这篇文章:
linux环境搭建-ubuntu16.04安装

3、基本操作

ctrl+alt F2  可以进入终端界面
ctrl+alt F7  进入桌面界面
ctrl+alt+t    文本编辑

我们通常用快捷键ctrl+alt+t打开一个终端,这个一定要记住。

其中:

peng    当前用户
ubuntu  主机名
~       当前用户主目录,/home/peng,每一个用户都会在/home下创建一个与用户名同名的目录
$       普通用户

如果切换到管理员用户

root  管理员
/home/peng  当前工作目录
#     当前是管理员

三、Linux文件系统及文件基础

1、文件系统概述

Linux 中一切皆为文件,文件系统用来组织计算机的文件和资料的系统,是操作系统封装的一个系统服务程序,实际是一个软件程序,用来存储和管理计算机文件和资料。
文件系统分类如下:

磁盘文件系统:NTFS,EXT3
闪存文件系统:JFFS2,YAFFS
数据库文件系统:BFFS,WINFS
网络文件系统:NFS
虚拟文件系统:VFS(Proc)

文件系统的功能:能定义文件的组织方式,文件的结构;提供建立和存取文件的环境(目录和文件)

2、Linux文件系统及文件

  1. EXT3:是一个日志方式的文件系统,系统中的每个文件都有索引,用户对文件的每个操作都会记录在日志中,形成一个任务队列。

  2. SWAP:是交换分区的文件系统,类似于windows的虚拟内存,其实现的方式有以下两种:
    第一种是进行内存排列像内存池一样,进行优化;
    第二种是把硬盘上的空间模拟成内存。
    Swap是Linux 的虚拟内存,在安装时要设置好大小,一般设置为物理内存的两倍。

  3. 目录结构
    linux 的结构是由很多文件块区组成,与Windows分区不同。

目录应放置档案内容
/bin系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linux kernel常用的档名为:vmlinuz ,如果使用的是grub这个开机管理程式,则还会存在/boot/grub/这个目录。
/dev在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置。比要重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等
/etc系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。 FHS建议不要放置可执行档(binary)在这个目录中。 比较重要的档案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目录有:/etc/init.d/ :所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话: /etc/init.d/iptables start、/etc/init.d/ iptables stop
/etc/xinetd.d/这就是所谓的super daemon管理的各项服务的设定档目录。
/etc/X11/与X Window有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个X Server的设定档。
/home这是系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号: ~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。
/lib系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已 。 什么是函式库呢?妳可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。 尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模组(驱动程式)。
/mediamedia是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软碟、光碟、DVD等等装置都暂时挂载于此。 常见的档名有:/media/floppy, /media/cdrom等等。
/mnt如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦。 只是有了/media之后,这个目录就用来暂时挂载用了。
/opt这个是给第三方协力软体放置的目录 。 什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。
/root系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。
/sbinLinux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其他使用者最多只能用来查询而已。放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
/srvsrv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。
/tmp这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除。

3. Linux文件属性:

Linux文件属性一共7种:

类型字母说明
普通文件类型-Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
目录文件d就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]
块设备文件b块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
字符设备c字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
套接字文件s这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型
管道文件pFIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
链接文件l类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]

1、普通文件

使用 ls -l 命令后,

第一列第一个字符为 “-” 的文件为普通文件.

2、目录文件

Linux 中的目录也是文件,目录文件中保存着该目录下其他文件的 inode 号 和文件名等信息,目录文件中的每个数据项都是指向某个文件 inode 号的链接,删除文件名就等于删除与之对应的链接。目录文件的字体颜色是蓝色,使用 ls -l 命令查看,第一个字符为"d"(directory)。

目录文件的权限:

  • 1)r 表明该目录文件具有可读权限,即可以使用 ls 命令查看该目录的存储情况;
  • 2)w 表明该目录文件具有写权限,即可以往该目录下添加、修改、删除文件;
  • 3)x 表明该目录文件具有可执行文件,即可以使用 cd 命令进入到该目录下。

可以使用 chmod 指令来改变文件的权限。

3、链接文件

链接文件一般指的是一个文件的软连接(或符号链接),使用 ls -l 命令查看,第一个符号为 “l”,文件名为浅蓝色,如下:

这里,test_softlink 就是一个链接文件,从结果上还可以看到它是文件 test.txt 的软链接,删除原文件 test.txt 的话,对应的软链接文件 test_softlink 也会消失。可以使用 ln 命令来创建一个文件的链接文件:

1)软链接
软链接(又称符号链接),使用 ln -s file file_softlink 命令可以创建一个文件的软链接文件:

ln -s test.txt test_softlink

软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。

2)硬链接
硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。使用 ls -i 命令查看,可以发现硬链接的两个文件的 inode 号是一样的:

同样的,使用 ln 命令可以创建一个文件的硬链接:

ln test.txt test_hardlink

4、设备文件

Linux 中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。

设备文件一般存放在 /dev/ 目录下,文件名为黄色,如下:

设备文件分两种:

  • 1)块设备文件:

块设备文件支持以块(block)为单位的访问方式。在 EXT4 文件系统中,一个 block 通常为 4KB 的大小,也就是说每次可以存取 4096(或其整数倍) 个字节的数据。应用程序可以随机访问块设备文件的数据,程序可以自行确定数据的位置,硬盘、软盘等都是块设备。使用 ls -l 命令查看,块设备文件的第一个字符是 “b”(block)。

  • 2)字符设备文件:

字符设备文件以字节流的方式进行访问,由字符设备驱动程序来实现这种特性,这通常要用到 open、close、read、write 等系统调用。字符终端、串口和键盘等就是字符设备。另外,由于字符设备文件是以文件流的方式进行访问的,因此可以顺序读取,但通常不支持随机存取。使用 ls -l 命令查看,字符设备文件的第一个字符是 “c”(char)。

5、管道文件(FIFO文件)

管道文件主要用于进程间通信,使用 ls -l 命令查看,第一个字符为 “p”(pipe)。可以使用 mkfifo 命令来创建一个管道文件:

mkfifo fifo_file

在 FIFO 中可以很好地解决在无关进程间数据交换的要求,FIFO 的通信方式类似于在进程中使用文件来传输数据,只不过 FIFO 类型的文件同时具有管道的特性,在读取数据时,FIFO 管道中同时清除数据。

6、套接字文件

套接字文件,通常指域套接字文件,使用 ls -l 命令查看,第一个字符为 “s”。

域套接字是进程间通信(IPC)的一种方法,是可靠的一种IPC通信,是POSIX标准的一个组件,只能用于同一主机间的通信。

后续学习进程间通信需要学习该知识。

4. 文件颜色

常见的文件颜色如下:

  • 蓝色:目录文件
  • 绿色:可执行文件
  • 浅蓝色:链接文件
  • 红色:压缩文件
  • 黄色:字符设备
  • 灰色:其他文件
     在这里插入图片描述

四、Linux操作系统命令使用基础

1、命令格式

$command    [option(s)]   [argument(s)]
命令名    空格  选项    空格     参数
  • command : 命令名
  • [option(s)] :选项
  • [argument(s)] :参数

注意:

  • 在命令行中,每两个部分之间有空格分隔
  • 每个命令行可使用的最多的命令字符是256个
  • 命令区分大小写
  • 不同的命令提示符使用分隔符号 “/”
  • 命令中的参数/选项可以是多个,并且参数其实就是要传入命令程序主函数main的参数。
  • [ ] 表示这个内容可以不包含,比如 [argument(s)] ,输入命令时可以不加参数

2、联机帮助、清屏与历史纪录命令

1)联机帮助

遇到一些函数和命令,不知道含义时可以是用命令man来查看帮助信息。

man ls
man -k keyword


man手册根据内容分为9个手册,可以使用下面命令查看

man man


man文档的分类编号

1 - commands(普通的命令)
2 - system calls(系统调用)

3 - library calls(库函数)
4 - special files(特殊文件:/dev下设备文件)
5 - file formats and convertions(文件格式)

6 - games for linux(游戏和娱乐)
7 - macro packages and conventions(杂项)
8 - system management commands(管理员命令)
9 - 其他(Linux特定, 用来存放内核例行程序的文档)

使用-k参数,man可以在所有的man文档和简介中查找符合条件的命令。

peng@ubuntu:~/test$ man -k bash
bash (1)             - GNU Bourne-Again SHell
bash-builtins (7)    - bash built-in commands, see bash(1)
bashbug (1)          - report a bug in bash
builtins (7)         - bash built-in commands, see bash(1)
dh_bash-completion (1) - install bash completions for package
rbash (1)            - restricted bash, see bash(1)

有的关键词在系统中对应多个手册,
使用-f参数,用于查找同名的手册:

peng@ubuntu:~/test$ man -f time
time (7)             - overview of time and timers
time (1)             - run programs and summarize system resource usage
time (2)             - get time in seconds

2)清屏 clear

清屏使用命令clear或者使用快捷键:ctrl + l

3)历史纪录 history(history -n)

这是一个非常有用的命令,想知道之前输入过的所有命令,就可以用他。

history :查看最近使用的命令,最多500条
history n :曾经使用的最近n条命令
!n    :执行最近第n条命令
!!    :执行最近使用的第一条命令
方向上键:执行上一条命令
方向下键:执行下一条命令

五、文件管理

1)查看文件目录

下面这几个命令是使用最频繁的命令:

命令说明
pwd显示当前工作目录
cd [要改变的目录]改变目录
ls列出当前目录的文件和子目录
file辨识文件类型
  • cd
cd  //回到当前用户主目录
cd ~//回到当前用户主目录
cd ~[用户名]  //进入指定用户主目录
  • file
    功能说明:辨识文件类型。
语法:file [-beLvz][-f <名称文件>][-m <魔法数字文件>][文件或目录…] 

参数:

 -b  列出辨识结果时,不显示文件名称。 
 -c  详细显示指令执行过程,便于排错或分析程序执行的情形。 
 -f<名称文件>  指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。
 -L  直接显示符号连接所指向的文件的类别。 
 -m<魔法数字文件>  指定魔法数字文件。 
 -v  显示版本信息。 
 -z  尝试去解读压缩文件的内容。

补充说明:通过file指令,我们得以辨识该文件的类型。

peng@ubuntu:~/test$ file wait.c 
wait.c: ASCII text
peng@ubuntu:~/test$ file fifo_file 
fifo_file: fifo (named pipe)

2) 文件路径

什么是文件的路径?
就是文件存放的地方,可以联想为 文件的“家”。

在Linux中,存在着绝对路径和相对路径:

绝对路径:

路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql

相对路径:

路径的写法不是由根目录 / 写起的。

例如 首先用户进入到 /home,然后再进入到peng,执行的命令为

#cd /home
#cd peng

此时用户所在的路径为 /home/peng。

第一个cd命令后紧跟/home,前面有斜杠,是绝对路径;
而第二个cd命令后紧跟peng,前面没有斜杠,表示从当前目录下找peng这个目录,这个peng是相对于/home目录来讲的,所以称为相对路径。

3)创建和删除文件目录

1、创建文件touch

功能说明:

文件名不存在,则创建一个新的空文件
如果文件名存在,更新该文件或者目录的修改访问时间,内容不变。

语法:

touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间>][–help]   [–version][文件或目录…]touch [-acfm][–help][–version][日期时间][文件或目录…]

补充说明:
使用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间。

参数:

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

2、创建目录mkdir

功能说明:

建立目录

语法:

mkdir [-p][–help][–version][-m <目录属性>][目录名称]

补充说明:
mkdir可建立目录并同时设置目录的权限。

参数:

  -m<目录属性>或–mode<目录属性>   建立目录时同时设置目录的权限。
  -p或–parents   若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
  –help   显示帮助。
  –verbose   执行时显示详细的信息。
  –version   显示版本信息。

3、删除文件rm

功能说明:

删除文件或目录。

语法:

rm [-dfirv][–help][–version][文件或目录…]

补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数”-r”,否则预设仅会删除文件。

参数:

 -d或–directory  直接把欲删除的目录的硬连接数据删成0,删除该目录。 
 -f或–force  强制删除文件或目录。 
 -i或–interactive  删除既有文件或目录之前先询问用户。 
 -r或-R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
 -v或–verbose  显示指令执行过程。 
 –help  在线帮助。 
 –version  显示版本信息。

4、删除目录

rmdir(remove directory)

功能说明:删除目录。

语  法:rmdir [-p][–help][–ignore-fail-on-non-empty][–verbose][–version][目录…]

补充说明:当有空目录要删除时,可使用rmdir指令。

参  数:
-p或–parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。
–help 在线帮助。
–ignore-fail-on-non-empty 忽略非空目录的错误信息。
–verbose 显示指令执行过程。
–version 显示版本信息。

3)显示文件内容

1. cat

功能:

把档案串连接后传到基本输出到屏幕或加 > fileName 到另一个档案

使用权限:

所有使用者 

语法:

cat [-AbeEnstTuv] [–help] [–version] fileName 

参数:

-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting

范例:

cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

cat < /dev/stdin > 1.txt //利用输入重定向 CRTL+D 结束输入
cat /dev/null > 1.txt   //输出重定向进行清空

2. head

功能:

查找文件的前多少行

语法:

head [-n] filename

3. tail

功能:

查找文件的莫问多少行

语法:

tail [-n] filename

4. more

功能:

分屏显示

用法

more filename

4)拷贝和移动文件目录

1. cp

功能说明:

cp 源文件 目标文件
将源文件复制为目标文件或目录。

语法:

cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][–help][–spares=<使用时机>][–version][源文件或目录][目标文件或目录] [目的目录]

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

2. mv

功能说明:

mv [源文件、目录] [目的文件、目录]
移动或更名现有的文件或目录。

语法:

mv [-bfiuv][–help][–version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]

补充说明:
mv可移动文件或目录,或是更改文件或目录的名称。

参数:

 -b或–backup  若需覆盖文件,则覆盖前先行备份。 
 -f或–force  若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。 
 -i或–interactive  覆盖前先行询问用户。 
 -S<附加字尾>或
 –suffix=<附加字尾>  与-b参数一并使用,可指定备份文件的所要附加的字尾。 
 -u或–update  在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。 
 -v或–verbose  执行时显示详细的信息。 
 -V=<方法>或
 –version-control=<方法>  与-b参数一并使用,可指定备份的方法。 
 –help  显示帮助。 
 –version  显示版本信息

5)文件目录权限

1. 权限

文件的权限:

以普通文件为例,使用 ls -l 命令,可以看到结果的第一列是 -rwxrwxrwx 的形式,其中第一个字符 “-” 表示这个文件为普通文件,它也可以是其他的字符,不同的字符代表不同类型的文件。其后的一串字符表明了该文件的权限,其中:

  • 1)r 表明该文件具有可读权限,若该位置为 “-” ,则表明文件不可读;
  • 2)w 表明该文件具有写权限,若该位置为 “-” ,则表明文件不可写;
  • 3)x 表明该文件具有可执行权限,若该位置为 “-” ,则表明文件不具有可执行权限;
  • 4)第一个 rwx 表示该文件的所有者对该文件的权限;第二个 rwx 表示该文件所属组对该文件的权限;第三个 rwx 表示其他用户对该文件的权限。

2. 权限所属对象

文件所有者:生成文件或目录的当前人,权限最高,用u表示。
文件所属用户组:系统管理员分配的的同组一个或几个人,用g表示。
其他人对此文件的权限:除拥有者、用户组以外的人,用o 表示。
所有人:包括拥有者,所属用户组、其他用户,用a表示

-rwxr(所有者) -xr(所在组) -x(其他人)

3.修改属性chmod

chmod命令用来修改文件目录的访问权限,修改权限的前提条件是在修改权限时具有可操作权限。

(a)用字母表示权限
Who(u、g、o、a)+cp(“=”设置权限“+”添加权限“-”删除权限)+permission(“r”读权限“w”写权限“x”操作权限)
例如:

chmod  g=wr  1.c;
chmod  u+w,g-w,o=wr 1.c

(b)用八进制数字表示权限

 r      w   x
 0      0       0   无权限
 1      1       1   有权限
R:4,w;2,x:1

例如 :

Chmod 777 build   将build的权限成所有人rwx

注意:在Ubuntu中建立的文件默认权限是664

4. Chown改变文件的所属者和所属组

chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。

语法

chown [-cfhvR] [--help] [--version] user[:group] file...

参数 :

user : 新的文件拥有者的使用者 ID
group : 新的文件拥有者的使用者组(group)
-c : 显示更改的部分的信息
-f : 忽略错误信息
-h :修复符号链接
-v : 显示详细的处理信息
-R : 处理指定目录以及其子目录下的所有文件
--help : 显示辅助说明
--version : 显示版本

实例:
把 /var/run/httpd.pid 的所有者设置 root:

chown root /var/run/httpd.pid

5. chgrp改变文件或目录所属组

Linux chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。

与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。

语法

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

参数说明:

  -c或--changes 效果类似"-v"参数,但仅回报更改的部分。
  -f或--quiet或--silent  不显示错误信息。
  -h或--no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。
  -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
  -v或--verbose  显示指令执行过程。
  --help  在线帮助。
  --reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
  --version  显示版本信息。

Chown、chgroup使用频率较低,了解即可。

6)find查找文件

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。

如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

我们有时候还要模糊查找某个文件,比如根据文件的后缀名,文件创建时间,文件大小等等。

语法:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \\;

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。

如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

参数说明:



-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-user 按照用户(文件的属主)
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-mtime 按照最后一次修改时间
-atime 按照最后一次访问时间
-perm :按照文件的权限
-type typen : 查找文件类型为typen的文件
	c: 字符设备
	d: 目录
	c: 字型装置文件
	b: 区块装置文件
	p: 具名贮列
	f: 一般文件
	l: 符号连结
	s: socket

注意
find 的使用条件所查找的路径必须具有读权限。
查找选项通过文件属性来查找。

例如:
实例

  • 1.将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
# find . -name "*.c"
  • 2.将目前目录其其下子目录中所有一般文件列出
# find . -type f
  • 3.将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
# find . -ctime -20
  • 4.查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \\;
  • 5.查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \\;
  • 6.查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \\;
  1. whereis
    whereis命令用于查找文件。
    该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
    该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

语法

whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

参数:

-b  只查找二进制文件。
-B<目录>  只在设置的目录下查找二进制文件。
-f  不显示文件名前的路径名称。
-m  只查找说明文件。
-M<目录>  只在设置的目录下查找说明文件。
-s  只查找原始代码文件。
-S<目录>  只在设置的目录下查找原始代码文件。
-u  查找不包含指定类型的文件。

实例:

  • 1.使用指令"whereis"查看指令"bash"的位置,输入如下命令:
peng@ubuntu:~/test$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
  • 2.查找标准库头文件stdio.h位置
peng@ubuntu:~/test$ whereis stdio.h
stdio: /usr/include/stdio.h /usr/share/man/man3/stdio.3.gz

7)grep过滤和统计

功能:
查出包含某些字符串的结果,对文件或输出结果进行过滤,对于大小写有一定 要求。

语法:

grep [option] string filename

补充说明:
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。

-A<显示行数>:除了显示匹配 pattern 的那一行外,显示该行之后的内容
-B<显示行数>:除了显示匹配 pattern 的那一行外,显示该行之前的内容
-C<显示行数>:除了显示匹配 pattern 的那一行外,显示该行前、后的内容
-c:统计匹配的行数
-e:同时匹配多个pattern
-i:忽略字符的大小写
-n:显示匹配的行号
-o:只显示匹配的字符串
-v:显示没有匹配pattern的那一行,相当于反向匹配
-w:匹配整个单词

举例:

1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

grep test *file 

2、以递归的方式查找符合条件的文件。
例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:

grep -r update /etc/acpi  

3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:

grep -v test *test*

grep应用非常频繁,经常还会和正则表达式一起使用,常用的正则表达式:

.:任意单个字符
*:任意字符多次
[以上是关于Linux入门的基础知识点,有这篇就够了(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

Linux入门的基础知识点汇总,有这篇就够了

Shiro入门这篇就够了Shiro的基础知识回顾URL拦截

python 生成器和迭代器有这篇就够了

不会装系统?有这篇就够了!

Nginx 性能优化有这篇就够了!

Nginx 性能优化有这篇就够了!