当前位置:首页 > 技术文章 > 正文内容

Centos7学习笔记(二)-基础命令(一)

ivker_lee5年前 (2020-08-02)技术文章224

1、cp命令

cp命令的四个重要参数:

-p 保持文件所有者、权限信息以及时间属性。

-r 递归复制,可操作目录。

-d 若复制的源文件为链接,则仅复制链接本身,且保持链接指向。

-a 等同于以上的dpr。

例:cp test.txt{,.ori}     =====    cp test.txt test.txt.ori

2、alias命令

查看或者设置命令别名

image.png

由此涉及一个问题——如何忽略因为系统设定的命令别名,导致的命令被强制交互执行?

                                        两个方法:1、完整命令前加“\”,例如:\cp host.txt /opt

                                        2、使用命令的绝对路径 ,例如:/bin/cp host.txt /opt

3、unalias命令

取消别名

4、touch和mkdir

例:touch {1..1000}.txt

mkdir /opt/data{1..3}

多文件或者目录的同时创建。

习题:1、切换到/tmp目录下,查看当前的工作位置,同时创建data1、data2、data3三个目录。

cd /tmp

pwd

mkdir data{1..3}

2、接第1题,分别在data1、data2、data3目录下创建3个文件,名为host1、host2、host3,然后查看/tmp目录的整个目录结构,最后检查下data1和host1两个对象的属性。

touch data{1..3}/host{1..3}

tree /tmp或tmp -d /tmp

ls -ld /data1

ls -l /data1/host1

3、把/etc/hosts文件复制到/tmp/data1下,然后把data1目录复制到/opt下。

cp /etc/hosts /tpm/data1

cp -r /tmp/data1 /opt

4、将/tmp/data1目录移动到/root目录下,然后删除/opt/data1目录下的hosts文件,最后删除/opt下的data1目录。

mv /tmp/data1 /root

rm -f /opt/data1/hosts

rm -rf /opt/data1

5、echo命令

-n不换行输出。

例:

image.png

-e可以转义转义字符(常用转义字符:\t、\n、\v

例:

image.png

6、cat命令

查看文本文件。重要参数-n,显示行号。

7、more和less

分页显示文本内容。

8、head和tail

显示文件的头部和尾部。同样,-n参数用于控制显示行数。

tail有特殊的参数。-f用于跟踪显示文件尾部的信息。用于调试测试。


9、tr命令

tr用于替换(或者删除,参数-d)文本中的字符,格式为“tr [原始字符] [目标字符] ”。部分的替代sed功能。

命令详解参考:https://blog.51cto.com/yangdong/815734

简例:cat /etc/hosts |tr [a-z]  [A-Z]

见下例:(例中用了输入输出重定向来创建文件,执行命令效果)

[root@ecs-ryCz8 /home/study]# cat >stdin_out.txt <<over
> We have a tools.
> I am studying linux.
> Sunday is a good day.
> This weeked a boy will play a big game.
> We will go to the zoo.
> over
[root@ecs-ryCz8 /home/study]# cat stdin_out.txt 
We have a tools.
I am studying linux.
Sunday is a good day.
This weeked a boy will play a big game.
We will go to the zoo.
[root@ecs-ryCz8 /home/study]# tr "god" "574" < stdin_out.txt > ab.txt
[root@ecs-ryCz8 /home/study]# cat ab.txt 
We have a t77ls.
I am stu4yin5 linux.
Sun4ay is a 5774 4ay.
This weeke4 a b7y will play a bi5 5ame.
We will 57 t7 the z77.

上例中,tr转换后,stdin_out.txt文件内容其实是不变的。如果输出结果不>重定向到ab.txt文件,那么转换结果并未存储保留。

这里有一个实用的脚本:

把目录下所有的大写档名换为小写档名
  似乎有很多方式,"tr"是其中一种:
  #!/bin/sh
  dir="/tmp/testdir";
  files=`find $dir -type f`;
  for i in $files
   do
   dir_name=`dirname $i`;
   ori_filename=`basename $i`
   new_filename=`echo $ori_filename | tr [:upper:] [:lower:]` >
/dev/null;
   #echo $new_filename;
   mv $dir_name/$ori_filename $dir_name/$new_filename

   done

脚本中,涉及到“dirname”和“basename”命令,解释如下:

1、dirname命令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。 语法:dirname [选项] 参数

2、basename命令用于打印目录或者文件的基本名称,显示最后的目录名或文件名。语法:basename [选项] 参数

参考:https://blog.51cto.com/2937761/2090137


题目:

1、已知test.txt文件内容为

test

abclinux

just

请给出在屏幕输出时,不包括just字符串的命令。

a)head -2 test.txt

b)grep -v "just" test.txt

