Linux零基础学习(小白必看)

第一章 Linux基础

1.终端terminal

查看当前用户终端

[19:21:49 root@yp ~]#tty
/dev/pts/0

2.SHELL

#显示当前使用的SHELL

[19:45:27 root@yp ~]#echo $SHELL
/bin/bash

#显示当前系统可使用的所有shell

[19:48:03 root@yp ~]#cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/bin/tmux
/bin/tmux

3.设置主机名

#主机名临时生效

[19:48:47 root@yp ~]#hostname yp

#设置主机名永久生效
centos7及以上修改方法:

[19:53:26 root@yp ~]#hostnamectl set-hostname NAME

centos6和Ubuntu修改方法:

[19:14:23 root@yp ~]#vi /etc/sysconfig/network
 NETWORKING=yes
 HOSTNAME=yuan.localdomain

注:主机名不支持下划线。

4.命令提示符

#显示提示符格式

[19:23:32 root@yuan ~]#echo $PS1
\[\e[1;33m\][\t \u@\h \W]\$\[\e[0m\]

修改范例:

PS1="\[\e[1;32m\][\[\e[0m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"

提示符格式说明:

	\e 控制符
	\u 当前用户
	\h 主机名称简称
	\H 主机名称全称
	\w 当前工作目录
	\W当前工作目录基名
	\t 24小时时间格式
	\T 12小时时间格式
	!历史命令数
	\# 开机后命令历史数

在centos中永久修改命令提示符颜色:

[19:58:27 root@yuan ~]#echo 'PS1="\[\e[1;33m\][\t \u@\h \W]\$\[\e[0m\]"' > /etc/profile.d/env.sh
[20:00:26 root@yuan ~]#cat /etc/profile.d/env.sh
PS1="\[\e[1;33m\][\t \u@\h \W]\\$\[\e[0m\]"
[20:01:08 root@yuan ~]#exit

在Ubuntu中修改提示符格式:

root@yp:~# echo 'PS1="\[\e[1;31m\][\t \u@\h \W]\$\[\e[0m\]"' >> .bashrc 
root@yp:~# exit

5.执行命令

内部命令:是shell自带的命令,通过某些命令形式提供
外部命令:在文件系统路径下有对应的可执行文件

区别指定命令是外部命令或内部命令:

type COMMAND

范例:

[21:48:07 root@yp ~]#type -a echo 
echo is a shell builtin
echo is /usr/bin/echo

内部命令相关:
help:内部命令列表
enable:管理内部命令
-enable cmd 启用内部命令
-enable -n cmd 禁用内部命令
-enable -n 查看所有禁用内部命令

6.hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在经执行,如果不存在,将会去PATH路径下找,利用hash缓存表可大大提高命令的调用速率。

hash命令常见用法:

hash 显示hash缓存
hash -l 显示hash缓存,可作为输入使用
hash -p path name 将命令全路径path起别名为name
hash -t name 打印缓存中中的name路径
hash -d name 清除name缓存
hash -r 清除所有缓存

7.别名命令

对于经常执行的较长命令,可自定义简单名称,方便执行

List item

  • 显示当前shell所有可用的别名:

     alias
    

    定义别名NAME,其命令相当于执行命令VALUE:

     alias NAME='VALUE'
    

范例:

[21:48:16 root@yp ~]#echo "alias free='free -h'" >> .bashrc
  • 撤销别名:

     unalias
    
  • 取消所有别名:

    unalias -a
    

8.常见命令

  • 查看硬件信息

lscup或cat /proc/cpuinfo

范例:

[22:37:02 root@yp ~]#lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  1 #每个core有几个线程
Core(s) per socket:  4 #每个槽位有4个core
Socket(s):           2 #服务器版面上有2个cpu槽位
NUMA node(s):        2 #nodes的数量
Vendor ID:           GenuineIntel
CPU family:          6
Model:               126
Model name:          Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
Stepping:            5
CPU MHz:             1497.600
BogoMIPS:            2995.20
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           48K
L1i cache:           32K
L2 cache:            512K
L3 cache:            8192K
[22:45:25 root@yp ~]#cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 126
model name	: Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
stepping	: 5
microcode	: 0x78
cpu MHz		: 1497.600
cache size	: 8192 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 27
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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid 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 cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid avx512f avx512dq rdseed adx smap clflushopt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xsaves arat pku ospke avx512_vpopcntdq md_clear flush_l1d arch_capabilities
bugs		: spectre_v1 spectre_v2 spec_store_bypass swapgs
bogomips	: 2995.20
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

  • 查看内存大小

free或 cat /proc/memihfo

范例:

[22:37:05 root@yp ~]#free
              total        used        free      shared  buff/cache   available
Mem:         816188      219012      331584        5736      265592      462972
Swap:       2097148           0     2097148

[22:44:24 root@yp ~]#cat /proc/meminfo 
MemTotal:         816188 kB
MemFree:          331664 kB
MemAvailable:     463080 kB
Buffers:            4300 kB
Cached:           223616 kB
SwapCached:            0 kB
Active:           182464 kB
Inactive:         131496 kB
Active(anon):      86448 kB
Inactive(anon):     5328 kB
Active(file):      96016 kB
Inactive(file):   126168 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         84056 kB
Mapped:            80212 kB
Shmem:              5736 kB
KReclaimable:      37708 kB
Slab:             100384 kB
SReclaimable:      37708 kB
SUnreclaim:        62676 kB
KernelStack:        4508 kB
PageTables:         6372 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2505240 kB
Committed_AS:     321716 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:     14336 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      132992 kB
DirectMap2M:      915456 kB
DirectMap1G:           0 kB

  • 查看硬盘分区情况
[22:46:09 root@yp ~]#lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  200G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0  152G  0 part 
  ├─cl-root 253:0    0  100G  0 lvm  /
  ├─cl-swap 253:1    0    2G  0 lvm  [SWAP]
  └─cl-data 253:2    0   50G  0 lvm  /data
sr0          11:0    1    7G  0 rom  
[22:47:21 root@yp ~]#cat /proc/partitions 
major minor  #blocks  name

   8        0  209715200 sda
   8        1    1048576 sda1
   8        2  159391744 sda2
  11        0    7377920 sr0
 253        0  104857600 dm-0
 253        1    2097152 dm-1
 253        2   52428800 dm-2

  • 查看系统版本信息
[22:48:26 root@yp ~]#uname -r
4.18.0-147.el8.x86_64
  • Centos8查看操作系统发行版本
[22:49:37 root@yp ~]#cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 
[22:56:30 root@yp ~]#cat /etc/os-release 
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"


[22:56:38 root@yp ~]#lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 8.1.1911 (Core) 
Release:	8.1.1911
Codename:	Core
  • Ubuntu查看发行版本
[20:51:12 root@yp ~]$cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

[22:59:52 root@yp ~]$cat /etc/issue
Ubuntu 20.04 LTS \n \l

[23:00:04 root@yp ~]$lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04 LTS
Release:	20.04
Codename:	focal
  • 日期和时间

Linux的两种时钟
----系统时钟:由Linux内核通过CPU的工作频率进行的
----硬件时钟:主板

date 显示和设置系统时间

[23:00:16 root@yp ~]$date +%s
1596121446
[23:04:06 root@yp ~]$date -d @`date +%s`
Thu 30 Jul 2020 11:04:58 PM CST

clock,hwclock:显示硬件时钟

-s 以硬件时间为准,校准系统时钟
-w以系统时间为准,校准硬件时钟

[19:52:37 root@yp ~]#timedatectl list-timezones 
[19:50:59 root@yp ~]#timedatectl set-timezone Asia/Shanghai 
[19:52:37 root@yp ~]#timedatectl status 
               Local time: Fri 2020-07-31 19:53:29 CST
           Universal time: Fri 2020-07-31 11:53:29 UTC
                 RTC time: Fri 2020-07-31 11:53:29
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[19:57:13 root@yp ~]#ll /etc/localtime 
lrwxrwxrwx. 1 root root 35 Jul 21 17:34 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
  • 日历
[19:59:36 root@yp ~]#cal -y
                               2020                               

       January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                      1    1  2  3  4  5  6  7
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    8  9 10 11 12 13 14
12 13 14 15 16 17 18    9 10 11 12 13 14 15   15 16 17 18 19 20 21
19 20 21 22 23 24 25   16 17 18 19 20 21 22   22 23 24 25 26 27 28
26 27 28 29 30 31      23 24 25 26 27 28 29   29 30 31            
                                                                  
        April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                   1  2       1  2  3  4  5  6
 5  6  7  8  9 10 11    3  4  5  6  7  8  9    7  8  9 10 11 12 13
12 13 14 15 16 17 18   10 11 12 13 14 15 16   14 15 16 17 18 19 20
19 20 21 22 23 24 25   17 18 19 20 21 22 23   21 22 23 24 25 26 27
26 27 28 29 30         24 25 26 27 28 29 30   28 29 30            
                       31                                         
        July                  August                September     
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                      1          1  2  3  4  5
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    6  7  8  9 10 11 12
12 13 14 15 16 17 18    9 10 11 12 13 14 15   13 14 15 16 17 18 19
19 20 21 22 23 24 25   16 17 18 19 20 21 22   20 21 22 23 24 25 26
26 27 28 29 30 31      23 24 25 26 27 28 29   27 28 29 30         
                       30 31                                      
       October               November               December      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7          1  2  3  4  5
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    6  7  8  9 10 11 12
11 12 13 14 15 16 17   15 16 17 18 19 20 21   13 14 15 16 17 18 19
18 19 20 21 22 23 24   22 23 24 25 26 27 28   20 21 22 23 24 25 26
25 26 27 28 29 30 31   29 30                  27 28 29 30 31      
                                                             
  • 用户登录信息查看命令

whoami:显示当前有效登录用户
who:系统当前所有登录的会话
w:提醒哦那个当前所有的会话登录及所做操作

  • 会话管理

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口
终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
(1) 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3) 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4) 它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有Screen,Tmux

  • screen

