第一课《linux入门基础》

前言

本篇为《linux应用开发》系列博客的第一篇。文章目标:通过本文的学习,了解清楚linux入门的大致流程。具备方向感后,linux其实并不难学习……

适合人群:电子电信相关专业、从事嵌入式开发,有1~2年c语言基础,期待转型linux的朋友。

文章风格:艺术源于生活而高于生活,技术也是。所以本文的行文风格,是穿插技术、幽默、哲学、文学、历史、岁月极美,用心体会必有所获。
望你学会乾坤大挪移心法,练就九阳神功,会读诗书,会做菜洗衣服,也读过历史(秦皇汉武唐宋元明清不求甚解有所涉猎,两宋风云读一读,资治通鉴看一看)。
世间万物皆有灵性,能托世为人也是莫大的福分,既然来了当怀感恩之心,自立自强,不扶自直。你是一个人又不是一个机器,希望你爱好广泛,也希望你免于浮夸,能抑制内心的狂热,耐心做好一件又一件事情。希望你能知世故而不世故,临了还能镇定自若,做一个纯粹的程序员。

历史

操作系统起源:
手工操作(拨码开关)-> 批处理系统 -> 多道任务系统 -> 分时系统 -> 实时系统 -> 通用操作系统

贝尔实验室:

AT&T 贝尔实验室是一个伟大的组织,没有这个实验室,现代化的信息技术便无从谈起。贝尔实验室出现了众多的物理、化学、数学、工程学、软件系统、电子方面的天才。
有声电影、立体录音、晶体管、激光放大器、移动蜂窝技术、研制人类历史上第一台晶体管计算机、汇编语言、B语言、c语言、编译器、unix操作系统等等从理论、硬件设计、软件设计的方方面面,贝尔实验室都功不可没。

贝尔实验室是这个星球上最伟大的实验室,没有之一。

贝尔实验室,这个星球上最伟大的实验室,没有之一

光纤通讯

华人科学家高锟教授在1966年提出光前通讯的理论,在那个连pc都尚未普及的年代,高锟教授自信地宣称,“将来全世界都会用光纤”,远赴日本、德国以及美国的贝尔实验室等地做演讲。

1973年,美国康宁玻璃公司(没错,就是现在各大手机厂商都喜欢用的智能手机屏幕生成商)的三名科研人员马瑞尔、卡普隆、凯克成功地制成了传输损耗每千米只有⒛分贝的光纤。这是什么概念呢?也就是说,用它和玻璃的透明程度比较,光纤的透明程度要比玻璃高出几百倍,它标志着光纤用于通信有了现实的可能。恰好也是这一年,美国贝尔实验室成功地研制出能在常温下连续工作的半导体激光器。这种半导体激光器虽然只有米粒大,发光面积很小,发出的也是一种极细的光线,但频率稳定而且方向性很好,射入光纤后能封闭在光纤中进行传播,因而成为光纤通信的理想光源。
与此同时,使用砷化镓(GaAs)作为材料的半导体激光(semiconductor laser),也被贝尔实验室发明出来,并且凭借着体积小的优势而大量运用于光纤通信系统中。

在这里插入图片描述

互联网

互联网对信息的流通产生巨大的促进左右,信息流通就带动了整个社会经济的发展。

物联网

互联网从出生以来,就有两种数据一种是人机信息流(人际关系网),一种是设备控制流。
从数据的比例来看,人机信息流占大多数,因此我们叫它互联网。
那么物联网,显然是要增大整个网络上面,硬件设备产生的数据的传输、计算、存储的比例,而且让设备具备一定的模型迭代升级能力(人工智能),使信息感应更准确,信息处理更及时和精准,更好的为人服务。这个就是物联网。
关于物联网的定义,五花八门,在下以为其实没有那么玄奥,简单来说:物联网=人际关系网 + 设备网 + 人机深度交互,over。

windows和linux的恩怨情仇

linux源于unix,是芬兰一个大学生模仿minix操作写的一个实验性项目系统发展而来。

Unix有两个分支:freebsd,后来的达尔文操作系统,也就是苹果的操作系统。另外一个分支是linux,也就是安卓。
所以,安卓和苹果是一个爷爷,请不要感到意外……
Unix类unix系统的市场定位:服务器市场,移动操作系统(安卓、ios)