2、请用一条命令完成创建目录 /data/wwdata,即创建/data目录及其下的/wwdata目录。

mkdir -p /data/wwdata

3、已知/tmp目录下存在test.txt文件,如何执行命令,才能把/mnt/test.txt拷贝到/tmp下并覆盖文件,系统还不提示覆盖。

a)\cp /mnt/test.txt /tmp/test.txt

b)/bin/cp /mnt/test.txt /tmp/test.txt


10、ls -hil命令展示详解

[root@ecs-ryCz8 /home/study]# ls -hil

33841668         -rw-r--r-- .                    1             root             root             128             Aug      4     13:41     ab.txt

33754154         -rw-r--r-- .                     1             root             root             128             Aug      4     13:40     stdin_out.txt

inode序号       文件类型及权限    硬连接数         所有用户    所有用户组    文件大小        月份    日期    时间        文件名

ls命令常用参数:

-a 显示所有

-l 以长格式输出显示

-h 以人类易识别的格式输出

-i 显示inode

-d 只显示目录

-p 区分目录和文件,目录结尾加/符号

-F 不同文件结尾加不同标识,比如二进制文件加*,链接文件加@

-r 倒序输出结果

-t 输出结果按mtime时间排序

--time-style=iso/long-iso/full-iso/locale

[root@ecs-ryCz8 /home/study]# ls --time-style=full-iso -l
-rw-r--r--  1 root root 128 2020-08-04 13:41:48.836000000 +0800 ab.txt
[root@ecs-ryCz8 /home/study]# ls --time-style=long-iso -l
-rw-r--r--  1 root root 128 2020-08-04 13:41 ab.txt
[root@ecs-ryCz8 /home/study]# ls --time-style=iso -l
-rw-r--r--  1 root root 128 08-04 13:41 ab.txt
[root@ecs-ryCz8 /home/study]# ls --time-style=locale -l
-rw-r--r--  1 root root 128 Aug  4 13:41 ab.txt

比如:例题:以一条命令,查找出最近修改过的文件。—— ls -rtl


11、find命令

参数:

-name 按文件名查找

-type 按文件类型查找

-o表示取并集

-a表示取交集

!取反

-exec对查找的结果再处理,需以{} \;结尾,其中\是转义符。

-mtime 按修改时间处理

-newermt   搜索指定日期范围的文件

例如搜索/test下2017-06-03到2017-06-06之间修改过的文件。

$ find /test -type f -newermt 2017-06-03 -a ! -newermt 2017-06-06

 为了加速搜索,使用xargs的并行功能。(这一点,在xargs里可以再扩展)

例如,搜索"/"下的所有"Find.pm"结尾的文件:

ls --hide proc / | xargs -i -P 0 find /{} -type f -name "*Find.pm"

获取文件绝对路径

$ find $(pwd)或者$ find $PWD

# 执行readlink,它不仅解析软链接,也可以使用-f选项解析普通文件$           find . -exec readlink -f {} \;

# 使用bash的波浪号扩展 `~+`$         find ~+


获取文件名部分(basename)

find的-printf选项有很多修饰符功能,对于处理路径方面的修饰符有%f、%p、%P,其中%f是获取basename(去除所有路径前缀),%p是获取路径自身,一般用不上,%P是获取除了find搜索路径的剩余部分。

首先,想要获取basename,建议使用%f

$ mkdir /tmp/test/test1
$ touch /tmp/test/test1/{x,y,z}.png
$ find /tmp/test -printf "%f\n"
test
a.png
b.png
c.png
test1
x.png
y.png
z.png

$ find /tmp/test -printf "%P\n"
a.png
b.png
c.png
test1
test1/x.png
test1/y.png
test1/z.png

从结果中排除目录自身

find搜索目录时,总是会将搜索路径自身也包含到搜索结果中。想办法排除它是必须的。

排除的方法是,加上一个-path选项并取反,-path的参数和find的搜索路径参数必须一致。

$ find /tmp/test ! -path /tmp/test


以下有一个exec执行的实例:

[root@ecs-ryCz8 /home/study]# touch study{1..5}.txt

[root@ecs-ryCz8 /home/study]# mkdir linux{1..3}

[root@ecs-ryCz8 /home/study]# ls

ab.txt  linux2  stdin_out.txt  study2.txt  study4.txt

linux1  linux3  study1.txt     study3.txt  study5.txt

[root@ecs-ryCz8 /home/study]# find . -name "linux*" -exec cp -a {} /tmp \;

[root@ecs-ryCz8 /home/study]# ls /tmp/ -l

drwxr-xr-x 2 root root  6 Aug  5 10:21 linux1

drwxr-xr-x 2 root root  6 Aug  5 10:21 linux2

