1.(常用)Linux特殊目录介绍
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录(即:上上目录)
~ 代表【目前用户身份】所在的家目录
~account 代表account这个用户的家目录(account是个账号名称)
2.(常用)处理目录/文件指令
cd 切换目录
pwd 显示当前目录
mkdir 建立一个新的目录
参数:
-m 配置文件的权限!直接设定,不需要看预设权限(umask)的脸色
eg:mkdir -m 711 test.txt 即直接对创建的文件夹进行权限设置
-p 递归创建多个文件夹
eg:mkdir -p /test1/test2/test3
rmdir 删除一个空的目录(非空目录删除会失败)
# 删除当前目录下除 'ok.jsp'外的所有文件
rm -rf `ls | grep -v 'ok.jsp'`
ls 显示当前目录信息
参数:
-a:显示隐藏文件
-d: 仅列出目录本身,而不是列出目录内的文件数据(只罗列一个开头为.的文件)
-l:与ll一样
-r:将排序结果反向输出。例如:原本文件名由小到大,反向则是由大到小
-t:按时间排序
-S:按文件容量大小排序
-h:将文件容量以人类易读的方式(GB、KB)展示
--full-time:以完整的时间模式(包括年、月、日、时、分)输出
cp 复制(copy)
参数:
-a 复制后的文件,权限、用户名、用户组、时间等,都一模一样
-i 若目标文件已经存在,在覆盖时会询问动作的进行(是否覆盖)
-p 连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份时常用)
-r 递归持续复制,用于目录的复制行为
-s 复制成快捷方式文件
rm 删除(remove)
参数:
-r 递归删除
-f 强制删除(force)
-i 互动模式,删除之前会提示是否删除
mv 移动文件/目录,更名
参数:
-f force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i 若目标文件已经存在,会提示是否覆盖
-u 若目标文件已经存在,且该资源比较新,才会更新(update)
basename 取得目录的文件名称(shell中会使用)
eg:basename /home/hadoop/zkdata ----->zkdata
dirname 取得路径的目录名称(shell中会使用)
eg:dirname /home/hadoop/zkdata --------->/home/hadoop
3.内容的查看
cat 直接查看文件内容(文件内容多的话,也不常用)
参数:
-b 列出行号,仅针对非空白行显示行号,空白行不标行号
-n 打印出行号,连同空白行也会有行号,与-b的选项不同
tac 反向显示文件内容(不常用)
同cat命令相反,只是从最后一行内容先显示
nl 添加行号,与cat -n有区别,比cat -n更灵活(不常用)
参数:
-b 指定行号指定的方式,主要有两种:
-b a 表示不论是否为空行,也同样列出行号(类似cat -n)
-b t 如果有空行,空的那一行不要列出行号(默认值)
-n 列出行号表示的方法,主要有三种
-n ln : 行号在屏幕的最左方显示
-n rn : 行号在S字段的最右方显示,且不加0
-n rz : 行号在S字段的最右方显示,且加0
-w 设定行号字段的占用的字符数。
eg:nl -b a -n rz -w 3 xxx.xml
4.(常用)more/less 翻页查看
more
空格键 代表向下翻一页
Enter 代表向下翻『一行』
/字符串 代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
:f 立刻显示出文件名以及目前显示的行数
q 代表立刻离开more,不再显示该文件内容
b/Ctrl+B 代表往回翻页,不过这动作只对文件有用,对管道无用
less(相比more来说功能更多)
空格键 向下翻动一页
PageDown 向下翻动一页
PageUp 向上翻动一页
/字符串 向下搜寻『字符串』的功能
?字符串 向上搜寻『字符串』的功能
n 重复前一个搜寻(与/或?有关!)
N (反向的)重复前一个搜寻(与/或?有关!)
g 跳到第一行
G 跳到最后一行
q 退出less
5.(常用)head/tail 取出文件前面几行/后面几行
head(取出前面几行)(head中文意思:头)
参数:
-n 后面接数字,代表显示几行的意思(默认显示10行)
eg:head -n 20 text.txt
如果后面100行的数据都不打印,只打印除末100行之前的数据,可以使用 -n -100
tail(取出后面几行) (tail中文意思:尾巴)
参数:
-n 后面接数字,代表显示几行的意思(默认显示10行)
-f 标识持续监测文件的内容,ctrl-c结束 eg:tail -f 100 catalina.out
实例:取第11行到第20行的数据
head -n 20 /etc/man_db.conf | tail -n 10
解析:|->管道.其意思是:前面的指令输出的信息,通过管道交由后续指令继续使用
6.(常用)对文件中的内容进行统计
wc 统计指定文件中的字节数、字数、行数,并将统计结果显示输出
参数:
-c 统计字节数
-l 统计行数
-m 统计字符数『这个标志不能与 -c 标志一起使用』
-w 统计字数『一个字被定义为由空白、跳格或换行字符分隔的字符串』
-L 打印最长行的长度。
--help 显示帮助信息
--version 显示版本信息
7.touch(P192)
1.用来修改文件的时间(atime、ctime、mtime)
参数:
-a 仅自定义access_time(atime)
-c 仅修改文件的时间
-d 后面可以接自定义的日期而不用目前的日期,也可以使用--date="日期或时间"
-m 仅修改mtime
-t 后面可以接自定义的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
2.创建新文件 touch 文件名
8.umask
文件的默认权限 0022
文件,默认没有可执行x,默认权限为666
目录,默认全开放,默认权限777
要注意的是:umask的数字指的是该默认值需要减掉的权限。
使用 umask 002 这种方式可以修改默认值
9.file
观察文件的类型 [file 文件名]
通过这个命令,可以简单的先判断这个文件的格式。包括未来你也可以用来判断 tar 包使用的是哪一种压缩方式。
10.指令和文件搜索
which 脚本文件名搜索
参数:
-a 将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
* whereis 在特定的目录中寻找文件/文件名。它只会查找/usr 目录、/etc 目录。
(可通过 whereis -l 来知道whereis到底查找了哪些目录)
选项与参数:
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文件 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
* locate 利用数据库来搜寻文件名(2020-08-28 我觉得这个好用,还准确点)
通过 yum install mlocate 安装,并通过 updatedb 更新数据库(updatedb会去硬盘搜寻,数据库存在/var/lib/mlocate 目录)
CentOS 7.x 每天更新数据库一次,新创建的文件如果查找,必须updatedb及时更新才能找到
updatedb会根据/etc/updatedb.conf的设定,然后去硬盘搜索
选项与参数:
-i :忽略大小写的差异;
-c :不输出文档名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正规表示法的显示方式
find
链接:https://blog.csdn.net/lzb348110175/article/details/108275740
11.磁盘/文件容量查询
df:列出文件系统的整体磁盘使用量;
选项和参数:
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
du:评估文件系统的磁盘使用量(常用在推估目录所占容量)
du 会列出所有目录的容量
du -a 会列出目录和目录下文件的容量
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量(重点)
-m :以 MBytes 列出容量显示;
12.ln
ln -s 源文件 新文件----软链接(符号链接、快捷方式 )
ln 源文件 新文件-------硬链接
13.数据流重导向 (> >> < <<)的使用
1. 标准输入 (stdin) :代码为 0 ,使用 < 或 <<
2. 标准输出 (stdout):代码为 1 ,使用 > 或 >>
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>
-----------------------------------------------------------------------------------------------
1> :以覆盖的方法将『正确的数据stdout』输出到指定的文件或装置上; (cat aa.txt > bb.txt)
1>>:以累加的方法将『正确的数据stdout』输出到指定的文件或装置上; (cat aa.txt >> bb.txt)
2> :以覆盖的方法将『错误的数据stderr』输出到指定的文件或装置上; (find /home -name .bashrc
> list_right 2> list_error)
2>>:以累加的方法将『错误的数据stderr』输出到指定的文件或装置上;
-----------------------------------------------------------------------------------------------
将正确的数据和错误的数据,都写入到名为list的文件中(使用2>&1 或 &>)
find /home -name .bashrc > list 2> list <==错误
find /home -name .bashrc > list 2>&1 <==正确
find /home -name .bashrc &> list <==正确
-----------------------------------------------------------------------------------------------
< 和 << --->是『将原本需要由键盘输入的数据,改由文件内容来取代』的意思。(<后面需是文件哦)
1.将~/.bashrc 内容,作为标准输入,写入到catfile中
cat > catfile < ~/.bashrc
2.将标准键盘输入写入到 catfile 中,遇到"eof"退出键盘输入
cat > catefile << "eof"
14.cut 选取命令
这个指令可以将一段讯息的某一段给他『切』出来~ 处理的讯息是以『行』为单位喔
选项与参数:
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;(从1开始)
-c :以字符 (characters) 的单位取出固定字符区间;
1.取出 PATH 第5段
echo ${PATH} | cut -c ':' -f 5
2.取出 PATH 第3段和第5段
echo ${PATH} | cut -c ':' -f 3,5
3.取出 PATH 第3-5段
echo ${PATH} | cut -c ':' -f 3-5
export 命令返回 『 declare -x 』开头内容,不想要『 declare -x 』时,可通过 -c 来截掉
[dmtsai@study ~]$ export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/home/xxx"
declare -x HOSTNAME="study.centos.xxx"
4.取出 export 第 12 个字符以后的所有字符串
export | cut -c 12-
5.取出 export 第 12-15个字符
export | cut -c 12-15