windows系统市场定位:客户端市场、日常办公

windows 源自dos系统,unix大行其道时,dos系统尚未出生,微软也尚未组建。
施乐(Xerox)。它成立于1906年,原本是一家造纸公司,后来发现静电复印技术的巨大潜力并买断全部专利权,制造复印机,推出市场后迅速发展成为科技界的大企业。你的居民二代身份证也正是由它们的设备打印的。
因为复印技术带来的财富实在太多了,所以投入在这个研究中心的经费吸引了很多优秀的科学家。据说美国最优秀的100位计算机科学家,由76位就在帕克,这些人不需要考虑经费,只要做自己想做的研究即可。许多现在计算机技术就是诞生在这样的环境中,其中的研发成果:个人电脑、鼠标和所见即所得的图形界面正是首次出现在此。施乐公司甚至还退出了第一款带图形界面的电脑:
在这里插入图片描述

虽然施乐公司的决策层不像柯达那样目光短浅(全球第一个发明数码相机技术,因为柯达的胶卷实在太赚钱了,决策层就把技术捂着不撒出去,然后还是被别的公司发明出来了数码相机技术,柯达的胶卷暴利也化为乌有),毕竟推出了这个产品,只是市场反应不好。机缘巧合,施乐公司“投资”了乔布斯的苹果公司,而且允许乔布斯去见识一下这个伟大的产品。于是,苹果推出了全球第一款真正意义上面的带图形界面、键盘、鼠标的个人pc。 不久,比尔盖茨也借鉴到了施乐的技术。 乔布斯要状告比尔盖茨的微软,说微软侵犯了苹果的技术专利。 比尔盖茨说出了那段著名的话:“我们都有个有钱的邻居,叫施乐,我闯进他们家准备偷电视机的时候,发现你已经把它盗走了。”

windows是一个伟大的产品,它的功劳在于相对于苹果最开始的高定价,微软的系统显得很平民,让对电子、软件毫不相关的没有多少预算的人士,可以借助现代信息技术提升办公效率,促进各行各业经济价值的提升。

操作系统有两个接口:

  • 普通用户:GUI(以windows、Gnome、Macos为代表的带图形界面的操作系统接口)
  • 程序员:cli(命令行接口)、api(操作系统)

在Linux操作系统上面,虽然也有Gnome开发的图形界面,但是它的命令行更好用和高效。作为专业的程序员,首先要放弃用图形界面这种想法,一开始有点难但是你要扛过去这个坎儿,你会发现cli简直无可替代。

系统安装

Linux发型版本众多:ununtu 、centos、debian、feroda、达尔文等。如果想用比较新的内核和库,就用ubuntu。如果是追求稳,优先选择centos。 由于选择的是centos7系统。
如果预算比较充分,可以购买阿里云的ECS云主机,阿里云ECS是公网ip,你可以在任意一台电脑上面,通过xshell客户端登陆你的阿里云 linux节点。 如果预算有限制,使用虚拟机也不错,在下也曾经用了好长一段时间的虚拟机来学习linux,不过虚拟机毕竟有点卡。常用的虚拟机软件:vmware是收费的,需要和谐。VirtualBox是一个开源的虚拟机软件,性能也可以,推进优先使用开源的产品。

安装好centos系统后,就是命令行操作了

命令行教程

查看linux系统发型版本

[root@izwz93atpalb56zydy9bpyz ~]# uname -a
Linux izwz93atpalb56zydy9bpyz 5.0.2-1.el7.elrepo.x86_64 #1 SMP Wed Mar 13 18:41:45 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@izwz93atpalb56zydy9bpyz ~]#

查看cpu信息

[root@izwz93atpalb56zydy9bpyz ~]# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 85
model name	: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
stepping	: 4
microcode	: 0x1
cpu MHz		: 2499.998
cache size	: 33792 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips	: 4999.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

[root@izwz93atpalb56zydy9bpyz ~]# 

可以看到,笔者这台阿里云ECS是因特尔64bit奔腾处理器,主频为2.5Ghz,cpu 缓存为33M,46位物理地址,48位虚拟地址

查看内存占用