drwxr-xr-x 2 root root  6 Aug  5 10:21 linux3


12、xargs命令——从标准输入执行命令

参数:

-n 指定每行最大参数量n,可以将标准输入的文本划分为多行,每行n个参数,默认是以空格作为分隔符。

-d自定义分隔符。

-i把{}内容当做其他命令输出的结果来调用。例:find /data -type f |xargs -i cp {} /tmp


find /data  -type f -exec  rm -f {} \;和find /data -type -f |xargs rm -f两者的区别

前者表示逐条执行 rm -f  xxx 、rm -f yyy这样的命令,后者等同于rm -f xxx yyy的命令。即多条执行与单条执行的区别,效率不同。


13、tar命令

-z表示用gzip来压缩解压缩。------这里其实有个坑。当用tar命令来打包时,用z参数和不用z参数,表面看起来,输出结果是一样的,但是,用z参数后,调用了gzip进行压缩,gzip会让文件的时间不一致,导致最终md5sum计算的md5值是会不一样的。

-j表示用bzip2来压缩解压缩

-c表示创建压缩文件

-v展示过程

-f表示输出或调用文件

-x表示解压

-t查看压缩文件包含内容

-h表示追踪软连接文件,打包时一起打包压缩

--exclude排除不打包的文件或目录

-X用指定的文件内容来作为排除不打包文件的选项,来排除文件或目录、


14、id命令

15、whoami

16、stat命令

stat显示文件的atime、mtime、ctime时间,可以用以下例子帮助理解access time\modify time\change time的各自意思。



[root@ecs-ryCz8 /home/study]# touch 111.txt
[root@ecs-ryCz8 /home/study]# stat 111.txt 
  File: ‘111.txt’
  Size: 0         Blocks: 0          IO Block: 4096   regular empty file
Device: fe00h/65024dInode: 33575203    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-08-05 21:26:15.592000000 +0800
Modify: 2020-08-05 21:26:15.592000000 +0800
Change: 2020-08-05 21:26:15.592000000 +0800
 Birth: -
[root@ecs-ryCz8 /home/study]# echo "test11" >>111.txt
[root@ecs-ryCz8 /home/study]# stat 111.txt 
  File: ‘111.txt’
  Size: 7         Blocks: 8          IO Block: 4096   regular file
Device: fe00h/65024dInode: 33575203    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-08-05 21:26:15.592000000 +0800
Modify: 2020-08-05 21:29:58.104000000 +0800
Change: 2020-08-05 21:29:58.104000000 +0800
 Birth: -
[root@ecs-ryCz8 /home/study]# chown bloguser:0 111.txt 
[root@ecs-ryCz8 /home/study]# stat 111.txt 
  File: ‘111.txt’
  Size: 7         Blocks: 8          IO Block: 4096   regular file
Device: fe00h/65024dInode: 33575203    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/bloguser)   Gid: (    0/    root)
Access: 2020-08-05 21:26:15.592000000 +0800
Modify: 2020-08-05 21:29:58.104000000 +0800
Change: 2020-08-05 21:30:29.480000000 +0800
 Birth: -

可以这么说,文件经过vi编辑,那么3个时间都变。如果仅仅是类似echo导入内容至文件,那么mtime和ctime改变。mtime是因为文件内容改变。文件内容大小是文件的属性之一。ctime是表示文件属性改变,比如大小改变、所有者改变,都改ctime时间,ctime时间跟mtime时间完全可以不一致。


17、df

-i 查看磁盘inode使用情况

-h 以人类可读的形式查看block使用情况


18、cut

相当于awk的最简化版

-d——用于指定“分隔符”,默认用制表符分隔,例如用 -d "/"这样的分隔符

-f——用于指定列,f后跟数字,如-f3,可跟连续符,如-f3,7,10甚至-f3-10

-c——按字符取内容,后面可跟数字,如-c2-4,-c8-

image.png

image.png

19、sort

-f——忽略大小写

-n——以数值型内容进行排序,默认是字符串型排序

-r——反向排序

-t——指定分隔符,默认分隔符是制表符

-b——忽略每行前面空白的部分

-u——忽略重复的行,等同于uniq命令

-k——指定排序的列


  通过下面的例子,可以看sort各参数的意义。

[study@c7study /home]$ sort -t ":" -k 3,6 /etc/passwd
root:x:0:0:root:/root:/bin/bash
study:x:1000:1000:study:/home/study:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[study@c7study /home]$ sort -t ":" -k 3,3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
study:x:1000:1000:study:/home/study:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[study@c7study /home]$ sort -n -t ":" -k 3,3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
study:x:1000:1000:study:/home/study:/bin/bash

