Linux学习记录

Linux的目录结构

        Linux的目录结构是一个树型结构,由于Linux没有盘符这个概念,只有一个根目录/(对比Windows下的C盘符和D盘符),所有文件都在它的下面,可以用下面的图表示:

        对于Linux系统中的文件表示,请看下面的图

 (文件类型处,即第一列第一个,d表示目录,-表示普通文件,l表示链接文件,b表示块设备文件,c表示字符设备文件,p表示管道文件,s表示套接口文件)

(其中,权限部分, r表示可读权限:可以对此目录执行ls以列出目录内容,

                                w表示可写权限:可以在此目录创建、删除文件,

                                x表示可操作权限:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息,-表示没有权限)

注意:关于目录的读权限:允许读取目录包含的内容,如果只有读权限,而没有x权限,只能列出目录下的文件或子目录名称,而不能查看其属性或者具体内容。)

目录的解释:

系统启动必须:

  • /boot存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
  • /etc存放所有的系统需要的配置文件子目录列表,更改目录下的文件可能会导致系统不能启动。
  • /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

  • /bin存放着最常用的程序和指令
  • /sbin只有系统管理员能使用的程序和指令。

外部文件管理:

  • /devDevice(设备)的缩写, 存放的是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:存放服务启动后需要提取的数据(不用服务器就是空)

特殊的:

  • . :代表当前的目录,也可以使用 ./ 来表示;

  • .. :代表上一层目录,也可以 ../ 来代表;

  • ~ : 代表登录用户的家目录

    • root: /root
    • user: /home/user
  • / : 代表系统的根目录

 文件路径:路径指的是在文件系统中访问文件或目录时需要经过的路线,为了保证我们可以正确的找到自己想要的文件夹或文件,我们需要了解2个概念:

  • 绝对路径: 路径的写法,由根目录 / 写起,例如: /etc/ssh 这个目录
  • 相对路径: 路径的写法,不是由 / 写起,例如由 /etc/ssh 要到 /etc/ssl 底下时,可以写成: cd ../ssl 这就是相对路径的写法
 相对路径举例:
        # /etc/ssh 到 /etc/python
        ../python

        # /etc/ssh 到 /usr
        ../../usr

        # /etc/ssh 到 /home/user/test
        ../../home/user/test

        # /etc/ssh 到 /etc
        ../

        # /etc 到 /etc/ssh
        ./ssh 或者 ssh

Linux命令基础 

在Linux中,无论是什么命令,有什么用途,命令都有通用的格式

command [-options] [parameter]

  • command: 命令本身
  • options:[可选,非必填] 命令的一些选项,可以通过选项控制命令的行为细节
  • parameter:[可选,非必填] 命令的参数值
  • 【注意:三者之间要有空格,要区分大小写】

ls命令: ls命令用于显示指定工作目录下内容,语法细节如下:

ls [-alrtAFR] [name...]

ls --help 获取有关命令

1 用户命令(/bin,/usr/bin,/usr/local/bin)
2 系统调用
3 库函数
4 特殊文件(设备文件)
5 文件格式(配置文件的语法)
6 游戏
7 杂项(Miscellaneous)
8 管理命令(/sbin,/usr/sbin,/usr/local/sbin)

       man 命令

        【man命令的使用:

                默认显示的是英文,如果要改为中文,需要系统是中文的,命令如下:

                

[root@node1 ~]# echo $LANG
zh_CN.UTF-8 # 中文
en_US.UTF-8 # 英文

修改成中文
[root@node1 ~]# LANG="zh_CN.UTF-8"

        <这种修改方式是临时的,重启虚拟机后,会还原为原来的样子>

        <解决方法:修改 /etc/locale.conf 文件,设置内容为 LANG=zh_CN.UTF-8>

        <安装中文包:[root@node1 ~]# yum install man-pages-zh-CN -y >

        命令的使用:

j/enter     向下一行

k             向上一行

f/space/PAGE Down 按页向下翻

b/PAGE Up  按页向上翻

p    直接翻到首页

n    查找下一个

N    查找上一个

q    退出

