Linux基础命令总结

阅读 117

2022-07-01

mkdir

mkdir

创建目录

-p

递归创建

touch

touch

创建文件或修改文件的时间戳

ls

ls

查看目录或文件

-l

long  以长格式的形式查看

-d

directory   查看目录时必须指定

-a

查看所有的文件,包括隐藏文件(以 . 开头)

-F/-p

给不同类型文件的结尾加不同的符号来区别目录和文件

-h

人类可读的格式查看目录下的文件大小   1.7K

-i

inode  文件的索引号

-r

翻转排序

-t

按照修改时间排序

-lrt

查看最新的文件(在最下面)

(按修改时间排序)

--color=auto

带颜色的显示结果(默认)  

ls=ls --color=auto(别名)

-c

按照 ctime 排序

-u

按照 atime 排序

--time={atime,ctime}

按不同时间属性输出

默认是按照 mtime 输出(默认显示的是修改时间)

修改时间在工作中常用

--time-style=

以不同的时间格式输出

--time-style=long-iso 效果最好(年-月-日)

示例:

查看目录本身的信息:

[root@bobi data]# ls -ld /data

drwxr-xr-x 5 root root 4096 Mar 22 10:34 /data

查看目录下的文件信息:

[root@bobi data]# ls -l /data

total 16

drwxr-xr-x 4 root root 4096 Mar 22 10:50 bobi

drwxr-xr-x 6 root root 4096 Mar 21 11:58 oldboy

-rw-r--r-- 1 root root  357 Mar 21 15:10 oldboy1_2022-03-21.tar.gz

-rw-r--r-- 1 root root    0 Mar 21 09:37 oldboy.txt

drwxr-xr-x 3 root root 4096 Mar 21 16:31 test

查看目录下的所有文件信息:

[root@bobi data]# ls -la

total 24

drwxr-xr-x   5 root root 4096 Mar 22 10:34 .

dr-xr-xr-x. 24 root root 4096 Mar 22 10:22 ..

drwxr-xr-x   4 root root 4096 Mar 22 10:50 bobi

drwxr-xr-x   6 root root 4096 Mar 21 11:58 oldboy

-rw-r--r--   1 root root  357 Mar 21 15:10 oldboy1_2022-03-21.tar.gz

-rw-r--r--   1 root root    0 Mar 21 09:37 oldboy.txt

drwxr-xr-x   3 root root 4096 Mar 21 16:31 test

给不同类型文件的结尾加不同的符号:

[root@bobi data]# ls -lF

total 16

drwxr-xr-x 4 root root 4096 Mar 22 10:50 bobi/

drwxr-xr-x 6 root root 4096 Mar 21 11:58 oldboy/

-rw-r--r-- 1 root root  357 Mar 21 15:10 oldboy1_2022-03-21.tar.gz

-rw-r--r-- 1 root root    0 Mar 21 09:37 oldboy.txt

drwxr-xr-x 3 root root 4096 Mar 21 16:31 test/

以人类可读的格式显示:

[root@bobi data]# ls -lh

total 16K

drwxr-xr-x 4 root root 4.0K Mar 22 10:50 bobi

drwxr-xr-x 6 root root 4.0K Mar 21 11:58 oldboy

-rw-r--r-- 1 root root  357 Mar 21 15:10 oldboy1_2022-03-21.tar.gz

-rw-r--r-- 1 root root    0 Mar 21 09:37 oldboy.txt

drwxr-xr-x 3 root root 4.0K Mar 21 16:31 test

查看 Inode 文件索引号:

[root@bobi data]# ls -lhi

total 16K

138386 drwxr-xr-x 4 root root 4.0K Mar 22 10:50 bobi

138385 drwxr-xr-x 6 root root 4.0K Mar 21 11:58 oldboy

138383 -rw-r--r-- 1 root root  357 Mar 21 15:10 oldboy1_2022-03-21.tar.gz

137030 -rw-r--r-- 1 root root    0 Mar 21 09:37 oldboy.txt

138396 drwxr-xr-x 3 root root 4.0K Mar 21 16:31 test

查看最新的文件:

[root@bobi data]# ls -lrt

total 16

-rw-r--r-- 1 root root    0 Mar 21 09:37 oldboy.txt

drwxr-xr-x 6 root root 4096 Mar 21 11:58 oldboy

-rw-r--r-- 1 root root  357 Mar 21 15:10 oldboy1_2022-03-21.tar.gz

drwxr-xr-x 3 root root 4096 Mar 21 16:31 test

drwxr-xr-x 4 root root 4096 Mar 22 10:50 bobi

以不同的时间格式输出:

[root@bobi data]# ls -l --time-style=full-iso

total 16

drwxr-xr-x 4 root root 4096 2022-03-22 10:50:21.123935730 +0800 bobi

drwxr-xr-x 6 root root 4096 2022-03-21 11:58:08.508861138 +0800 oldboy

-rw-r--r-- 1 root root  357 2022-03-21 15:10:44.777650370 +0800 oldboy1_2022-03-21.tar.gz

-rw-r--r-- 1 root root    0 2022-03-21 09:37:58.877182845 +0800 oldboy.txt

drwxr-xr-x 3 root root 4096 2022-03-21 16:31:36.512419974 +0800 test

[root@bobi data]# ls -l --time-style=long-iso

total 16

drwxr-xr-x 4 root root 4096 2022-03-22 10:50 bobi

drwxr-xr-x 6 root root 4096 2022-03-21 11:58 oldboy

-rw-r--r-- 1 root root  357 2022-03-21 15:10 oldboy1_2022-03-21.tar.gz

-rw-r--r-- 1 root root    0 2022-03-21 09:37 oldboy.txt

drwxr-xr-x 3 root root 4096 2022-03-21 16:31 test

du

du -sh

查看目录本身大小

[root@bobi 
total 4. 0K 
drwx— 
drwx— 
drwx— 
drwx—— 
drwx—————— 
[root@bobi 
tmp]# 11 —h /tmp 
Mar 
21 
Mar 
21 
Mar 
21 
Mar 
21 
Mar 
22 
Mar 
29 
Mar 21 
18. 
59 
19 
: 48 
19 
: 48 
18. 
• 59 
10. 
•26 
16. 
•20 
18. 
53 
ks—script—DZOOfE 
2 
2 
2 
2 
root 
root 
root 
root 
root 
root 
root 
root 836 
root 
root 
root 
root 
root 
root 
6 
6 
6 
6 
6 
O 
vmware—root 
vmware—root 
vmware—root 
vmware—root 
vmware—root 
yum. log 
50225-2909161691 
50263-3178002564 
6282-726370616 
955-3988228421 
963-4256545027 
tmp]# • 
/ tmp 
. OK