du -sh /etc/* |sort -nrk1(这个在这里有问题,应该用h,不应该用n)

EO)H2COJZBNZWVOE`MU6WM3.png

image.png


20、top命令

查看系统即时状态的命令,该命令可用生成配置文件,在当前用户下的.toprc文件

可自定义各部分显示颜色,最终写入配置文件中。

常用参数:

-d n ——n为数字,代表秒数,top默认是每3秒刷新信息(Centos系)。

-b ——使用批处理模式输出。一般和-n选项结合使用,用于将top命令的输出重定向到文件中

-n n ——n为数字,表示次数。一般和-b选项合用,用于输出重定向

-p ——后跟PID值,用于查看指定PID进程的信息

-s ——使top在安全模式运行,以避免在交互模式出现错误

-u ——指定监听某用户的进程

常规情况下,top命令运行后,即进入交互模式,交互模式可以用各类单字符操作命令,以下是常用的操作命令:

?或h查看其他交互命令

P     以CPU使用率排序,默认就是此选项

M     以内存使用率排序

N     以PID排序

T      以进程使用的累积时间来排序

k      给某个进程一个信号,可以用于杀死进程

r      给某个进程一个nice值(-20-19,越小越高,详见nice命令)

q      退出top交互模式

top输出的前五行容易懂,进程方面的解释如下:


列名含义
PID进程id
PPID父进程id
RUSERReal user name
UID进程所有者的用户id
USER进程所有者的用户名
GROUP进程所有者的组名
TTY启动进程的终端名。不是从终端启动的进程则显示为 ?
PR优先级
NInice值。负值表示高优先级,正值表示低优先级
P最后使用的CPU,仅在多CPU环境下有意义
%CPU上次更新到现在的CPU时间占用百分比
TIME进程使用的CPU时间总计,单位秒
TIME+进程使用的CPU时间总计,单位1/100秒
%MEM进程使用的物理内存百分比
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP进程使用的虚拟内存中,被换出的大小,单位kb
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE可执行代码占用的物理内存大小,单位kb
DATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR共享内存大小,单位kb
nFLT页面错误次数
nDRT最后一次写入到现在,被修改过的页面数。
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
COMMAND命令名/命令行
WCHAN若该进程在睡眠,则显示睡眠中的系统函数名
Flags任务标志


分享给朋友:

相关文章

CentOS8系统优化脚本

CentOS8系统优化脚本

网上看到的一个CentOS8的系统优化脚本,写的挺好的。抄录一下。https://www.cnblogs.com/zxl1024320609/p/16715018.html color () {         RES_COL=60         MOVE_TO_COL="echo -en&n...

Linux新学

Linux新学

[TOC]基础命令find与lsls1 .只显示目录ls -F | grep "/$"-F 文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括: / 表明是一个目录; @ 表明是到其它文件的符号链接; * 表明是一个可执行文件ls -al | grep "^d"2.只显示文件ls -al | grep &quo...

记一次大的折腾经历

记一次大的折腾经历

前两天想随手记一下学习exchange2019的知识点,就随手打开了自己博客的后台。先是看见zlog-php程序有版本升级的提示(升级到1.70),也有升级“数据库结构”的提示,没多想,就随手各都点了“升级”。然后新建完文章,保存的时候,出现错误。然后,并发现后台首页,在“清空缓存并重新编译模块”也会出现“操作失败”的错误。在其他更换“主题”,或者重新提交“网站设置”,都会出现上述或者类似错误。一开始完全不知道怎么解决,以为是zblog-php版本随意就升级了,带来的问题,然后去zblog论坛查...

Centos7学习笔记(二十)- nginx代理与负载均衡

Centos7学习笔记(二十)- nginx代理与负载均衡

一、代理类型正向代理:-----------为访问客户端服务,dns解析,是在代理端。如科学上网。反向代理:------------为服务器回应请求服务,dns解析,是在客户端本地完成。如多域名反代指向同一IP地址。二、nginx代理支持的协议http--------代理超文本传输协议   -----------http serverhttps--------代理http/https协议 ------------https servertcp -----------代理tcp...

 Centos7学习笔记(十二)- inotify+rsync与sersync

Centos7学习笔记(十二)- inotify+rsync与sersync

1、inotify-tools的安装yum安装,安装好epel源后,yum -y install inotify-tools源码安装:wget  https://github.com/inotify-tools/inotify-tools/releases/download/3.20.2.2/inotify-tools-3.20.2.2.tar.gz tar zxvf inotify-tools-3.20.2.2.tar.gz cd inot...

Centos7学习笔记(十九)- lnmp组合的安装与集成

Centos7学习笔记(十九)- lnmp组合的安装与集成

一、安装学习环境下,nginx采用官方安装sudo yum install yum-utilsvi /etc/yum.repos.d/nginx.repo编辑以下内容进去:[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。