前言
本篇为《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 磁盘管理》