文件及文件目录操作相关
1.查看文件内容
① cat
命令格式:cat [options] [file...]
选项:
-A 显示所有字符,包括控制字符和非打印字符。
-s 将相邻的多个空行“挤”在一个空行里。
-n 显示行号。
特点:cat命令显示文件时会同时显示所有内容。大型文件会在显示屏上一晃而过,难以阅读,所以cat命令比较适合显示内容小于一屏的文件。
②more和less
命令格式:more/less [options] [file...]
选项:
-c 重绘屏幕,而不是接着滚屏显示。
-s 将多个相邻的空行“挤”在同一行里。
-r [less命令选项] 显示原始控制字符。
特点:more和less都可以在显示屏上浏览文本文件。less命令比more命令更加强大。
less,more导航命令(在使用more/less命令之后的动作命令)。以后就用less好了。
命令 | more | less | 动作 |
<空格键> | 1 | 1 | 前进一页 |
[PgDn] | 0 | 1 | 前进一页 |
[向上箭头] | 0 | 1 | 前进一行 |
[向下箭头] | 0 | 1 | 后退一行 |
[PgDn] | 0 | 1 | 后退一页 |
b | 1 | 1 | 后退一页 |
/text | 1 | 1 | (text为关键字)向前搜索文本 |
?text | 0 | 1 | (text为关键字)向后搜索文本 |
n | 1 | 1 | 重复上个搜索 |
N | 0 | 1 | 反方向重复上个搜索 |
q | 1 | 1 | 退出 |
h | 1 | 1 | 帮助 |
③head
命令格式:head [options] [file...]
选项:
-num,-n num 显示开始的num行(默认显示10行)。
-q 不显示文件标题,只显示文件内容。
特点:显示文件前面的几行。
注释:如果将一个或者多个文件名作为参数,head命令分别显示每个文件的开始几行,文件内容间使用文件名作为抬头将文件分开。例如 head -5 ./* 表示显示当前目录的全部文件的前5行
④tail
命令格式:tail [options] [file...]
选项:
-num,-n num 显示最后num行(默认是10行)。
-q 不显示文件标题,只显示文件内容。
-f 保持文件处于打开状态,不断显示新添加的行。(follow)
特点:显示文件的最后几行。
注释:使用 tail -f 时, 可用这个选项实时监控系统日志文件,一旦使用这个选项,命令就不会返回,一直会处于活动状态,直到按Ctrl+C组合键中断进程。
2.编辑文件
vi/vim编辑器的使用:菜鸟教程>>
3.创建空文件
touch
命令格式:touch [file..]
特点:创建一个空文件。
例子:touch 001.txt
4.文件搜索命令
find
命令格式: find [range] [option] [condition]
//to be continued...
5.文件移动,复制,
cp : 复制文件
cp 001.txt 002.txt //复制一份001.txt,并命名为002.txt
cp 001.txt /etc //复制001.txt到etc目录下
cp 001.txt 002.txt /etc //复制001.txt,002.txt到/etc目录下
cp ~/index.html . //从你的主目录复制文件index.html到当前目录
注:当要移动的对象是目录时,必须使用-r选项,否则就会报cp: omitting directory `*'的错误。
常规文件所有者及权限:
Linux中每个文件都有三个属性:用户所有者,组所有者和一组权限
当一个用户创建一个文件时,该用户就是这个文件的用户所有者,(经常)这个用户的主要组也就成为了这个文件的组所有者。
三种权限类型:r可读,w可写,x可执行
三种访问级别:u用户所有者,g组所有者,o其他
上面的login.html文件只有oracle用户可写,其他成员都只能读取。
一些命令:
chmod可以用来修改文件的权限
第一个参数由一组字母组成,表明访问级别,然后跟+-=,再跟另一组字母,表明要改变的权限。第二个参数指明要改变的文件。
图片来自《RedHat用户基础》
一些例子:
图片来自《RedHat用户基础》
注:八进制计数法,确定权限
r可读为4,w写入是2,x执行是1
r 100
w 010
x 001
777 rwx rwx rwx
755 rwx r-x r-x
640 rw- r-- ---
701 rwx --- --x
例如: chmod 600 diary
运行上述命令之后,diary的权限是rw- --- ---
新建文件默认664,新建目录默认775
chgrp可以用来修改文件的组所有者
chgrp GROUP FILE
chown命令可以改变用户的所有者
chown USER FILE
输出重定向:
例子:pwd > result.txt 将当前目录重定向到result.txt中。
echo hello > 001.txt
【注意:如果result.txt已经存在,重定向将会删除并重建一个空的文件存放输出结果】
还有一个符号:>>,如果文件存在,新的输出结果将会追加在文件末尾。如果文件不存在系统将会建立一个文件,填充输出结果。
用户和组相关
几个重要的文件:
/etc/passwd文件存放着用户名与用户ID的对应关系。用户密码不存储在这里
oracle:x:501:501::/home/oracle:/bin/bash
用户名:密码:用户ID:主要组 ID::主目录:登陆Shell
用户ID:Linux内核用这个整数识别用户
主要组ID:Linux内核用这个整数识别用户的主要组
主目录:用户登陆时,其登陆的Shell将用这个目录作为当前工作目录。这是普通用户可以写入的几个目录之一,通常为用户私有。
登陆Shell:用户登陆时的默认Shell,通常为/bin/bash
/etc/shadow文件存放着用户的密码 【影子密码】
test:$1$MukwPn9g$TiId2t/NxX7WQF0yzbCTx.:17742:0:99999:7:::
注:普通用户不可以查看此文件的内容,root用户可以查看,且密码被加密。用户可以使用passwd命令修改自己的密码(不接收参数,例如passwd)。root用户可以更改用户的密码(接收参数[用户名],例如passwd test)。
/etc/group文件将组名和组ID 联系在一起,并且定义了哪些用户属于哪些组。
test:x:504:
组名称:组密码:组ID:组成员
组名称:可读的组名称
组密码:组的密码,比较少用
组ID:整数组ID
组成员:定义组成员的用户列表,用逗号隔开
注:文件系统上的每个文件都有一个用户所有者和一个组所有者。
几个命令:
id 常常被用来确定用户成员的身份信息。
例子:
命令:id test
输出:uid=503(test) gid=504(test) groups=504(test)
whoami 输出当前用户的用户名
users 打印当前登陆用户的简单列表
例子:
命令:users
输出:oracle root root root
w 打印当前登陆的用户,提供了更为详细的信息
例子:
命令:w
输出:
11:00:37 up 2:20, 5 users, load average: 0.05, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
oracle pts/1 192.168.70.1 08:42 0.00s 0.17s 0.07s w
root pts/2 192.168.70.1 09:23 23:26 0.04s 0.04s -bash
root tty1 :0 09:29 2:20m 4.37s 4.37s /usr/bin/Xorg :0 -nr -verbos
root pts/3 :0.0 09:30 1:28m 0.01s 0.01s /bin/bash
USER 登陆用户的用户名
TTY 登陆用户的终端
FROM 如果用户从网络上登陆,用户使用的主机名
LOGOIN@ 用户会话开始时间
PCPU 在‘WHAT’字段中命名的唯一一个当前进程所消耗的CPU时间总量
WHAT 用户当前运行的进程
su命令可以让用户切换用户(switch user)
例子:su 用户名
su test
如果当前用户是root用户,则直接切换,若是普通用户,则需要输入密码才能切换。
命令列表
关机 halt poweroff
cal 简单日历程序
ps 显示单终端上启动的所有进程。
ps aux 显示所有正在系统中运行的进程。
who 命令判断谁在系统上
service iptables stop 关闭防火墙(需root权限)
ps -ef|grep redis-server 查找某个进程的信息
id test 查看某个用户的用户ID(用户名),主要组ID(主要组名),用户所属的所有组(组名称)
选项列表
-r (recursive) 递归,许多命令都有递归选项,能够访问目录树的所有分支,比并依次对其进行处理。
通配符
字符 | 描述 |
* | 匹配0个或者多个字符(开头的点'.'除外) |
? | 匹配一个字符(开头的'.'除外) |
[...] | 匹配在给出的列表或者范围内的任意一个字符,[a-zA-Z0-9] |
[^...] | 匹配在给出的列表或者范围外的任意一个字符 |