本文最后更新于:14 天前

Linux 简介

Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux的发行版

Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

Linux具有如下优点:

Ø 稳定、免费或者花费少

Ø 安全性高

Ø 多任务,多用户

Ø 耗资源少

Ø 由于内核小,所以它可以支持多种电子产品,如:Android手机

Linux应用领域

今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)组合。

目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎。

  • 巴西联邦政府由于支持Linux而世界闻名。
  • 有新闻报道俄罗斯军队自己制造的Linux发布版的,做为G.H.ost项目已经取得成果.
  • 印度的Kerala联邦计划在向全联邦的高中推广使用Linux。
  • 中华人民共和国为取得技术独立,在龙芯过程中排他性地使用Linux。
  • 在西班牙的一些地区开发了自己的Linux发布版,并且在政府与教育领域广泛使用,如Extremadura地区的gnuLinEx和Andalusia地区的Guadalinex。
  • 葡萄牙同样使用自己的Linux发布版Caixa Mágica,用于Magalh?es笔记本电脑和e-escola政府软件。
  • 法国和德国同样开始逐步采用Linux。

linux电源管理

shutdown

  • -c 取消关机命令
  • -h 关机
  • -r 重启
shutdown now # 关机
shutdown -h 30 # 30分钟后关机 
shutdown -r now # 重启
shutdown -r 05:30 # 于05:30重启
shutdown -c # 取消关机

不保存资料直接关机

# halt
# poweroff
# init 0

重启

reboot # 重启电脑

init命令

init 0 # 关机
init 1 # 救援模式
init 3 # 进入文字模式
init 5 # 进入GUI模式
init 6 # 重启

退出登录

logout # 注销

Linux目录结构

  • /bin
    bin是Binary的缩写, 这个目录存放着最经常使用的命令。

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

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

  • /etc:
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

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

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

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

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

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

  • /proc
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

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

  • /sbin
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

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

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

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

    sysfs文件系统集成了下面3种文件系统的信息:

针对进程信息的proc文件系统

针对设备的devfs文件系统

针对伪终端的devpts文件系统。

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

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

  • /tmp
    这个目录是用来存放一些临时文件的。
  • /usr
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin:
    系统用户使用的应用程序。
  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。
  • /var
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

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

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

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

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

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

shell

Shell基本上是一个命令解释器

Shell俗称壳(用来区别于核)

它接收用户命令,然后调用相应的应用程序。

ls:

ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令,因为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。 对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其
他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当
前目录的信息。
主要的OPTION有:

-a 列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc

-l 列出文件的详细信息

-R 连同子目录中的内容一起列出

用ls -l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文

件类型,它可以是下述类型之一:

  • 普通文件

    d 目录

    l 符号链接

    b 块设备文件

    c 字符设备文件

    s socket文件,网络套接字

    p 管道

    后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写和执行权限。

    各权限如下所示:

    r 读

    w 写

    x 可执行。对于目录,表示进入权限。

    s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。

    t 设置标志位(sticky bit)。如果是有sticky bit的目录,在该目录下任何用户只要有适当的权限即可创建件,但文件只能被超级用户、目录拥有者或文件属主删除。

    如果是有sticky bit的可执行文件,在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。

  • 没有相应位置的权限。

    访问权限后面的数字表示与该文件共享inode的文件总数,即硬链接数(参见下面ln命令)。

-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);

-A:显示除影藏文件“.”和“..”以外的所有文件列表;

-C:多列显示输出结果。这是默认选项;

-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;

-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;

-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;

-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;

-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;

-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;

–file-type:与“-F”选项的功能相同,但是不显示“*”;

-k:以KB(千字节)为单位显示文件大小;

-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

-m:用“,”号区隔每个文件和目录的名称;

-n:以用户识别码和群组识别码替代其名称;

-r:以文件名反序排列并输出目录内容列表;

-s:显示文件和目录的大小,以区块为单位;

-t:用文件和目录的更改时间排序;

-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

-R:递归处理,将指定目录下的所有文件及子目录一并处理;

–full-time:列出完整的日期与时间;

–color[=WHEN]:使用不同的颜色高亮显示不同类型的。

文件权限

-rwx-rwx-rwx 
# 第一个代表文件类型
# 代表所有者的权限 
# 代表所属组的权限
# 代表其他人的权限

改变权限 - chmod

r 读取权限  如果没有r 就不能 ls 查看里面的内容   对应数字 4
w 写权限    如果没有w 就不能在目录下创建新的文件  对应数字 2
x 执行权限  如果没有x 就不能cd进入这个目录 对应数字 1
- 没权限	  对应数字 0
chmod 777 filename
rwx-rwx-rwx

