Linux教程

Linux实操篇入门笔记

本文主要是介绍Linux实操篇入门笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • Linux网络连接的三种模式

  1. 桥接模式 ,虚拟系统可以和外部系统通讯,但容易造成IP冲突
  2. NAT模式,网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突 “一般推荐直接使用NAT模式即可”
  3. 主机模式,独立系统
  • 文件目录结构

  • 具体的目录结构(不用背,知道即可)
  1. /bin $\color{red}{[常用]}$ (/usr/bin、/usr/local/bin) 是Binary的缩写,这个目录存放着最常用使用的命令

  2. /sbin $\color{red}{[常用]}$ s就是Super user的意思,这里存放的是系统管理员使用的系统管理程序。

  3. /home $\color{red}{[常用]}$ 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户账户命名

  4. /root $\color{red}{[常用]}$ 该目录为系统管理员,超级权限的用户主目录。

  5. /etc $\color{red}{[常用]}$ 所有的系统管理所需要的配置文件和子目录,例如安装MySQL数据库my.conf等等...

  6. /usr $\color{red}{[常用]}$ 非常重要的目录吗,用户的很多应用程序和文件都放在这个目录,类似于windows下的program目录。

  7. /boot $\color{red}{[常用]}$ 是Linux启动的时候使用的一些核心文件,包括一些连接文件以及镜像文件

  8. /proc $\color{green}{[不能动]}$ 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

  9. /srv$\color{green}{[不能动]}$ service缩写,该目录存放一些服务器之后需要提取的数据

  10. /sys $\color{green}{[不能动]}$是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs

  11. /dev 是设备管理器 Linux统一把所以硬件映射成文件来管理,类似于windows的设备管理器

  12. /media $\color{red}{[常用]}$linux系统会自动识别一些设备,例如U盘、光驱等等、当识别后,linux会把识别的设备挂载到这个目录下

  13. /mnt $\color{red}{[常用]}$ 系统提供目录是为了让用户临时挂载别的文件系统的,可以将尾部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。

  14. /opt 这是给主机额外$\color{red}{[安装软件]}$所存放的目录,如安装ORACLE数据库、jdk、tomcat就可放到该目录下。默认为空

  15. /usr/local $\color{red}{[常用]}$ 这是另一个给主机额外安装软件所安装的目录.已经安装好的目标目录,一般是通过编译源码方式安装的程序

  16. /var $\color{red}{[常用]}$ 这个目录中存放这在不断昆虫这的东西,习惯将经常修改的目录放在这个目录下。包括各种日志文件

  17. /tmp 这个目录是存放一些临时文件的

  18. /lib 系统开机所需要是最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库

  19. /selinux 【security-enhanced linux】 SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。

  20. /lost+found 这个目录一般为空,当系统非法关机,这里存放了一些文件,一般情况隐藏起来的。