[root@izwz93atpalb56zydy9bpyz ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1008912      249024      204008         696      555880      582620
Swap:       1048572           0     1048572
[root@izwz93atpalb56zydy9bpyz ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           985M        243M        199M        696K        542M        568M
Swap:          1.0G          0B        1.0G
[root@izwz93atpalb56zydy9bpyz ~]#

查看硬盘占用

[root@izwz93atpalb56zydy9bpyz ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs          488092        0    488092   0% /dev
tmpfs             504456        0    504456   0% /dev/shm
tmpfs             504456      692    503764   1% /run
tmpfs             504456        0    504456   0% /sys/fs/cgroup
/dev/vda1       41151808 29540520   9497856  76% /
tmpfs             100892        0    100892   0% /run/user/0
[root@izwz93atpalb56zydy9bpyz ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        477M     0  477M   0% /dev
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           493M  692K  492M   1% /run
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vda1        40G   29G  9.1G  76% /
tmpfs            99M     0   99M   0% /run/user/0
[root@izwz93atpalb56zydy9bpyz ~]#

细心的读者可能注意到了,带参数 -h打印的空间大小是带单位的。-h意思是human,也就是人类可读。带上这个参数,Linux就知道要打印的格式是带单位的。

查看系统根目录

[root@izwz93atpalb56zydy9bpyz ~]# ll /
total 5360
lrwxrwxrwx.   1 root root       7 Mar 12  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root    4096 Dec 25 10:54 boot
-rw-------.   1 root root 1798144 Oct 19 14:49 core.15468
-rw-------.   1 root root 1802240 Dec 25 10:47 core.2168
-rw-------.   1 root root 2166784 Jul 26 23:41 core.3673
drwxr-xr-x.   3 root root    4096 May 22  2019 data
drwxr-xr-x.  20 root root    3220 Dec 10 11:26 dev
drwxr-xr-x. 143 root root   12288 Dec 25 10:53 etc
drwxr-xr-x.  10 root root    4096 Oct  2 09:48 home
lrwxrwxrwx.   1 root root       7 Mar 12  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root       9 Mar 12  2019 lib64 -> usr/lib64
drwx------.   2 root root   16384 Oct 15  2017 lost+found
drwxr-xr-x.   2 root root    4096 Oct  1 22:04 media
drwxr-xr-x.   2 root root    4096 Apr 11  2018 mnt
drwxr-xr-x.   6 root root    4096 Aug 21 16:47 opt
dr-xr-xr-x. 123 root root       0 Dec 10 11:25 proc
dr-xr-x---.  46 root root    4096 Dec 27 12:09 root
drwxr-xr-x.  40 root root    1240 Dec 25 17:03 run
lrwxrwxrwx.   1 root root       8 Mar 12  2019 sbin -> usr/sbin
drwxr-xr-x.   2 root root    4096 Apr 11  2018 srv
dr-xr-xr-x.  13 root root       0 Dec 10 11:25 sys
drwxrwxrwt.  14 root root    4096 Dec 27 03:40 tmp
drwxr-xr-x.  13 root root    4096 Mar 12  2019 usr
drwxr-xr-x.  21 root root    4096 Oct  1 21:30 var
[root@izwz93atpalb56zydy9bpyz ~]#

查看运行中的进程

[root@izwz93atpalb56zydy9bpyz ~]# top
top - 14:45:21 up 17 days,  3:19,  2 users,  load average: 0.00, 0.01, 0.00
Tasks: 116 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  1.0 sy,  0.0 ni, 98.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1008912 total,   199128 free,   252368 used,   557416 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.   579184 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                                                 
 1304 root      10 -10  132336  13188   7784 S  1.7  1.3 402:13.22 AliYunDun                                                                                                                                                               
    1 root      20   0  128284   7192   4340 S  0.0  0.7   0:52.22 systemd                                                                                                                                                                 
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.08 kthreadd                                                                                                                                                                
    3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp                                                                                                                                                                  
    4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp                                                                                                                                                              
    6 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:0H-kb                                                                                                                                                         
    8 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 mm_percpu_wq                                                                                                                                                            
    9 root      20   0       0      0      0 S  0.0  0.0   0:07.01 ksoftirqd/0                                                                                                                                                             
   10 root      20   0       0      0      0 I  0.0  0.0   2:35.45 rcu_sched                                                                                                                                                               
   11 root      rt   0       0      0      0 S  0.0  0.0   0:02.18 migration/0                                                                                                                                                             
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 cpuhp/0                                                                                                                                                                 
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                                                                                                                                                               
   15 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 netns                                                                                                                                                                   
   16 root      20   0       0      0      0 S  0.0  0.0   0:00.19 kauditd                                                                                                                                                                 
   17 root      20   0       0      0      0 S  0.0  0.0   0:00.49 khungtaskd                                                                                                                                                              
   18 root      20   0       0      0      0 S  0.0  0.0   0:00.00 oom_reaper                                                                                                                                                              
   19 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 writeback                                                                                                                                                               
   20 root      20   0       0      0      0 S  0.0  0.0   0:00.23 kcompactd0                                                                                                                                                              
   21 root      25   5       0      0      0 S  0.0  0.0   0:00.00 ksmd                                                                                                                                                                    
   22 root      39  19       0      0      0 S  0.0  0.0   0:03.48 khugepaged                                                                                                                                                              
   23 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 crypto                                                                                                                                                                  
   24 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kintegrityd                                                                                                                                                             
   25 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kblockd                                                                                                                                                                 
   26 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 tpm_dev_wq                                                                                                                                                              
   27 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 md                                                                                                                                                                      
   28 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 edac-poller                                                                                                                                                             
   29 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 devfreq_wq                                                                                                                                                              
   30 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 watchdogd                                                                                                                                                               
   34 root      20   0       0      0      0 S  0.0  0.0   0:04.01 kswapd0                                                                                                                                                                 
  121 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kthrotld                                                                                                                                                                
  122 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 acpi_thermal_pm                                                                                                                                                         
  123 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kmpath_rdacd                                                                                                                                                            
  124 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kaluad                                                                                                                                                                  
  125 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 nvme-wq                                                                                                                                                                 
  126 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 nvme-reset-wq                                                                                                                                                           
  127 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 nvme-delete-wq                                                                                                                                                          
  128 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ipv6_addrconf                                                                                                                                                           
  129 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kstrp                                                                                                                                                                   
  145 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 charger_manager                                                                                                                                                         
  318 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ata_sff                                                                                                                                                                 
  319 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_0                                                                                                                                                               
  320 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 scsi_tmf_0                                                                                                                                                              
  321 root      20   0       0      0      0 S  0.0  0.0   0:00.00 scsi_eh_1                                                                                                                                                               
  322 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 scsi_tmf_1                                                                                                                                                              
  333 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ttm_swap                                                                                                                                                                
  354 root       0 -20       0      0      0 I  0.0  0.0   0:04.57 kworker/0:1H-kb                                                                                                                                                         
  364 root      20   0       0      0      0 S  0.0  0.0   0:02.96 jbd2/vda1-8                                                                                                                                                             
  365 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 ext4-rsv-conver                                                                                                                                                         
  456 root      20   0   39220   8520   8116 S  0.0  0.8   0:14.52 systemd-journal

可以看到这台ECS距上次重启,已经有17天的时间,有两个用户。当前运行116个任务(进程),第一列是进程id,也就是pid。 top是一个实时监控的命令,在输入ctrl+c停止top命令之前,top会定时(10秒)刷新进程状态。 另外top命令相对其它监控命令,消耗系统资源稍微多一点。

查找单个进程

[root@izwz93atpalb56zydy9bpyz ~]# ps -aux | grep sshd
root      1595  0.0  0.3 112652  3588 ?        Ss   Dec10   0:00 /usr/sbin/sshd -D
root     29278  0.0  0.8 154444  8864 ?        Ss   12:09   0:00 sshd: root@pts/0
root     30777  0.0  0.8 154444  9044 ?        Ss   14:45   0:00 sshd: root@pts/5
root     30877  0.0  0.2 110284  2244 pts/5    S+   14:51   0:00 grep --color=auto sshd
[root@izwz93atpalb56zydy9bpyz ~]#

ps是一套系统命令,一般配合grep命令去用。-aux意思是打印出所有的信息,| 意思是将ps -aux的输入作为grep的输入,sshd是匹配关键字,整条命名意思就是打印出sshd进程的所有信息。

编写一个shell脚本

[root@izwz93atpalb56zydy9bpyz ~]# ll test.sh 
-rwxrwxrwx. 1 root root 563 Dec 27 14:59 test.sh
[root@izwz93atpalb56zydy9bpyz ~]#

shell脚本的内容:

[root@izwz93atpalb56zydy9bpyz ~]# cat test.sh 
#!/bin/bash

echo
echo "*             ,%%%%%%%%,"
echo " *           ,%%/\%%%%/\%%"
echo " *          ,%%%\c "" J/%%%"
echo " * %.       %%%%/ o  o \%%%"
echo " *  %%.     %%%%    _  |%%%"
echo " *   %%      %%%%(__Y__)%%"
echo " *  //       ;%%%% \-/%%%"
echo " * ((       /   %%%%%%%%"
echo " *  \\    .'          |"
echo " *   \\  /       \  | |"
echo " *    \\/         ) | |"
echo " *     \         /_ | |__"
echo " *     (___________))))))) "
echo " * -------------攻城狮--------------"
echo


while [ 1 ]
do
	sleep 1
	echo "--------sleep 1 second"
done
[root@izwz93atpalb56zydy9bpyz ~]# 

运行shell脚本

[root@izwz93atpalb56zydy9bpyz ~]# ./test.sh &
[1] 31090
[root@izwz93atpalb56zydy9bpyz ~]# 
*             ,%%%%%%%%,
 *           ,%%/\%%%%/\%%
 *          ,%%%\c  J/%%%
 * %.       %%%%/ o  o \%%%
 *  %%.     %%%%    _  |%%%
 *   %%      %%%%(__Y__)%%
 *  //       ;%%%% \-/%%%
 * ((       /   %%%%%%%%
 *  \    .'          |
 *   \  /       \  | |
 *    \/         ) | |
 *     \         /_ | |__
 *     (___________))))))) 
 * -------------攻城狮--------------

