不会事无巨细。
学习 Linux ,首先要有一个 Linux 环境。这里我们使用虚拟机(推荐VirtualBox,它是免费的)运行 CentOS 。
具体安装步骤参考:使用VirtualBox安装CentOS7。
安装完成后,如下图:
我这里使用的不是 VirtualBox,而是 Paralles。它跟 VirtualBox 一样,也是一款优秀的虚拟机。不同的是,Paralles 只能运行在 MacOS 上,而且不是免费的。
这是一个图形界面,可通过快捷键Ctrl + Alt + F2切换到全命令行界面:
事实上
F2-F6都可以切换。
输入用户名,回车,输入密码就登入系统了。
切换回图形界面使用Ctrl + Alt + F1。
有的系统可能需要同时按下
fn才能触发F1、F2的功能键。
学习第一个命令
date
date命令用于打印当前时间。
[qe@centos-7 ~]$ date
2020年 02月 22日 星期六 10:41:47 CST
这个命令里,[qe@centos-7 ~]$是命令提示符。其中qe代表当前用户名,centos-7代表主机名,~代表当前所在目录。
~是一个特殊目录,代表当前用户的家目录。所以这里表示当前目录为qe用户的家目录。
第一个命令很简单。接下来我们学习一个最常用的命令:
ls
ls是 list 的缩写,用于列出当前目录下的文件和目录。
[parallels@centos-7 ~]$ ls
Desktop Downloads Music Public Videos
Documents fontconfig Pictures Templates
不同的命令有不同的参数,如ls -a,用于列出当前目录下所有的文件和目录:
[parallels@centos-7 ~]$ ls -a
. .bashrc Documents .local .pki
.. .cache Downloads .mozilla Public
.bash_history .config .esd_auth Music Templates
.bash_logout .dbus fontconfig .parallels Videos
.bash_profile Desktop .ICEauthority Pictures .viminfo
其中-a表示 all,代表所有文件和目录,包括隐藏文件和目录。Linux 中在文件名之前加上.表示隐藏。
注意,Linux 中区分大小写。
又如ls -l表示列出详细信息。
多个短参数还可以合并,如ls -la:
--表示长参数。比如ls --all,同ls -a效果一样。
实用技巧
1。 在命令行中,使用↑、↓键可以切换前、后一条命令,使用两次Tab键可以补全命令。
2。 使用history命令可以查看所有执行过的命令。
每个历史命令前都有编号,通过使用!可以执行相应的历史命令。
[parallels@centos-7 ~]$ !6
ls
Desktop Downloads Music Public Videos
Documents fontconfig Pictures Templates
3。 快捷键Ctrl + a跳到当前行首,Ctrl + e跳到当前行尾。
目录组织形式
Linux 有一个根目录 /,是最顶层的目录。根目录的直接子目录如上图所示。同 Windows 系统不同,Linux 没有C盘、D盘的概念,且 Linux 使用/作为路径分隔符,如:/home/parallels/Desktop。
pwd
pwd用于打印当前目录。
[parallels@centos-7 Desktop]$ pwd
/home/parallels/Desktop
which
which用于打印某个命令的位置。
[parallels@centos-7 ~]$ which pwd
/usr/bin/pwd
ls
前面介绍过ls,用于列出所有文件和目录。其中ls -l用于列出详细信息,如下图:
上图中,文件大小的单位是字节,可以使用ls -lh,以KB,MB,GB为单位显示。
ls -lt是以最近修改时间排序。
cd
cd是 change directory 的缩写,用于切换目录。
[parallels@centos-7 ~]$ cd /
..代表上一级目录,.代表当前目录,~代表当前用户家目录。
[parallels@centos-7 ~]$ cd ..
du
du是 disk usage 的缩写,显示目录包含的文件大小,默认单位是字节。使用du -h可以KB,MB,GB为单位显示。
du默认只显示目录的大小,使用du -a可以显示目录和文件的大小。du -s只显示总计大小。
操作文件
文件操作主要有浏览文件,创建文件。
cat 和 less
cat 和 less用于显示文件内容。cat可以一次性显示文件的所有内容:
[parallels@centos-7 log]$ cat Xorg.0.log
可以使用cat -n filename显示行号。
less可以分页显示文件内容。
[parallels@centos-7 log]$ less Xorg.0.log
less命令可以显示一页的内容,使用回车键查看下一行,使用空格键查看下一页,使用b 键查看上一页,使用y 键后退一行,q 键退出。
head 和 tail
head 和 tail用于显示文件的开头和结尾。默认显示 10 行。可以使用tail -n指定显示的行数。
[parallels@centos-7 log]$ head Xorg.0.log
......
[parallels@centos-7 log]$ tail -n 5 Xorg.0.log
......
touch 和 mkdir
touch 和 mkdir用于创建文件和目录。
[parallels@centos-7 Desktop]$ touch test.txt
[parallels@centos-7 Desktop]$ mkdir test
mkdir -p可以递归创建目录。
[parallels@centos-7 Desktop]$ mkdir -p test1/test2/test3
cp 和 mv
cp是 copy 的缩写,用于拷贝文件或目录。
[parallels@centos-7 Desktop]$ cp test.txt test_copy.txt
cp -r用于拷贝目录。
mv是 move 的缩写,用于移动文件或目录。
[parallels@centos-7 Desktop]$ mv test.txt test1/
mv还可以用于重命名文件。
[parallels@centos-7 Desktop]$ mv test_copy.txt test.txt
rm
rm 用于删除文件或目录。
[parallels@centos-7 Desktop]$ rm test.txt
rm -r用于删除目录。
[parallels@centos-7 Desktop]$ rm -r test.txt
rm -f会强制删除。
链接
接下来我们讲解 Linux 中的链接。
Linux 中,文件名和文件内容并不放在一起,而是分开存储的。
硬链接
硬链接会使两个文件名指向同一块文件内容。修改 file1 则相当于修改了 file2。
创建硬链接的方法:
[parallels@centos-7 Desktop]$ ln test.txt test_hard.txt
值得注意的是,删除文件时,删除的是文件名。因此删除test_hard.txt并不会删除test.txt。
硬链接使用的不多。
软链接
软链接相当于 Windows 系统中的快捷方式。
如下图,如果删除 file2,对 file1 没什么影响,但如果删除 file1,那么 file2 就会变成 “死链接”。
创建软链接方法如下:
[parallels@centos-7 Desktop]$ ln test.txt test_soft.txt
权限
Linux 中可以创建很多用户。为了保证系统的安全,每个用户拥有不同的权限。
普通用户可以使用su切换至root。
因为root用户的权限过大,不建议直接使用root身份登录。
用户
只有使用root身份才能创建用户。
useradd可以添加新用户。在/home目录下就会创建一个新的目录tom,代表tom用户的家目录。
[root@centos-7 Desktop]# useradd tom
[root@centos-7 Desktop]# ls /home/
parallels tom
passwd可以更改用户的密码。
[root@centos-7 Desktop]# passwd tom
更改用户 tom 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
userdel用于删除用户。
[root@centos-7 Desktop]# userdel -r tom
-r参数会使得tom的家目录一起删除。
群组
Linux 中每个用户都属于一个群组,如果不设置用户的群组,默认会创建一个和该用户同名的群组,并且把用户划归到这个群组中。
创建群组使用groupadd命令。
[root@centos-7 ~]# groupadd friends
使用usermod -g命令可以修改用户的群组。
[root@centos-7 ~]# usermod -g friends tom
使用groups命令可以查看用户所在的群组。
[root@centos-7 ~]# groups tom
tom : friends
使用usermod -G命令可以将用户添加到多个群组中。
[root@centos-7 ~]# usermod -G friends,family tom
[root@centos-7 ~]# groups tom
tom : family friends
使用usermod -aG命令可以给用户追加一个群组。
[root@centos-7 ~]# usermod -aG lover tom
[root@centos-7 ~]# groups tom
tom : family friends lover
使用groupdel删除群组。
[root@centos-7 ~]# groupdel lover
[root@centos-7 ~]# groups tom
tom : family friends
修改文件的所有者和群组
chown是 change owner 的缩写,用于改变文件的所有者,需要 root 身份才能运行。
[root@centos-7 ~]# chown tom test.txt
chown -R用于递归改变文件和目录的所有者。
chgrp是 change group 的缩写,用于改变文件的群组。
[root@centos-7 ~]# chgrp friends test.txt
修改权限
前面说过,ls -l会列出文件的详细信息,其中包括权限。
开头的第一个字母d表示这是一个目录。相应的l表示链接,-表示文件。
后面的r表示可以读,w表示可以写,x表示可以执行,-表示没有相应的权限。
每三个放在一起,分别表示所有者、所属群组的用户,及其他用户对该文件(或目录)的权限。
Linux 分别为每种权限定义了一个数字。
所以分配读写权限即为 4 + 2 = 6,故 6 表示拥有读写权限。
使用chmod可以修改文件的权限:
[root@centos-7 Desktop]# chmod 755 test.txt
上述命令表示,所有者拥有rwx权限,所属群组的用户拥有r-x权限,其他用户拥有r-x权限。
使用chmod -R可以递归修改权限。
软件仓库
CentOS 中通常使用 yum 来管理软件包。
关于 yum ,参考 linux yum 命令。
查找
locate
locate用于快速查找。
[root@centos-7 Desktop]# locate test.txt
/home/parallels/Desktop/test.txt
/home/parallels/Desktop/test1/test.txt
刚创建的文件不会被locate收录,可以使用updatedb更新数据库:
[root@centos-7 Desktop]# updatedb
find
find命令也可用于查找,而且功能更强大。
格式:
其中,第二个参数 “查找的目标” 是必须的参数。
如:
[root@centos-7 Desktop]# find /home -name test.txt
/home/parallels/Desktop/test1/test.txt
/home/parallels/Desktop/test.txt
关于 find 的更多用法,参考:
grep
grep是 Globally search a Regular Expression and Print 的缩写。
grep的基本用法是:
如:
[root@centos-7 Desktop]# grep path /etc/profile
pathmunge () {
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
unset -f pathmunge
上面的命令会在 /etc/profile 文件中查找 path。使用-i参数会忽略大小写,-n参数会显示行号,-v参数会显示文本不在的行,-r参数会递归查找。
使用-E参数会使用正则表达式:
[root@centos-7 Desktop]# grep -E ^[Pp]ath /etc/profile
pathmunge () {
sort
sort命令用于将文件内容排序。
[root@centos-7 Desktop]# cat test.txt
Tom
jack
jemmy
Marry
Lucky
smith
[root@centos-7 Desktop]# sort test.txt
jack
jemmy
Lucky
Marry
smith
Tom
sort命令不会真正改变文件内容。可通过-o将排序后的内容写入新文件。
[root@centos-7 Desktop]# sort -o test_sorted.txt test.txt
[root@centos-7 Desktop]# cat test_sorted.txt
jack
jemmy
Lucky
Marry
smith
Tom
-r参数会倒序排列,-R随机排序,-n用于对数字排序。
wc
wc是 word count 的缩写,用于文件统计。
[root@centos-7 Desktop]# wc test.txt
6 6 33 test.txt
uniq
uniq用于删除文件的重复内容。
[root@centos-7 Desktop]# cat repeat.txt
Tom
Tom
Jack
Tom
Jack
Smith
[root@centos-7 Desktop]# uniq repeat.txt
Tom
Jack
Tom
Jack
Smith
uniq只能删除连续的重复行,并且不会改变原文件。
重定向
>可以将命令的输出结果重定向到文件中。>会覆盖文件的内容。
[root@centos-7 Desktop]# ls / > test.txt
>>也可以将命令的输出结果重定向到文件中,但>>会在文件的末尾追加。
管道
管道可以将一个命令的输出作为另一个命令的输入。
[root@centos-7 Desktop]# ls | sort
Parallels Shared Folders
repeat.txt
test1
test_sorted.txt
test.txt
上面的命令将ls的输出,作为sort的输入。
进程
ps 和 top
ps 和 top 会列出运行的进程。
区别是ps列出的进程不会随时间更新,是静态的。ps -ef会列出所有进程。
top命令列出的进程是动态变化的。
kill命令用于结束一个进程。
[root@centos-7 Desktop]# kill 671
其中 671 是进程号。
halt用于关机,reboot用于重启。
&
&可以将进程切换到后台运行,只需在命令最后面加上&。
[parallels@centos-7 Desktop]$ ls &
[1] 4175
nohup
[root@centos-7 Desktop]# nohup ls
nohup: 忽略输入并把输出追加到"nohup.out"
Ctrl + z将进程转为后台暂停。bg命令将使其在后台重新运行。fg命令将后台进程转为前台运行。
压缩
先讲解打包和压缩的概念。
打包是将多个文件归档为一个文件,压缩是将一个大的文件压缩成一个小的文件。
Linux 中,首先用tar将多个文件打包成一个文件,然后用gzip或bzip2将打包后的文件压缩。
tar -cvf打包:
[root@centos-7 Desktop]# tar -cvf archive.tar test_copy.txt test.txt
test_copy.txt
test.txt
也可以将一个目录打包:
[root@centos-7 Desktop]# tar -cvf test_archive.tar test1
test1/
test1/test2/
test1/test2/test3/
test1/test.txt
解开归档:
[root@centos-7 Desktop]# tar -xvf archive.tar
test_copy.txt
test.txt
gzip压缩:
[root@centos-7 Desktop]# gzip archive.tar
gunzip解压缩:
[root@centos-7 Desktop]# gunzip archive.tar.gz
(未完待续。。。)