linux学习笔记(基础)

一、启动、关机等基础操作

  • date 显示日期命令
    • date +%Y/%m/%d
    • date +%H %M
  • cal(calender) 显示日历
    • 显示当前月份的日历 cal
    • 显示2008年的日历 cal 2008

正确的关机方法

  • 观察系统的使用状态(用来判断是否可以关机)
    • 如果要查看当前有谁在线,可以发出who命令
    • 如果要查看网络联机状态,可以使用netstat -a命令
  • 通知在线用户关机时间:关机前,总要给在线用户一些时间来结束其工作,可以使用shutdown命令实现此功能。
    • 使用正确的关机命令:shutdown和reboot

数据同步写入磁盘

  • linux系统中,为了加快数据的读取速度,某些数据不会直接写入硬盘,而是暂存在内存中。万一关机,不正常断点等情况下,数据尚未写入磁盘,就会丢失,此时需要命令sync(只有root可以执行该命令)。
  • 当然在shutdown/reboot命令均已在关机前进行了sync工具的调用。
  • 重新启动reboot
    reboot命令与shutdown -r now几乎相同。

二、 linux的文件属性与目录配置

1.用户与用户组

  • (linux中任何一个文件都具有“用户、用户组和其他人”3个权限)
  • 文件拥有者:linux是多用户、多任务的系统,不同的人可以同时使用主机,考虑到每一个用户的隐私和喜好的工作环境,文件拥有者就可以派上用处了。
  • 用户组:用户组主要基于团队开发。可以进行简单的文件权限设置,就能限制其他用户组成员不能查看该文件。还可以让自己用户组的成员修改自己创建的文件,同时,如果有自己的私有文件,可以设置通用户组其他成员不能看到。用户组的概念使这些实现起来很方便。
  • 其他人:不属于自己用户组的成员

2.文件属性

  • 登录linux后,输入ls -al(ls即list,-al表示列出所有的文件,包括隐藏文件,就是文件名前第一个字符为 . 的文件)
    这里写图片描述

  • 从1到7依次为文件属性、连接数、文件拥有着、文件所属用户组、文件大小、文件最新修改时间、文件名。

  • 文件属性
    这里写图片描述

    • 文件类型包括

      • [d] :目录
      • [ - ] :文件
      • [ l ] :连接文件
      • [b]:设备文件中可供存储的接口设备
      • [c] : 设备文件中的串行端口设备,例如键盘、鼠标。
    • 需要注意的是x属性与目录关系很重要,如果某个目录下不能执行任何命令的话,则无法进入该目录。例:
      若文件名为一个目录

    dwxr------  3  root  root  4096  Jun 08:35  .ssh
    root用户可以进入该目录,其他用户无法进入
    dwxr--r---  3  root  root  4096  Jun 08:35  .ssh
    虽然用户组有r权限,但因为没有x权限,无法进入该目录
    
    • linux中,文件能否执行,是通过是否具有x属性来决定的,所有与文件名及扩展名没有绝对关系。

3.更改文件权限

  • 更改所属用户组(change group)

    chgrp [-R] 群组名称 文件目录
    -R表示进行递归(recursive)的持续更改,即连同子目录下的所有文件、目录都更改为这个用户组
    
  • 更改文件拥有者(change owner)

    chown [-R] 账号名称:文件或目录
    chown bin install.log
    
  • 更改文件拥有者的常见例子是,将一个文件的内容复制到另一个文件,并把另一个文件给别人。

    cp 源文件 目的文件
    例,将.aa文件复制给.bb,并给xiaoming这个人(用户),可以这样做
    cp .aa .bb
    chown xiaoming .bb
    
  • 更改9个属性chmod

    • 第一种方法
    各属性和数字的对照表
    r:4
    w:2
    x:1
    chmod [-R] xyz 文件或目录
    xyz为rwx属性数值的和
    例:chmod 777 .aa
    第一个7=4+2+1,对应的属性未rwx
    第二个7和第三个同理
    
    • 第二种方法
    可以用u,g,o表示user,group,others三组属性;a表示all,即全部三组
    语法: 
    

    这里写图片描述

    例:chmod u=rwx,go=rx .aa
    其中go表示g和o
    要是想增加某一属性,而不改变其他属性,可以如下操作
    chmod a+w .aa
    要是想除去某一属性,而不改变其他属性,可以如下操作
    chmod a-x .aa
    

4.目录属性的意义

  • 以上介绍的都是针对一般文件的属性,对于目录r,w,x是什么含义呢?
    • r:表示具有读取目录结构清单的权限
    • w:它标识拥有更改该目录结构清单的权限
      • 建立新的文件与目录
      • 删除已存在的文件与目录
      • 将已存在的文件或目录重命名
      • 移动该目录内文件、目录的位置
      • x:x与能否进入该目录有关

5.linux文件类型与扩展名

  • 文件种类
    • [ - ] 普通文件。普通文件根据文件的内容又可以分为
    • 纯文本文件(ASCII):其中的内容我们可以直接读取到的数据,如数字,字母等。
      • 二进制文件(binary):Linux中可执行文件(脚本、文本方式的批处理文件不算)就是这种格式。
      • 数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件。
    • [d] 目录(directory)
    • [ l ] 连接文件(link):类似于Windows下面的快捷方式。
    • 设备与设备文件:与系统外设及存储等相关的一些文件,通常都集中在/dev目录下。该文件可分为两种:
      • [b]块(block)设备文件:就是存储数据以供系统访问的接口设备。简单而言就是硬盘。
      • [c]字符(character)设备文件:即串行端口的接口设备,例如键盘、鼠标等。
    • [s] 套接字(sockets):这类文件通常用在网络数据连接。
    • [p] 管道(FIFO,pipe):FIFO也是一种特殊的文件类型,其主要目的是,解决多个程序同时访问一个文件所造成的错误。
  • linux文件扩展名
    • Linux文件能否执行,与它的属性相关,与文件名一点关系都没有。只要有属性x,即表示这个文件可以执行。需要说明的是可以执行与执行成功是不一样的。x表示这个文件具有可执行能力,但不能不能执行成功,当然就要看该文件的内容了。例如,root目录下的install.log是一个纯文本文件,即使权限修改为-rwxrwxrwx,这个文件依然不能执行,因为它的内容根本就没有可执行的数据。
    • 通常我们还是希望通过扩展名来表示该文件的类型,所以会以适当的扩展名来表示该文件的类型。下面是常用的几种扩展名:
      • *.sh:批处理文件,因为批处理文件使用shell写成,所以扩展名为.sh。
      • .tar、.tar.gz、*.zip:经过打包的压缩文件。压缩软件分别为gunzip、tar等,根据不同的压缩软件而取其相关的扩展名。
      • .html、.php:网页相关的文件

6. linux目录配置

  • Linux中所有的文件与目录都是由根目录(/)开始。它是所有目录与文件的源头。

  • 进入目录的写法:

    cd /var/log(绝对路径)
    cd ../var/log(相对路径)
    
    . : 表示当前目录,也可以使用./来表示
    ..: 表示上一层目录,也可以用../来表示
    / : 指的是根目录root
    
  • linux目录内容
    这里写图片描述

7. linux支持的文件系统

  • 当前的大多数操作系统都是从硬盘中读取数据的,每个操作系统用的硬盘在x86架构上都一样,都是同样的硬盘。但是每种操作系统都有其独特的读取文件的方法,也就是说,每种操作系统对硬盘读取的方法不同,这就产生了不同的文件系统。
  • Linux正统的文件系统为ext2(Linux second extended file system,Linux第二代扩展文件系统),不过ext2缺乏日志管理系统。ext3文件系统多做了一个日志式数据的记录。要将数据写入硬盘时,ext2直接将数据写入,但ext3则会将“要开始写入”的信息写入日志纪录区,然后才开始写入数据,在写入数据后,又将“完成写入动作”的信息写入日志记录区。这样做的好处就是数据的完整性与恢复性得到保证。比如,早期的ext2文件系统遇到断电,就要检查文件的一致性,这种检查要将整个分区内的文件进行完整的比较,很慢。如果是ext3,只要通过检查“日志纪录区”就可以知道,断电时有哪些文件正在写入,只需要检查这些地方即可。

三、Linux文件和目录管理

1.目录与路径

  • 相对路径与绝对路径

    • 绝对路径:路径的写法“一定由根目录/写起”,如/usr/share/doc
    • 相对路径:路径的写法“不是由/写起”,例如…/man
  • 目录操作相关

    • cd 切换目录
    • pwd(Print Working Directory) 显示当前所在的目录
      pwd [-p] 参数-p表示显示出实际路径,而非使用连接路径。
    • mkdir 建立新目录
      mkdir[-mp] 参数-m设置文件的权限,直接设置,不要管默认权限;-p:帮你直接建立所需目录的递归
    mkdir test 建立一个名为test的目录
    mkdir test1/test2/test3 建立失败,默认情况下,目录要一层一层的建立。
    加入-p参数可以按照顺序依次建立目录
    mkdir -p test1/test2/test3 建立成功
    mkdir -m 711 test4 通过-m 711给新目录赋予drwx--x--x属性。
    
    • rmdir删除“空”目录
    rmdir [-p] 目录名  参数-p:与上层“空”目录也一起删除
    rmdir test  需要注意的是如果test目录不是空目录,则会删除失败。
    rmdir test1/test2/test3 只能删除test3
    rmdir -p test1/test2/test3 就能将这一串“空”目录删除
    被删的目录中,不能有其他目录或文件。这也是空目录的含义
    上面采用-p参数删除test1/test2/test3时,会一层一层的删除,先删除test3后,如果test2成为了空目录,则也删除,依次类推。
    
  • 执行文件路径的变量$PATH

    • 介绍了绝对路径、相对路径与命令的执行方式之后,你可能会注意到为什么可以在任何地方执行/bin/ls命令呢?这是因为有环境变量PATH的帮助。在执行命令时,系统会按照PATH的设置,去到每个PATH定义的路径下搜索执行文件,先搜索到的命令先执行。
    	echo $PATH    echo命令表示“显示”的意思,PATH前面的$,表示后面接的是变量。	
    
    • 如果要执行的命令的目录不在环境变量PATH中,该如何解决呢?
一、直接将命令所在的的路径加入到PATH中
PATH="$PATH":/root  首先$PATH拿到环境变量原有的目录,如/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
然后""将其括起来表示这些目录的字符串,后面再接:/root表示将该目录添加到环境变量中,这样系统就会去/root目录下搜索相关的执行命令。
二、使用完整的文件名来发出命令,即直接使用相对或绝对路径来执行
假设我们把ls命令从/bin目录移到了/root目录
/root/ls  
./ls

2.管理文件与目录

  • 查看文件和目录:ls
ls [-aAdfFhilRs] 目录名
ls [--color={none,auto,always}]  目录名
ls [--full-time] 目录名
介绍几个参数:
-d:列出目录本身,而不是列出目录内的文件数据
-R:与子目录内容一起列起来
-S:按文件大小排序
-t:按时间排序
--color=never:不要按照文件属性的不同用不同的颜色显示
--color=always:显示颜色
--color=auto:让系统自行按照设置来判断是否使用颜色
--full-time:以完整的时间模式输出
--time={atime,ctime}:输出访问时间(atime)或改变权限属性的时间(ctime),而非内容更改时间(modification time)
  • 复制、移动和删除
