Linux基础回顾

本节主要讲解的是Linux系统的基础。

1. Linux的文件系统结构

1.1 Linux文件系统,从/开始

Linux的文件系统和MS-Windows的文件系统有很大的不同。
Linux只有一个文件树,整个文件系统是以一个树根“/”为起点的,所有的文件和外部设备都以文件的形式挂接在这个文件树上,包括硬盘、软盘、光驱等。
经常,我们能够接触到的Linux发行版本的根目录大都是以下结构:
/bin /etc /lost+found /sbin /var /boot /root
/home /mnt /tmp /dev /lib /proc /usr

/bin和/sbin
使用和维护Linux系统的大部分基本程序都包含在/bin和/sbin里。

/bin
目录通常用来存放所有用户最常用的基本程序,如:login、shells、文件操作实用程序、 系统实用程序、 压缩工具。

/sbin
目录通常存放的是管理员会用到的命令:fdisk、shutdown等等。
两个目录的主要区别是:/sbin中的程序只能由root(管理员)来执行.
ps:查看某个目录下的所有文件 ,可以用ls /bin

/etc
这个目录一般用来存放系统级别的配置文件,其中的一些重要文件如: passwd、shadow、fstab、hosts、profile、shells、services等等。

/lost+found
这个目录专门是用来放那些在系统非正常关机后重新启动系统时,不知道该放哪里恢复使用的“流浪”文件的。

/boot
这个目录下面存放着和系统启动有关的各种文件,包括系统的引导程序和系统核心部分。

/root
这是系统管理员(root)的主目录。

/home
系统中所有用户的主目录都存放在/home中。

/mnt
按照约定,像CD-ROM、软盘、U盘,或者磁带这样的可以移动的介质都应该安装在/mnt目录下。/mnt目录通常包含一些子目录,每个子目录是某种特定设备类型的一个安装点。例如:/cdrom 、/floppy…如果我们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂载过来。

/tmp和/var
这两个目录用来存放临时文件和经常变动的文件。其中/var经常作为www主目录存放网站代码。

/usr
按照约定,这个目录用来存放与用户相关的程序或文件,这里面也有一个bin和一个sbin子目录。

1.1.1 /bin、/sbin和/usr/bin、/usr/sbin的区别

如果是用户和管理员必备的二进制文件,就会放在/bin;
如果是系统管理员必备,但是一般用户根本不会用到的二进制文件,就会放在 /sbin。
如果不是用户必备的二进制文件,多半会放在/usr/bin;
如果不是系统管理员必备的工具,如网络管理命令,多半会放在/usr/sbin。

2. Linux的常用命令

有些人仍然会有这种的想法,他们认为使用Linux就必须使用Linux shell命令。但事实不是这样的!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面发行版。

Linux的系统管理员与桌面用户不一样,他们不像桌面用户一样使用Cinnamon, GNOME, Unity, 或者 KDE,他们所有的时间都是用Linux命令。

对于桌面用户来讲,若是了解一部分Linux命令,你可以更好的使用Linux,体验它的魅力,下面列举出了一些

2.1 Shell命令

你可以通过打开Linux的terminal(终端)来执行Shell命令。Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell。在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash).

想看看你的Shell是哪一种,执行下面的命令
echo $SHELL

在Linux中,$ 符号代表一个shell 变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动的时候就有了默认值。例如,$ SHELL;$ LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。

echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。

Shell命令基本语法:
command -option file
如 ls -la
l代表 long,a代表all

还有命令管道pipe,也可以帮我们把多个命令串联起来,它的符号是 |
ls -la | more

还可以在命令中使用通配符(代表任何未知的字符),如*就代表任意字符串,? 代表单个字符
ls -l a *
ls a?cd

man
如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令
man ls

2.2 常用Shell命令——切换用户

su:切换用户的命令。如su root或者su david,若su后面为空则代表切换到root账号。
注意:su 还可以有带-的用法,和不带-的区别:
1 su root(或su 其他账号):表示不切换环境变量到当前用户,仍然使用之前用户的环境变量。
2 su - root(或su - 其他账号):表示切换当前的环境变量到新用户环境变量。

通俗理解,su - 账号切换的更彻底。
比如在执行root才能运行的命令时,例如useradd、userdel、shutdown、halt,必须要切换到root

sudo
表示临时获取root权限,如此时想添加一个户,必须要以root身份才可以。用sudo useradd abc可以添加一个abc账号。(该过程不要求输入root密码,这是和su命令不同的地方)

在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。

grep
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep foo /etc/passwd
返回在password文件中所有的含有foo的行

grep -i “foo” /etc/passwd
-i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到

grep -r “foo” /etc/passwd
这条命令将会搜索/etc/passwd目录及其子目录下所有的包含“foo”的行

ls -la | grep foo*
列出当前目录下任何以foo开头的文件或目录。例如如下文件将被匹配:foo,foobar,foolish.txt等

ps
报告进程的状态。此命令将显示哪些程序正在运行。
ps -ef | grep firefox
查找firefox进程

找到进程id后,可以通过kill id杀掉某个进程
kill 1234

clear
清屏
uname: uname -a命令用一行简短的给你总结的电脑的基本信息。这通常包括你的电脑名称,Linux内核版本,你的发行版名称等。
cat /proc/version:展示你的当前运行的Linux发行版的详细信息。
hostname
显示主机名

2.3 常用Shell命令——vi

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。

vi的基本概念 :基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
1) 命令行模式(command mode)
  控制屏幕光标的移动,字符、字或行的删除,按i进入到插入模式。
2) 插入模式(Insert mode)
  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 按:回到底行模式
3) 底行模式(last line mode)
  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

对于第一次用vi,有几点注意要提醒一下

1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。

3、保存并退出文件:在命令模式下输入:wq即可(别忘了wq前面的冒号) :q! 为强制不保存退出

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首。

命令行模式下:
移至上下左右 kjhi
移至行首和行尾 ^和$
移至段落开头和结尾 { }
向前和向后翻屏 Ctrl+f 和 Ctrl+b
在光标前或者后插入字符 i或a
插入新的一行 o
删除光标后的字符 x (如果是删除光标后的3个字符,则是3x) 大写的X是删除光标前的字符
删除整行 dd
删除从光标开始的3行 3dd
复制整行 yy
复制从光标所在的3行 3yy
粘贴 p
取消操作 u

底行模式:
w filename 保存当前编辑到filename文件名
wq filename 保存到指定文件并退出
wq 保存并退出
q! 放弃所有修改,直接退出vi

2.4 常用Shell命令——文件操作

cp
文件复制。
cp fred.txt ethel.txt
把fred.txt中的内容复制到当前文件夹中名为ethel.txt中
cp fred.txt /home/sjvn/docs/fred.txt
把fred.txt复制到指定文件中。
cp * .txt /home/sjvn/docs/
复制当前目录下所有以.txt结尾的文件到指定的目录下。
cp -r /home/sjvn/docs/* /home/sjvn/backup。

mv
文件移动或重命名move。
mv fred.txt ethel.txt
也可以实现文件或目录重命名的功能.

rm
删除文件,也可以删除非空目录。
rm -i abc.txt 带上-i参数有确认功能
rm -r /abc 递归删除
rm -rf /abc 递归强制删除(慎重使用)

cd
切换到其他目录。
cd ~ 切换到自己的家目录

mkdir
创建目录。
rmdir
只能删除非空目录。-p可以级联删除

more和less
这是两个显示一般文本文件的指令。
如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。More指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显示。而less除了有more的功能以外,还可以用方向键往上或往下的滚动文件,所以你随意浏览,阅读文章时,less是个非常好的选择。

cat
显示或连结一般的文本文件。
cat text显示text这个文件
cat file1 file2 依顺序显示file1,file2的内容
cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。

ln
建立连接,它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:
ln –s 源文件 目标文件
如:ln -s /home/david/abc link

logout
注销当前用户

2.5 常用Shell命令——chmod chown文件权限的命令

ls -al:显示所有文件的所有信息。
d-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz
横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是个文件。如果第一个字符是横线,表示是个非目录的文件。如果是d,表示是个目录。

-rw-r–r--拆分如下:

rw- r-- r–
普通文件 文件主 组用户 其他用户

chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或他们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即和文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。他是系统默认值。
操作符号能是:
\+ 添加某个权限\- 取消某个权限\ = 赋予给定权限并取消其他所有权限mode所表示的权限可用下述字母的任意组合:
r 可读\w 可写\x 可执行
例如 : chmod a+r /home/david/abc

修改权限除了用刚才的文字设定法,还可以使用数字设定法:
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3 个从0到7的八进制数,其顺序是(u)(g)(o)

chmod 440 /home/david/abc
chmod 777 /home/david/abc 任何人对abc目录都有写权限

chown
将指定文件的拥有者改为指定的用户或组。
系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

格式:chown [选项] [所有者][:[组]] 文件
如 chown mail:mail log2012.log 修改该文件的拥有者为mail群组的mail用户

如 chown -R -v root:mail test6
-R是递归处理该目录及其子目录下的所有文件
-v是显示处理的详细信息

2.6 常用Shell命令——系统维护相关的命令

whoami:显示用户名。类似的还有logname命令!
who:单独执行who指令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。
w:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。
login和logout:登入和登出系统。
last:列出目前与过去登入系统的用户相关信息
date:显示当前日期
id:显示用户的ID,以及所属群组的ID
shutdown:shutdown now立即关机或shutdown -r重启
halt:只关系统不关电源。 halt -p关闭电源
reboot:重启
free:显示内存状况。

2.7 常用Shell命令——跟用户和组相关的命令

useradd
新建用户。
useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
useradd -g ftp -d /home/ftp -s /sbin/nologin ftpuser

userdel
删除用户。
若不加参数,则仅删除用户帐号,而不删除相关文件。
参数: -r  删除用户home目录。

usermod
修改用户。
常用参数
-d 指定用户主目录
-g 指定用户所属主群组
-G 指定用户的附属群组,多个逗号隔开
-L 锁定用户密码
-U 解锁用户
-s 修改用户指定的shell
-u 修改用户的uid

groupadd
创建群组。
groupadd -g gid groupname

groupdel
删除群组。
groupdel groupname
倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组

2.7 常用Shell命令——打包、解压缩相关的命令

在压缩文件之前,一般都要先打个包。
打包文件:
tar -cvf 打包文件名.tar *.txt
-c是create的意思打包模式,-f 是file指明打包文件名
tar:打包
解包文件:
tar -xvf 打包文件名.tar
-x是解包的意思 extract

打包之后,便可以压缩文件,gzip是Linux下常用的压缩程序。
压缩文件:
gzip file.tar(原来的文件会消失)
解压文件:
gzip -d file.tar.gz(原来的文件会消失)

刚才的操作是先打包再压缩,通常情况下,可以一条命令更方便。
一步压缩文件:
tar zcvf * (多个文件以空格隔开或者采用通配符 )
一步解压文件:
tar zxvf file.tar.gz

也支持普通的zip\unzip。
zip压缩文件:
zip -r 压缩文件.zip 要压缩的文件或者目录
unzip解压文件:
unzip 压缩文件.zip -d 解压缩的目录位置

2.8 安装软件的几种方式

常见的几种方式:

  1. rpm:RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。
  2. yum安装(Ubuntu下是apt-get)
  3. 源码编译安装

将安装文件拷贝至你的目录中/usr/src。然后使用rpm来安装该文件。命令如下:
   #rpm -ivh filename.i386.rpm
   rpm将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。
1.安装软件:执行rpm -ivh rpm包名,如:
#rpm -ivh apache-1.3.6.i386.rpm
2.升级软件:执行rpm -Uvh rpm包名。
3.反安装:执行rpm -e rpm包名。
4.查询软件包的详细信息:执行rpm -qpi rpm包名
5.查询所有安装的rpm包:执行rpm -qa

Yum(全称为 Yellow dog Updater)是一个在Fedora和RedHat以及CentOS中的软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包.
1.安装软件:yum install 包名
2.更新和升级软件:yum update 包名、yum upgrade 包名
3.删除程序:yum remove 包名
4.查询软件包的详细信息:yum info 包名
5.显示软件包依赖:yum deplist 包名
5.清理缓存:yum clean, yum clean all

常见的源码编译,一般也就是如下几步:

tar -xvf xxxx.tgz
./configure --prefix=/opt/xxxx
make
make install

一般来说,这类软件的默认安装目录都是/usr/local,最终文件会被分别放在/usr/local的bin、lib、share、man目录下。

猜你喜欢

转载自blog.csdn.net/weixin_45753227/article/details/114308061
今日推荐