Linux核心命令

发布时间 2023-04-01 15:59:18作者: 暗狱碳水

Linux查询命令手册网站:

https://wangchujiang.com/linux-command/

http://linux.51yip.com/

1.线上查询及帮助命令(3个)

man ls

help

info

2.文件和目录操作命令(13个)

ls

$ ls       # 仅列出当前目录可见文件
$ ls -l    # 列出当前目录可见文件详细信息 √
$ ls -hl   # 列出详细信息并以可读大小显示文件大小
$ ls -al   # 列出所有文件(包括隐藏)的详细信息 √
$ ls --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)

cd

cd    # 进入用户主目录;
cd /  # 进入根目录
cd ~  # 进入用户主目录;
cd ..  # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../..  # 返回上两级目录;
cd !$  # 把上个命令的参数作为cd参数使用。写脚本才用

关于切换到上一个工作目录的说明

cd -
# 命令会首先显示要切换到的目标目录,然后再进入。
cd ${OLDPWD}
# 命令会直接切换到上一个工作目录。

cp

cp -r 
# 如果是目录需要加-r参数,递归作用

find

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;

-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-size<文件大小>:查找符合指定的文件大小的文件;

-type<文件类型>:只寻找符合指定的文件类型的文件;递归查找

 

 find / -type f -empty | xagrs rm -rf
# 检索空文件并删除

find / -type f -size +500M
# 查询大于500mb的文件

 

find /home/yuanbao/ -type f -name "t*"

 

 

find ./ -type f -mtime +3 -name "*.log"
# 查找当前目录下 3天前 有更新的文件

 

find ./ -type f -mmin -900
# 查找当前目录下 900min 以内更新的文件

 

find ./ -type f -perm 764
# 递归查找当前目录下 权限为764 的文件

 

ll -i
# 查看当前文件夹下文件的inum号
find ./ -inum 18775420
# 查找inum为18775420的文件
find ./ -inum 18775420 | xargs -i rm -rf {}
# 查找并删除inum为18775420的文件

 

UNIX/Linux文件系统每个文件都有三种时间戳:

  • 访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。

  • 修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。

  • 变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

 

seq 100 > test.java
# 创建100行的文件(清空原内容,标准输出新内容)
find ./ -type f -name "*.java"|xargs cat|grep -v "^$"|wc -l
# 代码行数统计,排除空行

 

mkdir

mkdir -p dir
# 递归创建

 

mv

mv old new
# 修改文件、文件夹名

 

rm

rm file
# 运行后询问是否删除
rm -rf file
# 强制删除

 

touch

touch file
# 普通创建
touch test_{1..100}
# 创建以test_开头的1~100的文件

 

file

file *
file test.sh
# 查看文件信息,一般看是否是shell脚本,或者executable可执行文件

 