总结:在linux世界里,一切皆是文件

  • vi和vim的基本使用

  1. 正常模式

    以vim打开的一个档案就直接进去一般模式(默认模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制,粘贴】来处理你的文件数据

  2. 插入模式

    按下i,I,o,O,A,r,R等任何一个字母之母才会进入编辑模式,一般来说按 i 即可。

  3. 命令行模式

    +输入esc再输入: 这个模式当中,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等的动作则是在此模式中达成的 :wq(保存退出) :q(退出) :q!(强制退出) :wq!(保存并强制退出)

    • 快捷键的使用:$\color{green}{一般模式下输入}$
  4. 拷贝当前行 yy,拷贝当前向下的5行 5yy, 并粘贴(输入p)

  5. 删除当前行 dd,删除当前向下的5行 5dd

  6. 在文件中查找某个单词[命令行下 输入: /关键词,回车查找,输入n就是查找下一个]

  7. 设置文件的行号,取消文件的行号.[命令行下 :set un:set nonu]

  8. 编辑/etc/profile文件,是同快捷键到该文档的 最末行[G]最首行[gg]

  9. 在一个文件中输入“hello”,然后又 撤销这个动作 u

  10. 编辑/etc/profile文件, 并将光标移动到你目标行 输入目标行,再输入 shift+g

  • 关机&重启命令

  1. shutdown -h(halt) now --立刻关机
  2. shutdown -h(halt) 1 --1分钟后关机
  3. shutdown -r(reboot) now --现在重新启动计算机
  4. halt --关机
  5. reboot --现在重启计算机
    sync --把内存的数据同步到磁盘
  • 用户登录和注销

  1. 普通用户登录 ”su - 用户名“ 切换成系统管理员身份
  2. 在提示符下输入logout即可注销用户
  • 用户管理操作

    进入/home/目录下/
  1. 输入:useradd 添加用户

  2. 输入:userdel 用户名 删除用户

  3. 输入:passwd 用户名 即可给用户名设置新密码

  4. 输入:groupadd -g 组名 添加组名

  5. 输入:groupdel 组名 删除组名

  6. 输入:usermod -g 组名 修改组名

    • /etc/passwd文件

    用户(user)的配置文件,记录用户的各种信息 每行的含义:

    $\color{blue} {用户名:口令:用户标识号:组标识号:注释性描述:登录Shell}$

    • /etc/shadow文件
      口令的配置文件 每行的含意:

    $\color{blue}{登录名:加密口令:最后一次修改时间:最小时间间隔:警告时间:不活动时间:失效时间:标志}$

    • /etc/group文件

    组(group)的配置文件,记录Linux包含的组的信息 每行含义
    $\color{blue}{组名:口令:组标识号:}$

  • 运行级别

  1. 多用户状态又网络服务: init 3
  2. 图形界面: init 5
  3. 系统重启: init 6
  • 找回root密码(不需要记&背)

  1. 在登录页面前5秒按下 “e” 进入编辑界面,使用键盘上的上下光标往下移动,找到以 “”Linux16" 开头内容所在的行数”,在行的最后面输入:init=/bin/sh
  2. 接着直接按快捷键:Ctrl+x 进入单用户模式
  3. 接着在光标闪烁的位置中输入: mount -o remount,rm / 回车
  4. 在新的一行最后面输入:passwd
  5. 输入你新密码
  6. 接着在光标闪烁的为重中(最后一行中)输入: touch /.autorelabel(注意touch后面与/有一个空格)
  7. 继续在光标闪烁的位置上,输入:exec /sbin/init(注意exec与/后面有一个空格),等待系统自动修改密码(过程时间有点长)完成后,系统会自动重启,新的密码生效了
  • 帮助指令

    • man获得帮助信息
  1. 基本语法 :man命令或配置文件
  2. 案例 :查看ls命令的帮助信息 man ls
  3. 在linux下,隐藏文件是以 .开头
  4. help指令
    • 基本语法: help命令(功能描述:获得shell内置命令帮助信息)
  • 文件目录指令(基本且重要)

  1. ls(英文全拼:list files): 列出目录及文件名

-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)

-d :仅列出目录本身,而不是列出目录内的文件数据(常用)

-l :长数据串列出,包含文件的属性与权限等等数据;(常用)

  1. cd(英文全拼:change directory):切换目录

使用 mkdir 命令创建 runoob 目录
[root@www ~]# mkdir runoob

使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/

使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/

表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~

表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..

  1. pwd(英文全拼:print work directory):显示目前的目录

-P :显示出确实的路径,而非使用连结 (link) 路径。

  1. mkdir(英文全拼:make directory):创建一个新的目录

mkdir [-mp] 目录名称

-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~

-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

  1. rmdir(英文全拼:remove directory):删除一个空的目录

rmdir [-p] 目录名称

-p :连同上一级『空的』目录也一起删除

  1. touch :创建空文件

基本语法 --touch 文件名称

  1. cp(英文全拼:copy file): 复制文件或目录

-a:相当於 -pdr 的意思,至於 pdr 请参考下 列说明;(常用)

-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;

-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);

-r:递归持续复制,用於目录的复制行为;(常用)

-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;

-u:若 destination 比 source 旧才升级 destination !

  1. rm(英文全拼:remove): 删除文件或目录

-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;

-i :互动模式,在删除前会询问使用者是否动作

-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

  1. mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

  • Linux 文件内容查看

    • Linux系统中使用以下命令来查看文件的内容:

  1. cat 由第一行开始显示文件内容

只能浏览文件,而不能修改文件,为了浏览方便,一帮会带上 $\color{red}{管道命令}$|more

-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;

-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!

-E :将结尾的断行字节 $ 显示出来;

-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;

-T :将 [tab] 按键以 ^I 显示出来;

-v :列出一些看不出来的特殊字符

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

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写

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

-b :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值);

-n :列出行号表示的方法,主要有三种:

-n ln :行号在荧幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w :行号栏位的占用的位数。

  1. more 一页一页的显示文件内容

more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本的内容。more指令中内置了诺干个快捷键(交互的指令)

空白键 (space):代表向下翻一页;