--------sleep 1 second
--------sleep 1 second
--------sleep 1 second
--------sleep 1 second

在命令后面带上一个 &,这个命令就会进入后台运行。
上面shell脚本运行后,第一行[1] 31090,其中31090就是该shell脚本的进程id

另外开启一个终端,杀死shell进程进程

[root@izwz93atpalb56zydy9bpyz ~]# ps -aux | grep test
root     31090  0.0  0.3 113200  3044 pts/5    S    15:02   0:00 /bin/bash ./test.sh
root     31152  0.0  0.2 110284  2128 pts/6    S+   15:03   0:00 grep --color=auto test
[root@izwz93atpalb56zydy9bpyz ~]# kill 31090
[root@izwz93atpalb56zydy9bpyz ~]#

或者一条命令解决战斗

[root@izwz93atpalb56zydy9bpyz ~]# kill $(pid of test)

创建一个文件

[root@izwz93atpalb56zydy9bpyz ~]# touch file.txt

touch是在当前目录创建文件的命令,也可以在指定目录创建文件

查看文件元数据信息:

[root@izwz93atpalb56zydy9bpyz ~]# ll file.txt 
-rw-r--r--. 1 root root 0 Dec 27 15:10 file.txt
[root@izwz93atpalb56zydy9bpyz ~]# 