利用screen 可以实现会话管理,如:新建会话,共享会话等。
注意:CentOS7 来自于base源,CentOS8 来自于epel源

centos7 安装screen:

[19:59:40 root@yp ~]#yum -y install screen

centos8 安装creen:

[20:12:05 root@yp ~]#yum -y install epel-release
[20:12:54 root@yp ~]#yum -y install screen

screen 常见用法:
1.创建新screen会话
screen –S [SESSION]
2.加入screen会话
screen –x [SESSION]
3.退出并关闭screen会话
exit
4.剥离当前screen会话
Ctrl+a,d
5.显示所有已经打开的screen会话
screen -ls
6.恢复某screen会话
screen -r [SESSION]

  1. Tmux

Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离,

功能:
它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。它可以让新窗口"接入"已经存在的会话。
它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
它还支持窗口任意的垂直和水平拆分

安装 :

[20:19:17 root@yp ~]#yum -y install tmux

tmux ls或Ctrl+b,s 可以查看当前所有的 Tmux 会话

分离会话:
在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。

tmux detach

接入会话:
tmux attach 命令用于重新接入某个已存在的会话。

tmux attach -t <session-name>

杀死会话:

tmux kill-session -t <session-name>

切换会话:

tmux switch -t <session-name>

上下分窗格:

tmux split-window
ctrl+b,"

左右分窗格:

tmux split-window -h
ctrl+b,%

窗格快捷键:

Ctrl+b %:划分左右两个窗格
Ctrl+b ":划分上下两个窗格
Ctrl+b :光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓
Ctrl+b ;:光标切换到上一个窗格
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格左移
Ctrl+b }:当前窗格右移
Ctrl+b Ctrl+o:当前窗格上移
Ctrl+b Alt+o:当前窗格下移
Ctrl+b x:关闭当前窗格
Ctrl+b !:将当前窗格拆分为一个独立窗口
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小
Ctrl+b q:显示窗格编号

  • 输出信息 echo

echo 命令可以将后面跟的字符进行输出

功能:

显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号.

选项:

-E (默认) 不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能

9.字符集和编码

  • ASCII码

查看ascii码表

[20:37:26 root@yp ~]#yum -y install man-pages
[20:37:26 root@yp ~]#man ascii
  • Unicode

编码方案:

UTF-8:变长,1到4个字节
UTF-16:变长,2或4个字节
UTF-32:固定长度,4个字节

编码转换和查询:

http://www.chi2ko.com/tool/CJK.htm
https://javawind.net/tools/native2ascii.jsp?action=transform
http://tool.oschina.net/encode

10. 命令行扩展和被括起来的集合

  • 命令行扩展:` ` 和 $()