cp [-adfilprsu] 源文件 目标文件
介绍几个常用的参数:
-d:若源文件为连接文件的属性(link file),则复制连接文件属性而非文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归持续复制,用于目录的复制操作

rm [-fir] 文件或目录
参数:
-f:强制删除
-i:交互模式,在删除前会询问用户是否操作
-r:递归删除。常用在目录的删除。
  • mv(移动文件与目录,或重命名)
mv [-fiv] source destination
  • 获取路径的文件名与目录名
获取文件名
basename /etc/sysconfig/network
结果:network
获取目录名
dirname /etc/sysconfig/network
结果:/etc/sysconfig

3.查看文件内容

  • 1.直接查看文件内容

    • cat:由第一行开始显示文件内容
    cat(concatenate,连续)
    cat [-AEntv]
    参数:-n 显示行号
    很少使用该命令,因为当文件内容行数超过40行以上时,根本来不及看。
    
    • tac:从最后一行开始显示,可以看出tac与cat字母顺序相反

        将最后一行到第一行反向显示在屏幕上
      
    • nl:显示的时候,输出行号

  • 2.翻页查看

    • more:一页一页地显示文件

        一页一页查看文件内容
        more程序运行过程中,有几个按键可以使用:
        空格键:表示向下
        回车键:表示向下翻一行
        /:表示在这个显示的内容中,向下搜索"字符串"
      
    • less:与more相似,但它可以向前翻页

        less比more更灵活。使用more的时候,没有办法向前翻页,只能往后面看,
        但使用了less,就可以使用上下按键往前往后翻看文件,更容易查看文件内容
      
  • 3.数据选取

    • head:只看前几行
    head [-n number] 文件
    参数 -n 后面接数字表示显示几行的意思
    默认情况下显示10行
    
    • tail:只看最后几行
    tail [-n number] 文件
    默认情况下显示10行
    
    显示~/.bashrc的第10行到第20行
    head -n 20 ~/.bashrc|tail -n 10
    
    • od:以二进制方式读取文件内容

      前面的内容都是在查看纯文本文件(ASCII格式文件),想查看非文字文件可以用od读取。

    od [-t TYPE] 文件
    -t 后面可以接各种类型TYPE的输出,如:
    a:使用默认的字符来输出
    c:使用ASCII字符输出
    d[size]:使用十进制(decimal)来输出数据,每个整数占用size字节
    f[size]:使用浮点数(floating)值来输出数据,每个整数占用size字节
    o[size]:使用八进制(octal)输出数据,每个整数占用size字节
    x[size]:使用十六进制(hexadecimal)输出数据,每个整数占用size字节
    
    • 修改文件时间与创建新文件:touch
      • modification time(mtime,修改时间):当文件的内容数据更改时,就会更新这个时间。
      • status time(ctime,状态时间):当该文件的状态更改时,就会更新这个时间。如更改了权限与属性。
      • access time(atime,访问时间):当读取文件内容时就会更新这个读取时间,如用cat命令查看一个文件时,就会更新atime。
    文件时间很重要,因为如果误判文件时间,可能会造成某些程序无法运行。
    touch [-acdmt] 文件
    -a:仅修改atime
    -c:仅修改时间,而不是建立文件
    -d:后面可以接日期,也可以使用 --date="日期或时间"
    -m:仅修改mtime
    -t:后面可以接时间,格式为 [YYMMDDhhmm]
    
    默认状态下:如果touch后面接文件,
    若该文件不存在,则会主动建立一个新的空文件。
    
    将bashrc文件的日期调整为两天前
    touch -d "2 days ago" bashrc
    
    将bashrc文件的日期日期改为2005/07/15 2:02
    touch  -t 0507150202 barshrc
    

