linux 入门最基础篇~

linux知识点该如何学习?

整理笔记就如同顺水推舟 听过的 理解到的都不如整理下来

360截图20180506144016691

linux基础

  1. 计算机系统
  2. 计算机硬组件
  3. 操作系统
  4. linux相关介绍
  5. linux哲学思想
  6. 获取linux
  7. 虚拟机

服务和安全

Linux系统属于开放源代码软件,由于Linux系统具有稳定、安全、网络负载力强、占用硬件资源少等技术特点,自问世以来得到了迅速推广和应用,并已发展为当今世界的主流操作系统之一。目前对Linux感兴趣的用户主要集中在一些垂直行业当中。在国外,企图提升利润率的有零售、家电行业,包括石油、动画设计等在内的计算密集型应用企业,还有想通过Linux的成本控制来提高企业竞争优势的一些电信、政府和医疗行业。对于零售行业的POS终端和数据中心而言,Linux既可靠又便宜。石油行业则通常利用上千个结点的Linux集群来承担石油勘探中的大量运算工作。国内的企业应用同样也迅速普及。由于电子政务的“崛起”,政府行业已占据了Linux市场的大量份额。能源行业的Linux应用在国内市场份额上也名列前茅。金融、电信等传统大行业应用Linux的趋势已然显露。可以总结出Linux的擅长应用领域是:

1.单一应用的基础服务器,如DNS和DHCP服务器、Web服务器、防火墙、文件和互联网代理服务器。

2.界定清晰,与其他系统没有交叉的应用。

3.高性能计算及计算密集型应用,如风险分析、数据分析、数据建模等。

4.中小型数据库。

对于那些应用很单纯的企业,购买Linux软件的成本优势则十分明显。与Windows系列相比,Linux令人欣慰的一点是其出色的安全性,可以降低管理成本。这也是使很多公司转向Linux的一个非常重要的原因。在Windows服务器上,补丁让人应接不暇,耗费大量时间和精力。于是,人们选择了Linux。尽管Linux也会受病毒和黑客的侵扰,但是Linux内核毕竟是由众多具有黑客背景的程序员逐步完善而来的,相对安全一些。

目前,Linux真正的优势和发展方向是作为服务器操作系统。根据需要,Linux可安装成各种各样的服务器。

Linux是一个十分稳定的操作系统,目前用户已逾千万。但是,Linux服务器是否安全,这对Linux的用户来说是十分关心的问题。

Linux集群

1. 什么是集群?

简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。

集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直到Linux集群的出现,集群的概念才得以广为传播。

集群系统主要分为高可用(High Availability)集群,简称 HA 集群,和高性能计算(High Perfermance Computing)集群,简称 HPC 集群。

2. 基于 Linux 的集群

在 Linux 出现前,集群系统采用的操作系统主要有 VMS、UNIX 和 WindowsNT。

到九十年代末期,Linux 操作系统不断走向成熟,它的健壮性不断增强,并且提供了 GNU 软件和标准化的 PVM、MPI 消息传递机制,最重要的是 Linux 在普通 PC 机上提供了对高性能网络的支持,这样就大大推动了基于 Linux 的集群系统的普及和发展。

Linux运维工具

1、查看进程占用带宽情况-Nethogs

2、硬盘读取性能测试-IOZone

3、实时监控磁盘IO-IOTop

4、网络流量监控-IPtrafIPtraf是一个运行在Linux下的简单的网络状况分析工具。

5、网络流量监控-IFTop

6、进程实时监控-HTop

7、系统资源监控-NMON

8、监控多个日志-MultiTail

9、SSH暴力破解防护-Fail2ban

10、连接会话终端持续化-Tmux

等待。。。。。。

架构师

系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。

一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。

架构师在软件开发的整个过程中起着很重要的作用。

MySQL DBA

系统架构、设计应用技巧、SQL语句优化、服务器性能调优、

系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题

虚拟化技术

计算机中,虚拟化英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件。

冯诺依曼体系的五大基本部件

冯诺依曼体系

Linux操作系统基础

  • Linux操作系统的发展历史

