Linux系统命令主要包括文件操作、网络命令和性能命令,本文介绍常用文件操作命令。
文件类型:
r 读权限read 4
w 写权限 write 2
x 操作权限 execute 1
常用命令:
ll
)ls: 列出目录文件
pwd: 显示目前的目录
cd: 切换目录
man命令:可以通过 man + 命令
查看帮助文档:
[root@client ~]# ls
desktop.ini jenkins test.log test.txt t.txt
[root@client ~]# cd j*s
[root@client jenkins]# pwd
/root/jenkins
[root@client jenkins]# cd -
/root
[root@client ~]# pwd
/root
[root@client ~]# cd jenkins/
[root@client jenkins]# pwd
/root/jenkins
[root@client jenkins]# cd ..
[root@client ~]# pwd
/root
[root@client ~]#
/root
[root@client ~]# cd /
[root@client /]# pwd
/
[root@client /]# cd ~
[root@client ~]# pwd
/root
[root@client ~]#
# 将目录A复制到目录B下
cp -r /etc/A /etc/B
# 将目录A的内容复制到目录B下
cp -r /etc/A/* /etc/B
cp -r /etc/A/. /etc/B
# 删除目录A及其下面的所有文件
rm -r /etc/A
rm -rf /etc/A #强制删除
# 移动目录A到目录B下
mv /etc/A /etc/B
# 移动目录A下的所有文件到目录B下
mv /etc/A/* /etc/B
将内容"TEST"添加到test.txt文件中
方法一:vi编辑法
:wq
保存并退出。方法二:echo命令法
# 追加
echo 'TEST' >> ./test.txt
# 覆盖
echo 'TEST' > ./test.txt
方法三:cat命令法
cat >> ./test.txt <<TEST
结尾的TEST要顶格。
方法四:cat编辑法
# 追加
cat >> ./test.txt
# 覆盖
cat > ./test.txt
ctrl+d
或者 ctrl+c
组合键结束编辑。下面介绍几种清空文件内容的方式
> test.txt
: > test.txt
cat /dev/null > test.txt
echo -n "" > test.txt
也可以使用 dd
和 truncate
命令来清空内容:
dd of=test.txt count=0
dd if=/dev/null of=test.txt
truncate -s 0 test.txt
这两个命令可以用来生成指定大小的文件,具体使用方法可参考文章Linux和Windows创建指定大小文件方法。
还可以使用 sed
命令:
sed -i d test.txt
sed -i '/^$/d' test.txt # 删除空行
sed -i 's/ *//g' test.txt # 删除空格
用于查找文件,基本用法:find path -name‘xxx'
find / -name jenkins
:查找所有目录下的jenkins文件
[root@client ~]# find / -name jenkins
/root/jenkins
/var/lib/docker/overlay2/6cc1d9dcc70fed5dcc455ca4147a13f650724c2e8004a9c101b4e2130276241c/diff/usr/share/jenkins
/var/lib/docker/overlay2/9b98446d8cf91c4c8da9d8eab5cd6366ef2cec266615c1fe6ad4f4faa84f25a1/diff/usr/share/jenkins
/var/lib/docker/overlay2/f1f4123687b215d1eff46d989df6c9568be89c231a83ab6105dc22c136ccf24b/diff/usr/share/jenkins
[root@iZ8vb54310gt89j8qct198Z ~]#
限制搜索深度
限制文件类型:文件类型有:普通文件f,目录d,符号链接 l,字符设备c,块设备b,套接字s,FIFO-p
还有其他限制条件,可以通过命令 man find
查看
统计某个文件的行数 (包括空行):wc -l 文件名
$ wc -l file1.log
6 file1.log
$ wc -l file1.txt file2.txt
6 file1.txt
8 file2.txt
14 总用量
统计某个文件的行数 (不包括空行)
$ cat file2.txt | sed '/^\s*$/d' | wc -l
3
统计当前目录下每个文件(不包括目录中的文件)的行数 (包括空行):
$ wc -l ./*
wc: ./dir1: 是一个目录
0 ./dir1
6 ./file1.log
6 ./file1.txt
8 ./file2.txt
20 总用量
统计当前目录下每个文件(不包括目录中的文件)的行数 (不包括空行):
$ grep -cv '^\s*$' *
grep: dir1: 是一个目录
dir1:0
file1.log:6
file1.txt:6
file2.txt:3
统计当前目录下每个文件(包括目录中的文件)的行数:find . -type f | xargs wc -l
$ find . -type f | xargs wc -l
6 ./dir1/file3.txt
8 ./dir1/file4.txt
6 ./file1.txt
8 ./file2.txt
6 ./file1.log
34 总用量
或者:
$ find . -type f -exec wc -l {} \;
6 ./dir1/file3.txt
8 ./dir1/file4.txt
6 ./file1.txt
8 ./file2.txt
6 ./file1.log
统计指定后缀的文件行数:
find . -type f -name "*.log"| xargs wc -l
6 ./file1.log
统计目录下所有普通文件(不包括目录中的文件)的总行数:
$ cat ./* | wc -l
cat: ./dir1: 是一个目录
20
统计目录下所有普通文件(包括目录中的文件)的总行数:
# 目录下所有文件总行数,包括空行
find . -type f -exec cat {} \; | wc -l
34
# 目录下指定文件类型总行数,包括空行
$ find . -type f -name "*.txt" -exec cat {} \; | wc -l
28
$ find . -type f -exec wc -l {} \; | awk '{sum+=$1}END{print sum}'
28
# 目录下所有文件总行数,不统计空行
$ find . -type f -exec cat {} \; | grep -v '^$' | wc -l
24
# 目录下指定文件类型总行数,不统计空行
$ find . -type f -name "*.txt" -exec cat {} \; | grep -v '^$' | wc -l
18
tar文件解压:
tar -xvzf xxx.tar.gz -C /opt
-x, --extract
:解压文件-v, --verbose
:显示解压日志-z, --gzip
:通过gzip支持压缩或解压缩-f, --file
:指定解压文件-t, --list
:列出压缩包内容-C, --directory=DIR
:压缩到指定目录不解压文件,查看包内的文件信息
tar -ztvf xxx.tar.gz
压缩为tar.gz文件
tar -czf xxx.tar.gz file-name或者DIR
-c, --create
:创建压缩文件解压zip文件:
$ unzip -d /temp test.zip # 解压到目的目录
$ unzip -o test.zip # 覆盖已存在的文件
$ unzip -n test.zip # 不覆盖已存在的文件
查看压缩包文件,不解压
$ zip tvf test.zip
压缩为zip文件:
$ zip -r test.zip test/
du(disk usage)命令主要用于显示目录或文件的大小:
$ du
du
18760 ./node_exporter-1.1.2.linux-amd64
27792 .
下面介绍几个选项参数:
-a, --all
:显示目录下所有文件大小-b, --bytes
:以byte为单位-h, --human-readable
:文件大小以K,M,G为单位显示-H, --si
:文件大小以KB,MB,GB为单位(幂底数为1000)-k, --kilobytes
:以1024 bytes为单位-m, --megabytes
:以MB为单位-s, --summarize
:显示文件总大小-d, --max-depth=N
:最大深度实例:
$ du -hs
28M .
$ du -ah
8.9M ./node_exporter-1.1.2.linux-amd64.tar.gz
12K ./node_exporter-1.1.2.linux-amd64/LICENSE
4.0K ./node_exporter-1.1.2.linux-amd64/NOTICE
19M ./node_exporter-1.1.2.linux-amd64/node_exporter
12K ./node_exporter-1.1.2.linux-amd64/nohup.out
19M ./node_exporter-1.1.2.linux-amd64
28M .
# 按大小排序目录下的文件
$ du -sh * | sort -rh