cd:

切换文件夹

cd filename  # 进入文件-filename:文件名

cd -  # 返回上一次进入的目录

cd ~  # 进入根目录

cd .. # 返回上级目录

pwd:

查看你的当前绝对路径

mkdir:

mkdir [OPTION] DIRECTORY…

创建目录DIRECTORY,可以一次创建多个。OPTION如果是-p,表示可以连同父目录一起创建。

mkdir filename # 创建一个filename的文件

rmdir:

删除一个空的目录

rmdir filename # 删除一个空的filename的文件

cp:

复制文件或目录

cp file1 file2

cp file1 dir/

cp file1 ../

拷贝目录:

cp dir1 dir2 -r

cp dir1 ~/ -r

rm:

移除文件或目录

rm -r  # 递归删除文件
rm -rf # 强制删除文件*****

cat:

由第一行开始显示文件内容 -b显示行号

cat file  # 一次查看所有的文件
cat file1  file2   # 一次查看两个命令

tac :

从最后一行开始显示,可以看出 tac 是 cat 的倒著写!

tac filename

nl:

显示的时候,顺道输出行号!

nl filename

more

一页一页的显示文件内容

按Space键:显示文本的下一屏内容。

按Enier键:只显示文本的下一行内容。

按斜线符/:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。

按H键:显示帮助屏,该屏上有相关的帮助信息。

按B键:显示上一屏内容。

按Q键:退出more命令。

more filename

less

用PageUp键向上翻页,用PageDown键向下翻页

f 往后 b 往前q 退出

-e:文件内容显示完毕后,自动退出;

-f:强制显示文件;

-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;

-l:搜索时忽略大小写的差异;

-N:每一行行首显示行号;

-s:将连续多个空行压缩成一行显示;

-S:在单行显示较长的内容,而不换行显示;

-x<数字>:将TAB字符显示为指定个数的空格字符。

less -e filename

-n<数字>:指定显示头部内容的行数;

-c<字符数>:指定显示头部内容的字符数;

-v:总是显示文件名的头信息;

-q:不显示文件名的头信息。

head filename

tail

只看尾巴几行

–retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;

-c或——bytes=:输出文件尾部的N(N为整数)个字节内容;

-f<name/descriptor>或;–follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;

-F:与选项“-follow=name”和“–retry”连用时功能相同;

-n或——line=:输出文件的尾部N(N位数字)行内容。

–pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;

-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;

-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;

-v或——verbose:当有多个文件参数时,总是输出各个文件名;

–help:显示指令的帮助信息;

–version:显示指令的版本信息。

tail file # (显示文件file的最后10行)

tail -c 10 file # (显示文件file的最后10个字符)

which / whereis 查找命令

which command  # 查看    -二进制文件
whereis 可执行文件    # 二进制文件 、man手册

帮助文档:
	1.man手册  ,帮助文档    man  ls
	2.--help   , ls --help

find 查找文件

find 路径  参数  
# 常用参数 
-name   # 按照名字
-size   # 按照大小
find ./  -size +100k -size -10M  # 在当前目录下找大于100k 小于 10的文件

grep 文本搜索(筛选内容)

grep  'content'  filename
# 常用参数
-v    显示不包含匹配文本的所有‘行’ (求反)
-n    显示匹配行及行号
-i    忽略大小写
# 内容参数
^wu  行首 搜索以wu开头的行  
wh$  行尾 索以wh结束的行

| 管道

一个命令的输出,可以通过管道符,做为另一个命令的输入
命令输出  |  命令处理

ls --help | less   # 将输出,放入翻页模式中
ls --help | grep -n 'f'  #将输出,放入‘筛选’模式中
ls --help | grep -n 'f' >> 3.txt  #将输出,放入‘筛选’模式中,然后将重定向到3.txt

ln 创建链接文件

ln  file  hardlink # 硬链接
ln -s  file softlink  # 软链接

软链接: 相当于 window上的快捷方式 源文件删除则软链接失效

硬链接: 硬链接只能连接普通的文件 不能连接目录

注意 如果软链接文件和源文件不在同一个目录 源文件要使用绝对路径 不能使用相对路径

alias 创建别名

alias     # 查看所有别名   alias c4='cat 4.txt'

unalias   # 删除别名

注意 这种定义别名的方式 只在当前登录有效 如果要永久定义生效 可以通过修改~/.bashrc文件 这个修改要下次登录才能生效 想要立即生效 可以输入source ~/.bashrc