向文件内写入数据:

[root@izwz93atpalb56zydy9bpyz ~]# echo "你好,世界" > file.txt 

再次查看文件元数据,此时已经写入了内容,文件大小是16字节

[root@izwz93atpalb56zydy9bpyz ~]# ll file.txt 
-rw-r--r--. 1 root root 16 Dec 27 15:12 file.txt

cat命令是打印文件到控制台

[root@izwz93atpalb56zydy9bpyz ~]# cat file.txt 
你好,世界
[root@izwz93atpalb56zydy9bpyz ~]# 

向文件追加内容

[root@izwz93atpalb56zydy9bpyz ~]# echo "追加数据到file.txt文件" >> file.txt 
[root@izwz93atpalb56zydy9bpyz ~]# cat file.txt 
你好,世界
追加数据到file.txt文件
[root@izwz93atpalb56zydy9bpyz ~]#

移动文件,用mv命令

[root@izwz93atpalb56zydy9bpyz ~]# pwd
/root
[root@izwz93atpalb56zydy9bpyz ~]# ll file.txt 
-rw-r--r--. 1 root root 46 Dec 27 15:16 file.txt
[root@izwz93atpalb56zydy9bpyz ~]# mv file.txt /tmp/
[root@izwz93atpalb56zydy9bpyz ~]# ll /tmp/file.txt 
-rw-r--r--. 1 root root 46 Dec 27 15:16 /tmp/file.txt
[root@izwz93atpalb56zydy9bpyz ~]# cat /tmp/file.txt 
你好,世界
追加数据到file.txt文件
[root@izwz93atpalb56zydy9bpyz ~]#