1960年麻省理工可以30个人同时使用计算机,1965年火星计划–计划300人共同使用,1969年火星计划失败,贝尔实验室Ken tompson(C语言设计者)利用火星代码开发了一个file server system并受好评;Ken tompson与Dennis richres经过4年,1973年开发出一个系统UNIX系统并开源,随后在Unix基础之上IBM开发出aiz、sun公司开发Solaris、HP开发HP unix、伯克利分校开发bsd、minix等都需要安装在特定的电脑上;

1991年芬兰的研究生Linus希望将minix移植到pc上,1994年发布Linux的1.0版本开源无桌面,随后Redhat再Linux基础之上开发软件、桌面等开始收费、s.u.s.c也开发桌面、中国开发红旗、;

  1. 1999年,IBM宣布与Redhat建立伙伴关系;
  2. 2000年,Sun公司在Linux压力下降低Solaris8售价;
  3. 2001年IBM投入10亿美元扩大Linux系统运用,8月红色代码爆发,许多站点转向Linux;
  4. 2002年宣布Linux系统支持64位计算机;
  5. 2003年1月,NEC宣布在手机中使用Linux,代表Linux进军手机领域;
  6. 2004年6月世界500强中使用Linux的占到280席,IBM准备退出OpenPower服务器,仅支持Linux系统;
  •  常见的开源协定

1.GPLv2, GPLv3, LGPL(lesser):通用公共许可copyleft

2.Apache: apache

3.BSD: bsd

4.Mozilla

5.Apache

6.MIT

 

1.人机交互接口shell介绍:

shell是  linux系统的用户界面

提供用户与内核进行交互操作的一种接口。

LINUX的命令解释器(command interpreter)

是一种高级程序设计语言

GUI(图形界面)

CLI(命令行界面)

查看当前环境使用的shell是那种即:

图片1

查看当前系统使用的所有shell 有哪些即:

 图片2

其中 cat 显示查看 文件内容

 

  • 数据结构的常见组织方式:
  1. key/value
  2. 树状结构
  3. 图状结构
  4. 链式结构(环链、单链、双向链表、循环链表)

  • 终端分类:

  1. 物理终端 ————表示: dev/console
  2. 虚拟终端 ————表示: /dev/tty#
  3. 图形终端 ————图形桌面环境

CentOS 6: Ctrl + Alt + F7

CentOS 7: 在哪个终端启动,即位于哪个虚拟终端

4.串行终端 ————表示: /dev/ttys#

5.伪终端  ————表示:/dev/pts#

查看当前设备终端命令:tty

  • 命令提示符”[root@localhost ~]# “各字段说明

[root@localhost ~] ——》靠环境变量定义,称为PS1

图片3

\u :当期用户

\h :主机名简写

\w :当前工作目录

其中#号为命令提示符其有两种

1.# 表示管理员登录

2.$ 表示普通用户登录

图片4

  • Xshell远程终端使用:

1.xshell:> ssh

图片5

随后输入登录账号 和 密码

2.USERNAME@IP

图片6

随后输入登录对应账号的密码

  • Linux哲学思想
  1. 一切皆文件(包括硬件)
  2. 小型,单一用途的程序
  3. 链接程序,共同完成复杂的程序
  4. 避免令人困惑的用户界面
  5. 配置数据储存在文本中

  • Linux文件系统文件路径表示:

  • 命令的通用语法格式:$ COMMAND  OPTIONS  ARGUMENTS

命令格式:$ COMMAND  OPTIONS  ARGUMENTS

              命令        选项       参数

选项:用于启用或关闭命令的某个或某些功能

短选项:-c 例如:-l, -h

长选项:–word 例如:–all, –human-readable

参数:命令的作用对象,比如文件名,用户名等

注意:

  1. 多个选项以及多参数和命令之间使用空白字符分隔
  2. 取消和结束命令执行:Ctrl+c,Ctrl+d
  3. 多个命令可以用;符号分开
  4. 一个命令可以用\分成多行

  • 命令帮助获取man手册详解:

man命令用来提供在线帮助,使用权限是所有用户。在Linux系统中存储着一部联机使用的手册,以供用户在终端上查找。使用man命令可以调阅其中的帮助信息,非常方便和实用。

man 参数 命令name

-C config_file:指定设定文件man.conf,缺省值是/etc/man.conf。
-M path:指定了联机手册的搜寻路径, 如果没有指定则使用环境变数MANPATH的设定;如果没有使用 MANPATH,则会使用/usr/lib/man.conf内的设定;如果MANPATH是空字串,则表示使用缺省值。
-P pager:指定使用何种pager.man会优先使用此选项设定,然后是依环境变数MANPAGER设定,然后是环境变数PAGER;man缺省使用/usr/bin/less
-is。
-S section_list man:所搜寻的章节列表(以冒号分隔),此选项会覆盖环境变数MANSECT的设定。
-a man:缺省情况是在显示第一个找到的手册之后,就会停止搜寻,使用此选项会强迫man继续显示所有符合name的联机手册。
-c:即使有最新的cat page,也继续对联机手册重新作排版,本选项在屏幕的行列数改变时或已排版的联机手册损坏时特别有意义。
-d:不要真的显示联机手册,只显示除错讯息。
-D:同时显示联机手册与除错讯息。
-h:显示求助讯息然后结束程式 。
-K:对所有的联机手册搜寻所指定的字串。请注意,本功能回应速度可能很慢,如果指定section(区域)会对速度有帮助。
-m system:依所指定的system名称而指定另一组的联机手册。

man:是manual(手册)的缩写。在输入命令有困难时,可以立刻得到这个文档。例如, 如果使用ps命令时遇到困难,可以输入man
ps得到帮助信息,此时会显示出ps的手册页(man page)。

由于手册页man page是用less程序来看的(可以方便地使屏幕上翻和下翻), 所以在man page里可以使用less的所有选项。
less中比较重要的功能键有:
[q] 退出;
[Enter] 一行行地下翻;
[Space] 一页页地下翻;
[b] 上翻一页;
[/] 后跟一个字符串和[Enter]来查找字符串;
[n] 发现上一次查找的下一个匹配。

  • linux常用命令详解

ls查看 目录下的文件

英文全名:List即列表的意

ls跟dos下的dir命令是一样的都是用来列出目录下的文件,下面ls的用法

  1. ls -a 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。
  2. ls -l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。
  3. ls -F 在每一个文件的末尾加上一个字符说明该文件的类型。”@”表示符号链接、”|”表示FIFOS、”/”表示目录、”=”表示套接字。
  4. ls -s 在每个文件的后面打印出文件的大小。 size(大小)
  5. ls -t 按时间进行文件的排序 Time(时间)
  6. ls -A 列出除了”.”和”..”以外的文件。
  7. ls -R 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现
  8. ls -L 列出文件的链接名。Link(链接)
  9. ls -S 以文件的大小进行排序

以上是一些关于ls命令的一些用法,当然还有好多没有列出来,大家可以man一下。

[liulian@localhost ~]$ man ls

ls可以结合管道符”|“来进行一下复杂的操作。比如: ls | less用于实现文件列表的分页,ls

 

最后说一下linux下文件的一些文件颜色的含义

  1. 绿色—->代表可执行文件,(绿色代表通行证的意思)呵呵
  2. 红色—->代表压缩文件
  3. 深蓝色—->代表目录
  4. 浅蓝色—–>代表链接文件
  5. 灰色—->代表其它的一些文件

 

cd 切换 目录

Linux其他的命令语句要进行操作,都是建立在使用 cd 命令上的。

命令格式:cd [目录名]

命令功能:切换当前目录至dirName

常用范例

———————————————————————————————————–

例一:进入系统根目录

命令:cd /

输出:[root@localhost ~]# cd /

说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了

命令:cd .. 或者 cd .. //

输出:

[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ..
[root@localhost opt]# cd ..//
[root@localhost /]# pwd

说明:进入系统根目录可以使用“ cd .. ”一直退,就可以到达根目录

命令:cd ../.. //

输出:

[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ../.. //
[root@localhost /]# pwd
/
[root@localhost /]#

说明:使用cd 命令实现进入当前目录的父目录的父目录。

———————————————————————————————————-

例2:使用 cd 命令进入当前用户主目录

“当前用户主目录”和“系统根目录”是两个不同的概念。进入当前用户主目录有两个方法。

命令1:cd

输出:

[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd
[root@localhost ~]# pwd
/root

命令2:cd ~

输出:

[root@localhost ~]# cd /opt/soft/
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ~
[root@localhost ~]# pwd
/root

———————————————————————————————————-

例3:跳转到指定目录

命令: cd /opt/soft

输出:

[root@localhost ~]# cd /opt/soft
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd jdk1.6.0_16/
[root@localhost jdk1.6.0_16]# pwd
/opt/soft/jdk1.6.0_16
[root@localhost jdk1.6.0_16]#

说明:

跳转到指定目录,从根目录开始,目录名称前加 / ,当前目录内的子目录直接写名称即可

———————————————————————————————————-

例四:返回进入此目录之前所在的目录

命令:cd –

输出:

[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd –
/root
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd –
/opt/soft
[root@localhost soft]#

———————————————————————————————————-

例五:把上个命令的参数作为cd参数使用

命令:cd !$

输出:

[root@localhost soft]# cd !$
cd –
/root
[root@localhost ~]# cd !$
cd –
/opt/soft
[root@localhost soft]#

———————————————————————————————————-

cat 查看 文件内容(针对小文件)

cat主要有三大功能:

1.一次显示整个文件。

$ cat   filename

2.从键盘创建一个文件。

$ cat  >  filename只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件。

$cat   file1   file2  > file

  • cat具体命令格式为 : cat [-AbeEnstTuv] [–help] [–version] fileName
    说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)
    参数:
    -n 或 –number 由 1 开始对所有输出的行数编号
    -b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 –show-nonprinting
    范例:
    cat -n linuxfile1 > linuxfile2 把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
    cat -b linuxfile1 linuxfile2 >> linuxfile3 把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3 里。
    范例:
    把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
    cat -n linuxfile1 > linuxfile2
    把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到 linuxfile3 里。
    cat -b linuxfile1 linuxfile2 >> linuxfile3
    cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容

在linux shell脚本中我们经常见到类似于cat << EOF的语句,不熟悉的童鞋可能觉得很奇怪:EOF好像是文件的结束符,用在这里起到什么作用?
EOF是“end of file”,表示文本结束符。
<<EOF
(内容)
EOF

cat

首先必须要说明的是EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。
可以把EOF替换成其他东西,意思是把内容当作标准输入传给程
结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。

接下来,简单描述一下几种常见的使用方式及其作用:
1、cat<<EOF,以EOF输入字符为标准输入结束:
2、cat>filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束:
注意:输入时是没有’>’的。
3、cat>filename<<EOF,以EOF作为输入结束,和ctrl+d的作用一样:

二、使用
看例子是最快的熟悉方法:
# cat << EOF > test.sh
> #!/bin/bash             #“shell脚本”
> #you Shell script writes here.
> EOF

结果:
引用# cat test.sh
#!/bin/bash
#you Shell script writes here.

可以看到,test.sh的内容就是cat生成的内容。
cat <<EOF >test.sh  内容 EOF
—就是将内容写入test.sh,之前存在的内容会被覆盖掉。EOF可以换成其他符号比如EEE:cat <<EEE  >test.sh  内容 EEE

三、其他写法
1、追加文件
# cat << EOF >> test.sh  内容  EOF
—将内容追加到 test.sh 的后面,不会覆盖掉原有的内容
2、换一种写法
# cat > test.sh << EOF 内容  EOF
3、EOF只是标识,不是固定的
# cat << HHH > iii.txt
> sdlkfjksl
> sdkjflk
> asdlfj
> HHH
这里的“HHH”就代替了“EOF”的功能。结果是相同的。
引用# cat iii.txt
sdlkfjksl
sdkjflk
asdlfj

4、非脚本中
如果不是在脚本中,我们可以用Ctrl-D输出EOF的标识
# cat > iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk
Ctrl-D

结果:
引用# cat iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk

less 查看 文件内容(针对大文件)

less 在查看之前不会加载整个文件。可以尝试使用 less 和 vi 打开一个很大的文件,你就会看到它们之间在速度上的区别。

在 less 中导航命令类似于 vi。本文中将介绍一些导航命令以及使用 less 的其它一些技巧。

1 搜索

当使用命令 less file-name 打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会被高亮显示。

向前搜索

/ – 使用一个模式进行搜索,并定位到下一个匹配的文本

n – 向前查找下一个匹配的文本

N – 向后查找前一个匹配的文本

向后搜索

? – 使用模式进行搜索,并定位到前一个匹配的文本

n – 向后查找下一个匹配的文本

N – 向前查找前一个匹配的文本

2 全屏导航

ctrl + F – 向前移动一屏

ctrl + B – 向后移动一屏

ctrl + D – 向前移动半屏

ctrl + U – 向后移动半屏

3 单行导航

j – 向前移动一行

k – 向后移动一行

4 其它导航

G – 移动到最后一行

g – 移动到第一行

q / ZZ – 退出 less 命令

5 其它有用的命令

v – 使用配置的编辑器编辑当前文件

h – 显示 less 的帮助文档

&pattern – 仅显示匹配模式的行,而不是整个文件

6 标记导航

当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。

ma – 使用 a 标记文本的当前位置

‘a – 导航到标记 a 处

7 浏览多个文件

方式一,传递多个参数给 less,就能浏览多个文件。

less file1 file2

方式二,正在浏览一个文件时,使用 :e 打开另一个文件。

less file1

:e file2

当打开多个文件时,使用如下命令在多个文件之间切换

:n – 浏览下一个文件

:p – 浏览前一个文件

more 查看 文件内容

  1. more  [+起始行号] | [+/初始查找模式]  [文件]

其中[+起始行号]和[+/初始查找模式]这两个选项不能同时使用。如没有这两个选项,more从文件头开始显示。文件参数默认,more从标准输入读。

more命令每输出一屏后,在屏幕下方给出类似这样的提示信息:


  1. – More – –  ( 20% )

(从中可知命令名more的来历。)提示还有数据没有显示完,已显示了全文件的20%。

在看到提示后,用户可以输入以下主要的more内部命令:

空格键        显示下一屏。

Enter键        显示下一行。

nf            向下移动n屏,其中n是数字。

nb            向上移动n屏,其中n是数字。

/模式         向下查找指定的字符串模式。

n             重复前面查找命令。

=             显示当前的行号。

h             显示more所有命令的帮助信息。

q             退出more。

pg命令的使用方法与more类似,但在pg的显示中,按Enter而不是空格键显示下一屏,而且在输入每个命令后也必须按下Enter键。

范例:
more -s testfile        %逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile     %从第 20 行开始显示 testfile 之档案内容。
more example1.c    % 用分页的方式显示一个文件的内容。
more -c -10 example1.c      % 执行该命令后,先清屏,然后将以每十行每十行的方式显示文件example.c的内容。

touch 创建 文件

在Linux中,touch命令主要是用于新建一个不存在的文件或者是对于文件的时间戳进行修改;

(1)使用touch命令新建一个不存在的文件1

使用touch新建了一个文件,然后使用ls -a进行文件目录进行打印,没有找到change.txt文件;

(2)使用touch指令对于文件的时间戳进行修改;

touch -a:

2

touch -a test.c对于文件的存取时间进行修改;

touch -d3

touch -d 是使用自己已知的时间去修改文件的时间;

touch -t 也是使用指定的时间去修改文件的时间戳;修改时间的时间格式为[[CC]YY]MMDDhhmm[.ss],其中CC为centory世纪数,YY为year哪一年,MM为month哪一个月,DD为day哪一天,hh为hour表示小时,mm为minute表示分钟,ss为second表示秒。

touch -m 4

touch -m 只更改変动时间;

touch-r:5把指定文件或目录的时间设置与参考文件或目录的时间一致;

注:图中test2.c为参考文件,test.c为指定文件;

mkdir 创建 文件夹

mkdir命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

1、命令格式

mkdir [选项]目录

2、命令功能

通过该命令可以在指定的位置创建名称为dirName的文件夹或目录。要求创建文件夹或目录的用户必须对所创建的文件夹父文件夹具有写权限,但在同一个文件夹或目录下不能有同名(区分大小写)的文件夹或目录。

3、命令参数

-m,-mode=模式,设定权限<模式>(类似chmod),而不是rwxrwxrwx或umask

-p,–parents,可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

-v,–verbose,每次创建新目录都显示信息。

–help,显示帮助信息并退出。

–version,输出版本信息并退出。

4、命令实例

实例1:创建一个空目录

命令:mkdir test1

实例2:递归创建多个目录

命令:mkdir -p test1/test11

实例3:创建权限为777的目录

命令:mkdir -m 777 test3

实例4:创建新目录都显示信息

命令:mkdir -v test4

实例5:一个命令创建项目的目录结构

命令:mkdir -vp test/test1/test2/test3

rm 删除 文件或者文件夹

该命令用来删除Linux系统中的文件或目录。通常情况下rm不会删除目录,你必须通过指定参数-r或-R来删除目录。另外rm通常可以将该文件或目录恢复(注意,rm删除文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上。如果想要保证文件的内容无法复原,可以使用命令shred 。 另外一般还是要慎用rm -rf *这样的命令。

执行权限 :All User

指令所在路径:/bin/rm

 

命令语法:

rm [OPTION]… FILE…

命令参数:

参数

长参数

描叙

-f

–force

强制删除,忽略不存在的文件,从不给出提示。

-i

–interactive

交互模式删除文件,删除文件前给出提示。

-r

–recursive

递归的删除目录下面文件以及子目录下文件。

-R

–recursive

递归的删除目录下面文件以及子目录下文件。

-v

–verbose

显示运行时详细信息

–help

显示命令在线帮助

–version

显示命令版本信息

rmdir 删除 文件夹

该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限。

命令参数

-p:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息;

-v或 –verbose:显示指令执行过程;

-vp:显示删除多个目录的信息;

–help:显示此帮助信息并退出;

–version:输出版本信息并退出;

实例一:删除有子目录的父目录

14

实例二:删除目录显示信息

13

实例三:删除空目录

12

cp 复制 文件/文件夹

cp (复制档案或目录)

[root@linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)

[root@linux ~]# cp [options] source1 source2 source3 …. directory

参数:

  1. -a :相当于 -pdr 的意思;
  2. -d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
  3. -f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
  4. -i :若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
  5. -l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
  6. -p :连同档案的属性一起复制过去,而非使用预设属性;
  7. -r :递归持续复制,用于目录的复制行为;
  8. -s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
  9. -u :若 destination 比 source 旧才更新 destination !

最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!

范例:
范例一:将家目录下的 .bashrc 复制到 /tmp 下,并更名为 bashrc
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# cp -i ~/.bashrc bashrc
cp: overwrite `basrhc’? n
# 重复作两次动作,由于 /tmp 底下已经存在 bashrc 了,加上 -i 参数,
# 则在覆盖前会询问使用者是否确定!可以按下 n 或者 y 呢!
# 但是,反过来说,如果不想要询问时,则加上 -f 这个参数来强制直接覆盖!

范例二:将 /var/log/wtmp 复制到 /tmp 底下
[root@linux tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘
[root@linux tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-r–r– 1 root root 71808 Jul 18 21:58 wtmp
# 注意到了吗?!在不加任何参数的情况下,档案的所属者会改变,连权限也跟着改变了~
# 这是个很重要的特性!要注意喔!还有,连档案建立的时间也不一样了!
# 如果您想要将档案的所有特性都一起复制过来,可以加上 -a 喔!
[root@linux tmp]# cp -a /var/log/wtmp wtmp_2
[root@linux tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 wtmp_2
# 瞭了吧!整个资料特性完全一模一样ㄟ!真是不赖~这就是 -a 的特性!

范例三:复制 /etc/ 这个目录下的所有内容到 /tmp 底下
[root@linux tmp]# cp /etc/ /tmp
cp: omitting directory `/etc’ <== 如果是目录,不能直接复制,要加上 -r 的参数
[root@linux tmp]# cp -r /etc/ /tmp
# 还是要再次的强调喔! -r 是可以复制目录,但是,档案与目录的权限会被改变~
# 所以,也可以利用 cp -a /etc /tmp 来下达指令喔!

范例四:将范例一复制的 bashrc 建立一个连结档 (symbolic link)
[root@linux tmp]# ls -l bashrc
-rw-r–r– 1 root root 395 Jul 18 22:08 bashrc
[root@linux tmp]# cp -s bashrc bashrc_slink
[root@linux tmp]# cp -l bashrc bashrc_hlink
[root@linux tmp]# ls -l bashrc*
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc_hlink
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
# 那个 bashrc_slink 是由 -s 的参数造成的,建立的是一个『快捷方式』,
# 所以您会看到在档案的最右边,会显示这个档案是『连结』到哪里去的!
# 至于那个 bashrc_hlink 有趣了!建立了这个档案之后, bashrc 与 bashrc_hlink
# 所有的参数都一样,只是,第二栏的 link 数改变成为 2 了~而不是原本的 1 喔!
# 这两种连结的方式的异同,我们会在下一章里面进行介绍的!

范例五:若 ~/.bashrc 比 /tmp/bashrc 新才复制过来
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc
# 这个 -u 的特性,是在目标档案与来源档案有差异时,才会复制的。
# 所以,比较常被用于『备份』的工作当中喔! ^_^

范例六:将范例四造成的 bashrc_slink 复制成为 bashrc_slink_2
[root@linux tmp]# cp bashrc_slink bashrc_slink_2
[root@linux tmp]# ls -l bashrc_slink*
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
-rw-r–r– 1 root root 395 Jul 18 22:48 bashrc_slink_2
# 这个例子也是很有趣喔!原本复制的是连结档,但是却将连结档的实际档案复制过来了
# 也就是说,如果没有加上任何参数时,复制的是源文件,而非连结文件的属性!
# 若要复制连结文件的属性,就得要使用 -d 或者 -a 的参数了!

范例七:将家目录的 .bashrc 及 .bash_history 复制到 /tmp 底下
[root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以将多个数据一次复制到同一个目录去!
这个 cp 的功能很多,而由于我们常常在进行一些数据的复制,所以也会常常用到这个指令的。 一般来说,我们如果去复制别人的数据 (当然,该档案您必须要有 read 的权限才行啊!) 时, 总是希望复制到的数据最后是我们自己的,所以,在预设的条件中, cp 的来源档与目的档的权限是不同的,目的档的拥有者通常会是指令操作者本身。举例来说, 上面的范例二中,由于我是 root 的身份,因此复制过来的档案拥有者与群组就改变成为 root 所有了! 这样说,可以明白吗?!

由于具有这个特性,因此,当我们在进行备份的时候,某些需要特别注意的特殊权限档案, 例如密码文件 (/etc/shadow) 以及一些设定档,就不能直接以 cp 来复制,而必须要加上 -a 或者是 -p 等等可以完整复制档案权限的参数才行!另外,如果您想要复制档案给其它的使用者, 也必须要注意到档案的权限(包含读、写、执行以及档案拥有者等等), 否则,其它人还是无法针对您给予的档案进行修订的动作喔!注意注意!

至于上面的范例当中,第四个范例是最有趣的,使用 -l 及 -s 都会建立所谓的连结档 (link file), 但是这两种连结档确有不一样的展现情况。这是怎么一回事啊? 那个 -l 就是所谓的 hard link ,至于 -s 则是 symbolic link ,鸟哥这里先不介绍, 因为这个涉及 i-node 的相关知识,我们还没有介绍到,下一章再来讨论这个 link 的问题喔! 总之,由于 cp 有种种的档案属性与权限的特性,所以,在复制时,您必须要清楚的了解到:
• 是否需要完整的保留来源档案的信息?
• 来源档案是否为连结档 (symbolic link file)?
• 来源档是否为特殊的档案,例如 FIFO, socket 等?

mv 重命名/移动 文件/文件夹

mv(选项)(参数)    剪切,或在同目录下移动重命名

1.如果目标文件是文件夹,则源文件直接移动到该文件夹内,名字还是源文件的名字。
2.如果目标文件时文件,则源文件移动的同时也会更改名字
3.如果源文件为多个,则目标必须是目录,并且统一移动到目录下

-b:当目标文件存在时,先进行备份在覆盖

[root@bogon admin]# mv -b a/aa b/
mv: overwrite `b/aa'? y
[root@bogon admin]# ls b
aa  aa~  bb

-f:当目标文件存在时,强制覆盖

[root@bogon admin]# mv -f a/aa b/
[root@bogon admin]# ls b
aa   bb

-i:默认选项,当目标文件存在时,提示是否覆盖

[root@bogon admin]# mv -i a/aa b/
mv: overwrite `b/aa'? y
[root@bogon admin]# ls b
aa   bb

-t:先指定目标,在制定源

[root@bogon admin]# mv -t b/ a/aa
mv: overwrite `b/aa'? y
[root@bogon admin]# ls a b
a:
bb
 
b:
aa    bb

-v:显示过程

[root@bogon admin]# mv -fv a/aa b/
`a/aa' -> `b/aa'

chmod 改变文件/文件夹权限

chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1. 
文字设定法
语法:chmod [who] [+ | – | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
  表示用户(user,即文件或目录的所有者。
  表示同组(group)用户,即与文件属主有相同组ID的所有用户。
  表示其他(others)用户
  表示所有(all)用户。它是系统默认值。
操作符号可以是:
  添加某个权限。
  – 取消某个权限。
  赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
  可读。
  可写。
 可执行。
  只有目标文件对某些用户是可执行的或该目标文件是目录时才追加属性。
  在文件执行时把进程的属主或组ID置为该文件的文件属主。
方式“us”设置文件的用户ID位,“gs”设置组ID位。
  保存程序的文本到交换设备上。
  与文件属主拥有一样的权限。
  与和文件属主同组的用户拥有一样的权限。
  与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:
chmod g+r
o+r example  % 使同组和其他用户对文件example 有读权限。
2. 
数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读
权限,然后将其相加。所以数字属性的格式应为3个从07的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有/二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:
语法:chmod [mode] 文件名
指令实例:
chmod a+x sort
即设定文件sort的属性为:
 文件属主(u) 增加执行权限
 与文件属主同组用户(g) 增加执行权限
 其他用户(o) 增加执行权限
chmod ug+w
o-x text
即设定文件text的属性为:
 文件属主(u) 增加写权限
 与文件属主同组用户(g) 增加写权限
 其他用户(o) 删除执行权限
chmod u+s a.out
假设执行chmoda.out的权限为(可以用ls – l a.out命令来看):
 –rws–x–x 1 inin users 7192 Nov 4 14:22 a.out
 并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——-”
即该文件只有其属主具有读写权限。
   当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod
命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为
其他人不具备任何权限),这就是s的功能。
  因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非
必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
chmod a–x mm.txt
chmod –x mm.txt
chmod ugo–x mm.txt
以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。

$ chmod 644 mm.txt
% 即设定文件mm.txt的属性为:-rw-r–r–
 文件属主(uinin 拥有读、写权限
 与文件属主同组人用户(g) 拥有读权限
 其他人(o) 拥有读权限
chmod 750 wch.txt
即设定wchtxt这个文件的属性为:-rwxr-x—
 文件主本人(uinin 可读/可写/可执行权
 与文件主同组人(g) 可读/可执行权
 其他人(o) 没有任何权限

———————————————————————————————————–

基础框架

图片7

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98291

发表评论

登录后才能评论

评论列表(1条)

  • 马哥教育
    马哥教育 2018-05-14 17:08

    最后一个应该把每个文件夹的功能都写出来,其他的都写的很好

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班