一、Linux
- Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统内核。
与其说Unix是个操作系统,不如说是一部口述历史. 一种文化,一种哲学. 所有哲学浓缩为一条铁律,
那就是各地编程大师奉为圭臬(guī niè)的"K.I.S.S"原则: Keep It Simple,Stupid!
保持简单,并且一目了然!
特点
开放性:特别是遵循开放系统互连(OSI)国际标准。
多用户:操作系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。
多任务:计算机同时执行多个程序,而同时各个程序的运行互相独立。
二、(根目录)下的目录介绍
bin 部分系统可执行文件目录
dev 设备文件
该目录存放的是linux的外部设备,如硬盘,分区,键盘,鼠标,usb等。
usr unix system resources 操作系统的文件
/usr/local 相当于c:/program files,一般存放系统自带的,但是供所有用户使用的。最庞大的目录,要用 到的应用程序和文件几乎都在这个目录
/usr/local: 本地增加的命令和库。
/usr/src:源代码
/usr/bin: 众多的而应用程序,二进制可执行程序
/usr/lib:常用的动态链接库和软件包的配置文件。
var
可变文件目录
用户信息
apache的www目录
etc 配置文件目录
查看文件内容使用:cat 文件路径
查看文件内容使用:more 文件路径
三、Linux命令
3.1.命令行语法
Command [options] [arguments]
注意:
1.命令一定使用空格进行分割
2.命令一定严格区分大小写。
3.单行命令一般不超过256个字符
3.2.用户相关命令
查看当前用户
who am i
添加用户:
$ adduser 用户名
$ adduser user1
#查看用户信息
$ cat /etc/passwd
#查看组信息
$ cat /etc/group
添加组
$ addgroup 组名
$ addgroup group1
#查看组信息
$ cat /etc/group
新建用户指定组
$ adduser --gid 1001 user2
#查看用户信息
$ cat /etc/passwd
#查看组信息
$ cat /etc/group
更改用户到某个组
#usermod 修改用户信息
$ usermod -g 1002 user1
$ usermod --gid 1002 user1
#创建了user3用户,属于user3组。
$ adduser user3
#修改user3用户属于user1组(1000)
$ usermod --gid 1000 user3
删除空余的组
$ groupdel user1
$ groupdel user2
#在/etc/group查看
$ cat /etc/group
#删除组,如果某个账号使用该群组,则不能删除。
更改密码
#root用户更改其他用户的密码
$ passwd user1
#更改自己的密码
$ passwd
#root更改密码没有规则限制,并且不用输入旧密码。
#普通用户修改自己的密码,先输入旧密码,再输入新密码,在确认密码,新密码有规则限制。
切换用户
Linux su(英文全拼:switch user)命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
- 切换到超级管理员身份
$ su
- 切换到用户
$ su 用户名
从root切换到其他用户不用输入密码,从其他用户切换到root用户或其他用户需要输入密码;只切换用户,不切换shell环境。读取的变量配置方式为 non-login shell 的方式,这种方式很多原本的变量不会被改变, 尤其PATH 这个变量。
login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,我们登陆 tty1 ~ tty6 时,需要输入用户的账号与密码,此时取得的 bash 就称为“ login shell ”;
non-login shell:取得 bash 接口的方法不需要重复登陆的举动,比如我们登陆 Linux 后, 启动终端Terminal,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。又或者你在原本的 bash 环境下再次使用 bash 这个命令,建立了一个bash子进程,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 non-login shell 。
$ su - 用户名
切换用户,切换shell环境。完整的切换到新使用者的环境,连同 PATH/USER/MAIL 等变量都转成新用户的环境,彻底切换,切换家目录,切换环境变量,直接切换到用户的家目录,每个用户都有一个家目录,有用户变量可以通过
$ echo $PATH
显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。执行程序时,shell自动跟据PATH变量的值去搜索该程序。
- 身份切换,执行命令时临时提升权限
$ sudo 其他命令
$ sudo chmod 777 hello.html
使用 root 的身份来运行命令
并非所有人都能够运行 sudo , 而是仅有规范到 /etc/sudoers 内的用户才能够运行 sudo 这个命令。
/etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是:
即执行操作:chmod u+w /etc/sudoers
其配置文件位于/etc/sudoers中。在/etc/sudoers文件中,添加
用户名 ALL=(ALL)ALL
注意:
如果出现sudo: unable to resolve host iZuf69b3ukcunchz57pmf8Z错误,需要修改host配置
使用管理员身份编辑
$ vi /etc/host
将对应用户的host那么添加到localhost后即可
127.0.0.1 localhost iZuf69b3ukcunchz57pmf8Z
删除用户
$ userdel -r 用户名
-r删除所有的信息,删除用户的相关数据,而用户的数据有:
用户账号/口令相关参数:/etc/passwd, /etc/shadow
使用者群组相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username.
用户相关信息
$ id
id 这个命令则可以查询某人或自己的相关 UID/GID 等等的信息
2.3.基础命令
pwd
查看当前所在路径
$ pwd
cd
切换到指定目录中
$ cd
$ cd ~
$ cd /
$ cd ../
$ cd dir1
$ cd .. 返回上一级目录
如果没有写目录路径则进入到家目录,路径可以是以/开头的绝对路径,也可以是不以/开头的相对路径。
以/作为根目录
以~
cd ~ 相当于 cd /root
如果是普通用户,cd ~ 相当于cd /home/当前用户名
以.作为当前目录
以…作为上一级目录
cat
预览文件内容,一次性展示整个文件的内容
$ cat /etc/passwd
more
预览文件内容,会以一页一页的显示,逐页阅读
空格翻页,回车换行,q退出
$ more /etc/passwd
touch
可以创建文件或者更改最近访问时间
如果文件不存在,创建文件,如果文件存在,修改最最后一次访问的时间
$ touch 文件名
$ touch test1
#查看文件修改时间
$ stat test1
man
查看指定命令手册
$ man ls
输入回车向下翻一行
输入空格向下翻一页
输入q退出手册
sudo
临时提升权限
如果没有使用sudo的权限,需要root用户操作/etc/sudoers文件,添加用户
/etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是:
即执行操作:chmod u+w /etc/sudoers
$ vi /etc/sudoers
其配置文件位于/etc/sudoers中。在/etc/sudoers文件中,添加
用户名 ALL=(ALL)ALL
注意:
如果出现sudo: unable to resolve host iZuf69b3ukcunchz57pmf8Z错误,需要修改host配置(iZuf69b3ukcunchz57pmf8Z为用户名称)
使用管理员身份编辑
$ vi /etc/hosts
将对应用户的host那么添加到localhost后即可
127.0.0.1 localhost iZuf69b3ukcunchz57pmf8Z
sudo !! 执行上次命令
clear
清除屏幕内容
$ clear
history
列出历史命令
$ history
2.4.文件操作
创建目录/文件夹
- 在当前目录创建一个目录 - mkdir 目录名
# 在当前目录创建一个目录
$ mkdir web2000-test
- 在当前目录创建多个目录 - mkdir 目录名 目录名
# 在当前目录创建多个目录
$ mkdir a b
$ mkdir ~/a ~/b
- 在指定目录创建一个目录 - mkdir /目录名1/目录名2
$ mkdir /home/c
- 级联创建层次目录 - mkdir -p 目录1/目录2
$ mkdir -p e/f
$ mkdir -p ~/b/c
递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
移动
- mv 要移动的目录或文件,移动到的路径,将一个目录或文件移动到另一个地方
# 将a目录移动到b目录里
$ mv /a /b
- 如果是移动文件,并且还是将文件到同一个目录,相当于给重命名
$ mv test1 test2
- 常用的
# 将html文件转移到apache服务器
$ mv ~/test/index.html /var/www/html/test/
复制/拷贝
cp 命令既可以复制文件,也可以复制目录。
- 复制文件
# 创建文件
$ touch copy.txt
# 把源文件不改名复制到 b 目录下
$ cp copy.txt b
- 如果需要改名复制,命令如下:
#改名复制
$ cp copy.txt b/copy123.txt
- 如果复制的目标位置已经存在同名的文件,则会提示是否覆盖,例如:
$ cp -i copy.txt b
# 目标位置有同名文件,所以会提示是否覆盖
cp: overwrite 'b/copy.txt'? y
- 接下来我们看看如何复制目录,其实复制目录只需使用“-r”选项即可,例如:
#建立测试目录
$ mkdir movie
#目录原名复制
$ cp -r /home/movie b
$ cp -r ./movie b
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。 相当于 -d、-p、-r 选项的集合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
删除
- rmdir 目录
# 创建一个目录
$ mkdir test
# 删除一个空目录
$ rmdir test
# 强制删除级联目录
$ rm -rf test
- rm 文件
# 删除文件
$ rm test2
- rm -R 目录
# 创建级联目录
$ mkdir -p test1/test2
# 递归删除非空目录中的内容
$ rm -R test1
查找
# 在根目录下查找.txt文件
$ find / -name '*.txt'
# 在根目录中搜索文件test, 并显示此文件所在目录的路径名
$ find / -name test
# 在home目录下查找.txt文件
$ find /home -name '*.txt'
归档
# 将day02文件夹压缩到当前目录下,压缩包名称为xxx.tar.gz
$ tar –zcvf xxx.tar.gz ./c
# tar: Removing leading `/' from member names 使用绝对路径报错
$ tar -zcvPf b.tar.gz /home/c
解档
$ tar -zxvPf xxx.tar.gz
2.5.文件权限
在 Linux 命令中,chmod
用于修改文件或者目录的权限。对于文件或者目录的普通权限,共有 3 种,分别为:
r
:读取;w
:写入;x
:执行。
权限范围及代号
文件及目录的权限范围,包括:
u:User,即文件或目录的拥有者;
g:Group,即文件或目录的所属群组;
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a:All,即全部的用户,包含拥有者、所属群组以及其他用户。
权限的代号包括:
r:读取权限,数字代号为4;
w:写入权限,数字代号为2;
x:执行或切换权限,数字代号为1;
-:不具任何权限,数字代号为0;
[ ±= ] 含义
+: 增加权限
-: 撤销权限
=: 设定权限
使用chmod修改用户权限
chmod u/g/o/a +/-/= rwx 文件
chmod mode filename :权限模式:
$ chmod g-r file1 //file1文件组员没有读权限
$ chmod u+x,go+r file1 //file1文件用户添加执行权限,组员和其他人有读的权限
$ chmod a=rw file1 //chmod ugo=rw file1 全部用户都有读写权限
$ chmod g+w index.html //为index.html添加同组人权限
$ chmod -R o=rwx dir //级联生效-R