注意:mv命令的格式是:mv src_file dest_file。mv既可以移动文件目录,也可以重命名文件。这比windows鼠标右键,然后选择重命名,在输入新的文件名,最后还要enter确认,要方便的多。所以Linux 命令行用习惯了,程序员的办公效率的提升是成倍的。

批量创建100个文件

[root@izwz93atpalb56zydy9bpyz kk]# touch file{1..100}.txt
[root@izwz93atpalb56zydy9bpyz kk]# ls
file100.txt  file15.txt  file20.txt  file26.txt  file31.txt  file37.txt  file42.txt  file48.txt  file53.txt  file59.txt  file64.txt  file6.txt   file75.txt  file80.txt  file86.txt  file91.txt  file97.txt
file10.txt   file16.txt  file21.txt  file27.txt  file32.txt  file38.txt  file43.txt  file49.txt  file54.txt  file5.txt   file65.txt  file70.txt  file76.txt  file81.txt  file87.txt  file92.txt  file98.txt
file11.txt   file17.txt  file22.txt  file28.txt  file33.txt  file39.txt  file44.txt  file4.txt   file55.txt  file60.txt  file66.txt  file71.txt  file77.txt  file82.txt  file88.txt  file93.txt  file99.txt
file12.txt   file18.txt  file23.txt  file29.txt  file34.txt  file3.txt   file45.txt  file50.txt  file56.txt  file61.txt  file67.txt  file72.txt  file78.txt  file83.txt  file89.txt  file94.txt  file9.txt
file13.txt   file19.txt  file24.txt  file2.txt   file35.txt  file40.txt  file46.txt  file51.txt  file57.txt  file62.txt  file68.txt  file73.txt  file79.txt  file84.txt  file8.txt   file95.txt
file14.txt   file1.txt   file25.txt  file30.txt  file36.txt  file41.txt  file47.txt  file52.txt  file58.txt  file63.txt  file69.txt  file74.txt  file7.txt   file85.txt  file90.txt  file96.txt
[root@izwz93atpalb56zydy9bpyz kk]#

批量删除文件

[root@izwz93atpalb56zydy9bpyz kk]# rm *.txt -rf
[root@izwz93atpalb56zydy9bpyz kk]# ls

创建(多级目录需要带参数-p)目录(在windows下面叫文件夹,在linux下面不应该这么叫,应该叫目录更专业)

[root@izwz93atpalb56zydy9bpyz kk]# pwd
/tmp/minio/kk
[root@izwz93atpalb56zydy9bpyz kk]# ll
total 0
[root@izwz93atpalb56zydy9bpyz kk]# mkdir -p level1/level2/level3

查看创建的目录

[root@izwz93atpalb56zydy9bpyz kk]# ll level1/
total 4
drwxr-xr-x. 3 root root 4096 Dec 27 15:26 level2
[root@izwz93atpalb56zydy9bpyz kk]# ll level1/level2/
total 4
drwxr-xr-x. 2 root root 4096 Dec 27 15:26 level3
[root@izwz93atpalb56zydy9bpyz kk]# ll level1/level2/level3/
total 0
[root@izwz93atpalb56zydy9bpyz kk]#

也可以用另外一个命令tree(该命令不是系统默认命令,需要通过Yum或apt工具去安装)查看目录

[root@izwz93atpalb56zydy9bpyz kk]# tree
.
└── level1
    └── level2
        └── level3

3 directories, 0 files
[root@izwz93atpalb56zydy9bpyz kk]#

删除目录

