Linux基础总结 以及实例(基于Centos8)
cmd: date.
example:
[10:34:57 root@centos8 /]#date -d "1 year" +%F_%T
2020-12-17_10:36:48
cmd: cp
底层原理
在目标文件里先检索一个空闲的节点编号,其次将要复制的文件的属性、大小写进inode表中生成新条目,最后将新文件复制到磁盘上,然后这个空间会有一个指针指向它的路径和数据块。
example 1 :
每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见。
[16:40:19 root@centos8 ~]#cp -av /etc/ /data/backup`date +%F`
example 2 :
创建/data/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限
[16:40:19 root@centos8 ~]#cp -a /root /data/rootdir
cmd: mv
底层原理
在同一区,没有数据移动,用新文件名创建新的目录项,删除旧目录条目对应的旧文件名
在不同区,mv相当于cp和rm
practice :
1、如何创建
/testdir/dir1/x,/testdir/dir1/y,/testdir/dir1/x/a,/testdir/dir1/x/b,/testdir/dir1/y/a,/testdir/dir1/y/b
[11:05:11 root@centos8 /]#mkdir /testdir/dir1/{x,y}/{a,b} -pv
mkdir: created directory '/testdir'
mkdir: created directory '/testdir/dir1'
mkdir: created directory '/testdir/dir1/x'
mkdir: created directory '/testdir/dir1/x/a'
mkdir: created directory '/testdir/dir1/x/b'
mkdir: created directory '/testdir/dir1/y'
mkdir: created directory '/testdir/dir1/y/a'
mkdir: created directory '/testdir/dir1/y/b'
2、如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b
[11:37:35 root@centos8 /]#mkdir /testdir/dir2/{x/{a,b},y} -pv
mkdir: created directory '/testdir'
mkdir: created directory '/testdir/dir2'
mkdir: created directory '/testdir/dir2/x'
mkdir: created directory '/testdir/dir2/x/a'
mkdir: created directory '/testdir/dir2/x/b'
mkdir: created directory '/testdir/dir2/y'
(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
[11:49:42 root@centos8 /]#mkdir /testdir/dir{3,4,5/dir{6,7}} -pv
mkdir: created directory '/testdir'
mkdir: created directory '/testdir/dir3'
mkdir: created directory '/testdir/dir4'
mkdir: created directory '/testdir/dir5'
mkdir: created directory '/testdir/dir5/dir6'
mkdir: created directory '/testdir/dir5/dir7'
硬链接和软连接的区别
- 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件 - 跨设备
硬链接:不支持
软链接:支持 - inode
硬链接:相同
软链接:不同 - 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化 - 文件夹
硬链接:不支持
软链接:支持 - 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件相对路径是相对于链接文件的相对路径 - 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问 - 文件类型
ln -s filename [linkname]
#绝对路径
ln -s /data/dir /data/dirlink
#相对路径
cd /data
ln -s …/data/dir /root/dirlink
rm -rf /data/dirlink #删除软链接本身,不会删除源目录内容
rm -rf /data/dirlink/ #删除源目录的文件,不会删除链接文件
硬链接:和源文件相同
软链接:链接文件,和源文件无关
重定向 and 管道
0 标准输入
1 标准输出
2 标准错误
example :
- 1> 或 > 把STDOUT重定向到文件
- “>| 强制覆”
- 2> 把STDERR重定向到文件
- &> 把所有输出重定向到文件
将标准输出和错误都重定向到同一个文件
[root@centos8 ~]#ls /data /xxx > /data/all.log 2>&1
[root@centos8 ~]#ls /data /xxx 2> /data/all.log 1>&2
[root@centos8 ~]#ls /data /xxx &> /data/all.log
[root@centos8 ~]#ls /data /xxx 2>&1 > /data/all.log
ls: cannot access '/xxx': No such file or directory
cmd > file 标准输出重定向到文件
cmd >> file 追加内容
cmd 2> file 标准错误重定向到文件
cmd 2>> file 追加标准错误重定向到文件
cmd > file1 2> file2 先标准输出再标准错误
cmd &> all 覆盖重定向
cmd > all 2>&1 所有内容重定向
cmd 2>all 1>&2 所有内容重定向
cmd 2>&1 > all 标准错误重定向到标准输出
practice :
1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
cat /etc/issue |tr 'a-z' 'A-Z' > /tmp/issue.log
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
[11:08:46 root@centos8 ~]#who
zxr tty2 2019-12-18 08:41 (tty2)
root pts/1 2019-12-18 15:19 (192.168.133.1)
root pts/2 2019-12-22 10:19 (192.168.133.1)
[11:11:46 root@centos8 ~]#who | tr 'a-z' 'A-Z' > /data/who.out
[11:12:33 root@centos8 ~]#cat /data/who.out
ZXR TTY2 2019-12-18 08:41 (TTY2)
ROOT PTS/1 2019-12-18 15:19 (192.168.133.1)
ROOT PTS/2 2019-12-22 10:19 (192.168.133.1)
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
Hello, I am 用户名,The system version is here,please help me to check it ,thanks!
操作系统版本信息
mail -s help root <<EOF
> Hello,I am 'whoami',
> The system version is here,
> Please help me to check it,thanks!
> 'cat /etc/redhat-release'
> EOF
4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开
[11:33:35 root@centos8 ~]#ls |tr '\n' ' '
access_log anaconda-ks.cfg btmp-34 dead.letter Desktop Documents Downloads initial-setup-ks.cfg Music Pictures Public Templates Videos zxr.txt
5、计算1+2+3+…+99+100的总和
[17:46:55 zxr@centos8 root]$seq -s + 1 100|bc
5050
6、删除Windows文本文件中的回车字符 ,即“\r”
cat windows.txt| tr -d '\r'
7、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格
[11:55:01 root@centos8 ~]#echo "xt.,l 1 jr#'\n'mn 2 c*/fe 3 uz 4"| tr -dc '0-9 \n'
1 2 3 4
8、将PATH变量每个目录显示在独立的一行
[11:47:04 root@centos8 ~]#echo $PATH|tr ':' '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin
9、将指定文件中0-9分别替代成a-j
[11:41:43 root@centos8 ~]#cat zxr.txt
1234546565634
1425363687656
3425365
454674
45
34
3
[11:42:00 root@centos8 ~]#cat zxr.txt |tr '[:alnum:]' 'a-j'
bcdefegfgfgde
becfdgdgihgfg
decfdgf
efeghe
ef
de
d
10、将文件/etc/centos-release中每个单词(由字母组成)显示在独立一行,并无空行
[11:45:33 root@centos8 ~]#cat /etc/centos-release
CentOS Linux release 8.0.1905 (Core)
[11:45:40 root@centos8 ~]#cat /etc/centos-release| tr ' ' '\n'|tr -s '\n'
CentOS
Linux
release
8.0.1905
(Core)