不会事无巨细。html
学习 Linux ,首先要有一个 Linux 环境。这里咱们使用虚拟机(推荐VirtualBox,它是免费的)运行 CentOS 。linux
具体安装步骤参考:使用VirtualBox安装CentOS7。正则表达式
安装完成后,以下图:shell
我这里使用的不是 VirtualBox,而是 Paralles。它跟 VirtualBox 同样,也是一款优秀的虚拟机。不一样的是,Paralles 只能运行在 MacOS 上,并且不是免费的。数据库
这是一个图形界面,可经过快捷键Ctrl + Alt + F2
切换到全命令行界面:vim
事实上
F2-F6
均可以切换。centos
输入用户名,回车,输入密码就登入系统了。安全
切换回图形界面使用Ctrl + Alt + F1
。bash
有的系统可能须要同时按下
fn
才能触发F1
、F2
的功能键。less
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
复制代码
(未完待续。。。)