[root@izwz93atpalb56zydy9bpyz kk]# rm level1/ -rf
[root@izwz93atpalb56zydy9bpyz kk]# ll
total 0
[root@izwz93atpalb56zydy9bpyz kk]# pwd
/tmp/minio/kk
[root@izwz93atpalb56zydy9bpyz kk]# 

文件拷贝,执行cp src dest后,会在dest指定的目录创建一个文件,文件内容与src的内容完全一致

**[root@izwz93atpalb56zydy9bpyz kk]# ls ../data/bucket1/
cppreference-zh-20190405.chm  c与c++标准类库及函数.chm  C++成长体系课程6.0.png
[root@izwz93atpalb56zydy9bpyz kk]# cp ../data/bucket1/C++成长体系课程6.0.png .
[root@izwz93atpalb56zydy9bpyz kk]# ls
C++成长体系课程6.0.png
[root@izwz93atpalb56zydy9bpyz kk]# **

软连接

用法为:ln -s 源文件 目标文件

[root@izwz93atpalb56zydy9bpyz kk]# ln -s /tmp/file.txt link.txt
[root@izwz93atpalb56zydy9bpyz kk]# ll 
total 5868
-rw-r--r--. 1 root root 6007010 Dec 27 15:34 C++成长体系课程6.0.png
lrwxrwxrwx. 1 root root      13 Dec 27 15:39 link.txt -> /tmp/file.txt
[root@izwz93atpalb56zydy9bpyz kk]# cat link.txt 
你好,世界
追加数据到file.txt文件
[root@izwz93atpalb56zydy9bpyz kk]#

命令ll 第一行打印的第一个字符的含义:l 代表是链接文件(相当于windows的快捷键),d 代表是目录文件,- 代表普通文件,b 代表是块设备(例如磁盘),c 代表是字符设备(例如鼠标、键盘,串口)。

硬链接

[root@izwz93atpalb56zydy9bpyz kk]# ln /tmp/minio/kk/link.txt hardware-link.txt
[root@izwz93atpalb56zydy9bpyz kk]# ll
total 5868
-rw-r--r--. 1 root root 6007010 Dec 27 15:34 C++成长体系课程6.0.png
lrwxrwxrwx. 2 root root      13 Dec 27 15:39 hardware-link.txt -> /tmp/file.txt
lrwxrwxrwx. 2 root root      13 Dec 27 15:39 link.txt -> /tmp/file.txt
[root@izwz93atpalb56zydy9bpyz kk]# cat hardware-link.txt 
你好,世界
追加数据到file.txt文件
[root@izwz93atpalb56zydy9bpyz kk]#

ln命令默认是硬链接,加上-s参数是软连接。区别在于,硬链接的是一个文件的全拷贝,是有物理文件实体的(在磁盘上面占用这个文件的全部大小空间),软链接只是一个映射没有物理实体(不会额外占用磁盘物理空间)。 软硬链接文件内容,始终与源文件保持一致。

在不同Linux主机之间拷贝文件:scp file user@ip:/path

在服务器A上面执行scp命令,把文件gcc.txt拷贝到另外一个叫47.106.95.219的服务器的/tmp目录下面

[centos@1 ~]$ ll gcc.txt 
-rw-rw-r--. 1 centos centos 29 Oct 20 01:53 gcc.txt
[centos@1 ~]$ cat gcc.txt 
scl enable devtoolset-8 bash
[centos@1 ~]$ scp gcc.txt [email protected]:/tmp
[email protected]'s password: 
gcc.txt                                                                                                                               100%   29     2.0KB/s   00:00    
[centos@1 ~]$

在47.106.95.219服务器下面,查看拷贝过来的文件:

[root@izwz93atpalb56zydy9bpyz kk]# ll /tmp/gcc.txt 
-rw-r--r--. 1 root root 29 Dec 27 15:49 /tmp/gcc.txt
[root@izwz93atpalb56zydy9bpyz kk]# cat /tmp/gcc.txt 
scl enable devtoolset-8 bash
[root@izwz93atpalb56zydy9bpyz kk]#

磁盘管理

避免文档重复编写,直接阅读在下的另外一篇文章即可:
《lvm 磁盘管理》

在这里插入图片描述

发布了61 篇原创文章 · 获赞 63 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/jacky128256/article/details/103730018