cd

cd

切换目录层次

cd  ~

切换到用户的家目录

cd  -

切换到上一次的目录

cd  ..

切换到上一级的目录

cd  .

切换到当前目录

pwd

pwd

显示当前的路径

echo

echo

打印输入内容(printf复杂的输出)

-n

不换行输出

-e

可以指定特殊的字符,如:

\n    换行

\t     tab键

 

echo `命令`

echo  $(命令)

输命令的结果

[root@bobi ~]# echo `date +%F`

2022-03-21

[root@bobi ~]# echo $(date +%F) 

2022-03-21

[root@moban 
123 
[root@moban 
456 
[root@moban 
I am oldboy 
[root@moban 
data] # 
data] # 
data] # 
I inux 
data] # 
echo 
echo 
echo 
123 
456 
"I am oldboy Iinux¯

[root@oldboy 
123 [root@oldboy 
01 dboy 01 dboy 
[root@oldboy 
o I dboy 
o I dboy 
[root@oldboy 
echo —n 
echo 
echo —e 
123 
—e "oldboy\toldboy" 
01 dboy \ nol dboy¯

echo还可以用于把单行文本内容覆盖或追加到文件中

[root@moban 
[root@moban 
I am oldboy 
[root@moban 
[root@moban 
123 
[root@moban 
data] # 
data] # 
1 inux 
data] # 
data] # 
data] # 
echo "I am oldboy Iinux 
cat o- txt 
echo 123 Yo. txt 
cat o- txt 
> o. txt

[root@moban 
[root@moban 
[root@moban 
123 
I am oldboy 
I am oldboy 
[root@moban 
data] # 
data] # 
data] # 
1 inux 
1 inux 
data] # 
" I am oldboy linux" > > o. txt 
echo 
" I am oldboy linux" > > o. txt 
echo 
cat o- txt

vi/vim

vi/vim

记事本编辑器

插入模式

Esc 切换命令模式

命令模式

:wq    :q    :wq!    :q!      write   quit   

! 强制    :set nu 显示行号 

dd

删除光标所在的行

x

删除光标所在的字符

yy

拷贝当前行

p

粘贴(在光标所在行的下一行粘贴)

行号gg

定位到该行(号)

gg

切换到文件头部

G

切换到文件尾部 

cat

cat

查看文件内容

-n

显示行号(包括空格)

-b

显示行号(不包括空格)

[root@ol dboylinux cat 
asdf 
asdf 
asdf 
asdf 
asdf 
asdf 
DDDDDDDDDDDDDDD 
ASDFASDFASDFASDF 
[root@ol dboyl inux 
—n a. txt

cat 还可以用于把多行文本内容追加到文件中

优势:多行(单行追加用 echo)

cat >>a.txt<<EOF

Hello

World

EOF

[root@moban data] # cat 
> Ol dboy 
[root@moban data] # cat oldboy- txt 
I am studying linux 
I am oldboy linux 
I am oldboy linux 
I am oldboy linux 
I am oldboy linux 
[root@moban data] #

特殊符号

;

多个命令的分隔符

/

根或者路径的分隔符

>

重定向(数据流朝着箭头的方向流动),【覆盖】原来的文件

>>

追加重定向(数据流朝着箭头的方向流动),在原来的文件的【结尾】,【追加】内容

企 业 常 见 的 编 辑 文 件 的 命 令 有 echocat 等 。 
ech 。 是 一 个 打 印 输 出 内 容 的 一 个 常 用 命 令 , 配 合 “ > 或 〉 〉 ” 可 以 为 文 件 覆 盖 及 追 加 内 容 : echo SPATH 打 印 
出 PATH 的 值 : 
重 定 向 : 专 这 个 功 能 在 Iinux 里 可 是 经 常 用 的 , 实 际 上 就 是 你 看 到 的 下 面 的 大 于 小 于 号 一 样 的 东 东 : 
意 思 是 将 “ 数 据 传 到 其 他 地 方 ” : 将 某 个 命 令 执 行 后 本 应 该 出 现 在 屏 幕 上 的 数 据 , 传 输 到 其 他 地 方 . 执 行 命 
令 时 , 这 个 命 令 可 能 会 通 过 文 件 读 入 数 据 , 经 过 处 理 之 后 , 再 将 数 据 输 出 到 屏 幕 : 
〉 或 1 〉 
〉 > 或 1 〉 > 
< 或 〈 0 
< < 或 < < 0 
2 > > 
输 出 重 定 向 : 把 前 面 输 出 的 东 西 输 入 到 后 边 的 文 件 中 , 会 删 除 文 件 原 有 内 容 : 
追 加 重 定 向 : 把 前 面 输 出 的 东 西 追 加 到 后 边 的 文 件 中 , 不 会 删 除 文 件 原 有 内 容 : 
输 入 重 定 向 : 输 入 重 定 向 用 于 改 变 命 令 的 输 入 , 指 定 输 入 内 容 , 后 跟 文 件 名 : 
输 入 重 定 向 : 后 跟 字 符 串 , 用 来 表 示 “ 输 入 结 束 “ , 也 可 用 ctr 卜 d 来 结 束 输 入 : 
错 误 重 定 向 : 把 错 误 信 息 输 入 到 后 边 的 文 件 中 , 会 删 除 文 件 原 有 内 容 : 
错 误 追 加 重 定 向 : 把 错 误 信 息 追 加 到 后 边 的 文 件 中 , 不 会 删 除 文 件 原 有 内 容 :

1. 标 准 输 入 (stdin) : 代 码 为 0 , 使 用 < 或 < < 。 数 据 流 向 从 右 向 左 , , 
2 , 标 准 正 常 输 出 (stdout) : 代 码 为 1 , 使 用 > 或 > 〉 。 数 据 流 向 从 左 向 右 
3 , 标 准 错 误 输 出 (stderr) : 代 码 为 2 , 使 用 2 〉 或 2 〉 〉 。 
特 殊 : 
2 > & 1 就 是 把 标 准 错 误 重 定 向 到 标 准 输 出 ( 也 可 以 用 〉 & ) 。 见 : 学 习 “ 总 结 \ 艹 “ 定 向 总 结 . , 
范 例 : 留 给 大 家 了 。

举例:

正确命令输出重定向

文件中有内容

[root@oldboylinux date 
20144F 07}} 31B CST 
[root@oldboylinux date 1>a- txt 
[root@oldboylinux cat a- txt 
20144F 07B 31B 15:51:16 CST 
[root@oldboylinux

错误命令输出重定向,会提示命令错误

文件中没有内容

[root@oldboylinux datedd 1>a- txt 
—bash: datedd: command not found 
[root@oldboylinux cat a- txt 
[root@oldboyl inux

错误命令错误重定向,不会提示错误命令

但会把命令的错误写入文件中

[root@oldboylinux datedd 2>a. txt 
[root@oldboylinux cat a. txt 
—bash: datedd: command not found 
[root@oldboylinux

正确命令输入重定向

文件中有内容

[root@oldboyl inux 
> - date- 
> EOF 
[root@oldboyl inux 
cat >oldboy. 
cat oldboy- txt 
07 h 31B CST 
[root@oldboyl inux

错误命令输入重定向,会提示命令错误

文件中没有内容

[root@oldboyl inux 
> - dates 
> EOF 
—bash: dates: command 
[root@oldboylinux 
[root@oldboylinux 
cat 
not 
cat 
>oldboy- 
found 
oldboy- txt

补充:

如果想要将命令本身输入文件中,直接写命令或给命令加单引号' '

[bobi@bobi 
> date 
> EOF 
[bobi@bobi 
date 
n $ cat 
cat a. txt

[bobi@bobi cat 
> ' date' 
> EOF 
[bobi@bobi cat a. txt 
date'

[bobißbobi 
[bobi@bobi 
date 
[bobi@bobi 
[bobi@bobi 
date 
echo date Ya- txt 
cat a. txt 
echo ' date' txt 
cat a- txt

如果想要将命令产生的结果输入文件中,需要给命令加反单引号` `

[bobi@bobi 
date- 
> EOF 
[bobi@bobi 
cat 
cat a. txt 
Thu Dec 2 CST 2021

[bobi@bobi & ] $ echo - date- txt 
[bobi@bobi & ] $ cat a. txt 
Thu Dec 2 20: 58:42 CST 2021

cp

cp

拷贝文件或目录

-a

相当于 dpr,拷贝目录时必须携带

-p

保持属性

-r

递归拷贝,拷贝目录必须携带

要想拷贝的时候不提示,使用命令的全路径:/bin/cp

总 结 : 
cp C-aifpru] [ 源 文 件 ] [ 目 标 文 件 
-d : 若 源 文 件 为 链 接 文 件 (link file) , 则 复 制 链 接 文 件 属 性 而 非 档 案 本 身 ; 
-f : 强 制 , 若 目 标 档 案 己 经 存 在 且 无 法 开 启 , 则 移 除 后 再 尝 试 ; 
一 1 : 若 目 标 文 件 己 经 存 在 时 , 在 覆 盖 时 会 先 询 问 ; 
: 连 同 档 案 的 属 性 一 起 
-u : 若 目 标 文 件 存 在 , 则 目 标 文 件 比 源 文 件 旧 时 才 复 制 : 
提 示 : 如 果 源 文 件 是 多 个 , 那 么 目 的 文 件 在 最 后 , 且 是 目 录 : 
cp 的 重 要 参 数 aprv

mv

mv

移动目录或改名(rename改名更专业)

将/date 目录移动到 /opt目录下并改名为 /oldboy

[root@oldboylinux mv / data /opt/oldboy 
[root@oldboylinux 11 /opt/oldboy/ —Id 
4 root root 4096 Jul 31 15 : 29 /opt/oldboy/ 
[root@oldboylinux data] #

rm

rm

删除文件或目录

-f

强制删除文件

-r

递归删除目录

rmdir

rmdir

删除空目录(鸡肋)

..

上一级目录

.

当前目录

(正则表达式里面代表任意一个字符)

(隐藏文件的标识)

(同 source,使一个配置文件生效)

head,tail

head

显示文件头部,默认头部10

tail

显示文件尾部,默认尾部10行

-n

-行数

tail  -f

跟踪一个文件日志的尾部变化

Linux基础命令总结_基础命令_03

Linux基础命令总结_基础命令_04

Linux基础命令总结_基础命令_05

grep

grep

过滤(三剑客的老三 )   

grep  "关键字"  文件名

不加参数

过滤,显示带有关键字的那一行

-v

排除,排除带有关键字的那一行,显示其他行

grep  -v  "^$"            排除空行,显示其他行

-E

" "中间可以有多个关键字,关键字之间用 | 隔开

-i

不区分大小写

--color=auto

让过滤出来的关键字携带颜色

-n

显示行号

egrep

相当于 grep  -E

[root@moban 
1 iyao 
[root@moban 
[root@moban 
grep Iiyao test. txt 
grep "1 i" test. txt

[root@oldboy I inux 
[root@oldboy I inux 
[root@oldboy I inux 
[root@oldboy I inux 
oldboywindows 
c 
[root@oldbovlinux 
echo A txt 
echo b txt 
echo C txt 
cat ett. txt

[root@oldboy I i nux 
—E 
oldboywindows 
[root@oldboy I i nux 
—E 
oldboywindows 
[root@oldboy I i nux 
oldboywindows 
[root@oldbovl inux 
grep 
grep 
grep 
ett- txt 
ett. txt 
—Ei "al b" ett. txt

[root@oldboy i nux 
grep —Ei 
oldboywindows 
[root@o I dboy I i nux 
egrep —i 
ol dboywindows 
[root@oldboy I inux 
—E 
grep 
ett. txt 
ett. txt 
=egrep

[root@oldboy cat test. txt 
http://www- etiantian- org 
[root@oldboy grep www test- txt 
http://www- etiantian- org 
[root@oldboy grep www 
——color=auto test- txt 
http:// 
vvv- etiantian- org 
[root@oldboy

在工作中,通常去修改 /etc/profile 配置文件

将命令  alias  grep='grep  --color=auto' 写在文件的后面

并通过   source  /etc/profile  让其生效

这样,默认用 grep 过滤出来的关键字就会凸显出颜色

PATH=- /oldboy/ : $PATH" 
al ias grep=' grep ——color=auto' 
"/etc/profile" 81L, 1871C written 
[root@oldboy source /etc/profile 
[root@oldboy grep 3306 / etc/services 
3306/tcp 
3306/udp 
[root@oldboy tail 
—1 /etc/profile 
al ias grep=' grep —color=auto' 
[root@oldboy 
# MySQL 
# MySQL

sed

sed

取各种内容(三剑客的老二)      优势是取行

sed   -n  '/关键字/p'    文件名   或

sed   -n  ‘行数p'    文件名

-n

取消默认输出

p

print

d

delete

sed 替换

-i

sed  's#a#b#g'     文件     把 a 替换成 b      仅改变的是输出,输出 b

要想把源文件中的 a 替换成 b ,需要加参数    -i

sed 基础正则替换

sed -n '/inet addr/p'|sed 's#^.*addr:##g'|sed 's#Bc.*$##g'

将目标前后的内容都替换成空格,打印输出目标

sed 小括号分组功能

sed -n 's#^.*addr:\(.*\)  Bcast:\(.*\)  Mask.*$#\1 \2#gp'

将目标外的内容精确匹配出来(包括空格也要一模一样)

目标用 \(.*\)表示,后面用 \1 调用前面 ()内的内容,将其打印输出

sed  插入内容

sed  -i  '1 i asklfe'  文件           在文件的第1行插入(i)内容 askllfe

sed  删除内容

sed  -i  '/内容/d'   文件            删除文件中的内容

如果内容还有 /,需要用转义字符对内容里的 / 进行转义 \/

sed  -i   '/^$/d'                        删除空行

sed

在指定字符前后添加内容

在前添加:

sed -i 's#指定的字符#要插入的字符&#g'  文件

 

在后添加:

sed -i 's#指定的字符#&要插入的字符#g'  文件

[root@bobi 
inet 
[root@bobi N] # 
inet 
[rootabobi N] # 
i fconfig 
addr: 192. 
i fconfig 
addr: 192. 
ethOl sed —n 
168. 192. 131 
ethOl sed —n 
168. 192. 131 
' /inet 
addr/p' 
Bcast. 
• 192. 168. 192. 255 
' 2p' 
Bcast. 
• 192. 168. 192. 255 
Mask: 255. 255. 255. O 
Mask:255. 255. 255. O

[root@bobi oldboy]# 
I am oldboy 
[root@bobi oldboy]# 
[root@bobi oldboy]# 
as/kl fe 
I am oldboy 
[root@bobi oldboy]# 
cat 
sed 
cat 
sed 
dddd 
—i '1 i as/klfe' 
dddd 
dddd 
—i ' /as/kl fe/d' dddd 
sed: —e expression #1, char 5: unknown command: 
[root@bobi oldboy]# sed —i ' /as\/klfe/d' dddd 
[root@bobi oldboy]# cat dddd 
I am oldboy 
[root@bobi 01

1. txt 
[rootßbobi tmp]# cat 1. txt 
OOOOAAAI 1 1 1 IBBB222 
OOOOAAAI 1 1 1 1 BBB222222 
MAI 1 1 1 IBBB000000222 
AMI 1 1 1 IBBBAAAI 1 1 1 IBBBI 1122222222222 
112222222 
1122

awk

awk

优势是取列

awk  '{print $n}'    文件名                              取出第n列   

awk  ‘{if (NR>19&&NR<31)  print  $n}’          取特定行的第n列

awk  '/关键字/'          过滤,相当于      

grep  "关键字"

awk  "/^[^$]/"          过滤非空行

awk  NR==行号        相当于      

sed   -n  ‘行数p'      取行

-F  “分隔符”

指定分隔符,默认以空格分隔

-F  “[分隔符1分隔符 2]”

同时指定多个分隔符

-F  “[分隔符1分隔符 2]+”

搭配正则表达式,将多个连续的分隔符变为1个

NR

行号

NF

列的个数  

$NF

最后一列

$0

一整行

[root@oldboylinux awk ' {if (NR==19) print $0}' ett- txt 
19 
[root@oldboylinux

[root@oldboy 
1 : ——2 | awk 
[root@o I dboy 
1 
[root@01 dboy 
2 
[root@01 dboy 
echc•—— 
echo 
—2 | awk 
-F 
-F 
{print $2}' 
{print $3}'

三剑客实现过滤:

[root@moban grep old test. txt 
01 dboy

[root@oldboy 
old boy 
[root@oldboy 
oldboy 
[root@oldboy 
oldboy]# sed 
awk 
01 dboy] # 
—n ' / Aoldboy/p' test. txt 
' /oldboy$/' test. txt

深入浅出三剑客之 awk 必杀技一例:

​​https://blog.51cto.com/oldboy/950730​​

查看命令帮助的手段

  1. man  命令
  2. 命令  --help
  3. help  命令,特殊内置命令的获取帮助方法
  4. 搜索引擎   “Linux 命令名”

提示:man不仅可以用于获取命令的帮助,还可以获取到配置文件、函数的帮助

常用快捷键

tab

命令或路径补全键

Ctrl+c

终止当前任务命令或程序

Ctrl+d

退出当前用户环境,相当于 exit,logout

Ctrl+shift+c

CRT里面复制的命令

Ctrl+shift+v

CRT里面粘贴的命令

Ctrl+a

在命令行里面快速移动光标至开头

Ctrl+e

在命令行里面快速移动光标至结尾

Ctrl+u

清除当前的命令行(剪切)

Ctrl+r

在历史记录里面查找使用过的命令,快速执行

! + 历史记录中的行号

快速执行历史记录中该行号对应的命令

!!

执行最近一次的命令

! + 字母

执行最近一次以此字母开头的命令

alias,unalias

alias

设置别名

unalias

取消别名

~

用户的家目录

查看命令的路径

  1. which   命令
  2. whereis  -b   命令
  3. find   /   -name  "命令"
  4. locate  -n  1  命令(locate 只能查 updatedb 库里面的内容,用的少)

find

find

查找命令

-type (f  d)

按照类型查找

-name  "ddd"

按名字查找

-mtime

按照修改时间查找

-maxdepth  level

查找目录的深度(level 层) 

当level=1时,

-maxdepth  1 = -prune

-o

或的关系  (接多个查找条件)

-a

与的关系  (接多个查找条件)

(默认)

!

取反

find:

1)

用 find 实现 which 的功能:

(查看命令的路径,一般的命令是file文件类型)

find  /  -type  f  -name “cat”

[root@oldboy 1 inux 
/ bin/ cat 
[root@oldboyl i nux 
/ bin/ cat 
[root@oldboy 1 i nt1X 
which cat 
find / —type f 
—name 
cat

[root@oldboy I i nux 
/ test. txt 
/mnt/test- txt 
/tmp/test- txt 
[root@oldboy 1 i nux 
find / 
—type f 
—name 
"test- txt"

2)

用 find 实现删除的功能:

在 脚 本 中 删 除 文 件 或 目 录 时 冖 的 使 用 方 法 一 般 为 : 
. 和 xargs 搭 配 用 法 
—type f —mtime + 15 Ixargs rm —f 
find . 
¯type d ¯mtime + 30 'xargs rm ¯rf 
find 
令 # 删 文 件 15 天 以 前 # 删 目 录 下 文 件 用 这 个 好 · , 
令 # 删 目 录 30 天 以 前 慎 用 : 
提 示 : xargs 是 一 个 不 错 的 命 令 , 有 机 会 同 学 们 要 总 结 的 : 
@使 用 find 的 
find /logs —type f —mtime + 5 —exec rm { } \ ; 
令 # 在 / 1 。 gs 目 录 中 查 找 更 改 时 间 在 5 日 以 前 的 文 件 并 
删 除 它 们 :

以往的删除用 rm -f ,但是容易出现问题

所以一般用 find 来进行删除:

find  /  -type  f  -name  “test.txt”  -exec  rm  -f  {}  \;

(前面的查找结果 通过exec 交给rm命令进行删除)

[root@oldboylinux find / —type f —name "test. txt" 
[root@oldboylinux & find / —type f —name "test. txt" 
[root@oldboyl inux 
—exec rm —f { } \ ;

但是由于不好记,也用得少

多数时候结合管道运用find命令:

find  /  -type  f  -name  "test.txt"|xargs   rm  -f

(前面的查找结果 通过xargs 按行交给 rm -f 进行处理)

[root@oldboy 1 inux 
[root@oldboy I inux 
[root@oldboy 1 inux 
[root@oldboy 1 inux 
/etc/test- txt 
/mnt/test- txt 
/tmp/test. txt 
[root@oldboy I inux 
[root@oldboy 1 inux 
[root@oldboy 1 i ntiX 
touch /mnt/test. txt 
touch /tmp/test. txt 
touch /etc/test. txt 
find / 
find / 
find / 
—type f 
—type f 
—type f 
—name 
—name 
—name 
"test- txt" 
"test- txt" Ixargs rm —f 
"test- txt"

3)

find 还可以按照修改时间来查找或删除文件

-mtime  :  modify time  修改时间

find  /  -type  f  -mtime +5

(查找五天前修改过的文件)

find  /  -type  f  -mtime -5

(查找最近五天修改过的文件)

[root@oldboyl inux 
[root@oldboyl inux 
-f 
[root@oldboyl inux 
inux 
find 
find 
find 
/ root/ 
/ root/ 
/ root/ 
—type 
—type 
-type 
f 
f 
f 
—name 
—name 
log" 
log" 
log" 
—mt i me 
—mt i me 
—mt i me 
+5 
+5 Ixargs r 
+5 Ixargs r

( 2 ) find 根 据 时 间 查 找 的 时 间 的 表 现 图 
40 
4 
老 男 孩 《 inu 培 讥 内 资 料 
联 系 : QQ : 1986 873 
8 
7 
6 
-execIs 丬 { } \ ; 
5 
3 
2 
1 
( 3 ) find 高 级 应 用 图 
find /var/ -type 
老 男 孩 《 inux 培 训 内 部 瓷 料 
朕 糸 : QQ : 1986787350 7027111 戛 
: : : find 栈 到 的 内 容 
吣 ` “ 到 都 是 嬲 数 ( 它 与 外 命 令 之 前 后 都 要 有 空 格 哦 ! 0 
吓 . 凵 : : 外 命 令 
: 是 № 、 h 是 特 殊 的 意 又 . 就 用 反 仃 转 义 
find /oldboy -perm + 7000 -exec Is . 1 { } 
老 男 瞎 调 内 部 字 生 总 结 
联 系 19 7873 70271H1 
{ } 代 表 “ find 找 到 的 内 容 " 
-exec 到 代 表 find 額 外 动 作 的 开 始 到 结 束 
因 为 “ . ” 在 bash 环 境 中 是 有 特 殊 意 义 的 , 因 此 利 用 反 斜 杠 来 跳 脱

|

|

管道,把前一个命令的输出交给后一个命令进行处理

可以有多个管道

管道的两边没有空格

[root@oldboy I i nux 
abc 
[root@oldboy I i nux 
abc 
[root@oldboy I inux 
[root@ol dboyl i nux 
echo 
echo 
echo 
abc I grep 
abc I grep 
abc I grep 
al grep —v d 
a I grep 
—v d grep

tree

tree

查看目录结构

-L

显示层数

-L    数字

显示几层的目录结构

-d

列目录

[root@oldboy I i nux 
appl i cat ion 
bin 
boot 
data 
dev 
etc 
home 
tree —L I /

xargs

xargs

用于把 find / ls 的输出交给后面处理

seq

seq

打印数字序列

seq  -s  " "  5 

类似于 echo  {1..5}

[root@oldboylinux echo {1- - 5} 
12345 
[root@oldboyl inux

只不过 echo 还可以打印字母序列

[root@oldboyl inux 
[root@oldboyl inux 
[root@ol dbovl inux 
echo {a. - c} 
echo {a- - f}

tac

tac

翻转内容输出

[root@oldboylinux seq 5 tac 
5 
4 
3 
2 
1 
[root@oldboylinux data] #

 {}

{}

配合 echo 打印序列      echo  {1..6}

 history

history

查看历史记录

-d  行号

在历史记录中删除该行

-c

清空历史记录

 diff

diff

比较文件内容差别(按行比较)

vimdiff

比较文件内容差别(可以比较多个文件)     :q!   退出

[root@oldboyl i nux 
[root@oldboyl i nux 
[root@oldboyl i nux 
ICI 
< 123 
> 1234 
[root@ol dboy I i nux 
echo 
echo 
diff 
123 txt 
1234 txt 
a- txt b- txt

Linux基础命令总结_基础命令_06

Linux基础命令总结_基础命令_07

whoami

whoami

查看当前终端的用户

w

w

查看当前正在登录的用户以及它们在做什么

(类似的还有 who,users,last,lastlog,fingers)

[root@oldboylinux w 
15:42:58 up 2 days, 5:21, 
3 
PCPU WHAT 
load 
users, 
LOGIN@ 
15:34 
Sat19 
Sat20 
average: O. 00, 
USER 
TTY 
01 dboy pts/0 
01 dboy pts/ 1 
01 dboy pts/ 4 
[root@oldboy 1 inux 
FROM 
10. o. o. 100 
10. o. o. 100 
10. o. o. 100 
IDLE 
o. oos 
8:28 
6:07 
JCPU 
o. 30s 
o. 06s 
o. oos 
o. 00, 
o. 18s 
o. 18s 
o. 18s 
o. 00 
sshd : 
sshd : 
sshd : 
01 dboy [priv 
oldboy [priv 
oldboy [priv

useradd

useradd

添加用户

-u

UID

-c

注释

-d

指定家目录

-g

指定用户组(主组)

-G

指定多个用户组(用户组之间用 ,分隔开)

-s

指定登录 shell

-M

不创建家目录

-e

指定过期时间

-D

修改新用户的默认配置

userdel

userdel

删除用户

-r

同时删除用户的家目录

groupadd

groupadd

添加用户组

-g

GID

groupdel

groupdel

删除用户组

usermod

usermod

修改用户信息

chage

chage

修改用户密码过期的日期

-l

显示账户年龄信息

-E

修改账户过期日期

passwd

passwd

修改用户密码,如果不指定用户,则修改当前用户的密码,普通用户只能修改自己的密码

--stdin

用于非交互式的输入密码        

echo 密码明文|passwd --stdin 用户

 sudo

su

切换用户角色,注意要带上 -

sudo

让普通用户可以拥有指定用户 root 权限的命令

yum

yum

包管理工具,解决 rpm 包的依赖

rpm

软件安装命令

chkconfig

chkconfig

查看设置开机自启动软件的命令

-add

添加一个普通的脚本程序,实现程序的开机自启动

--list  程序名

查看程序服务

PATH

PATH

所有包含在环境变量里面的路径,都可以直接敲出来执行

root 全局生效   /etc/profile

普通用户全局生效     ~/.bash_profile 或者 ~/.bashrc

export

用于设置或显示环境变量

export [-fnp][变量名称]=[变量设置值]

参数:

-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。

示例:

列出当前所有的环境变量:

[root@bobi bobi]# export -p

declare -x CLUTTER_IM_MODULE="xim"

declare -x COLORTERM="truecolor"

declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"

declare -x DEFAULTS_PATH="/usr/share/gconf/ubuntu.default.path"

declare -x DESKTOP_SESSION="ubuntu"

declare -x DISPLAY=":0"

把/usr/local/bin添加到环境路径中:

export PATH=$PATH:/usr/local/bin

添加函数:

$ printname () { echo "SpaceSoftwares.com"; }

$ export -f printname

$ bash

$ printname

SpaceSoftwares.com

删除变量:

$ export MYVAR=10

$ export | grep MYVAR

declare -x MYVAR="10"

$ export -n MYVAR

$ export | grep MYVAR

$

附加说明

永久添加环境变量(影响当前用户)

#vim ~/.bashrc

export PATH="/path/to/be/added/bin:$PATH"

永久添加环境变量(影响所有用户)

# vim /etc/profile

在文档最后,添加:

export PATH="/path/to/be/added/bin:$PATH"

保存,退出,然后运行:

#source /etc/profile

netstat

netstat

查看网络状态

-lntup

listening    numeric   tcp   udp   program 

-an

all    numeric

[oldboy@oldboylinux netstat —Intup I grep ssh 
(No info could be read for geteuid =500 
[oldboy@oldboylinux sudo netstat —Intup grep ssh 
tcp 
LISTEN 
tcp 
LISTEN 
o o- o- 0:52113 
30899/ sshd 
30899/sshd 
[oldboy@oldboylinux $

[oldboy@oldboylinux sudo su — 
[root@oldboylinux netstat —Intup I grep 
52113 
tcp 
tcp 
o o- o- o- 0:52113 
3()899/ sshd 
LISTEN 
LISTEN 
30899/ sshd 
[root@oldboy I i nux

lsof

lsof

查看文件被占用情况

-i  :port

查看端口

如果出现结果,表示该服务是开启的状态(这里52113对应ssh服务)

如果有一天,远程的服务连不上了,可以通过这个命令来查看这个 ssh 服务有没有开启

[root@oldboylinux 
COMMAND PID USER 
Isof 
411 
311 
-i :52113 
TYPE DEVICE 
sshd 
sshd 
sshd 
30899 root 
30899 root 
31183 root 
IPv4 
IPv6 
IPv4 
IPv4 
64225 
64227 
65259 
65259 
SIZE/OFF NODE NAME 
TCP 
Oto 
Oto 
Oto 
Oto 
TCP (LISTEN) 
TCP (LISTEN) 
10. o. o. o. o. 100: 
50061 (ESTABLISHED) 
sshd 
31187 oldboy 
50061 (ESTABLISHED) 
[root@oldboylintiX 
TCP 
10. o. o. 245: 52113->10- o. o. 100:

 chattr

chattr

改变文件属性

+i

对文件加锁

-i

对文件解锁

 lsattr

lsattr

查看文件属性

 uname

uname

打印系统信息

-a

打印所有的信息,包括系统版本号,内核版本号

-r

打印内核版本号

-m

 32位还是64位

关机重启

halt

关机(init  0)

reboot

重启  (init 6)

shutdown

-r now(重启)     -h now(关机)

 last

last

列出目前与过去登入系统的用户信息,只要有人登录,就会被记录,包括多次登录的信息,也会被统计记录下来

lastlog

检查用户最后一次登录本系统的登录时间的信息

file

file

查看普通文件的文件类型(ASCII,二进制,data)

df

df -i

查看系统 inode 的数量和使用量

df  -h

查看磁盘的使用量

ln

ln

创建链接,默认创建硬链接

-s

创建软链接

more,less

more

查看文件但不能向上回滚

less

查看文件,可以向上回滚

less  -N

查看文件的同时显示行号

 tar

tar

解压包

gzip

打包组合 zcvf      解包组合 zxfv

bzip

打包组合 jcvf       解包组合 jxfv

z

gzip

c

create

v

verbose  (输出)

f

file

x

extract  (解包)

j

bzip

--exclude

排除(一个)

-X  FILE

排除指定文件中的内容(多个)

-C  目录

解压到指定目录

p

保持属性

 cut

cut

按列切割

-d

指定分隔符

-f

选择指定的列

-C

选择指定的字符

正则表达式

基于 grep

基础正则表达式(BRE):

^

以…开头

[^  ]

不以…开头

   $

以…结尾

^$

空行

\

转义,还原特殊字符本来的意义

.

任意一个字符

 *

重复左边的字符 0次或多次

.*

任意多个字符

[]

匹配字符集合内的任意一个字符

[^]

匹配不包含 ^ 后的任意字符的内容,非

\{n,m\}

重复左边的字符 n到m次

\{,m\}

重复左边的字符 至多m次(好像系统不支持了)

\{n,\}

重复左边的字符 至少n次

\{n\}

重复左边的字符 n次

(grep不支持正则表达式,会把 {} 当作正常的字符,所以需要加上 \ )

(如果使用 egrep 或 sed -r ,可以去掉 \ )

扩展的正则表达式(ERE):

grep 不支持

使用 egrep 或 grep -E

+

重复左边的字符 1次或多次

重复左边的字符 0次或1次

|

多个条件之间是 或 的关系

()

一组条件

 stat

stat

查看文件的状态

-c  %a

查看文件的权限对应的数字内容

-c  %b

查看文件的 block 数量

date

date

显示和设置系统的日期和时间

-s

设置系统时间

-d

修改时间的显示

datefr 令 
date 命 令 的 功 能 是 显 示 和 设 置 系 统 日 期 和 时 间 。 
该 命 令 的 一 般 格 式 为 : date [ 选 项 ] 显 示 时 间 格 式 ( 以 + 开 头 , 后 面 接 格 式 ) 
date 设 置 时 间 格 式 
命 令 中 各 选 项 的 含 义 分 别 为 : 
-date datestr 显 示 由 datestri# 述 的 日 期 
—d datestr , 
-set datestr 设 置 datestr 描 述 的 日 期 
—s datestr , 
—universal 显 示 或 设 置 通 用 时 间

 -d, --date=STRING

              display  time  described  by  STRING,  not  'now'

 -s, --set=STRING

              set time described by STRING

 -u, --utc, --universal

              print or set Coordinated Universal Time

示例:

-d   修改系统时间的显示,显示由 string 描述的时间

显示三天前的日期:

[root@bobi bobi]# date +%F

2022-03-22

[root@bobi bobi]# date +%F --date="3 day ago"

2022-03-19

[root@bobi bobi]# date +%F -d '3 day ago'     

2022-03-19

[root@bobi bobi]# date +%F -d '-3 day'    

2022-03-19

显示三天后的日期:

[root@bobi bobi]# date +%F -d '+3 day'

2022-03-25

[root@bobi bobi]# date +%F -d '3 day'

2022-03-25

显示明天的日期:

[root@bobi bobi]# date +%F -d 'next day' 

2022-03-23

显示三小时前后的时间:

[root@bobi bobi]# date +%H -d '-3 hour'

11

[root@bobi bobi]# date +%H -d '3 hour'

17

显示三分钟前后的时间:

[root@bobi bobi]# date

Tue Mar 22 14:57:45 CST 2022

[root@bobi bobi]# date +%M -d '-3 min'

54

[root@bobi bobi]# date +%M -d '3 min'

00

-s   设置系统时间,设置为 string 指定的时间:

[root@bobi bobi]# date

Tue Mar 22 14:32:07 CST 2022

[root@bobi bobi]# date -s "03/21/22 14:32"

Mon Mar 21 14:32:00 CST 2022

时 间 域 
H 小 时 ( 00 . 
. 23 ) 、 l' 
I 小 时 (01. 
% k 小 时 ( 0 . 
. 23 ) 、 》 
1 小 时 ( 1. 
. 12 ) 、 》 
% M 分 ( 00 一 59 ) 、 1 , 
p 显 示 出 AM 或 PM 
r 时 间 ()h : 皿 : SS AM 或 (M) , 12 小 时 
s 从 1970 年 1 月 1 日 00 : 00 : 00 到 目 前 经 历 的 秒 数 
s 秒 ( 00 一 59 ) 、 
T 时 间 ( 24 小 时 制 ) (hh:mm:ss) 、 1 , 
% x 显 示 时 间 的 格 式 (%H: %M: (S) 、 
z 时 区 日 期 域

a 星 期 几 的 简 称 ( Sun.. sat) 、 
A 星 期 几 的 全 称 ( Sunday.. Saturday) 、 1 , 
b 月 的 简 称 (Jan.. Dec) 」 , 
B 月 的 全 称 (January.. December) 、 
日 期 和 时 间 ( Mon Nov 8 14 : 12 : 46 CST 1999 ) 
c 
% D 日 期 (mm/dd/yy) 、 」 , 
% h 和 % b 选 项 相 同 、 
J 一 年 的 第 几 天 ( 001 一 366 ) 、 1 , 
% w 一 个 星 期 的 第 几 天 代 春 星 期 天 ) * * * * * * * * * * * * * * * * “ 
% w 一 年 的 第 几 个 星 期 ( 00 一 53 , 星 期 一 为 第 一 天 ) 、 
% x 显 示 日 期 的 格 式 (mm/dd/yy) 、 
% y 年 的 最 后 两 个 数 字 ( 1999 则 是 99 ) * * * * * * * * * * * * * * * * “

需 要 特 别 说 明 的 是 , 只 有 超 级 用 户 才 能 用 date 命 令 设 置 时 间 , 一 般 用 户 只 能 用 date 命 令 
示 时 间 。 
I

示例:

[bobi@bobi 
22-03-21 
[bobi@bobi 
1 
[bobi@bobi 
2022-03-21 
[bobi@bobi 
2022-03-21 
[bobi@bobi 
2022-03-21 
[bobi@bobi 
2022-03-21 
[bobi@bobi 
2022-03-21 
[bobi@bobi 
date 
date 
date 
date 
16: 38: 14 
date 
16: 38: 23 
echo date +%F- 
echo $ (date +%F)

CrootC01dboy tar zcvf services_$ (date +%F) . tar. gz /etc/services e 
tar: Removing leading / ' from member namese 
/etc/servicese 
(rootC01dboy oldboy]g Is —Irt tail —le 
1 root root 
99009 Feb 20 16: 24 tar. gze

CrootC01dboy date -s "02/21/12 16:25" 
Tue Feb 21 CST 201% 
[root@oldboy tar zcvf services_$ (date +%F). tar. gz / etc/ services 
tar: Removing leading / ' 
/etc/servicesv 
[rootCoIdboy Is 
1 root root 
I root rost 
from member 
—Irt I tail —2 
99009 Feb 
99009 Feb 
name se 
20 16:24 services_2012—02-20. tar. gzo 
21 16:25 services _ 2012—02—21. tar. gze 
Zlh, ia-na.±.

示例:

打包当天的文件和三天以前的文件

[root@bobi bobi]# tar zcvf bobi_$(date +%F).tar.gz bobi

bobi/

[root@bobi bobi]# ls

bobi  bobi.txt  bobi_2022-03-22.tar.gz  mydir  oldboy

[root@bobi bobi]# tar zcvf bobi_$(date +%F -d '-3 day').tar.gz bobi

bobi/

[root@bobi bobi]# ls

bobi      bobi_2022-03-19.tar.gz  mydir

bobi.txt  bobi_2022-03-22.tar.gz  oldboy

find /log -type f -name "* .log" -mtime +71xagrs rm -fe 
[root@oldboy 
total 40 
[root@oldboy 
. /drbd. confe 
CrootCoI dboy 
total 80 
I 
root root 
ett]g tar 
Is 
70 Nov 7 18:15 drbd. confe 
zcvf drbd. conf. $ (date +%w). tar. gz 
. /drbd. conf 
root 
root 
root 
root 
—Irtv 
1 
70 Nov 
128 Nov 
7 18:15 drbd. confe 
7 18:16 drbd. conf. I. tar. gze

[root@oldboy echo 
2011-11-070 
[root@oldboy date 
Tue Nov 8 CST 2011v 
drbd. confe 
[root@oldboy 
. /drbd. confe 
[root@oldboy 
total 120 
1 
S (date 
-s 2011/11/08 
zcvf drbd. conf. $ (date 
—Irte 
tar 
Is 
root 
root 
root 
+%w) . tar. gz 
/drbd. conf 
root 
root 
root 
70 
128 
128 
Nov 
Nov 
Nov 
18. 
7 18. 
8 00. 
7 
•15 
•16 
• 00 
drbd. conf. 1. tar. gze 
drbd. conf. 2. tar. gze

特 别 提 示 : 按 照 以 上 的 实 践 , 一 周 以 后 , 在 打 包 就 会 自 动 覆 盖 前 一 个 文 件 , 这 样 就 达 到 了 循 环 备 份 的 目 的 , , 
其 实 , 上 面 例 子 可 能 不 是 很 恰 当 , 在 生 产 场 景 做 mysql 备 份 的 时 候 , 老 男 孩 老 师 曾 经 使 用 过 按 周 备 份 的 方 
案 : 有 关 mysql 数 据 库 备 份 的 方 案 我 们 后 文 会 详 细 给 大 家 讲 解 : 
apache 日 志 的 按 周 轮 询 ( 生 产 环 境 案 例 ) 
CustomLog 
有 关 apache 日 志 轮 询 请 参 考 《 老 男 孩 linux 实 战 培 训 教 案 -apache 日 志 轮 询 技 术 详 解 指 南 》 , , 
特 别 提 示 : 使 用 周 轮 询 的 好 处 就 是 最 多 7 份 日 志 , 不 需 要 删 除 , 系 统 会 自 动 循 环 覆 盖 。

chmod

chmod

改变文件的访问权限,分为数字和字符表示法, -R  递归

chown

改变文件的拥有者和用户组, -R  递归

chgrp

改变用户组, -R  递归

磁盘分区的命令

fdisk

磁盘分区的命令,小于2T的分区工具

-l

查看磁盘分区列表

parted

GUN磁盘分区工具,适合大于2T的分区工具

mount

挂载

-t

文件系统类型

-o

挂载的选项

-a

Mount all filesystems

umount

卸载

-lf

强制卸载

dd

创建一个文件的文件系统

convert and copy a file

用指定大小的块拷贝一个文件

 bs=BYTES

一次性读写的字节数

read and write BYTES bytes at a time

count=BLOCKS

只拷贝多少块

 copy only BLOCKS input blocks

 if=FILE

read from FILE instead of stdin

of=FILE

write to FILE instead of stdout

用法

dd  if=/dev/sda  of=mbr.bin  bs=512  count=1

备份磁盘开始的512Byte大小的信息到指定文件

[root@bobi tmp] # 
[root@bobi tmp]# dd if=/dev/zero of=/tmp/bigfile bs=1M count=100 
100+0 records in 
100+0 records out 
/tmp 100M bigflle 
104857600 bytes (105 MB) copied, O. 397239 s, 264 MB/s 
[root@bobi tmp]# 11 —h /tmp/bigfile 
1 root root 100M Apr 3 14:51 /tmp/bigfile 
rroot@bobi tmpl #

mkfs

格式化命令

-t

文件系统类型

mkfs.ext4

df -h

查看磁盘挂载信息

 report file system disk space usage

du -sh

查看文件及目录大小

示例

[root@bobilinux tmp]# du -sh /etc/

27M     /etc/

dump e2fs

查看文件系统信息

 dump ext2/ext3/ext4 filesystem information

示例

 dumpe2fs /dev/sdb2(被格式化的磁盘分区)



精彩评论(0)

0 0 举报