比较 " ", ’ ’ , ` ` 的区别:

[root@centos8 ~]#echo "echo $HOSTNAME"
echo centos8.localdomain
[root@centos8 ~]#echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos8 ~]#echo `echo $HOSTNAME`
centos8.localdomain

结论:
单引号:六亲不认,变量和命令都不识别,都当成了普通的字符串
反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续
双引号:不能识别命令,可以识别变量

范例:

[09:18:04 root@centos8 data]#echo "This system's name is $(hostname)" This system's name is centos8.magedu.org
[09:18:55 root@centos8 data]#echo "I am `whoami`"
I am root
[09:15:37 root@centos8 data]#touch $(date +%F).log
[09:16:29 root@centos8 data]#ls
2019-12-13.log
[09:16:31 root@centos8 data]#ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log

[09:16:34 root@centos8 data]#touch `date +%F`.txt
[09:17:14 root@centos8 data]#ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
-rw-r--r--. 1 root root 0 Dec 13 09:17 2019-12-13.txt

[09:17:15 root@centos8 data]#touch `hostname`-`date +%F`.log 
[09:18:02 root@centos8 data]#ll
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
-rw-r--r--. 1 root root 0 Dec 13 09:17 2019-12-13.txt
-rw-r--r--. 1 root root 0 Dec 13 09:18 centos8.magedu.org-2019-12-13.log

[root@centos8 ~]#touch `date +%F_%H-%M-%S`.log
[root@centos8 ~]#touch `date -d '-1 day' +%F`.log
  • 括号扩展:{ }
    {}可以实现打印重复字符串的简化形式
[root@centos8 ~]#echo {a..z..2}
a c e g i k m o q s u w y
[root@centos8 ~]#echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z

第二章 文件管理和重定向相关

1.列出目录内容-ls

-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归
-ld 目录和符号链接信息
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-F 对不同类型文件显示时附加不同的符号:*/=>@|
-C 文件多时,以多列的方式显示文件,默认是一列(标准输出)

2.查看文件状态 stat

每个文件有三个时间戳:

  • access time -atime 访问时间,读取文件内容
  • modify time -mtime 修改时间,改变文件内容
  • change time -ctime 改变时间,元数据发生改变
[21:11:12 root@yp ~]#stat /etc/passwd
  File: /etc/passwd
  Size: 1211      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 134551871   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2020-07-31 17:55:32.787596470 +0800
Modify: 2020-07-31 17:55:32.719596070 +0800
Change: 2020-07-31 17:55:32.743596211 +0800

3.文件通配符