h    帮助说明

        扩展使用:man命令后可以有一个数字,帮助我们了解或者是直接查询相关的资料

        man [数字][参数]

          】

参数 :

  • -a         显示所有文件及目录 (. 开头的隐藏文件也会列出)
  • -d         只列出目录(不递归列出目录内的文件)
  • -l          以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
  • -r          倒序显示文件和目录。
  • -t          将按照修改时间排序,最新的文件在最前面。
  • -A         同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F         在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  • -R         递归显示目录中的所有文件和子目录。

例子:

ls -l          # 以长格式显示当前目录中的文件和目录
ls -a          # 显示当前目录中的所有文件和目录,包括隐藏文件
ls -lh          # 以人类可读的方式显示当前目录中的文件和目录大小
ls -t          # 按照修改时间排序显示当前目录中的文件和目录
ls -R          # 递归显示当前目录中的所有文件和子目录
ls -l /etc/passwd    # 显示/etc/passwd文件的详细信息

        pwd命令:显示当前所在目录的命令【-p 会不以链接档的数据显示,而是显示正确的完整路径】

        cd命令:通过cd命令加绝对路径和相对路径可变动到相应的文件目录

        mkdir命令:创建一个新的目录

mkdir [-p] 目录名称 

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

        rmdir命令:删除一个目录

rmdir [-p]  目录名称

p:从该目录起,一次删除多级空目录,把路径写全

查看文件内容命令:

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

cat [-AbEnTv] 文件

-A 相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已; 
-b 列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E 将结尾的断行字节 $ 显示出来;
-n 列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T 将 [tab] 按键以 ^I 显示出来;
-v 列出一些看不出来的特殊字符

        tac命令 与cat命令相反,文件内容从最后一行显示

        more命令 一页一页翻动,看完就结束了,自动退出 

more path 文件

空白键 (space) :代表向下翻一页
Enter :代表向下翻『一行』
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字
q :代表立刻离开 more ,不再显示该文件内容
b :代表往回翻页

        less命令 一页一页翻动,看完还可以回翻

less path文件 

空白键 :向下翻动一页;
pagedown :向下翻动一页;
pageup :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;

  

        head命令 取出文件前面几行,默认显示前10行

head [-n number] 文件, -n:后面接数字表示显示几行的意思

        tail命令     取出文件后面几行

tail [-n number] 文件 

-n后面接数字,代表显示几行的意思,显示10行
-f 表示持续侦测后面所接的档名,要等到按下ctrl + c 才会结束tail的侦测

        cp命令:拷贝文件和目录

 cp [-adfilprsu] 来源档(source) 目标档(destination)


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

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

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

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

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

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

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

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

        mv命令:移动文件与目录,或修改名称

mv [-fiu] 源文件/夹 目录文件/夹

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

        rm命令:移除文件或目录        

 rm [-fir] 文件或目录

-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除,最常用在目录的删除了!这是非常危险的选项!!!

********************************************************************************************************

注意注意:

                        千万不要用root管理员用户执行:rm -rf /

                        效果等同于在Windows上执行C盘格式化

********************************************************************************************************

通配符   *:表示通配符,可以匹配任意内容

temp*,表示匹配任何以temp开头的内容
*temp,表示匹配任何以temp结尾的内容
*temp*,表示匹配任何包含temp的内容

        whereis命令:查看文件的位置

whereis [-bmsu] 文件或者目录名称 

参数说明:
    -b : 只找二进制文件
    -m: 只找在说明文件manual路径下的文件
    -s : 只找source源文件
    -u : 没有说明文档的文件
例如:
    [root@redhat ~]# whereis passwd 
    passwd: /usr/bin/passwd /etc/passwd 
            /usr/share/man/man1/passwd.1.gz                     
            /usr/share/man/man5/passwd.5.gz 

将和passwd文件相关的文件都查找出来
    [root@redhat ~]# whereis -b passwd 
    passwd: /usr/bin/passwd /etc/passwd 

        which命令:查找命令文件,可执行文件,在那个目录,which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件。

which 命令

        locate命令:查找文件或目录名称

locate 文件或者目录名称 

        find命令:搜索指定的文件

