Linux
简介
Linux 历史
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 内核版本
1991 年 10 月 Linus 正式发布 0.0.2 版本内核。 Windows 10 -> Windows NT
2020年 4 月 8 日 正式发布 5.6.3 版本内核。
windows
win10 win8 win8.1 win7 winxp win2000 个人
windows server 2008 2012 2016
Linux 发行版本
目前市面上知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
Ubuntu:主要使用为日常使用
CentOS:主要为企业级使用
Linux 目录结构
系统启动必须:
-
**/boot:**存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
-
/etc:存放所有的系统需要的配置文件和**子目录列表,**更改目录下的文件可能会导致系统不能启动。
-
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
-
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
-
**/bin:**存放着最常用的程序和指令
-
**/sbin:**只有系统管理员能使用的程序和指令。
外部文件管理:
-
**/dev :**Device(设备)的缩写, 存放的是Linux的外部设备。**注意:**在Linux中访问设备和访问文件的方式是相同的。
-
/media:类windows的**其他设备,**例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
-
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
-
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
-
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
-
/tmp:这个目录是用来存放一些临时文件的。
账户:
-
/root:系统管理员的用户主目录。
-
/home:用户的主目录,以用户的账号命名的。
-
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
-
**/usr/bin:**系统用户使用的应用程序与指令。
-
**/usr/sbin:**超级用户使用的比较高级的管理程序和系统守护程序。
-
**/usr/src:**内核源代码默认的放置目录。
运行过程中要用:
-
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
-
/proc:管理**内存空间!**虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:
-
/opt:默认是空的,我们安装额外软件可以放在这个里面。
-
/srv:存放服务启动后需要提取的数据**(不用服务器就是空)**
Linux 文件基本属性
在Linux中,使用ll
或ls -l
查看当前目录下的文件。
[root@CentOS7 ~]# ll
总用量 8
-rw-------. 1 root root 1498 4月 11 18:26 anaconda-ks.cfg
drwxr-xr-x. 2 root root 38 4月 11 22:11 Desktop
drwxr-xr-x. 2 root root 6 4月 11 19:24 Documents
drwxr-xr-x. 2 root root 6 4月 11 19:24 Downloads
-rw-rwxr--. 1 root root 1546 4月 11 19:13 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 4月 11 19:24 Music
drwxr-xr-x. 2 root root 6 4月 11 19:24 Pictures
drwxr-xr-x. 2 root root 6 4月 11 19:24 Public
drwxr-xr-x. 2 root root 6 4月 11 19:24 Templates
drwxr-xr-x. 2 root root 6 4月 11 19:24 Videos
a b -> A
c d -> B
a -> file1 -> -rwxr-xr–
736
-rex-wx-rw-
r -> 4 w -> 2 x -> 1
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
(注:对root用户来说,一般情况下,文件的权限对其不起作用)
更改权限及所属的三个命令:chgrp、chown、chmod
Linux 相关命令
目录相关
相对、绝对路径
相对路径是指针对当前目录的其他文件所在的位置。
绝对路径指从根路径开始,指向目标文件的路径。
/Users/xin/Desktop/Linux.md
cd
切换目录
语法:
cd [相对路径或绝对路径]
实例:
cd / # 回到根路径
cd ~ # 回到当前用户的用户目录
cd - # 回到上一次所在目录
cd .. # 回到上一级目录
cd . # 当前目录
cd /a # 跳转到跟目录下的a目录
cd ../a # 跳转到上级目录的a目录
cd ./a # 跳转到当前目录的a目录 等同于 cd a
ls
列出目录
语法:
ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称
选项与参数:
-a
:全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)-d
:仅列出目录本身,而不是列出目录内的文件数据(常用)-l
:长数据串列出,包含文件的属性与权限等等数据;(常用)
pwd
显示当前目录
语法:
pwd [-P]
选项与参数:
-P
:显示出真实路径,而非ln的路径。
文件相关
touch
语法
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
- 参数说明:
- a 改变档案的读取时间记录。
- m 改变档案的修改时间记录。
- c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
- f 不使用,是为了与其他 unix 系统的相容性而保留。
- r 使用参考档的时间记录,与 --file 的效果一样。
- d 设定时间与日期,可以使用各种不同的格式。
- t 设定档案的时间记录,格式与 date 指令相同。
- –no-create 不会建立新档案。
- –help 列出指令格式。
- –version 列出版本讯息。
实例
使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令:
$ touch testfile #修改文件的时间属性
首先,使用ls命令查看testfile文件的属性,如下所示:
$ ls -l testfile #查看文件的时间属性
#原来文件的修改时间为16:09
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:
$ touch testfile #修改文件时间属性为当前系统时间
$ ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:
$ touch file #创建一个名为“file”的新的空白文件
mkdir
创建目录
语法:
mkdir [-mp] 目录名称
选项与参数:
-m
:配置文件的权限,直接配置-p
:递归创建
实例:
[root@CentOS7 ~] clear
[root@CentOS7 ~] mkdir test
[root@CentOS7 ~] mkdir test/test1/test2/test3
mkdir: 无法创建目录"test/test1/test2/test3": 没有那个文件或目录
[root@CentOS7 ~] mkdir -p test/test1/test2/test3
[root@CentOS7 ~] mkdir -m 700 test3
[root@CentOS7 ~] ls -l | grep test3
drwx------. 2 root root 6 4月 11 22:43 test3
rmdir
删除空的目录
语法:
rmdir [-p] 目录名称
选项与参数:
-p
:连同上一级『空的』目录也一起删除
删除 runoob 目录
[root@www tmp]# rmdir runoob/
将 mkdir 实例中创建的目录(/tmp 底下)删除掉!
[root@www tmp] ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
[root@www tmp] rmdir test
[root@www tmp] rmdir test1
rmdir: `test1': Directory not empty
[root@www tmp] rmdir -p test1/test2/test3/test4
[root@www tmp] ls -l
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。
不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录
rm
tree
cp
复制文件或目录
cp 即拷贝文件和目录。
语法:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
选项与参数:
-a
:相当於 -pdr 的意思,至于 pdr 请参考下列说明;(常用)-d
:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;-f
:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;-i
:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)-l
:进行硬式连结(hard link)的连结档创建,而非复制文件本身;-p
:连同文件的属性一起复制过去,而非使用默认属性(备份常用);-r
:递归持续复制,用於目录的复制行为;(常用)-s
:复制成为符号连结档 (symbolic link),亦即『捷径』文件;-u
:若 destination 比 source 旧才升级 destination !
用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
[root@www ~] cp ~/.bashrc /tmp/bashrc
[root@www ~] cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n
mv
移动文件与目录,或修改名称
语法:
[root@www ~] mv [-fiu] source destination
[root@www ~] mv [options] source1 source2 source3 .... directory
选项与参数:
-f
:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;-i
:若目标文件 (destination) 已经存在时,就会询问是否覆盖!-u
:若目标文件已经存在,且 source 比较新,才会升级 (update)
复制一文件,创建一目录,将文件移动到目录中
[root@www ~] cd /tmp
[root@www tmp] cp ~/.bashrc bashrc
[root@www tmp] mkdir mvtest
[root@www tmp] mv bashrc mvtest
将某个文件移动到某个目录去,就是这样做!
将刚刚的目录名称更名为 mvtest2
[root@www tmp] mv mvtest mvtest2
cat
由第一行开始显示文件内容
语法:
cat [-AbEnTv]
选项与参数:
-A
:相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;-b
:列出行号,仅针对非空白行做行号显示,空白行不标行号!-E
:将结尾的断行字节 $ 显示出来;-n
:列印出行号,连同空白行也会有行号,与 -b 的选项不同;-T
:将 [tab] 按键以 ^I 显示出来;-v
:列出一些看不出来的特殊字符
检看 /etc/issue 这个文件的内容:
[root@www ~] cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
more
一页一页翻动
[root@www ~] more /etc/man_db.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行 你的光标也会在这里等待你的命令
在 more 这个程序的运行过程中,你有几个按键可以按的:
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less
一页一页翻动,以下实例输出/etc/man.config文件的内容:
[root@www ~] less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!
less运行时可以输入的命令有:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
tail
取出文件后面几行
语法:
tail [-n number] 文件
选项与参数:
- -n :后面接数字,代表显示几行的意思
- -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~] tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~] tail -n 20 /etc/man.config
管道符
grep
sed
远程管理相关
关机、重启
halt
Reboot
ifconfig
– ipconfig
ping
ssh
ssh user@ip
scp
scp -r file user@ip:/dir/
用户权限相关
chmod
chmod 777 file
chown
chown -R user:group file[dir]
chgrp
用户相关
who
whoami
which
su
su -
su
sudo
系统信息
date
cal
df
du
ps
top
kill
kill -9