常见通配符:

  • 匹配零个或多个字符,但不匹配 “ . ” 开头的文件,即隐藏文件
    ? 匹配任何单个字符
    ~ 当前用户家目录
    ~ yp 用户yp家目录
    ~+和. 当前工作目录
    ~- 前一个工作目录
    [0-9] 匹配数字0-9
    [a-z]、[A-Z] 匹配字母范围
    [yp] 匹配所有yp字母
    [^yp] 匹配除yp以外的所有字母
    [^a-z] 匹配除a-z意外的所有字母

4. 创建新文件和刷新文件时间-touch

选项:

-a 仅改变atime和ctime
-m 仅改变mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c如果文件不在,则不予创建

5.复制文件和目录-cp

常用选项:

-i 如果目标已存在,覆盖前提示
-n 不覆盖
-r,-R 递归复制目录及内部所有的内容
-a 归档
-d 不复制原文件,只复制链接名
-p 复制权限
-v 显示复制过程
-f 强制
-u 只复制比原文件更新或不存在的文件
-b 如目标存在,覆盖前先备份,默认只保留最近一个
–backup=number 目标存在,覆盖前先备份加数字后缀,可保留多个备份

6.移动和重命名文件-mv

常用选项:

-i 交互式
-f 强制
-b 目标存在,覆盖前线备份

7.删除文件-rm

常用选项:

-i 交互式
-f 强制删除
-r 递归
–no-preserve-root 删除/

8.目录操作

  • 显示目录树tree

-d 只显示目录
-L level 指定显示的层级目录

  • 创建目录mkdir

-p 存在于不报错,且可自动创建所需目录
-v 显示创建详细信息
-m MODE 创建目录时置界指定权限

  • 删除空目录mkdir

-p 递归删除父空目录
-v 显示删除信息

注意:rmdir 只能删除空目录,如果向删除非空目录,可以使用 rm-r 命令,递归删除目录树

9.软硬链接

  • 硬链接

ln filename [ linkname ]

  • 软链接

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/ #删除目录文件,不删除软连接

软硬区别:

  1. 本质:
    硬链接:本质是同一个文件
    软链接:本质不是同一个文件
  2. 跨设备
    硬链接:不支持
    软链接:支持
  3. inode
    硬链接:相同
    软链接:不同
  4. 链接数
    硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少软链接:创建或删除,链接数不会变化
  5. 文件夹
    硬链接:不支持
    软链接:支持
  6. 相对路径
    硬链接:原始文件相对路径是相对于当前工作目录
    软链接:原始文件的相对路径是相对于链接文件的相对路径
  7. 删除源文件
    硬链接:只是链接数减一,但链接文件的访问不受影响
    软链接:链接文件将无法访问
  8. 文件类型
    硬链接:和源文件相同
    软链接:链接文件,和源文件无关

10.IO重定向

  • 标准输入和输出

标准输入(STDIN):默认接受来自终端窗口的输入 -0
标准输出(STDOUT):默认输出到终端窗口 -1
标准错误(STDERR):默认输出到终端窗口 -2

  • 标准输出和错误重定向
    将默认的输入输出,或错误对应的设备改变,指向新的目标

1>或> 标准输出重定向到文件
2> 标准错误重定向到文件
&> 把所有输出重定向到文件
2>&1 将标输出误重定向为标准错误
1>&2 将标准错误重定向为标准输出

  • 追加
    把输出和错误重定向追加到文件

>> 标准输出追加
2>> 标准错误追加

11.管道

管道符左边必须有标准输出,右边必须是标准输入

格式:

命令1 | 命令2 | 命令3 | …

范例:

[22:44:45 root@yp data]#ls
d1  link  yp  yp.txt
[22:44:46 root@yp data]#ls /data /xxx | tr 'a-z' 'A-Z' # 查看data和xxx文件内容 并且将输出结果中的a-z转换为A-Z
ls: cannot access '/xxx': No such file or directory
/DATA:
D1
LINK
YP
YP.TXT

猜你喜欢

转载自blog.csdn.net/u014578909/article/details/107698684