4.文件与目录的默认权限与隐藏权限

  • 文件默认权限:umask

    • 现在我们知道如何建立或者修改一个目录或文件的属性了,但是,当建立一个新的文件或目录时,它默认的属性是什么样的呢?通常,umask就是指定“当前用户在建立文件或目录时的属性默认值”。
    umask
    结果比如显示 0022 第一组是给特殊权限用的
    umask -S
    结果显示比如 u=rwx,g=rx,o=rx
    
    • 在默认权限的属性上,目录与文件时不一样的。由于我们不希望文件具有可执行的权限,默认情况下,文件是没有可执行(x)权限的。因此:
      • 若用户建立的文件默认没有可执行(x)权限,即只有rw这两个权限,也就是最大为666分,默认属性为 -rw-rw-rw-。
      • 若用户建立目录,则由于x与是否可以进入此目录有关,因此默认为所有权限均开放,即为777分,默认属性为 rwxrwxrwx 。
    • umask指定的是“该默认值需要减掉的权限”。因为r、w、x分别是4、2、1,也就是说,当要去掉写权限时,就输入2,要去掉读权限时,就输入4,要去掉读与写权限时,就输入6,而要去掉执行与写的权限时,就输入3。上面umask为022,所以user没有被去掉属性,不过group与others的属性被去掉了2,所以用户:
    建立文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
    建立目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
    
    • 如何设置umask?直接在umask后面输入相关值,如002。需要注意的是,计算默认权限值时不要直接相减,而是要用AND与NOT计算。

四、vi和vim文字处理器

1.vi的使用

  • vi是几乎任何一个类Unix机器都存在的文字处理器,它功能很齐全,但还有些可以改进的地方。vim可以看做是vi的高级软件,它对程序开发人员很好用,vim官网也说vim是一个“程序开发工具”而不是文字处理软件。vim中增加了很多附加功能,比如支持规范表示法的搜索框架、多文件编辑、块复制等。

  • vi共分为3中模式,分别是“一般模式”、“编辑模式”、“命令行命令模式”。
    这里写图片描述

  • 简单执行范例

    • 使vi进入一般模式
    vi test.text
    

    如下图
    这里写图片描述
    如果test.txt不存在的话,会新建该文件。

    • 按下i进入编辑模式,开始编辑文字

    这里写图片描述
    这时候可以输入任意字符。

    • 按下[ESC]回到一般模式
    • 在一般模式下按下 :wq 存储后离开vi(实际上按下 : 后,进入了命令行模式,再按wq存储文件并离开vi)。
    • 如果文件权限不对,很可能无法写入。可以使用":wq!" 强制写入,不过需要强调的是,这是在“你的权限可以改变”的情况下可行的。
  • 介绍几种常见的命令行命令

    • 一般模式:移动光标的方法
    右方向键(->):光标向右移动一个字符
    多次移动,如向下移动30行:可以使用输入30+向下方向键的组合键形式完成
    [Page Down]:向下移动一页
    [Page Up]:向上移动一页
    
    0:数字0表示移动到这一行的最前面字符处
    $:移动到这一行的最后面的字符处
    G:移动到这个文件的最后一行
    
    • 一般模式:搜索和替换
    /word:从光标位置开始,向下寻找一个名为word的字符串。
    ?word:从光标位置开始,向上寻找一个名为word的字符串。
    n:表示重复前一个搜索动作。比如前一个动作是/a,则按下n后,继续向下搜索a。
    N:与n反向
    
    • 一般模式:删除、复制与粘贴
    p,P:p为将已复制的数据粘贴到光标的下一行,P则为贴在光标上的上一行。
    

2.vim的附加功能

  • 当前大部分版本都采用vim代替vi的功能了。vim具有颜色显示功能,并且还支持很多程序语法,当使用vim编辑程序时(不论是C语言,还是shell脚本),vim可以帮你直接进行程序调试。vim的一般用法与vi一模一样,没有不同。
  • 块选择
  • 多文件编辑(略)
  • 多窗口功能(略)

扫码关注公众号

  • 后台回复“Linux及Docker学习资料”免费获取更多Linux及Docker学习教材及实战资料
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值