[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text

[root@localhost ~]# file -b install.log      <== 不显示文件名称
UTF-8 Unicode text

[root@localhost ~]# file -i install.log      <== 显示MIME类别。
install.log: text/plain; charset=utf-8

[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8

 

tree

tree -L 1
# 列出当前文件夹的第1层级

 

了解

basename

dirname

写脚本用的

chattr

用来改变文件属性

chattr +i /etc/fstab
# 防止文件被修改和删除
chattr -i /etc/fstab
# 移除属性

 

lsattr

查看文件的第二扩展文件系统属性

lsattr file

 

 

md5sum

计算和校验文件报文摘要的工具程序

md5sum test.sh
# 记录文件的md5sum值,若文件被修改,其值也会变,防黑客用

 

# 检查文件testfile是否被修改过
md5sum testfile > testfile.md5
# 首先生成md5文件
md5sum testfile -c testfile.md5
# 检查文件

 

3.查看文件及内容处理命令 (19个)

vi vim

:set nu  # 打印行号
:wq!	 # 强制保存

shift+g  # 跳到最后一行
shift+zz # 强制保存并退出
gg       # 跳到第一行
dd		 # 删除当前行
3dd		 # 删3行
yy		 # 复制当前行
p		 # 粘贴在光标下方
o		 # 进入编辑模式,并往下方插入一行

 

cat

cat > test.java <<EOF
> 1
> 2
> 3
> EOF
# 清空原内容,标准追加新内容

 

more

显示文件内容,每次显示一屏

  • Space 键:显示文本的下一屏内容。

  • Enter 键:只显示文本的下一行内容。

  • 按H键:显示帮助屏,该屏上有相关的帮助信息。

  • 按B键:显示上一屏内容。

  • 按Q键:退出more命令。

 

head

cat test.java | head -n 2
# 查看文件前两行

 

tail

默认输出文件的末尾10行

cat test.java | head -n 2 | tail -n 1
# 查看文件第2行

 

tail test.java
# 实时查看文件后10行

 

 

sort

对文本文件中所有行进行排序

cat 1.txt | sort -nr
# 打印文件内容,并进行降序排序

 

 

 

netstat -ant | awk 'NR>1{print $NF}' |sort |uniq -c
# 打印最后一列,排序,去重并统计

 netstat -ant | awk 'NR>1{print $NF}' |sort |uniq -c|sort -nrk 1
 # 在上图的基础上再排序,倒叙,以第一列
 # -n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位

 

ifconfig ens33|awk 'NR==2{print $2}'
# 提取网卡ip
# ip于第2行 第2个

 

uniq

显示或忽略重复的行

uniq test

wc

统计文件的字节数、字数、行数

-c # 统计字节数,或--bytes:显示Bytes数。
-l # 统计行数,或--lines:显示列数。
-m # 统计字符数,或--chars:显示字符数。
-w # 统计字数,或--words:显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
wc -l test
# 统计文件行数

cat test|wc -l
# 统计文件行数

 

 

grep egrep

强大的文本搜索工具,一般用egrep

-A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-B<显示行数>   --before-context=<显示行数>   # 除了显示符合样式的那一行之外,并显示该行之前的内容。
-o # 只输出文件中匹配到的部分。
-n --line-number         # 在显示符合范本样式的那一列之前,标示出该列的编号。
-G --basic-regexp   # 将范本样式视为普通的表示法来使用。
-i --ignore-case    # 忽略字符大小写的差别。

 

egrep -A 3 "2" test 
# 看后3行

egrep -ri -A 3 "error" app.log
# 例:查找日志文件中报错的后3行信息

 

正则表达式

^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
$    # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    
*    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    
.*   # 一起用代表任意字符。   
[]   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
[^]  # 匹配一个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母开头,紧跟 rep 的行
\(..\)  # 标记匹配字符,如'\(love\)',love被标记为1。    
\<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>      # 锚定单词的结束,如'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。  

 

cat /etc/passwd |egrep "^root"
# 过滤文件内容以 root 开头的

 

cat /etc/passwd |egrep "nologin$"
# 过滤文件内容以 nologin 结尾的

 

cat /etc/passwd |egrep "^s"|egrep "login$"
# 过滤文件内容以 s 开头,并以 login 结尾的,不如下图方便

cat /etc/passwd |egrep "^s.*login$"

 

 

 egrep -r "error"
 # 递归查找包含 error 的文件信息

 egrep -r "error" -l
 # 递归查找包含 error 的文件

 

 

egrep "\b[1-9]\b" 1.txt 
# 过滤文件 1~9 的内容
# \b 表示字符的精准匹配

grep命令常见用法

在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:

grep match_pattern file_name
grep "match_pattern" file_name

输出除之外的所有行 -v 选项:

grep -v "match_pattern" file_name

使用正则表达式 -E 选项:

grep -E "[1-9]+"
# 或
egrep "[1-9]+"

 

tr

将字符进行替换压缩和删除

-d或——delete:删除所有属于第一字符集的字符;

将输入字符由大写转换为小写:

echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

使用tr删除字符:

echo "hello 123 world 456" | tr -d '0-9'
hello  world 

 

vimdiff

vimdiff 1.txt 2.txt
# 对比文件内容

 

dos2unix

将DOS格式文本文件转换成Unix格式

最简单的用法就是dos2unix直接跟上文件名:

dos2unix file

 

4.文件压缩及解压缩命令

tar

将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件

/home/vivek/bin/ 目录打包,并使用 gzip 算法压缩。保存为 /tmp/bin-backup.tar.gz 文件。

tar -zcvf /tmp/bin-backup.tar.gz /home/vivek/bin/

5.信息显示命令

uname

uname -a
# 看内核的

 

hostname

hostname
# 看主机名的

hostname -I
# 看网卡的ip地址

 

uptime

查看Linux系统负载信息

uptime
# 输出 系统时间 运行的时间 当前登录的用户数 系统负载平均值
# 负载是代表整个系统的繁忙程度,负载数和cpu数绑定

 

stat

用于详细显示文件的状态信息

stat 1.txt 

 

du

du -sh ./*
# -s     仅显示总计,只列出最后加总的值。
# -h     以K,M,G为单位,提高信息的可读性。

 

df

df -h
# -h	以可读性较高的方式来显示信息

 

df -i
# -i	显示inode的信息

 

 

 

top

实时查看系统的运行状态

top交互命令

1:看cpu
k:终止一个进程;
q:退出程序;
m:切换显示内存信息