文本内容统计
wc
wc
命令用于统计指定文本文件的行数、字数或字节数,语法为: wc [选项] 文件名称
在Linux系统中,/etc/passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询,是不是很神奇:
——统计根下面的文件的数量
复制、移动文件
1、复制文件或目录
语法:
cp [
选项] 源文件 目标文件
2
、移动文件或目录
mv
命令用于剪切或重命名文件,语法为:
mv [
选项
]
源文件名称 目标文件名称
剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作。
查找文件的路径
find
详解:
find
命令默认接的命令是
-print
,它默认以
\n
将找到的文件分隔。可以使用
-print0
来使用
\0
分隔,这样就不会分行了。但是一定要注意,-print0
针对的是
\n
转
\0
,如果查找的文件名本身就含有空格,则find
后
-print0
仍然会显示空格。
1.按照文件名搜索
2.按照文件大小搜索
3.按照修改时间搜索
Linux
中的文件有访问时间(
atime
)、数据修改时间(
mtime
)、状态修改时间(ctime)这三个时间,我们可以按照时间来搜索文件。
-5
:代表
5
天内修改的文件。
5
:代表前
5
~
6
天那一天修改的文件。
+5
:代表
6
天前修改的文件。
4.按照权限搜索 如果要在整个系统中搜索权限中包括SUID权限的所有文件,只需使用-4000即可:
5.按照所有者和所属组搜索
6.按照文件类型搜索 7.逻辑运算符
8.其他选项
这里需要重点讲解一下
-exec
参数重要的作用。这个参数用于把
find
命令搜索到的结果交由紧随其后的命令作进一步处理,它十分类似于管道符技术,并且由于find
命令对参数的特殊要求,因此虽然
exec
是长格式形式,但依然只需要一个减号(-)。
示例:在整个文件系统中找出所有归属于
kongd
用户的文件并复制到
/root/findresults
目录。
该实验的重点是
-
exec {} \
;
参数,其中的
{}
表示
find
命令搜索出的每一个文件,并且命令的结尾
必须是
\
;
压缩和解压缩
zip
和
unzip
命令
zip:
可以压缩文件和目录。
语法:
zip FILE
语法:
unzip FILE
——解压缩到其他文件
gzip
和
gunzip
命令
实例
1:
使用
gzip
压缩文件
[root@localhost test]
# gzip test1.txt
[root@localhost test]
# ls test1*
test1.txt.gz test1.zip
实例
2:
使用
gzip
压缩目录下文件
[root@localhost test]
# gzip -r dir1/
[root@localhost test]
# ls dir1
fstab.gz test3.txt.gz test4.txt.gz test5.txt.gz
#
注意
:
以上压缩之后原始文件就没有了。
实例
3:
压缩但保留原始文件
[root@localhost test]
# gzip -c test2.txt > test2.txt.gz
[root@localhost test]
# ls test2*
test2.txt test2.txt.gz test2.zip
——gzip -c 保留原文件
注:查看压缩过的文本文件内容:
zcat
、
zless
。
zcat
文件名
.gz
bzip2
、
bunzip2
命令
bzip2
、
bunzip2
(
=
bzip2
-d
)是更新的
Linux
压缩工具,比
gzip
有着更高的压缩率。
bzip2
、
bunzip2
示例如下:
[root@localhost test]
# bzip2 man.config //
将
man.config
以
bzip2
压缩,此时
man.config
变成
man.config.bz2
[root@localhost test]
# bzip2 -9 -c man.config > man.config.bz2 //
将
man.config
用
最佳的压缩比压缩,并保留原本的档案
[root@localhost test]
# bzip2 -d man.config.bz2 //
将
man.config.bz2
解压缩,可用
bunzip2
取代
bzip2 -d
[root@localhost test]
#bunzip2 man.config.bz2 //
将
man.config.bz2
解压缩
注:查看压缩过的文件内容:
bzcat
、
bzless
。
bzcat
文件名
.bz2
xz
、
unxz
命令
实例
1
:压缩文件
[root@localhost test]
# xz test1.txt
[root@localhost test]
# ls test1.txt.xz
test1.txt.xz
实例
2
:压缩
dir1
目录下文件
[root@localhost test]
# xz dir1/*
[root@localhost test]
# ls dir1
fstab.xz test3.txt.xz test4.txt.xz test5.txt.xz
实例
3
:查看压缩文件内容
[root@localhost test]
# xzcat test1.txt.xz
test1
实例
4
:解压缩(
xz
-d
等价于
unxz
)
[root@localhost test]
# unxz test1.txt.xz
实例
5
:解压缩目录
dir1
下文件
[root@localhost test]
# xz -d dir1/*
[root@localhost test]
# ls dir1
fstab test3.txt test4.txt test5.txt
tar
归档命令
格式:
tar [
选项
] [args]……
选项:任选其一
必选项:
辅助选项:
-c创建一个包文件
——z(用gzip压缩) -f必选项
——cs(拓展名),tar(打包好的文件),gz(gzip压缩过)
——/....所要打包的文件
——查看打包好后的文件列表
——解压缩到指定目录(-C)
额外的选项:
1. 创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件
tar cvf/cfv/-cvf
文件名
.tar
要打包的目录或文件名列表
……
2.
列出包文件中的文件列表
tar t[v]f
包文件名
3.
创建带压缩的包文件,为节省存储空间,通常需要生成压缩格式的
tar
包文件,
tar
命令支持三种不同的压缩方式
tar czf/-czf
文件名
.tar.gz
要打包压缩的目录或文件名
……
tar cjf/-cjf
文件名
.tar.bz2
要打包压缩的目录或文件名
……
tar cJf/-cJf
文件名
.tar.xz
要打包压缩的目录或文件名
……
4.
提取包文件到指定目录
tar xf/-xf/-xzf
文件名
.tar.gz [-C
目标路径
]
tar xf/-xf/-xjf
文件名
.tar.bz2 [-C
目标路径
]
tar xf/-xf/-xJf
文件名
.tar.xz [-C
目标路径
]
文件上传下载
1
、
xftp
工具
2、sftp是一个交互式文件传输程式
它类似于
ftp
传输协议,属于
ssh,
但它进行加密传输,相对
FTP
来讲有更高的安全性。
如果有服务器的端口不是默认的
22
,请在
sftp
后面加
-P
端口号。
# sftp root@223.6.6.6
The authenticity of host ‘223.6.6.6 (223.6.6.6)’ can’t be established.
ECDSA key fingerprint is SHA256:Hl/dKTFzL4lOlF8DIG5itaV4OAsZunC2AWlFGLjLfsg.
Are you sure you want to continue connecting (yes/no)?
yes
【输入
yes
回车】
Warning: Permanently added ‘223.6.6.6’ (ECDSA) to the list of known hosts.
root@223.6.6.6’s password:
【输入
223.6.6.6
的
root
密码并回车】
Connected to
223
.6.6.6.
sftp>
将
223.6.6.6
服务器文件下载到
223.5.5.5
的
home
目录
;
sftp> get /var/www/renwole.txt /home/
将
223.5.5.5
服务器文件上传到
223.6.6.6
服务器的
mnt
目录
;
sftp> put /home/renwole.txt /mnt/
你如果不知道远程主机的目录是什么样,
ls
命令可以列出
223.6.6.6
服务器的当前目录列表。例如
sftp> ls //
和查看本地操作命令一样
sftp> pwd //
查询
223.6.6.6
的当前工作目录
如果想知道本地主机(
223.5.5.5
)的目录是什么样,可以使用下面的命令,例如:
sftp> lls
sftp> lpwd
如果想退出,例如:
# exit //
退出机器,返回你原始机器界面。
shell-
命令解释器
shell
:壳,命令解释器,负责解析用户输入的命令。命令分两类:
内置命令
(shell
内置
)
,
shell
为了完成自我管理和基本的管理,不同的
shell
内置不同的命令,但是
大部分都差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type
命令查看命令是
file
、
alias
还是
builtin
type
-
a
列出当前命令可以如何执行
type
-
t
仅列出命令按照哪种方式执行
那
shell
如何知道命令的可执行文件在哪个路径下呢?系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH
中。
在众多环境变量里面有一个环境变量叫做
PATH
,当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Linux
中的特殊符号
命令别名
别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。
语法:
alias
别名
=’
原命令
[
选项
]…… [
参数
]……’
#
查看设置的别名
[root@node13 ~]
# alias
alias
cp
=
'cp -i'
alias
egrep
=
'egrep --color=auto'
alias
fgrep
=
'fgrep --color=auto'
alias
grep
=
'grep --color=auto'
alias l.
=
'ls -d .* --color=auto'
alias
ll
=
'ls -l --color=auto'
alias
ls
=
'ls --color=auto'
……
#
删除别名:
[root@node13 ~]
#unalias
别名
在命令行中使用
alias
命令设置的别名仅在该次登入有效,如果重新开启一个
Shell
,或者重新登录
系统,则这些
alias
将无法使用。
在
linux
中提供
alias
永久化的方法:
(1)若要让某个用户使用该别名,则把别名加在
~/.bash_profile
或
~/.bashrc
中。然后
source
~/.bashrc
或者
source ~/.bash_profile
。
(2)若要让每一位用户都使用该别名,则把别名加在
/etc/bashrc
或者
/etc/profile
中,然后
source /etc/bashrc
或者
source /etc/profile
命令历史
history
命令可以查阅命令历史记录 ,也可在命令行利用向上或向下光标键来进行查询。
语法:
history [
选项
] [
参数
]
选项
:
number
:显示最近
number
条命令历史
-c
:清空当前历史命令
-a
[file]
:后面没跟文件时,默认将缓冲区中历史命令写入
~/.bash_history
中
-r
[file]
:将历史命令文件中的命令读入当前历史命令缓冲区中
-w
:将当前历史命令缓冲区命令写入历史命令文件中
;
[root@node13 ~]
# history 5
1871
ls
-l
1872
ls
-l
/
1873
touch
a
1874
touch
b
1875
history
5
[root@node13 ~]
# !1871
将
1871
条命令再执行一遍
ls
-l
[root@node13 ~]
# !!
执行上一条命令
命令行中的其他快捷键:
ctrl
+
d
输入已结束
;
也可当做
exit
ctrl
+
c
键盘中断请求,终止当前的命令
Ctrl
+
a
移动到当前行的开头
Ctrl
+
e
移动到当前行的结尾
Ctrl
+
l
清屏
==
clear
Ctrl
+
u
剪切命令行中光标所在处之前的所有字符(不包括自身)
Ctrl
+
k
剪切命令行中光标所在处之后的所有字符(包括自身)
ctrl
+
←/→
光标在命令行中按照单词跳转
引用上一条命令的最后一个参数
方法
1
:
!
$
方法
2
:先按
Alt
再输入
.
方法
3
:先按
Esc
在输入
示例:
生产环境中,
history
命令记录操作时间、操作用户、操作
IP
(1)
/etc/profile
文件中加入以下内容
USER_IP
=
`who -u am i 2>/dev/null| awk '{print
$NF
}'|sed -e 's/[()]//g'`
export
HISTTIMEFORMAT
=
"[%F %T][`whoami`][
${USER_IP}
] "
(2)执行:
source /etc/profile
[root@VM-8-15-centos ~]
# history
1
[2020-12-25
18
:10:27][root][111.18.44.17]
2
[2020-12-20
10
:35:16][root][111.18.44.17]
cat
/etc/redhat-release
3
[2020-12-20
14
:02:20][root][111.18.44.17]
exit
4
[2020-12-24
09
:39:17][root][111.18.44.17]
cat
/etc/redhat-release
5
[2020-12-24
10
:06:17][root][111.18.44.17]
awk
'NR==5'
/etc/passwd
6
[2020-12-24
10
:08:31][root][111.18.44.17] whereis ifconfig