Linux 从懵懂到玩得很溜

不会事无巨细。html

学习 Linux ,首先要有一个 Linux 环境。这里咱们使用虚拟机(推荐VirtualBox,它是免费的)运行 CentOS 。linux

具体安装步骤参考:使用VirtualBox安装CentOS7正则表达式

安装完成后,以下图:shell

CentOS 7

我这里使用的不是 VirtualBox,而是 Paralles。它跟 VirtualBox 同样,也是一款优秀的虚拟机。不一样的是,Paralles 只能运行在 MacOS 上,并且不是免费的。数据库

这是一个图形界面,可经过快捷键Ctrl + Alt + F2切换到全命令行界面:vim

事实上F2-F6均可以切换。centos

命令行界面

输入用户名,回车,输入密码就登入系统了。安全

切换回图形界面使用Ctrl + Alt + F1bash

有的系统可能须要同时按下fn才能触发F1F2的功能键。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 -la

--表示长参数。好比ls --all,同ls -a效果同样。

实用技巧

1。 在命令行中,使用键能够切换前、后一条命令,使用两次Tab键能够补全命令。

2。 使用history命令能够查看全部执行过的命令。

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 -l

上图中,文件大小的单位是字节,可使用ls -lh,以KBMBGB为单位显示。

ls -lt是以最近修改时间排序。

cd

cd是 change directory 的缩写,用于切换目录。

[parallels@centos-7 ~]$ cd /
复制代码

..表明上一级目录,.表明当前目录,~表明当前用户家目录。

[parallels@centos-7 ~]$ cd ..
复制代码

du

du是 disk usage 的缩写,显示目录包含的文件大小,默认单位是字节。使用du -h能够KBMBGB为单位显示。

du默认只显示目录的大小,使用du -a能够显示目录和文件的大小。du -s只显示总计大小。

操做文件

文件操做主要有浏览文件,建立文件。

catless

catless用于显示文件内容。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 键退出。

headtail

headtail用于显示文件的开头和结尾。默认显示 10 行。可使用tail -n指定显示的行数。

[parallels@centos-7 log]$ head Xorg.0.log
......
[parallels@centos-7 log]$ tail -n 5 Xorg.0.log
......
复制代码

touchmkdir

touchmkdir用于建立文件和目录。

[parallels@centos-7 Desktop]$ touch test.txt
[parallels@centos-7 Desktop]$ mkdir test
复制代码

mkdir -p能够递归建立目录。

[parallels@centos-7 Desktop]$ mkdir -p test1/test2/test3
复制代码

cpmv

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命令也可用于查找,并且功能更强大。

格式:

find

其中,第二个参数 “查找的目标” 是必须的参数。

如:

[root@centos-7 Desktop]# find /home -name test.txt
/home/parallels/Desktop/test1/test.txt
/home/parallels/Desktop/test.txt
复制代码

关于 find 的更多用法,参考:

Linux find 命令详解

Linux find命令:在目录中查找文件(超详解)

grep

grep是 Globally search a Regular Expression and Print 的缩写。

grep的基本用法是:

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
复制代码

wc

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的输入。

进程

pstop

pstop 会列出运行的进程。

区别是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将多个文件打包成一个文件,而后用gzipbzip2将打包后的文件压缩。

打包压缩

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
复制代码

(未完待续。。。)

相关文章
相关标签/搜索