继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Linux云计算-03_必备基础命令

shuchaoyang
关注TA
已关注
手记 8
粉丝 0
获赞 0

Linux系统启动默认为字符界面,一般不会启动图形界面,所以对命令行的熟练程度能更加方便、高效的管理Linux系统。

本章介绍Linux系统必备命令各项参数及功能场景,Linux常见命令包括:cd、ls、pwd、mkdir、rm、cp、mv、touch、cat、head、tail、chmod、vim等。

1 cd命令详解

cd命令主要用于目录切换,例如:cd /home切换至/home目录,cd /root表示切换至/root目录 ;cd …/切换至上一级目录;cd ./切换至当前目录。

其中.和…可以理解为相对路径,例如cd ./test表示以当前目录为参考,表示相对于当前,而cd /home/test表示完整的路径,理解为绝对路径),如下所示:

[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cd /tmp
[root@superman-vm01 tmp]# 
[root@superman-vm01 tmp]# cd /home
[root@superman-vm01 home]# 
[root@superman-vm01 home]# cd ..
[root@superman-vm01 /]# 
[root@superman-vm01 /]# cd ./home
[root@superman-vm01 home]# 
[root@superman-vm01 home]# cd /etc/rc.d/rc3.d
[root@superman-vm01 rc3.d]# 
[root@superman-vm01 rc3.d]# cd ../..
[root@superman-vm01 etc]# 

2 ls命令详解

ls命令主要用于浏览目录下的文件或者文件夹,使用方法参考:ls ./ 查看当前目录所有的文件和目录,ls -a 查看所有的文件,包括隐藏文件,以.开头的文件,常用参数详解如下:

-a, --all				    不隐藏任何以.开始的项目;
-A, --almost-all		    列出除.及..以外的任何项目;
    --author			    与-l同时使用时列出每个文件的作者;
-b, --escape			    以八进制溢出序列表示不可打印的字符;
    --block-size=大小	       块以指定大小的字节为单位;
-B, --ignore-backups	    不列出任何以"~"字符结束的项目;
-d, --directory			    当遇到目录时列出目录本身而非目录内的文件;
-D, --dired				    产生适合Emacs的dired模式使用的结果;
-f						    不进行排序,-aU选项生效,-lst选项失效;
-i, --inode				    显示每个文件的inode号;
-I, --ignore=PATTERN	    不显示任何符合指定shell PATTERN的项目;
-k						    即--block-size=1K;
-l						    使用较长格式列出信息;
-n, --numeric-uid-gid	    类似-l,但列出UID及GID号;
-N, --literal			    输出未经处理的项目名称 (如不特别处理控制字符) ;
-r, --reverse			    排序时保留顺序;
-R, --recursive			    递归显示子目录;
-s, --size				    以块数形式显示每个文件分配的尺寸;
-S						    根据文件大小排序;
-t						    根据修改时间排序;
-u						    同-lt 一起使用:按照访问时间排序并显示;
						    同-l一起使用:显示访问时间并按文件名排序;
						    其他:按照访问时间排序;
-U						    不进行排序;按照目录顺序列出项目;
-v						    在文本中进行数字(版本)的自然排序。

2.1 长格式显示

-l 参数主要是可以看到文件的更详细的信息。

[root@superman-vm01 ~]# ls -l /
total 24
lrwxrwxrwx.   1 root root    7 Jul  4 08:08 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Jul  4 08:22 boot
drwxr-xr-x   20 root root 3320 Jul  7 06:55 dev
drwxr-xr-x. 138 root root 8192 Jul  7 06:55 etc
drwxr-xr-x.   3 root root   22 Jul  4 08:17 home
lrwxrwxrwx.   1 root root    7 Jul  4 08:08 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jul  4 08:08 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   3 root root   16 Jul  4 08:13 opt
dr-xr-xr-x  187 root root    0 Jul  7 06:55 proc
dr-xr-x---.  15 root root 4096 Jul  6 08:42 root
drwxr-xr-x   39 root root 1220 Jul  7 06:55 run
lrwxrwxrwx.   1 root root    8 Jul  4 08:08 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x   13 root root    0 Jul  7 06:55 sys
drwxrwxrwt.  27 root root 4096 Jul  7 07:01 tmp
drwxr-xr-x.  13 root root  155 Jul  4 08:08 usr
drwxr-xr-x.  20 root root  282 Jul  4 08:22 var
[root@superman-vm01 ~]# 

-rw-r--r--

第一个横行表示文件类型,常见有
-   普通文件:
d   目录
l   链接文件
c   字符设备(即串行端口的接口设备,例如伪终端等)
b   块设备(磁盘)
s   套接字文件(通常用在网络数据连接)
p   管道文件

# Linux目录结构:
/ 根目录
/boot          放置linux系统启动时的内核文件以及引导文件。
/dev           存放linux系统下的设备文件
/etc           系统配置文件存放的目录
/home          系统默认的用户家目录
/lib,lib64     动态连接共享库
/media         挂载可移动的设备
/opt           存放第三方软件
/root          管理员家目录
/bin,/sbin     可执行二进制命令
/run           临时文件系统目录
/srv           早期存放数据目录
/tmp           存放临时文件
/usr           应用程序目录
/var           存放动态文件,比如日志
/mnt           临时挂载目录

2.2 显示隐藏文件

-a参数可以显示隐藏文件。

[root@superman-vm01 ~]# ls -a
.   anaconda-ks.cfg  .bash_logout   .bashrc  .config  .dbus    Documents  .esd_auth      initial-setup-ks.cfg  Music     Public  .tcshrc    Videos
..  .bash_history    .bash_profile  .cache   .cshrc   Desktop  Downloads  .ICEauthority  .local                Pictures  .ssh    Templates  .viminfo
[root@superman-vm01 ~]# 

3 pwd命令详解

pwd命令主要用于显示或者查看当前所在的目录路径,如下所示:

[root@superman-vm01 ~]# cd /etc
[root@superman-vm01 etc]# 
[root@superman-vm01 etc]# pwd
/etc
[root@superman-vm01 etc]# 
[root@superman-vm01 etc]# cd /etc/sysconfig/network-scripts/
[root@superman-vm01 network-scripts]# 
[root@superman-vm01 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@superman-vm01 network-scripts]# 
[root@superman-vm01 network-scripts]# cd /var/log
[root@superman-vm01 log]# 
[root@superman-vm01 log]# pwd
/var/log
[root@superman-vm01 log]#

4 mkdir命令详解

mkdir命令主要用于创建目录,用法mkdir dirname,命令后接目录的名称,常用参数详解如下:

用法:mkdir [选项]... 目录;若指定目录不存在则创建目录;
长选项必须使用的参数对于短选项时也是必需使用的;
-m, --mode=模式     		   设置权限模式(类似chmod),而不是rwxrwxrwx减umask;
-p, --parents       		需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理;
-v, --verbose       		每次创建新目录都显示信息;
-Z, --context=CTX   		将每个创的目录的SELinux 安全环境设置为CTX;
--help          			显示此帮助信息并退出;
--version      			    显示版本信息并退出。

4.1 递归创建目录

-p 自动创建上级目录,如果上级目录不存在;如果目录已经,则不创建,不会提示报错。

[root@superman-vm01 ~]# mkdir /home/a/b       
mkdir: cannot create directory ‘/home/a/b’: No such file or directory
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# mkdir -p /home/a/b
[root@superman-vm01 ~]# 

4.2 指定目录权限

-m 可以指定创建目录时的权限。

[root@superman-vm01 ~]# mkdir /home/c
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls -l /home
total 0
drwxr-xr-x  3 root     root     15 Jul  7 07:27 a
drwxr-xr-x  2 root     root      6 Jul  7 07:31 c
drwx------. 4 superman superman 97 Jul  7 07:26 superman
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# mkdir -m 640 /home/d
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls -l /home
total 0
drwxr-xr-x  3 root     root     15 Jul  7 07:27 a
drwxr-xr-x  2 root     root      6 Jul  7 07:31 c
drw-r-----  2 root     root      6 Jul  7 07:32 d
drwx------. 4 superman superman 97 Jul  7 07:26 superman
[root@superman-vm01 ~]# 

5 rm命令详解

rm 命令主要用于删除文件或者目录,用法 rm –rf test.txt (-r表示递归,-f表示强制),常用参数详解如下:

用法:rm [选项]... 文件...删除 (unlink) 文件。
-f, --force            	    强制删除。忽略不存在的文件,不提示确认;
-i                    	    在删除前需要确认;
-I                    	    在删除超过三个文件或者递归删除前要求确认。此选项比-i 提示内容更少,但同样可以阻止大多数错误发生;
-r, -R, --recursive    	    递归删除目录及其内容;
-v, --verbose          	    详细显示进行的步骤;
--help                	    显示此帮助信息并退出;
--version             	    显示版本信息并退出;
默认时,rm 不会删除目录,使用--recursive(-r 或-R)选项可删除每个给定的目录,以及其下所有的内容;
要删除第一个字符为"-"的文件 (例如"-foo"),请使用以下方法之一:
rm -- -foo
rm ./-foo

6 cp命令详解

cp 命令主要用于拷贝文件,用法,cp old.txt /tmp/new.txt ,常用来备份,如果拷贝目录需要加-r参数,常用参数详解如下:

用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --archive                	    等于-dR --preserve=all;
    --backup[=CONTROL        	    为每个已存在的目标文件创建备份;
-b                           	    类似--backup 但不接受参数;
    --copy-contents          	    在递归处理是复制特殊文件内容;
-d                           	    等于--no-dereference --preserve=links;
-f, --force                  	    如果目标文件无法打开则将其移除并重试(当 -n 选项;
								    存在时则不需再选此项);
-i, --interactive            	    覆盖前询问(使前面的 -n 选项失效);
-H                           	    跟随源文件中的命令行符号链接;
-l, --link                   	    链接文件而不复制;
-L, --dereference            	    总是跟随符号链接;
-n, --no-clobber             	    不要覆盖已存在的文件(使前面的 -i 选项失效);
-P, --no-dereference         	    不跟随源文件中的符号链接;
-p                           	    等于--preserve=模式,所有权,时间戳;
    --preserve[=属性列表     	     保持指定的属性(默认:模式,所有权,时间戳),如果;
								    可能保持附加属性:环境、链接、xattr 等;
-c                           	    same as --preserve=context;
    --sno-preserve=属性列表  	     不保留指定的文件属性;
    --parents                	    复制前在目标目录创建来源文件路径中的所有目录;
-R, -r, --recursive          	    递归复制目录及其子目录内的所有内容。

6.1 复制更新的文件

-u 只复制源文件有更新的,否则不执行。

#第一次将abc.txt复制到/home目录:
[root@superman-vm01 ~]# cat abc.txt
123
456
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cp abc.txt /home

#更新文件
[root@superman-vm01 ~]# echo "this is update" > abc.txt  
[root@superman-vm01 ~]# cat abc.txt
this is update
[root@superman-vm01 ~]# 

#-u参数复制:
[root@superman-vm01 ~]# cp -u abc.txt /home
cp: overwrite ‘/home/abc.txt’? y
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat abc.txt
this is update
[root@superman-vm01 ~]# 
#不更新文件,再次复制,并没有进行替换:
[root@superman-vm01 ~]# cp -u abc.txt /home
[root@superman-vm01 ~]#

6.2 复制软连接

-d|-a复制软连接,这里要注意创建软连接时最好为绝对路径,否则可能会出现失效的软连接。

[root@superman-vm01 ~]# ln -s /root/abc.txt abc1.txt
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls -l 
total 12
lrwxrwxrwx  1 root root   13 Jul  7 07:59 abc1.txt -> /root/abc.txt
-rw-r--r--  1 root root   15 Jul  7 07:48 abc.txt
-rw-------. 1 root root 2002 Jul  4 08:18 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Desktop
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Documents
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Downloads
-rw-r--r--. 1 root root 2050 Jul  4 08:27 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Music
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Pictures
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Public
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Templates
drwxr-xr-x. 2 root root    6 Jul  4 08:30 Videos
[root@superman-vm01 ~]# 

#如果直接复制,不带参数,会导致软连接失效,直接创建普通文件
[root@superman-vm01 ~]# cp abc1.txt /data
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls -l /data
total 4
-rw-r--r-- 1 root root 15 Jul  7 08:00 abc1.txt
[root@superman-vm01 ~]# 

#加上参数:
[root@superman-vm01 ~]# cp -d abc1.txt /data
cp: overwrite ‘/data/abc1.txt’? y
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls -l /data
total 0
lrwxrwxrwx 1 root root 13 Jul  7 08:00 abc1.txt -> /root/abc.txt
[root@superman-vm01 ~]# 

6.3 备份复制

-S 复制同名文件到目的目录时,对源文件进行备份,且自定义备份文件后缀名。

#第一次复制
[root@superman-vm01 ~]# cp abc.txt /data
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls /data
abc1.txt  abc.txt
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls -l /data
total 4
lrwxrwxrwx 1 root root 13 Jul  7 08:00 abc1.txt -> /root/abc.txt
-rw-r--r-- 1 root root 15 Jul  7 08:03 abc.txt
[root@superman-vm01 ~]#

#第二次复制,对源文件进行备份:
[root@superman-vm01 ~]# \cp -S ".`date +%F`" abc.txt /data
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ls /data
abc1.txt  abc.txt  abc.txt.2021-07-07
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ll /data
total 8
lrwxrwxrwx 1 root root 13 Jul  7 08:00 abc1.txt -> /root/abc.txt
-rw-r--r-- 1 root root 15 Jul  7 08:05 abc.txt
-rw-r--r-- 1 root root 15 Jul  7 08:03 abc.txt.2021-07-07
[root@superman-vm01 ~]# 

6.4 通用参数

-a 如果参数都记不住,就记住它吧,可以实现递归,复制软连接,保留文件属性。

7 mv命令详解

mv 命令主要用于重命名或者移动文件或者目录,用法, mv old.txt new.txt,常用参数详解如下:

用法:mv [选项]... [-T] 源文件 目标文件;
或:mv [选项]... 源文件... 目录;
或:mv [选项]... -t 目录 源文件;
将源文件重命名为目标文件,或将源文件移动至指定目录。长选项必须使用的参数对于短选项时也是必需使用的。
      --backup[=CONTROL]       	    为每个已存在的目标文件创建备份;
-b                             		类似--backup 但不接受参数;
-f, --force                     	覆盖前不询问;
-i, --interactive               	覆盖前询问;
-n, --no-clobber                	不覆盖已存在文件,如果您指定了-i、-f、-n 中的多个,仅最后一个生效;
    --strip-trailing-slashes    	去掉每个源文件参数尾部的斜线;
-S, --suffix=SUFFIX             	替换常用的备份文件后缀;
-t, --target-directory=DIRECTORY	将所有参数指定的源文件或目录;
									移动至 指定目录;
-T, --no-target-directory       	将目标文件视作普通文件处理;
-u, --update                    	只在源文件文件比目标文件新,或目标文件;
									不存在时才进行移动;
-v, --verbose         	      		详细显示进行的步骤;
--help                         		显示此帮助信息并退出;
--version                       	显示版本信息并退出。

8 touch命令详解

touch 命令主要用于创建普通文件,用法为touch test.txt,如果文件存在,则表示修改当前文件时间,常用参数详解如下:

用法:touch [选项]... 文件...
将每个文件的访问时间和修改时间改为当前时间;
不存在的文件将会被创建为空文件,除非使用-c 或-h 选项;
如果文件名为"-"则特殊处理,更改与标准输出相关的文件的访问时间;
长选项必须使用的参数对于短选项时也是必需使用的;
-a                   		只更改访问时间;
-c, --no-create      		不创建任何文件;
-d, --date=字符串    		  使用指定字符串表示时间而非当前时间;
-f                   		(忽略);
-h, --no-dereference 		会影响符号链接本身,而非符号链接所指示的目的地;
							(当系统支持更改符号链接的所有者时,此选项才有用);
-m                   		只更改修改时间;
-r, --reference=文件 		   使用指定文件的时间属性而非当前时间;
-t STAMP             		使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间;
--time=WORD          		使用WORD 指定的时间:access、atime、use 都等于-a;
							选项的效果,而modify、mtime 等于-m 选项的效果;
--help            	 		显示此帮助信息并退出;
--version            		显示版本信息并退出。

9 cat命令详解

cat 命令主要用于查看文件内容,用法 cat test.txt 可以查看test.txt内容,常用参数详解如下:

用法:cat [选项]... [文件]...
将[文件]或标准输入组合输出到标准输出。
-A, --show-all        			等于-vET;
-b, --number-nonblank 			对非空输出行编号;
-e                    		    等于-vE;
-E, --show-ends       			在每行结束处显示"$";
-n, --number          		    对输出的所有行编号;
-s, --squeeze-blank   			不输出多行空行;
-t                    		    与-vT 等价;
-T, --show-tabs       			将跳格字符显示为^I;
-u                    		    (被忽略);
-v, --show-nonprinting			使用^ 和M- 引用,除了LFD和 TAB 之外;
--help            			    显示此帮助信息并退出;
--version             		    显示版本信息并退出。

9.1 查看文件内容

[root@superman-vm01 ~]# cat -n /etc/fstab
     1
     2  #
     3  # /etc/fstab
     4  # Created by anaconda on Sun Jul  4 08:07:23 2021
     5  #
     6  # Accessible filesystems, by reference, are maintained under '/dev/disk'
     7  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
     8  #
     9  /dev/mapper/vg00-lv_root /                       xfs     defaults        0 0
    10  UUID=0e73085e-969b-4e8e-8aa5-83120ce58f76 /boot                   xfs     defaults        0 0
    11  /dev/mapper/vg00-lv_swap swap                    swap    defaults        0 0
[root@superman-vm01 ~]# 

9.2 创建文件

# EOF表示结束符,可以自定义,如下:

# 以覆盖得方式写文件
[root@superman-vm01 ~]# cat abc.txt
this is update
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat > abc.txt << EOF
> this is superman
> EOF
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat abc.txt
this is superman
[root@superman-vm01 ~]# 

# 以追加得方式写文件
[root@superman-vm01 ~]# cat abc.txt
this is superman
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat >> abc.txt <<f
> I am from Zhengzhou
> f
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat abc.txt
this is superman
I am from Zhengzhou
[root@superman-vm01 ~]# 

10 head命令详解

head命令主要用于查看文件内容,通常查看文件前10行,head -10 /var/log/messages可以查看该文件前10行的内容,常用参数详解如下:

用法:head [选项]... [文件]...
将每个指定文件的头10 行显示到标准输出。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为"-",则从标准输入读取数据,长选项必须使用的参数对于短选项时也是必需使用的;
-q, --quiet, --silent				不显示包含给定文件名的文件头;
-v, --verbose        				总是显示包含给定文件名的文件头;
--help               				显示此帮助信息并退出;
--version            				显示版本信息并退出;
-c,  --bytes=[-]K    				显示每个文件的前K 字节内容,如果附加"-"参数,则除了每个文件的最后K字节数据外显示剩余全部内容;
-n, --lines=[-]K     				显示每个文件的前K 行内容,如果附加"-"参数,则除了每个文件的最后K 行外显示剩余全部内容。

11 tail命令详解

tail命令主要用于查看文件内容,通常查看末尾10行,tail –fn 100 /var/log/messages可以实时查看该文件末尾100行的内容,常用参数详解如下:

用法:tail [选项]... [文件]...
显示每个指定文件的最后10 行到标准输出。
若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。
如果不指定文件或文件为"-" ,则从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-n, --lines=K              			输出的总行数,默认为10行;
-q, --quiet, --silent      			不输出给出文件名的头;
--help            		   			显示此帮助信息并退出;
--version         		   			显示版本信息并退出;
-f, --follow[={name|descriptor}]	即时输出文件变化后追加的数据;
              -f, --follow 等于--follow=descriptor 
-F            即--follow=name –retry
-c, --bytes=K         				输出最后K字节;另外,使用-c +K 从每个文件的第K字节输出。

12 chmod命令详解

chmod命令主要用于修改文件或者目录的权限,例如chmod o+w test.txt,赋予test.txt其他人w写权限,常用参数详解如下:

用法:chmod [选项]... 模式[,模式]... 文件...
 或:chmod [选项]... 八进制模式 文件...
 或:chmod [选项]... --reference=参考文件 文件,将每个文件的模式更改为指定值。
-c, --changes         			类似 --verbose,但只在有更改时才显示结果
    --no-preserve-root  		不特殊对待根目录(默认);
    --preserve-root     		禁止对根目录进行递归操作;
-f, --silent, --quiet 			去除大部份的错误信息;
-R, --recursive         		以递归方式更改所有的文件及子目录;
--help            				显示此帮助信息并退出;
--version         				显示版本信息并退出;
-v, --verbose         			为处理的所有文件显示诊断信息;
--reference=参考文件			  使用指定参考文件的模式,而非自行指定权限模式。

13 chown命令详解

chown命令主要用于文件或者文件夹宿主及属组的修改,命令格式例如chown –R root.root /tmp/test.txt,表示修改test.txt文件的用户和组均为root,常用参数详解如下:

用法:chown [选项]... [所有者][:[组]] 文件...
 或:chown [选项]... --reference=参考文件 文件...
更改每个文件的所有者和/或所属组。
当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。
-f, --silent, --quiet 去除大部份的错误信息
--reference=参考文件			 使用参考文件的所属组,而非指定值;
-R, --recursive         		递归处理所有的文件及子目录;
-v, --verbose           		为处理的所有文件显示诊断信息;
-H         						命令行参数是一个通到目录的符号链接,则遍历符号链接;
-L        						历每一个遇到的通到目录的符号链接;
-P         						历任何符号链接(默认);
--help      					显示帮助信息并退出;
--version         				显示版本信息并退出。

14 echo命令详解

echo命令主要用于打印字符或者回显,例如输入echo ok,会显示ok, echo ok > test.txt 则会把ok字符覆盖test.txt内容。>表示覆盖,原内容被覆盖,>>表示追加,原内容不变。

例如echo ok >> test.txt,表示向test.txt文件追加OK字符,不覆盖原文件里的内容,常用参数详解如下:

使用-e扩展参数选项时,与如下参数一起使用,有不同含义,例如:
\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab; \v 与\f相同;
\\ 插入\字符;
\033[30m 黑色字 \033[0m
\033[31m 红色字 \033[0m
\033[32m 绿色字 \033[0m
\033[33m 黄色字 \033[0m
\033[34m 蓝色字 \033[0m
\033[35m 紫色字 \033[0m
\033[36m 天蓝字 \033[0m
\033[37m 白色字 \033[0m
\033[40;37m 黑底白字 \033[0m
\033[41;37m 红底白字 \033[0m
\033[42;37m 绿底白字 \033[0m
\033[43;37m 黄底白字 \033[0m
\033[44;37m 蓝底白字 \033[0m
\033[45;37m 紫底白字 \033[0m
\033[46;37m 天蓝底白字 \033[0m
\033[47;30m 白底黑字 \033[0m

echo颜色打印扩展,auto_lamp_v2.sh内容如下:

echo -e "\033[36mPlease Select Install Menu follow:\033[0m"
echo -e "\033[32m1)Install Apache Server\033[1m"
echo "2)Install MySQL Server"
echo "3)Install PHP Server"
echo "4)Configuration index.php and start LAMP server"
echo -e "\033[31mUsage: { /bin/sh $0 1|2|3|4|help}\033[0m"

执行结果如图所示:

image-20210707003248333

15 df命令详解

df命令常用于磁盘分区查询,常用命令df –h,查看磁盘分区信息,常用参数详解如下:

用法:df [选项]... [文件]...
显示每个文件所在的文件系统的信息,默认是显示所有文件系统。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all                  显示所有文件系统的使用情况,包括虚拟文件系统;
-B, --block-size=SIZE      使用字节大小块;
-h, --human-readable       以人们可读的形式显示大小;
-H, --si                   同-h,但是强制使用1000而不是1024;
-i, --inodes               显示inode 信息而非块使用量;
-k                         即--block-size=1K;
-l, --local                只显示本机的文件系统;
    --no-sync              取得使用量数据前不进行同步动作(默认);
-P, --portability          使用POSIX 兼容的输出格式;
    --sync                 取得使用量数据前先进行同步动作;
-t, --type=类型          	  只显示指定文件系统为指定类型的信息;
-T, --print-type           显示文件系统类型;
-x, --exclude-type=类型  	  只显示文件系统不是指定类型信息;
--help            	       显示帮助信息并退出;
--version         	       显示版本信息并退出。

16 du命令详解

du命令常用于查看文件在磁盘中的使用量,常用命令du -sh,查看当前目录所有文件及文件及的大小,常用参数详解如下:

用法:du [选项]... [文件]...
 或:du [选项]... --files0-from=F
计算每个文件的磁盘用量,目录则取总用量。
长选项必须使用的参数对于短选项时也是必需使用的。
-a, --all               		输出所有文件的磁盘用量,不仅仅是目录; --apparent-size    			    显示表面用量,而并非是磁盘用量;虽然表面用量通常会小一些,但有时它会因为稀疏文件间的"洞"、内部碎片、非直接引用的块等原因而变大;
-B, --block-size=大小   		使用指定字节数的块;
-b, --bytes             		等于--apparent-size --block-size=1;
-c, --total             		显示总计信息;
-H                     		等于--dereference-args (-D);
-h, --human-readable    		以可读性较好的方式显示尺寸(例如:1K 234M 2G);
    --si                		类似-h,但在计算时使用1000 为基底而非1024;
-k                     		等于--block-size=1K;
-l, --count-links       		    如果是硬连接,就多次计算其尺寸;
-m                     		等于--block-size=1M;
-L, --dereference       		找出任何符号链接指示的真正目的地;
-P, --no-dereference    		    不跟随任何符号链接(默认);
-0, --null              		将每个空行视作0 字节而非换行符;
-S, --separate-dirs     		    不包括子目录的占用量;
-s, --summarize         		只分别计算命令列中每个参数所占的总用量;
-x, --one-file-system   		    跳过处于不同文件系统之上的目录;
-X, --exclude-from=文件 		排除与指定文件中描述的模式相符的文件;
-D, --dereference-args  		    解除命令行中列出的符号连接;
    --files0-from=F     		计算文件F中以NUL结尾的文件名对应占用的磁盘空,如果F 的值是"-",则从标准输入读入文件名。

如上为Linux初学者必备命令,当然Linux命令还有很多,后面章节会随时学习新的命令。

17 vi|vim编辑器

vi是一个命令行界面下的文本编辑工具,最早在1976年由Bill Joy开发,当时名字叫做ex。vi支持绝大多数操作系统(最早在BSD上发布),并且功能已经十分强大

1991年Bram Moolenaar基于vi进行改进,发布了vim,加入了对GUI的支持。

随着VIM更新发展,vim已经不是普通意义上的文本编辑器,而是被广泛的作为在文本编辑、方本处理、代码开发等用途,Linux中主流的文本编辑器包括:vi、vim、sublime、emacs、light table、eclipse、gedit等。

vim强大的编辑能力中很大部分是来自于其普通模式命令。vim的设计理念是命令的组合。

  • “5dd”5表示总共5行,删除光标所在后的5行,包含光标行;
  • “d$” $"代表行尾,删除到行尾的内容,包含光标;
  • “2yy”表示复制光标及后2行,包括光标行;
  • “%d” %代表全部或者全局,%d表示删除文本所有的内容,也即是清空文档所有的内容。

vim是一个主流开源的编辑器,其默认执行vim命令,会显示帮助乌干达贫困的孩子,如图为vim与键盘键位功能对应关系:

img

17.1 vim编辑器模式

Vim编辑器模式常用有三种,分别是:

  • 命令行模式;
  • 文本输入模式;
  • 末行模式。

vim是vi的升级版本,它是安装在Linux操作系统中的一个软件
在Linux Shell终端下默认执行vim命令,按Enter键后:

  • 默认进入命令行模式;
  • 在命令行模式按i进入文本输入模式;
  • 按ESC进入命令行模式;
  • 按:进入末行模式。

17.2 vim编辑器必备

vim 编辑器最强大的功能,就在于内部命令及规则使用,如下为vim编辑器最常用的语法及规则:

命令行模式:可以删除、复制、粘贴、撤销,可以切换到输入模式,输入模式跳转至命令行模式:按ESC键。
yy 						复制光标所在行;
nyy						复制n行;
3yy						复制3行;
p,P						粘贴;
yw 						复制光标所在的词组,不会复制标点符号;
3yw						复制三个词组;
u  						撤消上一次;  
U  						撤消当前所有;
dd 						删除整行;
ndd                     删除n行;
x  						删除一个字符;
u  						逐行撤销;
dw 						删除一个词组;      
a						从光标所在字符后一个位置开始录入;
i						从光标所在字符前一个位置开始录入;
I						从光标所在行的行首开始录入;
o						跳至光标所在行的下一行行首开始录入;
O						跳至光标所在行的上一行行首开始录入;
末行模式主要功能包括:查找、替换、末行保存、退出等;
:w						保存;
:q						退出;    
:s/x/y      			替换1行;
:wq         			保存退出;
1,5s/x/y     			替换1,5行;
:wq!        			强制保存退出;           
1,$sx/y     			从第一行到最后一行;
:q!						强制退出;
:x						保存;
/word					从前往后找,正向搜索;
?word					从后往前走,反向搜索;
:s/old/new/g      		将old替换为new,前提是光标一定要移到那一行;
:s/old/new        		将这一行中的第一次出现的old替换为new,只替换第一个;
:1,$s/old/new/g    		第一行到最后一行中的old替换为new;
:1,2,3s/old/new/g  		第一行第二行第三行中的old改为new;
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP