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:只有系统管理员能使用的程序和指令。
外部文件管理:
- /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:存放服务启动后需要提取的数据(不用服务器就是空)
特殊的:
-
. :代表当前的目录,也可以使用 ./ 来表示;
-
.. :代表上一层目录,也可以 ../ 来代表;
-
~ : 代表登录用户的家目录
- 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 复制当前行 命令模式 nyy n是数字,复制当前行和下面的n行 命令模式 p 粘贴复制的内容 命令模式 u 撤销修改 命令模式 Ctrl + r 反向撤销修改 命令模式 dd 删除光标所在行的内容 命令模式 ndd n是数字,表示删除当前光标向下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