Centos没有盘符这个概念,只有一个根目录/,所有文件都在它下面
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
当我们输入ls / 可以查看更目录下的文件查看根目录下的系统文件
目录 | 说明 | 备注 |
---|---|---|
bin | 存放普通用户可执行的指令 | 即使在单用户模式下也能够执行处理 |
boot | 开机引导目录 | 包括Linux内核文件与开机所需要的文件 |
dev | 设备目录 | 所有的硬件设备及周边均放置在这个设备目录中 |
etc | 各种配置文件目录 | 大部分配置属性均存放在这里 |
lib/lib64 | 开机时常用的动态链接库 | bin及sbin指令也会调用对应的lib库 |
media | 可移除设备挂载目录 | 类似软盘 U盘 光盘等临时挂放目录 |
mnt | 用户临时挂载其他的文件系统 | 额外的设备可挂载在这里,相对临时而言 |
opt | 第三方软件安装目录 | 现在习惯性的放置在/usr/local中 |
proc | 虚拟文件系统 | 通常是内存中的映射,特别注意在误删除数据文件后,比如DB,只要系统不重启,还是有很大几率能将数据找回来 |
root | 系统管理员主目录 | 除root之外,其他用户均放置在/home目录下 |
run | 系统运行是所需文件 | 以前防止在/var/run中,后来拆分成独立的/run目录。重启后重新生成对应的目录数据 |
sbin | 只有root才能运行的管理指令 | 跟bin类似,但只属于root管理员 |
srv | 服务启动后需要访问的数据目录 | |
sys | 跟proc一样虚拟文件系统 | 记录核心系统硬件信息 |
tmp | 存放临时文件目录 | 所有用户对该目录均可读写 |
usr | 应用程序放置目录 | |
var | 存放系统执行过程经常改变的文件 |
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
1. 用户目录(工作目录/家目录): /home/user
使用~
回到root目录,使用/
回到根目录下
# 在home有一个user,这里就是之前创建的msb123用户
[root@localhost ~]# cd /home
[root@localhost home]# ls
msb123
[root@localhost msb123]# cd ~
[root@localhost ~]#
2. 登录信息:Linux的bash解析器终端用来显示主机名和当前用户的标识;
"""
root表示当前用户叫root(系统管理员账户)
localhost表示当前使用的主机名叫localhost(没有设置系统名字时,候默认名称是localhost)
/ 表示你当前所处的目录位置 (此时'/'表示当前在根目录下)
"""
[root@localhost /]#
3. 相对路径和绝对路径
.
和 ..
:.
表示当前目录,..
表示上一级目录,即父目录。 4. 文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
访问用户:用户分三种:文件拥有者(属主)、属主所在群组(属组)、其他用户
访问权限:文件或目录的访问程度,即读、写及执行权限:
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户,具有改变文件的读写权限。
[root@localhost /]# ls -l # 查看当前文件夹下详细信息
总用量 20
lrwxrwxrwx. 1 root root 7 8月 31 15:48 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 8月 31 15:58 boot
下面进行详细拆解:
l rwx rwx rwx
d r-x r-x r-x
"""
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
[ d ] :目录
[ l ] :链接文档(link file)
[ - ] :普通文件
[ p ] :管道文件
[ b ] :装置文件里面的可供储存的接口设备(可随机存取装置)
[ c ] :装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
其次接下来的字符中,给出属主、属组、其它这三种用户的权限组合,每种组合均为 [ rwx ] 的三个参数的组合,-表示无此权限
"""
5. 文件属主与属组
Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
[root@localhost /]# ls -l
总用量 20
...
dr-xr-xr-x. 5 root root 4096 8月 31 15:58 boot
...
[root@localhost /]# cd /home
[root@localhost home]# ls -l
总用量 0
drwx------. 2 msb123 msb123 83 9月 2 15:54 msb123
在以上实例中,msb123 文件是一个目录文件,属主和属组都为 msb123,
属主有可读、可写、可执行的权限;与属主同组的用户无权限读写执行;其他用户也无权限读写执行
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
root@localhost:/home/zhxscut# uname
Linux
root@localhost:/home/zhxscut# uname -a
Linux localhost 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux
root@localhost:/home/zhxscut# uname -s
Linux
root@localhost:/home/zhxscut# uname -n
localhost
root@localhost:/home/zhxscut# uname -r
4.4.0-19041-Microsoft
root@localhost:/home/zhxscut# uname -v
#1237-Microsoft Sat Sep 11 14:32:00 PST 2021
root@localhost:/home/zhxscut# uname -o
GNU/Linux
root@localhost:/home/zhxscut# uname --version
uname (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie.
whoami 显示当前用户
who 当前系统所登陆的用户,以及所登录的控制台
w 当前系统所登陆的用户,以及所登录的控制台的详细信息
root@localhost:/home/zhxscut# w
00:28:40 up 10 min, 0 users, load average: 0.52, 0.58, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ls [-alrtAFR](选项) [name...](参数)
-a
:显示所有文件及目录-l
除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出ll
、ls -la
、ll -a
、ls -l -a
:列出当前目录的全部文件和文件夹的基本属性和详细信息-r
: 将文件以相反次序显示(原定依英文字母次序)-t
:将文件依建立时间之先后次序列出-A
:同 -a
,但不列出 “.” (目前目录) 及 “…” (父目录)-F
:在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”-R
:递归列出所有子文件有文件-n
:以用户识别码和群组识别码替代其名称ls t*
:列出所有以t
开头的文件和目录[root@localhost ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1437 8月 31 15:54 anaconda-ks.cfg
[root@localhost ~]# ls -ra
.tcshrc .cshrc .bashrc .bash_profile .bash_logout .bash_history anaconda-ks.cfg .
[root@localhost ~]# ls -lt
总用量 4
-rw-------. 1 root root 1437 8月 31 15:54 anaconda-ks.cfg
[root@localhost ~]# ls -A
anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
[root@localhost ~]# ls -F /home
msb123/
[root@localhost ~]# ls -R /home
/home:
msb123
/home/msb123
[root@localhost ~]# ls -n test.log
-rwxr-xr-x. 1 0 0 36 9月 8 18:36 test.log
常用组合
[1]查看文件详情:ls -l 或 ll
[2]增强对文件大小易读性,以人类可读的形式显示文件大小: ls -lh
[3]对文件或者目录进行从大到小的排序: ls -lhs
[4]查看当前目录下的所有文件或者目录,包括隐藏文件: ls -la
[5]只查看当前目录下的目录文件: ls -d .
[6]按照时间顺序查看,从上到倒下时间越来越近: ls -ltr
[7]查看文件在对应的inode信息:ls -li
cd
命令:切换目录。
~
回到root目录,/
回到根目录,/home
回到家目录# 这是ubantu系统的测试结果,用户名zhxscut
zhxscut@DESKTOP-OHLNREI:$ cd /home # 切换到家目录
zhxscut@DESKTOP-OHLNREI:/home$ ls
zhxscut
zhxscut@DESKTOP-OHLNREI:/home$ cd / # 切换到根目录
zhxscut@DESKTOP-OHLNREI:/$ ls
bin dev home lib lib64 lost+found mnt proc run snap sys usr
boot etc init lib32 libx32 media opt root sbin srv tmp var
zhxscut@DESKTOP-OHLNREI:/$ cd ~ # 切换到root目录,还是刚装的系统,所以root下啥也没有
zhxscut@DESKTOP-OHLNREI:~$ ls
zhxscut@DESKTOP-OHLNREI:~$
.
和 ..
:.
表示当前目录,..
表示上一级目录,即父目录。../..
:上两层目录,以此类推-
:跳到上次所在目录!$
:重复上次的切换参数pwd
:获取当前工作目录的绝对路径名称# 把上个命令的最后参数作为dir
这里我们先将文件夹cd 到python2.7路径
[root@localhost /]# cd /usr/include/python2.7/
[root@localhost python2.7]#
# 这里使用cd ./..参数作为引子
[root@localhost python2.7]# cd ./..
# 这里我们使用命令,重复最后一个命令参数,直到回到了根目录
[root@localhost include]# cd !$
cd ./..
[root@localhost usr]# cd ./..
[root@localhost /]#
pushd
:创建目录栈etc/sysconfig
目录下,想切换到var/lock
目录,可以输入 pushd /var/lock 就直接切换过去了,且创建了一个目录栈 :/var/lock
/etc/sysconfig
此时直接输入pushd就可以在最顶端两个目录之间切换。目录栈顶端永远是当前目录。 每次 pushd 命令执行完成之后,默认都会执行一个 dirs 命令来显示目录栈的内容
dirs
:显示目录栈。
其中,-p
与 -v
选项的区别是,-v
选项将显示每条记录在栈中的索引,除此之外完全一样。此时输入pushd+n或者pushd-n可以快速任意切换目录栈,+表从上往下查找,-为从下往上查找。
0 /etc/rc0.d
1 /var/lock
2 /etc/sysconfig
3 /var/run
popd /目录名
:在目录栈中删除此目录。ctrl+g | 移动到底部 |
---|---|
Tab | 命令行自动补全 |
[向上] 和 [向下] 箭头 | 显示命令历史 |
Ctrl L或者clear | 清屏,等于光标移动到顶部 |
exit | 注销当前用户 |
history n | 查看n个历史命令 |
mkdir
**作用:**命令用来 创建指定的名称的目录 ,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录
语法:mkdir [选项] 目录
**命令功能:**通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且不能与其它文件名重名(区分大小写)
命令参数:
选项参数 | 完整参数 | 功能描述 |
---|---|---|
-m | –mode=模式 | 设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask |
-p | –parents | 可以是一个路径名称。如不存在直接创建 一次可以建立多个子父目录;(如果不输入-p由于父目录也不存在将报错) |
-v | –verbose –help –version |
–verbose 每次创建新目录都显示信息 –help显示此帮助信息并退出 –version输出版本信息并退出 |
示例如下:
# 使用参数 -p 进行递归创建目录
[root@localhost mydir]# mkdir -p text1/text2
"""
ls -R查看当前目录的所有子目录(包括子目录的子目录)
比如在root家目录下创建 mkdir -p x/y/(后一个/可以不写),此时输入ls只能看到x目录,输入ls -R看到x/y
"""
[root@192 ~]# ls -R
.:
anaconda-ks.cfg x
./x:
y
./x/y:
# 分别创建三个目录,并设置权限 使用参数 -m
[root@localhost text2]# mkdir -m 777 exercise1
[root@localhost text2]# mkdir -m 765 exercise2
[root@localhost text2]# mkdir -m 654 exercise3
[root@localhost text2]# ll
总用量 0
drwxrwxrwx. 2 root root 6 9月 7 13:22 exercise1
drwxrw-r-x. 2 root root 6 9月 7 13:23 exercise2
drw-r-xr--. 2 root root 6 9月 7 13:23 exercise3
总结:# 使用参数 -m 可以创建文件并设置文件的权限
注意(777,765,654 其中每一个数字,分别表示User、Group、及Other的权限。r=4,w=2,x=1)
# 创建一个目录,并设置权限 使用参数 -v -m
[root@localhost text2]# mkdir -v -m 654 exercise4
mkdir: 已创建目录 "exercise4"
1. stat
stat filename
:查看文件具体信息(三种时间属性和大小类型等)
文件:"zhang.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:67227145 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:user_home_t:s0
最近访问:2021-05-22 17:46:21.314187982 +0800 打开文件才叫文件的访问
最近更改:2021-05-22 17:46:21.314187982 +0800 更改是修改文件内容
最近改动:2021-05-22 17:46:21.314187982 +0800 改动是修改文件其它属性,例如文件名
创建时间:-
当只是修改文件名时前两个时间属性不变,只有最后一个变化。
2 touch
作用:用于 修改文件或者目录的时间属性 ,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。已有的文件touch会改动三个时间属性。
语法:touch [-acfm] [-d<日期时间>] [-r<参考文件或目录>] [-t<日期时间>] [–help] [–version] [文件或目录…]
命令参数:
参数 | 参数描述 |
---|---|
-a | 只更新访问时间,不改变修改时间(第1.3个时间) |
-c | 不创建不存在的文件 |
-f | 不使用,是为了与其他 unix 系统的相容性而保留。 |
-m | 只更新修改时间,不改变访问时间(改动第2.3个时间) |
-r file newfile | 将文件file的1.2时间更新为文件newfile的时间 |
-t | 将1.2时间修改为参数指定的日期,如:07081556代表7月8号15点56分 |
–no-create | 不会建立文件 |
–help | 列出指令格式 |
–version | 列出版本讯息 |
ls -l 可以显示档案的时间记录。
touch
创建"text1.txt"文件[root@localhost exercise1]# touch text1.txt text2.txt text3.txt
[root@localhost exercise1]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 9月 7 13:44 text1.txt
-rw-r--r--. 1 root root 0 9月 7 13:45 text2.txt
-rw-r--r--. 1 root root 0 9月 7 13:45 text3.txt
touch
修改文件"text1.txt"的时间属性为当前系统时间,发现如果文件存在,这里直接是修改时间了[root@localhost exercise1]# touch text1.txt
[root@localhost exercise1]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 9月 7 13:46 text1.txt
# 发现时间是已经修改了(三个时间都被修改)
使用参数 -c
,强制避免创建新文件
有时,如果新文件不存在,则需要避免创建新文件。 在这种情况下,可以使用touch命令使用’-c’选项
使用参数 -a
,更改文件的访问和改动时间 (第1.3个)
[root@localhost exercise1]# stat text3.txt
最近访问:2020-09-07 14:04:07.539848285 +0800
最近更改:2020-09-07 14:04:07.539848285 +0800
最近改动:2020-09-07 14:04:07.539848285 +0800
创建时间:-
[root@localhost exercise1]# touch -a text3.txt
[root@localhost exercise1]# stat text3.txt
最近访问:2020-09-07 14:08:33.788865586 +0800
最近更改:2020-09-07 14:04:07.539848285 +0800
最近改动:2020-09-07 14:08:33.788865586 +0800
创建时间:-
我们看到先是使用stat查看文件详细信息 最近访问和最近更改时间
当我们使用命令使用参数-a 对文件 text3.txt 做了一些操作 touch -a text3.txt
再查看时间时,发现文件已经修改好了
-m
,仅更改此文件的修改时间 (第2.3个时间)[root@localhost exercise1]# touch -m text3.txt
[root@localhost exercise1]# stat text3.txt
最近访问:2020-09-07 14:08:33.788865586 +0800
最近更改:2020-09-07 14:15:59.782894567 +0800
最近改动:2020-09-07 14:15:59.782894567 +0800
创建时间:-
-r
,将访问和修改时间从一个文件复制到另一个文件[root@localhost exercise1]# touch text3.txt -r text1.txt
[root@localhost exercise1]# stat text1.txt
[root@localhost exercise1]# stat text3.txt
# 输出显示text3.txt现在具有与text1.txt相同的访问和更改值
-t
,使用指定的时间戳创建新文件[root@localhost exercise1]# touch -t 2001011314.52 time.log
[root@localhost exercise1]# stat time.log
文件:"time.log"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:16627 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-01-01 13:14:52.000000000 +0800
最近更改:2020-01-01 13:14:52.000000000 +0800
最近改动:2020-09-07 14:26:23.916935124 +0800
创建时间:-
# 最近访问与最近更改时间为设定的时间 2020-01-01 13:14:52.000000000
-c -t
,修改文件的时间戳[root@localhost exercise1]# touch -c -t 1801011314.52 time.log
[root@localhost exercise1]# stat time.log
文件:"time.log"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:16627 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-01-01 13:14:52.000000000 +0800
最近更改:2018-01-01 13:14:52.000000000 +0800
最近改动:2020-09-07 14:30:45.188952101 +0800
创建时间:-
# 使用参数修改为指定的时间戳
参数 | 参数描述 |
---|---|
-i | 删除前逐一询问确认(要习惯用-i模式还可以反悔) |
-f | 删除时无需确认 |
-r | 将目录及以下之档案亦逐一删除 (递归删除)-ri递归删除并确认 |
rm -f file1 file2 file3
:不用确认同时删除多个文件rm /tmp/file1
:删除指定目录/tmp下的文件 file1rm fi*
:删除以fi 开头的文件rmdir
:删除空目录,删除时必须具有对其父目录的写权限。不能删除非空目录(有空子目录也不行)rmdir -p mydir/text1/text2/
:递归删除空目录(只写子目录或父目录都是错的)。rm -r dir
:递归的方式删除非空目录dirrm -rf dir
: 不用确认直接删除非空目录dir参数 | 参数描述 |
---|---|
-i | 询问是否覆盖同名文件; |
-f | 覆盖同名文件不提示 |
mv /home/file /tmp
:移动/home目录下的file文件到/tmp 目录下,也可移动多个文件mv /home/file /tmp/file2
:移动/home/file文件到/tmp 目录下并改名为file2mv file dirname1 dirname2 /tmp
:移动目录和文件到/tmp下mv file3 file4
:将file3 改名为file4mv dir10 dir11
:目录dir10 改名为dir11mv -i text2.txt text1.txt
:改名前询问如果重名是否覆盖mv * ../
: 移动当前文件夹下的所有文件到上一级目录(*代表当前目录所有文件,也可写作./ *) |
cp /tmp/file2 /home
:复制/tmp/file2文件到/home 目录下cp /home/file2 /tmp/file3
:复制/home/file2到/tmp 目录下并改名为file3cp -p file3 /home
:复制file3到/home 目录下并复制文件属性cp -r /dir5 /tmp
:复制/dir5目录下所有内容到/tmp 下cp -ai mydir/text1.txt mydir/test1
:复制 text1.txt 到 test1 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
cp [options] source dest 将source文件复制并改名为dest
cp [options] source... directory 将source文件复制到目录directory
参数 | 参数功能描述 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合 |
-d | 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 |
-f | 覆盖已经存在的目标文件而不给出提示。 |
-i | 重名时提示是否覆盖目标文件 |
-p | 除复制文件内容及属性,比如修改时间和访问权限。 |
-r | 复制目录下所有的子目录和文件。 |
-RT | 复制该目录下所有的子目录和文件,同时不复制原始目录 |
-s | 为文件生成快捷方式 (上链接) |
# 常用的一些有以下参数
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
cat /etc/passwd
:显示整个文档内容cat /etc/passwd |more
:分屏查看文件内容,按空格键往下翻页,“q”退出cat /etc/passwd |less
:分屏查看文件内容,可以pagedown/pageup上下翻页,“q”退出cat text1.txt > text2.log
:复制text1.txt 的内容到 text2.logcat -n text1.txt > text2.log
:复制text1.txt 的内容到 text2.log ,并加上行号cat -b text1.txt text2.log >> text3.txt
:把 text1.txt 和 text2.txt 的文档内容加上行号(空白行不加),之后将内容附加到 text3.txt 文档里cat /dev/null > text1.txt
:清空 /mydir/text1.txt 文档内容
cat [-AbeEnstTuv] [--help] [--version] fileName
-n | –number 用的最多 | 由 1 开始对所有输出行编号,输出到控制台,相当于查看文件内容 |
-b | –number-nonblank | 和 -n 相似,只不过对于空白行不编号 |
-s | –squeeze-blank | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-v | –show-nonprinting | 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外 |
-E | –show-ends | 在每行结束处显示 $ |
-T | –show-tabs | 将 TAB 字符显示为 ^I |
-A | –show-all | 等价于 -vET |
-e | 等价于"-vE"选项 | |
-t | 等价于"-vT"选项 |
[root@localhost ~]# cat mydir/text1.txt
# 编辑文本,使用vi打开文本
# 按i键进入编辑界面
# 输入对应的内容后
# 按ESC退出编辑模式
# 按住shift+;进入命令行界面
# 输入wq回车接口保存退出
[root@localhost mydir]# cat -n text1.txt > text2.log
[root@localhost mydir]# cat text2.log
1 # 编辑文本,使用vi打开文本
2 # 按i键进入编辑界面
3 # 输入对应的内容后
4 # 按ESC退出编辑模式
5 # 按住shift+;进入命令行界面
6 # 输入wq回车接口保存退出
[root@localhost mydir]# cat -b text1.txt text2.log >> text3.txt
[root@localhost mydir]# cat text3.txt
1 # 编辑文本,使用vi打开文本
2 # 按i键进入编辑界面
3 # 输入对应的内容后
4 # 按ESC退出编辑模式
5 # 按住shift+;进入命令行界面
6 # 输入wq回车接口保存退出
7 1 # 编辑文本,使用vi打开文本
8 2 # 按i键进入编辑界面
9 3 # 输入对应的内容后
10 4 # 按ESC退出编辑模式
11 5 # 按住shift+;进入命令行界面
12 6 # 输入wq回车接口保存退出
[root@localhost mydir]# cat /dev/null > text1.txt
[root@localhost mydir]# cat text1.txt
[root@localhost mydir]# ls
test1 test2 text1.txt text2.log text3.txt
cat
,但会逐页显示,方便阅读more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数 | 参数功能描述 |
---|---|
-num | 一次显示的行数 |
-d | 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] , 如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声 |
-l | 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能 |
-f | 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上) |
-p | 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 |
-c | 跟 -p 相似,不同的是先显示内容再清除其他旧资料 |
-s | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-u | 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同) |
+/pattern | 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示 |
+num | 从第 num 行开始显示 |
fileNames | 需要显示内容的文档,可为复数个数 |
常用的操作命令
按键 | 按键功能描述 |
---|---|
Enter | 向下 n 行,需要定义。默认为 向下1 行,即一行行阅读 |
Ctrl+F | 向下滚动一屏 |
空格键 | 向下滚动一页,即一页页阅读 |
Ctrl+B | 返回上一页 |
= | 输出当前行行号 |
:f | 输出文件名和当前行的行号 |
V | 调用vi编辑器 |
!命令 | 调用Shell,并执行命令 |
q | 退出more |
[root@localhost mydir]# more +3 text3.txt
3 # 输入对应的内容后
4 # 按ESC退出编辑模式
5 # 按住shift+;进入命令行界面
6 # 输入wq回车接口保存退出
7 1 # 编辑文本,使用vi打开文本
8 2 # 按i键进入编辑界面
9 3 # 输入对应的内容后
10 4 # 按ESC退出编辑模式
11 5 # 按住shift+;进入命令行界面
12 6 # 输入wq回车接口保存退出
[root@localhost mydir]# ls -l / | more -5
总用量 20
lrwxrwxrwx. 1 root root 7 8月 31 15:48 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 8月 31 15:58 boot
drwxr-xr-x. 20 root root 3240 9月 5 13:07 dev
drwxr-xr-x. 75 root root 8192 9月 7 10:30 etc
--More--
# 空格会显示下5行
# 回车会显示下1行
作用:与 more
类似,但可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
语法:less [参数] 文件
命令参数:
参数 | 参数功能描述 |
---|---|
-i | 忽略搜索时的大小写 |
-N | 显示每行的行号 |
-o | <文件名> 将less 输出的内容在指定文件中保存起来 |
-s | 显示连续空行为一行 |
/字符串: | 向下搜索“字符串”的功能 |
?字符串: | 向上搜索“字符串”的功能 |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
-x <数字> | 将“tab”键显示为规定的数字空格 |
b | 向前翻一页 |
d | 向后翻半页 |
h | 显示帮助界面 |
Q | 退出less 命令 |
空格键 | 滚动一页,和more一样 |
回车键 | 滚动一行,和more一样 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
[root@localhost mydir]# less text3.txt
1 # 编辑文本,使用vi打开文本
2 # 按i键进入编辑界面
...省略...
# 进入后查看,Q键退出界面
[root@localhost mydir]# less text3.txt
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 05:06 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 05:06 ? 00:00:00 [kthreadd]
...省略...
3. 查看命令历史使用记录并通过less分页显示
[root@localhost test]# history(历史命令) | less
1 exit
2 reboot
3 shutdowm -r now
4 poweroff
5 cd
...省略...
查看多屏直接选项卡右键复制就行。
[root@localhost mydir]# less text3.txt
# 此时如果需要查看多个文件可以使用 可以输入shift+;进入命令行模式
# 使用 p 和 n 进行上下页面翻页查看
附加备注
1.全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
2.单行导航
j - 向前移动一行
k - 向后移动一行
3.其它导航
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令
4.其它有用的命令
v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件
5.标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
ma - 使用 a 标记文本的当前位置
'a - 导航到标记 a 处
Linux 命令大全 Linux 命令大全
head [参数] [文件]
参数 | 参数描述 |
---|---|
-q | 隐藏文件名 |
-v | 显示文件名 |
-c<数目> | 显示的字节数 |
-n<行数> | 显示的行数 |
显示 t.log最后 10 行
[root@localhost ~]# tail -n t.log 查看t.log后n行
[root@localhost ~]# tail -f t.log 查看t.log末尾并不断显示
当一个文件不停写入更新时使用tail -f可以一直查看文件末尾,不停更新。要退出按ctrl+c
在 linux 要查找某个命令或者文件,但不知道放在哪里了,可以使用下面的一些命令来搜索
which 查看可执行文件的位置(PATH里的文件)。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
参数 | 参数描述 |
---|---|
-n<文件名长度> | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 |
-p<文件名长度> | 与-n参数相同,但此处的<文件名长度>包括了文件的路径 |
-w | 指定输出时栏位的宽度 |
-V | 显示版本信息 |
[root@localhost ~]# which ls 查看ls命令的执行文件在哪里
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost ~]# which cd
(注意:显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
# linux中引用环境变量使用$,PATH大写。echo是xshell语言中的打印函数
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- whereis :只能用于程序名的搜索,而且只搜索二进制文件(可执行文件,参数
-b
)、man说明文件(帮助手册,参数-m
)和源代码文件(参数-s
)。如果省略参数,则返回所有信息。- where is 及 locate :都基于系统内建的数据库进行搜索,因此效率很高,
- find:遍历硬盘查找文件
参数 | 参数描述 |
---|---|
-b | 定位可执行文件 |
-B<目录> | 只在设置的目录下查找可执行文件 |
-f | 不显示文件名前的路径名称 |
-m | 定位帮助文件 |
-M<目录> | 只在设置的目录下查找说帮助文件 |
-s | 定位源代码文件 |
-S<目录> | 只在设置的目录下查找源代码文件 |
-u | 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件 |
查找ls程序相关文件、源码文件、帮助文件
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@localhost ~]# whereis -s ls
[root@localhost ~]# whereis -m ls
ls: /usr/share/man/man1/ls.1.gz
locate可以查看所有类型文件,不指定目录时默认查找所有目录里的文件(可以只给出关键词,也可加文件类型),需要注意这个命令在我们的最小mini系统里面是没有安装的。
[root@localhost ~]# yum install mlocate
...省略...
[root@localhost ~]# updatedb(更新数据库以便在里面查找,没更新之前无法用locate查找数据库)
参数 | 参数描述 |
---|---|
-b | 仅匹配路径名的基本名称 |
-c | 只输出找到的数量 |
-d | 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db |
-e | 仅打印当前现有文件的条目 |
-1 | 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。 这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料 |
-0 | 在输出上带有NUL的单独条目 |
-S | 不搜索条目,打印有关每个数据库的统计信息 |
-q | 安静模式,不会显示任何错误讯息 |
-P | 检查文件存在时不要遵循尾随的符号链接 |
-l | 将输出(或计数)限制为LIMIT个条目 |
-n | 至多显示 n个输出 |
-m | 被忽略,为了向后兼容 |
-r | REGEXP – 使用基本正则表达式 |
–regex | 使用扩展正则表达式 |
-o | 指定资料库存的名称 |
-h | 显示帮助 |
-i | 忽略大小写 |
-V | 显示版本信息 |
常用参数:
参数 | 参数描述 |
---|---|
-l | num(要显示的行数) |
-f | 将特定的档案系统排除在外,如将proc排除在外 |
-r | 使用正则运算式做为寻找条件 |
[root@localhost ~]# locate pwd
/etc/.pwd.lock
/usr/bin/pwd
...省略...
[root@localhost ~]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
[root@localhost ~]# locate -r '^/root.*sh$'
/root/test.sh
find /etc/pass*
:在/etc目录中查找以 pass开头的文件find /etc/pass* -print
:在/etc目录中查找以 pass开头的文件,并显示出来
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
参数 | 参数描述 |
---|---|
pathname | find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录 |
find命令将匹配的文件输出到标准输出 | |
-exec | 对find命令找出的文件执行exec后面的shell命令。{ }表前面查找的文件名以 ;结束,注意{ }和\;之间的空格如find ./ -name ‘*.txt’ -exec cp {} ./x/ ; |
-ok | 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行 |
命令选项:
选项 | 选项描述 |
---|---|
-name | 按照文件名查找文件,find ./ -name '*.txt’表示当前目录下查找所有log文件(三空格) |
biaos-perm | 按文件权限查找文件 |
-user | 按文件属主查找文件 |
-group | 按照文件所属的组来查找文件 |
-type | 查找某一类型的文件,诸如: b - 块设备文件 d - 目录 c - 字符设备文件 l - 符号链接文件 p - 管道文件 f - 普通文件(前有空格) |
-size +nc | 查找文件长度为n字节大小的文件 |
-amin -n | 查找系统中最后N分钟访问的文件 |
-atime -n | 查找系统中最后n*24小时访问的文件 |
-cmin n | 查找系统中最后N分钟被改变文件状态的文件 |
-ctime n | 查找系统中最后n*24小时被改变文件状态的文件 |
-mmin n | 查找系统中最后N分钟被改变文件数据的文件 |
-mtime n | 查找系统中最后n*24小时被改变文件数据的文件 |
-maxdepth n | 最大查找目录深度 |
-prune | 选项来指出需要忽略的目录。在使用-prune选项时要当心, 因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略 |
-newer | 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项 |
[root@localhost ~]# find -atime -2
.
./.bash_profile
...省略...
[root@localhost ~]# find ./ -name '*.log' 如果不接任何参数表示只在当前目录查找
./mydir/text2.log
./test.log
[root@localhost ~]# find /opt -perm 777
[root@localhost ~]# find -size +1000c
./anaconda-ks.cfg
./.bash_history
./.viminfo
[root@localhost ~]# find -size 1000c
[root@localhost ~]# find . -type f -mtime +10 -exec rm -f {} \;
# 可以不用操作,了解一下结构即可
[root@localhost ~]# find . -name '*.log' -mtime +0 -ok -exec rm {} \;
< -exec ... ./mydir/text2.log > ? n
exec
选项执行 cp 命令exec
参数后面跟的是 command 命令,它的终止是以 ;
为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名[root@localhost ~]# find . -name '*.log' -exec cp {} test3 \;
-xargs find
命令把匹配到的文件传递给 xargs 命令,而 xargs 命令每次只获取一部分文件而不是全部,不像 -exec 选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。查找当前目录下每个普通文件,然后使用 xargs 来判断文件类型
[root@localhost ~]# find . -type f -print | xargs file
[root@localhost ~]# find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
[root@localhost ~]# find -type f -name '*.js' | xargs grep -lF 'editor'
[root@localhost ~]# find . -name "*.log" | xargs -i mv {} test4
[root@localhost ~]# find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'
[root@localhost ~]# find . -name '[a-z]*[4-9].log' -print
[root@localhost ~]# find test -path 'test/test4' -prune -o -print
[root@localhost ~]# find -newer log2012.log ! -newer log2017.log
实例:find 命令从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。 它将首先匹配所有的文件然后再进入子目录中查找
```bash
[root@localhost ~]# find / -name "CON.FILE" -depth -print
Linux/Unix 的文件调用权限分为三组 :文件拥有者(属主)、属主所在群组(属组)、其他用户;每组权限用rwx三位表示,分别为文件的读、写和执行权限(详细见本文1.2 章节基本概念):
这些权限可以使用chmod
进行修改。其用法有两种:
chmod u=r file1 # 给文件的属组赋予读取权限
chmod u=wx file1 # 给文件的属组赋予写和执行权限
chmod g+rw file1 # 给文件的属组增加读写权限
chmod g-rw file1 # 给文件的属组去掉读写权限
chmod o=rw file1 # 给文件的其他用户的权限改为读写
chmod a+rwx file1 # 给所有用户增加读写和执行权限
chmod 766 dir1 #将目录dir1 的权限更改为rwx rw rw
chmod 777 file1 #将文件file1 的权限更改为 rwx rwx rwx
chmod -a 777 test.log # 增加文件 t.log 所有用户可执行权限
语法:chmod [-cfvR] [--help] [--version] mode file
…
常用参数:
参数 | 参数描述 |
---|---|
-c | 当发生改变时,报告处理信息 |
-R | 处理指定目录以及其子目录下所有文件 |
将mydir 目录及其子目录所有文件添加可读权限
[root@localhost ~]# chmod u+r,g+r,o+r -R text/ -c
chown u1 dir1
:将dir1 目录的属主改为u1chown u2.g1 dir1
:将dir1 目录的属主改为u2,属组改为 g1
注意:一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。
chown [-cfhvR] [--help] [--version] user[:group] file...
参数 | 参数描述 |
---|---|
user | 新的文件拥有者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件(递归改变) |
[root@localhost ~]# chown -c mail:mail test.log(前一个是用户,有一个为群组)
changed ownership of "test.log" from root:root to mail:mail
-r--r-xr-x. 1 mail mail 36 9月 8 18:36 test.log
[root@localhost ~]# chown -c :mail test.sh
changed ownership of "test.sh" from root:root to :mail
[root@localhost ~]# chown -cR mail: mydir
changed ownership of "mydir/test1/text1.txt" from root:root to mail:mail
changed ownership of "mydir/test1" from root:root to mail:mail
...省略...
grep(Global Regular Expression Print) 全局正则表达式搜索, 是一个强大的文本搜索命令。grep -模式 'key' filename
可以查找文件中的关键字,或者使用grep ps aux| key
控制台查找(不加引号)
grep 的工作方式:在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容
注意:如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据
grep [option] pattern file|dir
常用参数:
参数 | 参数描述 |
---|---|
-A n | 显示匹配字符后n行 |
-B n | 显示匹配字符前n行 |
-C n | 显示匹配字符前后n行 |
-c | 计算符合样式的列数 |
-i | 忽略大小写 |
-l | 只列出文件内容符合指定的样式的文件名称 |
-f | 从文件中读取关键词 |
-n ‘for’ filename | 找出file文件中所有含’for’的部分并显示其行数 |
-R | 递归查找文件夹 |
grep 的规则表达式(都是在文件中查找)
参数 | 作用 |
---|---|
^ |
锚定行的开始 如:'^grep’匹配所有以grep开头的行。 |
$ |
锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 |
. |
匹配一个非换行符的字符 如:'gr.p’匹配gr后接一个任意字符,然后是p。 |
* |
匹配零个或多个先前字符 如:'*grep’匹配所有一个或多个空格后紧跟grep的行。 |
.* |
一起用代表任意字符。 |
[] |
匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。 |
[^] |
匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 |
\(..\) |
标记匹配字符,如’(love)',love被标记为1。 |
\< |
锚定单词的开始,如:' |
\> |
锚定单词的结束,如’grep>'匹配包含以grep结尾的单词的行。 |
x\{m\} |
重复字符x,m次,如:'0{5}'匹配包含5个o的行。 |
x\{m,\} |
重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。 |
x\{m,n\} |
重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5–10个o的行。 |
\w |
匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。 |
\W |
\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 |
\b |
单词锁定符,如: '\bgrep\b’只匹配grep。 |
[root@localhost ~]# ps -ef | grep svn
root 6771 9267 0 15:17 pts/0 00:00:00 grep --color=auto svn
[root@localhost ~]# ps -ef | grep svn -c
1
[root@localhost ~]# cat test.log | grep -f test.log
马士兵教育:www.mashibing.com
[root@localhost ~]# grep -lR '.sh$'
.bash_history
test.sh
.viminfo
log.tar
[root@localhost ~]# grep '^[^x]' test.log
马士兵教育:www.mashibing.com
[root@localhost ~]# grep -E 'ed|at' test.log
ps -A
:简明查看系统启动的所有进程ps -aux
:显示所有用户所有进程的详细信息ps -A |grep 服务名
:显示指定服务的进程简明信息ps -aux |grep 服务名
:显示指定服务的详细进程信息
作用: 用于显示当前进程 (process) 的状态
语法: ps [options] [--help]
linux上进程有5种状态,ps 标识进程的5种状态码如下:
参数 | 参数描述 |
---|---|
-A | 显示所有进程 |
a | 显示所有进程 |
-a | 显示同一终端下所有进程 |
c | 显示进程真实名称 |
e | 显示环境变量 |
f | 显示进程间的关系 |
r | 显示当前终端运行的进程 |
-aux | 显示所有包含其它使用的进程 |
[root@localhost ~]# ps -ef
[root@localhost ~]# ps aux | grep '(cron|syslog)'
root 20454 0.0 0.0 112824 984 pts/0 S+ 15:30 0:00 grep --color=auto (cron|syslog)
kill 进程号
:关闭指定进程killall 服务名
:关闭服务的所有进程kill -9 进程号
:强制关闭指定进程killall -9 服务名
:强制关闭服务的所有进程
kill
命令用于删除执行中的程序或工作
kill
可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序(kill-9 进程编号。程序或工作的编号可利用 ps 指令或 jobs 指令查看
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数 | 参数描述 |
---|---|
-l | 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称 |
-a | 当处理当前进程时,不限制命令名和进程号的对应关系 |
-p | 指定kill 命令只打印相关进程的进程号,而不发送任何信号 |
-s | 指定发送信号 |
-u | 指定用户 |
先使用ps查找进程pro1,然后用kill杀掉
[root@localhost ~]# kill -9 $(ps -ef | grep pro1)
-bash: kill: root: 参数必须是进程或任务 ID
-bash: kill: (27319) - 没有那个进程
-bash: kill: (27317) - 没有那个进程
在Linux中,有许多种解压,压缩文件的命令,本章会一一介绍
本节介绍zip压缩可解压命令unzip
sudo apt-get install zip # ubantu安装
yum install -y unzip zip # centos安装
语法:zip -r archive_name.zip filename
(-r是压缩文件)
# 把/home目录下面的mydata 目录压缩为 mydata.zip
zip -r mydata.zip mydata #压缩mydata目录
# 把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
zip -r abc123.zip abc 123.txt
unzip archive_name.zip # 解压至当前文件夹
unzip archive_name.zip -d dirname # 解压文件至指定目录
搜索压缩文件参考《linux压缩和解压缩命令tar,zip,gzip》
tar
本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
安装:
sudo apt-get install tar # ubantu
yum install -y tar # centos
作用: 用于备份文件(tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件)
语法:
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F