Enter:代表向下翻『一行』;

/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

:f:立刻显示出档名以及目前显示的行数;

q:代表立刻离开 more ,不再显示该文件内容。

b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

  1. less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

空白键 (space):代表向下翻一页;

Enter :代表向下翻『一行』;

/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

:f :立刻显示出档名以及目前显示的行数;

q :代表立刻离开 more ,不再显示该文件内容。

b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

  1. echo 类似于PHP的echo指令,都是用于字符串的输出
  2. head 只看头几行

-n :后面接数字,代表显示几行的意思

  1. tail 只看尾巴几行

-n :后面接数字,代表显示几行的意思

-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

  1. >指令和>>指令

>输出重定向和>>追加

  • 基本语法

ls -l >文件 (功能描述:列表的内容写入文件xx.txt中(覆盖写))

ls -al >>文件 (功能描述:列表的内容追加到文件xx.txt的末尾)

cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)

echo “内容” >> 文件

  1. ln(英文全拼:link files):功能是为某一个文件在另外一个位置建立一个不同的链接

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接) (常用)

-v 显示详细的处理过程

  1. history:查看以往的曾经输入的命令列表
  • 时间日期类

基本语法 date “+%Y-%m-%d% %H:%M:%S”(功能描述:显示-年月日时分秒)

时间方面-参数

% : 印出 %

%n : 下一行

%t : 跳格

%H : 小时(00..23)

%I : 小时(01..12)

%k : 小时(0..23)

%l : 小时(1..12)

%M : 分钟(00..59)

%p : 显示本地 AM 或 PM

%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)

%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数

%S : 秒(00..61)

%T : 直接显示时间 (24 小时制)

%X : 相当于 %H:%M:%S(功能描述:显示-时分秒)

%Z : 显示时区

时间方面-参数

%a : 星期几 (Sun..Sat)

%A : 星期几 (Sunday..Saturday)

%b : 月份 (Jan..Dec)

%B : 月份 (January..December)

%c : 直接显示日期与时间

%d : 日 (01..31)

%D : 直接显示日期 (mm/dd/yy)

%h : 同 %b

%j : 一年中的第几天 (001..366)

%m : 月份 (01..12)

%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)

%w : 一周中的第几天 (0..6)

%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yy)

%y : 年份的最后两位数字 (00.99)

%Y : 完整年份 (0000..9999)

cal:查看日历指令

  • 搜索查找类

find:指令从指定目录下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端。

基本语法:find /(斜杆指查询所有) -参数 目标

-name 文件名称

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-user<用户名>:查询用户名为xx的目标文件

locate:快速定位文件路径,会建立自己的一个数据库,无需遍历整个文件系统,查询快,第一次运行前““必须使用updatedb指令””创建locate数据库

  1. 基本语法:updatedb 回车 locate 文件名称

总结find和locate的区别说明:

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb


which:指令会在环境变量$PATH设置的目录里查找符合条件的文件

  1. 基本语法:which ls(命令符)

-n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

-p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。

-w  指定输出时栏位的宽度。

-V  显示版本信息。

grep过滤指令&管道符号 | :表示将前一个命令的处理结果输出传递给后面的命令处理。

基本语法:grep [参数] 查找内容 源文件

  1. -n 功能显示匹配行及行号
  2. -i 功能忽略字母大小写
  • 压缩和解压类

  1. gzip/gunzip 指令: --gzip用于压缩文件,gunzip用于解压的

基本语法:

gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)

gunzip 文件.gz (功能描述:解压缩文件命令)

  1. zip/unzip指令: zip用于压缩文件,unzip用于解的,在项目打包发布中很有用

基本语法:

zip [参数] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)

unzip [参数] XXX.zip (功能描述:解压缩文件)
-r:递归压缩,即压缩命令
-d《目录》:指定解压后文件的存放目录

  1. tar指令: 打包指令,最后打包后的文件是.tar.gz的文件

基本语法:
tar [参数] XXX.tar.gz 打包的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)

-c 功能产生.tar打包文件

-v 功能显示详细信息

-f 指定压缩后的文件名

-z 打包同时压缩

-x 解包.tar文件


总结打包和压缩

  1. 打包:将一堆文件或目录什么的变成一个总的文件。

  2. 压缩:将一个大的文件经过某种压缩算法变成一个小文件。

    为什么要区分这两个概念呢?因为Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想要压缩一大堆文件时,首先需要打个包,然后压缩。


这篇关于Linux实操篇入门笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!