find 搜索的路径 -name "被查找的文件名"

参数说明: 
    -atime n :将n*24小时内存取过的的文件列出来 
    -ctime n :将n*24小时内改变、新增的文件或者目录列出来 
    -mtime n :将n*24小时内修改过的文件或者目录列出来 
    -newer file :把比file还要新的文件列出来 
    -gid n       :寻找群组ID为n的文件 
    -group name  :寻找群组名称为name的文件 
    -uid n       :寻找拥有者ID为n的文件 
    -user name   :寻找用户者名称为name的文件 
    -name file   :寻找文件名为file的文件(可以使用通配符) 

        grep命令:用于在文本中或文件中查找特定的字符串

grep [-abcEFGhHilLnqrsvVwxy] pattern files

# pattern - 表示要查找的字符串或正则表达式

# files - 表示要查找的文件名,可以同时查找多个文件

-i:忽略大小写进行匹配。
-v:反向查找,只打印不匹配的行。
-n:显示匹配行的行号。
-r:递归查找子目录中的文件。
-l:只打印匹配的文件名。
-c:只打印匹配的行数。

        wc命令:计算文件的byte数,字数,或是列数

wc [-clw][--help][--version][文件...]

-c/--bytes或-m/--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。

管道符 ->>    |:通过将前一个命令的输出直接传递后一个命令作为输入,从而构建起用于多个命令的连接方式

例如:

在当前目录下查找所有以.txt结尾的文件名并输出到终端的功能
    ls | grep .txt

列出目录/etc中以pass开头的文件或目录名
    ls /etc | grep ^pass

查看当前目录下文件tmp.txt,将结果传递来 grep 过滤出包含66 ,将结果传递来 grep 过滤出包含 1 的数据
    cat tmp.txt |grep 66 | grep 1

应用场景:

  • 数据处理:Linux管道符可以方便地用于对文件或文本进行处理
  • 系统管理:Linux系统管理员经常使用管道符来执行多个命令以达到管理系统的目的
  • 网络通信:在网络编程领域,管道符也被广泛应用

        touch命令:用于创建文件或修改文件的时间戳,如果指定的文件不存在,则会创建一个新的空白文件

touch 文件路径

创建新文件:

    创建名为 file.txt 的新文件

    touch file.txt
--------------------------------------
更改文件时间戳:

    更新名为 file.txt 文件的修改时间戳

    touch file.txt
--------------------------------------
创建多个文件:
    
    创建三个名为 file1.txt、file2.txt 和 file3.txt 的文件

    touch file1.txt file2.txt file3.txt

        echo命令:用于在终端上输出一些文本信息

echo [option] string

常见用法:
-------------------------------------------------
输出字符串(最基本的用法)
在终端上输出 Hello, Linux! 字符串

    echo "Hello,Linux!"
-------------------------------------------------

显示 Shell变量
命令将在终端上输出 Hello, Linux!。

    myvar="Hello, Linux!"
    echo $myvar
-------------------------------------------------

输出到文件
可以使用重定向符号 > 将 echo 命令的输出保存到一个文件中,将 Hello,Linux! 并将其保存到一个名为 myfile.txt 的文件中

    echo "Hello, Linux!" > myfile.txt

        gzip命令:

压缩
    gzip [-d#] filename

参数说明
    -d: 解压缩的参数
    -#: 压缩等级,1压缩比最小,9最大,默认为6

解压缩
    gunzip filename.gz

查看压缩文件内容
    zcat filename.gz

        bzip2命令:

压缩
    bzip2 [-dz] filename

参数说明
    -d:解压缩的参数
    -z:压缩的参数

解压缩
    bunzip2 filename.bz2

查看压缩文件内容
    bzcat filename.bz2

        tar命令:

tar [-zxcvfpP] filename
tar -N 'yyyy/mm/dd" /path -zcvf target.tar.gz source

选项说明:
    -z:有gzip的属性
    -j:有bz2的属性
    -x:解压
    -t:查看tarfile里面的文件
    -c:建立一个压缩文件的指令
    -v:压缩的过程中显示文件
    -f:指定打包的文件名

注意参数-f是必须的,在f之后要立即接文件名,不能再加其他参数。例如: 
    tar -zcfv tfile sfile		# 错误写法
    tar -zcvf tfile sfile		# 这才是正确的

文件的链接:

        硬链接:硬连接指通过索引节点来进行连接

ln 源文件或目录  目标文件或目录

        软连接(符号链接):软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

ln -s 源文件或目录  目标文件或目录

  

linux目录的所有权和访问权限

目录三种访问身份:是指对目录也有三种访问身份

        (u) ser owner:目录所有者,目录属主

        (g) roup owner:目录属组

        (o) ther owner:不属于前两种的用户访问者

 权限的八进制表示:

0   000 ---:无权限

1   001 --x: 执行

2   010 -w-: 写

3   011 -wx: 写和执行

4   100 r--: 只读

5   101 r-x: 读和执行

6   110 rw-: 读写

7   111 rwx: 读写执行

        chgrp命令:用来改变文件或目录所属的用户组,使用者必须是超级用户

chrgp [选项] 组名 文件名

其中,组名可以是用户组的ID,也可以是用户组的组名,但是要求组名必须在/etc/group文件中存在。文件名可以是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。

常用选项:
-R 递归式地改变指定目录及其下面的所有子目录和文件的用户组

        chown命令:改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户ID,用户组可以是组名或组ID。文件名可以使用由空格分开的文件列表,在文件名中可以包含通配符。

chown [选项] 用户或组 文件名

选项:
    -R 递归式地改变指定目录及其所有子目录、文件的文件主。-v 详细列出该命令所做的工作。

注意:只有超级用户才可以使用该命令。

        chmod命令:用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

命令格式
    chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
    操作对象who可是下述字母中的任一个或者它们的组合:
        u 表示“用户(user)”,即文件或目录的所有者。
        g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
        表示“其他(others)用户”。
        a 表示“所有(all)用户”。它是系统默认值。
    操作符号可以是:
        -+ 添加某个权限。
        取消某个权限。
        -= 赋予给定权限并取消其他所有权限(如果有的话)。
    设置mode所表示的权限可用下述字母的任意组合:
        r 可读。
        w 可写。
        x 可执行。
        X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
        s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+                s”设置组ID位。
        t 保存程序的文本到交换设备上。
        u 与文件属主拥有一样的权限。
        g 与和文件属主同组的用户拥有一样的权限。
        o 与其他用户拥有一样的权限。
    文件名:以空格分开的要改变权限的文件列表,支持通配符。

在一个命令行中可给出多个权限方式,其间用逗号隔开。
例如:
    chmod g+r,o+r example   使同组和其他用户对文件example 有读权限。

chmod数字设定法:

        我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。

        例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

chmod [mode] 文件名

        umask命令:指定在建立文件时预设的权限掩码

umask [-S][权限掩码]

补充说明:
    权限掩码有4个八进制位,第一位是所谓的guid,一般为0或者直接不写第1位,而使用3位的掩码。将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

重定向符:用于将命令的输入或输出重定向到指定的文件,设备或管道中

>:将命令的标准输出重定向到一个文件中

        

例如:ls -l > file.txt

这个命令将列出当前目录下的文件,并将结果输出到一个名为 file.txt 的文件中。如果该文件不存在,则会创建它;如果存在,则会覆盖原有内容

>>:将命令的标准输出追加到一个文件中

例如:echo "Hello, World!" >> file.txt

这个命令将在 file.txt 文件的末尾添加一行文本。如果该文件不存在,则会创建它

<:使用一个文件的内容作为命令的标准输入

例如:sort < file.txt

这个命令将读取 file.txt 文件中的内容,并将其传递给 sort 命令,该命令对输入进行排序

<<:将一个字符串作为命令的标准输入

例如:
grep 'hello' << EOF
Hello, World!
Goodbye, World!
EOF

这个命令将使用 grep 命令来查找包含 hello 字符串的行。字符串 EOF 用于指定输入的结束,之间的文本将作为标准输入

注意:重定向符还可以与管道符一起使用:

例如:ls -l | grep ".txt" > filelist.txt

这个命令将列出当前目录下的所有文件,并将其中包含 .txt 字符串的文件名保存到一个名为 filelist.txt 的文件中

VI/VIM的介绍

VI是 "Visual interface" 的简称, 是Linux中最经典的文本编辑器

VI不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序

VI没有菜单,只有命令,且命令繁多 VIM 是 VI 的改良版,增加了更多功能和特性,使它成为现代文本编辑器的代表之一

VIM 支持多种颜色方案,语法高亮、自动缩进等功能,可以大大提高编程效率

【VIM兼容VI几乎所有命令,VIM可以兼容多种操作系统】

编辑器的三种模式:

命令模式:所敲击的按键编辑器都理解为命令,以命令驱动执行不同的功能(该模式下,不能进行文本自由编辑)

输入模式:就是编辑模式,插入模式(该模式下,可对文本进行自由编辑)

末行模式:通常用于文件的保存,退出(该模式下,不能进行文本自由编辑)

VI/VIM的基本使用:

>> 可以通过 yum install vim -y命令安装VIM

vim filename: 打开文件,并定位第1行
vim filename +# :打开文件,并定位于第#行
vim filename +:打开文件,定位至最后一行
vim filename +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首

注意
    如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
    如果文件路径表示的文件存在,那么此命令用于编辑已有文件
    打开文件后,默认是命令模式

在命令模式下,可以通过一下按键命令进入编辑模式:

模式按键命令描述
命令模式i在当前光标的位置,进入编辑模式
命令模式I在当前行的开头,进入编辑模式
命令模式a在当前光标位置之后,进入编辑模式
命令模式A在当前行的结尾,进入编辑模式
命令模式o在当前光标下一行,进入编辑模式
命令模式O在当前光标上一行,进入编辑模式

关闭文件:

模式按键命令描述
命令模式ZZ保存并退出
末行模式:q退出。没有动过文件
末行模式:wq保存并退出。动过了,不后悔
末行模式:q!退出。动过了,后悔了
末行模式:w保存,不退出

提示:在编辑模式末行模式通过ESC返回到命令模式

VIM的扩展使用

末行模式:

模式按键命令描述
末行模式:set number显示行号,下次需要重新设置
末行模式:number令将光标定位到指定行
例如:":10"将光标移动到第 10 行
末行模式/searchstring按下 Enter 键开始查找,VIM 会高亮显示匹配的文本。
如果有多个匹配结果,可以使用 n(下一个)和 N(上一个)键进行导航

等等

提示:永久增加vim中的行号,可以通过修改~/.vimrc文件,增加代码:set number

命令模式:

模式按键命令描述
命令模式键盘上、K向上移动光标
命令模式键盘下、J向下移动光标
命令模式键盘左、H向左移动光标
命令模式键盘右、L向右移动光标
命令模式0移动光标到当前行的开头
命令模式$移动光标到当前行的结尾
命令模式gg光标跳到首行
命令模式G光标跳到行尾
命令模式yy复制当前行
命令模式nyyn是数字,复制当前行和下面的n行
命令模式p粘贴复制的内容
命令模式u撤销修改
命令模式Ctrl + r反向撤销修改
命令模式dd删除光标所在行的内容
命令模式nddn是数字,表示删除当前光标向下n行
命令模式dG从当前行开始,向下删除全部
命令模式dgg从当前行开始,向上删除全部
命令模式d$从当前光标开始,删除到本行的结尾
命令模式d0从当前光标开始,删除到本行的开头
命令模式PageUp向上翻页
命令模式PageDown向下翻页
命令模式/进入搜索模式
命令模式n向下继续搜索
命令模式N向上继续搜索

        cut命令:一种非常实用的文本处理工具。它可以用来从一行文本中提取特定列、字段和字符等信息

cut [option] [args] filename

- s:不显示没有分隔符的行
- d:指定分隔符对源文件的行进行分割
- f:选定显示哪些列
    m-n: m列到n列
    -n: 第一列到n列
    m-: 第m列到最后一列
    n: 第n列
    x,y,z: 获取第x,y,z列

例子:

提取指定列
    cut -f 1 filename
使用分隔符提取字段
    cut -d ',' -f 2 filename
指定字段范围
    cut -d ',' -f 2-4 filename
显示1,3,7列
    cut -d ',' -f 1,3,7 filename
如果有的行没有分隔符,则输出会包含脏数据
    cut -sd -d ',' -f -10 filename
将多个文件合并到一起,并从这些文件中提取信息,则可以使用以下命令
    cat file1.txt file2.txt | cut -d ',' -f 1,3

        sort命令:一种非常实用的文本处理工具,它可以用来对文本文件进行排序

sort [options] [file]

-n : 按数值排序
-r : 倒序 reverse
-t : 自定义分隔符
-k : 选择排序列
-f : 忽略大小写

默认字典序排序
    sort sort.txt
指定字段分隔符,按照第2个字段的字典序排序
    sort -t ' ' -k 2 sort.txt
指定字段分隔符,按照第3个字段字典序排序
    sort -t ' ' -k 3 sort.txt
指定字段分隔符,按照第3个字段的数值序排序
    sort -t ' ' -nk 3 sort.txt
指定字段分隔符,按照第3个字段的值数值倒序
    sort -t ' ' -nrk 3 sort.txt
排序完,输出到文件
    sort -t ' ' -nrk 3 sort.txt > newfile

        sed命令:一种在 Linux 系统中非常有用的文本处理工具,它可以用于对文本进行替换、删除、插入等操作

sed [选项] [脚本命令] 文件名

-i : 此选项会直接修改源文件,要慎用

脚本命令:
    d:删除符合条件的行
    a\string:在指定的行后追加新行,内容为string
    i\string:在指定行前添加新行,内容是string
    s/string1/string2/:查找并替换,默认只替换每行第一次模式匹配到的字符串
        g:行内全局替换
        i: 忽略大小写
    /regex/: 匹配某个数据
        p:打印结果
        w filename:输出到指定的文件

例子:

例子文本
Authentication improvements when using an HTTP proxy server.
Support for POSIX-style 8 filesystem extended attributes. filesystem
YARN's REST APIs now support write/modify operations.
# 第一行下插入一行
[root@node1 ~]# sed "1a\hello world" sed.txt

# 直接修改文件
[root@node1 ~]# sed -i "1a\hello world" sed.txt

# 删除第2行
[root@node1 ~]# sed -i "2d" sed.txt

# 删除文档中的每一行
[root@node1 ~]# sed "d" sed.txt

# 将 filesystem 替换为 FS
[root@node1 ~]# sed "s/filesystem/FS/" sed.txt

# 忽略大小写
[root@node1 ~]# sed "s/filesystem/FS/i" sed.txt

# 不仅忽略大小写还要行内全局替换
[root@node1 ~]# sed "s/filesystem/FS/gi" sed.txt

#原来的内容要打印,匹配的行要打印,找到的行会打印两次
[root@node1 ~]# sed "/[0-9]/p" sed.txt

#匹配行中包含0-9 任意一个字符的行,只打印找到的行
[root@node1 ~]# sed -n "/[0-9]/p" sed.txt

# 匹配行中包含PATH的行,只打印找到的行
[root@node1 ~]# sed -n "/support/p" sed.txt

# 匹配行中包含PATH的行,将找到的行的内容写入到指定的文件中
[root@node1 ~]# sed -n "/support/w support.log" sed.txt
[root@node1 ~]# cat path.log 

        awk命令:一款功能强大的文本处理工具,常用于对文本文件进行分析、过滤和格式化,在 Linux 系统中,awk 命令可以通过终端界面或者脚本方式进行调用

awk [-F ":"] 'pattern {action}' filename

pattern:指定需要匹配的模式或条件,可以使用正则表达式或特定的内置变量
action:指定匹配成功后需要执行的操作,通常为输出或编辑指定的文本
filename:指定需要处理的文本文件名,如果不指定则默认从标准输入读取

内置变量:
    NF:表示当前行的有多少列。
    NR:表示当前处理的是文件中的第几行。
    $0:代表整个当前行。
    $1:代表当前行的第一个字段,依次类推。

操作符:
    ~:匹配正则表达式。
    !~:不匹配正则表达式。
    ==:等于。
    !=:不等于。
    <:小于。
    >:大于。
    <=:小于等于。
    >=:大于等于。

内置函数:
    length(string):返回指定字符串的长度。
    substr(string, start, length):返回指定字符串的子串。
    index(string, search):查找指定字符串中第一个匹配搜索字符串的位置。
    toupper(string):将指定字符串转换成大写字母。
    tolower(string):将指定字符串转换成小写字母。

用户与权限

Linux用户与用户组的介绍

在Linux中,每个文件和目录都有一个所有者属组,用于控制对它们的访问权限

Linux用户:无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响,不同用户具有不同的权限,毎个用户在权限允许的范围内完成不同的任务

提示:

  • 在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
  • 而普通用户在许多地方的权限是受限的
  • 每个用户在自己家目录下,拥有最高权限

Linux用户组:用户组是一组用户的集合,由管理员定义目的就是更方便地管理和授予权限。同一用户组内的所有成员都具有相同的访问权,这些访问权取决于组的权限设置

用户和用户组的关系:在Linux中,每个用户都至少属于一个用户组,但也可以同时属于多个用户组这些用户组定义了用户的访问权限,决定着用户可以执行哪些操作、访问哪些目录和文件等

用户管理

添加用户:

useradd  [选项]  用户名

选项说明:
    -c comment 指定一段注释性描述。
    -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g 用户组 指定用户所属的用户组。

用户名:指定新账号的登录名

删除用户:

userdel [-r] 用户名

选项说明:
    -r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留

查看用户信息:这个命令将显示系统中所有现有的用户账户。

cat /etc/passwd
字段含义
用户名用户登录系统时,使用的用户名
密码密码位
UID用户标识号
GID缺省组标识号
注释性描述例如,存放用户全名等信息
HOME目录用户登录系统后的默认目录
命令解释器用户使用的shell,默认为bash

### 关于 Linux学习资料 以下是针对 Linux 学习的一些推荐资源和教程: #### 1. 尚硅谷 Linux 学习笔记 尚硅谷提供了详尽的 Linux 学习笔记,涵盖了基础到高级的内容。这些笔记不仅包含了常用的命令操作,还涉及服务器配置、网络管理等方面的知识[^1]。 #### 2. CentOS 官方文档 CentOS 是一种广泛使用的 Linux 发行版,在企业环境中非常流行。官方文档中详细介绍了如何安装、配置和维护 CentOS 系统,适合初学者和中级用户深入研究[^3]。 #### 3. 高级命令实践指南 除了常见的 `ls`、`cd` 等基本命令外,掌握一些高级命令对于提升效率至关重要。例如: - **find**: 查找文件或目录。 - **df**: 显示磁盘空间使用情况。 - **tar**: 打包压缩工具。 - **ps/top/netstat**: 进程管理和监控网络状态。 另外还有更复杂的命令组合技巧可以提高工作效率,比如通过管道符 (`|`) 结合多个命令完成复杂任务。 #### 4. 内核编译与模块加载 如果计划深入了解操作系统层面,则需要了解内核源码结构及其构建过程。例如解决因缺少头文件链接而无法正常编译驱动程序的问题时,可参照如下方法创建软连接来修复路径错误: ```bash sudo ln -s /usr/src/kernels/3.10.0-1160.el7.x86_64/include/generated/uapi/linux/version.h \ /usr/src/kernels/3.10.0-1160.el7.x86_64/include/linux/version.h ``` 此脚本解决了特定版本下的兼容性问题[^2]。 #### 5. 跨平台文件传输解决方案-Xftp 为了方便Windows用户访问远程Linux主机上的数据,Xshell套件中的组件之一Xftp提供了一种简便的方式来进行安全的数据交换,它支持多种协议并具备图形化界面便于操作[^4]. 综上所述,Linux作为当前主流的服务端操作系统拥有丰富的社区支持和技术积累,无论是个人还是团队都可以从中受益匪浅.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ST_小罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值