Linux是多用户操作系统 

Ubantu学习参考网址:https://www.cnblogs.com/resn/p/5800922.html

1.虚拟机网络类型的理解

bridged(桥接模式) :  我们的电脑在上网的时候都需要有一个网络地址(IP地址),通过这个地址可以确定我们的电脑在网络上的位置,桥接模式就是将我们虚拟机中的网卡的网络地址 放在我们真实的物理机的网卡上。 这样的话,我们的虚拟机就好像跟我们的宿主机所在的局域网中的一台机器一样。 桥接模式适合有路由器的情况,和真实的物理环境一样。 (必须联网才能使用,如果没有网,可以用网线一根网线造成假象联网)

  NAT(网络地址转换模式) : 在宿主机上制作一个虚拟网卡,通过这个网卡,给虚拟机分配IP。宿主机在这里的角色相当于局域网中的路由器。NAT模式适合于没有路由器的情况,虚拟机通过宿主机去上网。  

  Host-Only(模式): 和NAT模式很像,唯一的区别是,没有地址转换服务,所以该模式下虚拟机只能访问到主机。无法访问外网。

  

2.分区:

文件系统:定义数据在磁盘中的存储格式,比如说windows的磁盘默认存储格式是NTFS

3.Linux目录结构:

Linux中一切皆目录,目录可以理解为文件夹,可以在目录中创建新的目录或文件

/:根,包含所有的目录

/boot:引导系统启动的,包含操作系统的核,配置文件和其它启动时所需要的文件

/etc:存放系统配置有关的文件

/home:存放普通用户目录,每新建一个用户,会生成一个文件夹(目录)

/root : 系统管理员的目录,对于系统来说,系统管理员好比上帝,他可以对系统做任何操作,比如删除你的文件,一般情况下不要使用root用户。

/dev : 存放设备文件(把设备看做是一个文件)

/bin : 存放常用的程序文件(命令文件)。
/sbin : 系统管理命令,这里存放的是系统管理员使用的管理程序 
/usr : 在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如游戏、打印工具等。

/usr目录包含了许多子目录:

/usr/bin目录用于存放程序;

/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;

/usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件。

/usr/X11R6/ X Window系统 版本 11, Release 6.

/usr/local : 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。

  /var : 该目录存放那些经常被修改的文件,包括各种日志、数据文件;

  /lib : 目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,

    以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。

/lib32 : 同上
/lib64 : 同上

/proc : 虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;

/mnt:硬盘上手动挂载的文件系统

/media : 自动挂载(加载)的硬盘分区以及类似CD、数码相机等可移动介质。

/tmp : 临时目录,存放临时文件,系统会定期清理该目录下的文件。
/lost+found : 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在

4.SWAP分区的作用

swap分区是装操作系统的时候生成的,一般情况下是隐藏的我们看不到

当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。

那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,

等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

当你的内存足够大时(超过16G),可以不需要SWAP分区

sudo cat /proc/sys/vm/swappiness

该值默认值是60.

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

5.语言环境

ubantu的teminal终端:

查看所支持的语言:locale -a

6.安装软件

6.1 软件管理 apt ( Advanced Packaging Tool ) , 他可以自动下载、配置、安装软件包;简化了Linux系统上的。

Debian及衍生版中都包含了apt

RedHat系列的linux的则使用yum来进行管理,其中Fedora22中Centos7中开始使用dnf 来替代yum。

apt-get -h:查看apt的帮助信息,即apt的使用说明

apt-get install 包:安装软件

apt-get update:更新源

apt-get upgrade:更新已安装的包

apt-get remove package:删除安装包

apt-cache search 包:模糊搜索

  /etc/apt/sources.list 设置软件包的获取来源

6.2 dpkg(不常用)是Debian软件包管理器的基础,被用于安装、卸载和供给和.deb软件包相关的信息。

  dpkg本身是一个底层的工具,本身并不能从远程包仓库下载包以及处理包的依赖的关系,需要将包从远程下载后再安装。DPKG常用命令:

  dpkg --help:获取帮助的命令(或者:dpkg -h)

  --长参数

  -短参数

7.获取帮助的命令

date -h

date --help

info date..(用的较少)

按Q退出

man date

man -k 模糊查找

man -f 精确查找

h:帮助

q:退出

8.常用命令

参见:https://www.cnblogs.com/resn/p/5800922.html

sudo:提供管理员权限

快捷键:

ctrl+c 终止任务

ctrl+D 结束输入

ctrl+L清屏

ctrl+K删除当前位置到行尾

ctrl+U删除当前位置到行首

ctrl+W删除到第一个空格

ctrl+Y返回上一次操作

ctrl+a/e移动光标到行首或行尾

shift+printscreen:区域截图

tab 命令行自动补全

m tab+tab(连续按两次):如果当前目录有不止一个文件名首字母是m,那么请按2次<tab>键,系统会列出所有m打头的文件,

             然后请根据情况多写几个字母,再按<tab>键补上其余字母。

alt+.或者是ESC+.来补全前几次操作的最后一个字符串

ctrl+G 将光标从计算机转到虚拟机

ctrl+alt 将光标从虚拟机转换到计算机

ctrl - 缩小字体

ctrl+shift + 放大字体

./file 执行文件

date : 用来显示或设定系统的日期和与时间

date //显示当前日期
# 日期格式化
# %Y year
# %m month (01..12)
# %d day of month (e.g., 01)
# %H hour (00..23)
# %I hour (01..12)
# %M minute (00..59)
# %S second (00..60)
date +"%Y%m%d %H%M%S"
20160824 223856
date +"%Y-%m-%d %H:%M:%S"
2016-08-24 22:39:07 date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20061010 //设置成20061010,这样会把具体时间设置成空00:00:00
date -s 12:23:23 //设置具体时间,不会对日期做更改
date -s “12:12:23 2006-10-10″ //这样可以设置全部时间 # 注意: 重新设置时间后需要将时间捅不到硬件时钟。方式如下:
hwclock -w

cal : 显示一个日历

tzselect设置时区

logout  # 注销

reboot  # 重启系统: 需要管理员全新啊

shutdown # 关机: 需要管理员权限

passwd:修改当前用户的密码

cd  : 切换目录

cd  # 回到当前用户的家目录 # ~  可用于表示用户家目录
cd /etc # 切换到/etc目录
cd - # 切换到上一次操作的目录
cd .. #返回上一级目录
cd../.. #返回上两级目录

pwd:查看当前工作路径

ls:列出目标目录的子目录和文件

格式:ls [选项] [目录名] 

-a 用于显示所有文件和子目录(保罗点文件)。

-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-lh:同-l,只是文件大小用Kbit为单位 -r 将目录的内容清单以英文字母顺序的逆序显示。 -t 按文件修改时间进行排序,而不是按文件名进行排序。 -A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。 -F 在列出的文件名和目录名后添加标志。例如,在可执行文件后添加“*”,在目录名后添加“/”以区分不同的类型。 -R 如果目标目录及其子目录中有文件,就列出所有的文件。 . 和.. . 表示当前目录 .. 表示父目录
文件类型

-  普通文件

d  目录文件

b 块设备文件

c  字符设备文件

l  链接文件

p 管道文件

s  socket文件

文件类型

注意: 如果文件以 ”.“ 开头,则表示文件是隐藏文件。

文件权限  rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人 的权限。(ls -l file,可以查看文件的属性)

r : 表示可读, 可以用数字 4 来表示
w : 标识可写 ,可以用数字 2 来表示
x : 表示可执行 , 可以用数字 1 来表示
- :表示没有相应权限 可以用数字 0 来表示

修改权限的方法: chmod

chmod o+w  file1  #给其它用户添加写的权限
chmod g-w file1  #给组用户删除写的权限
chmod u=rwx file1 
chmod 755 file1 # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
chmod 644 # -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
# 其中: # u 代表所有者(user) # g 代表所有者所在的组群(group) # o 代表其他人,但不是u和g (other) # a 代表全部的人,也就是包括u,g和o

目录上的权限:

r :  表示是否可以读取目录下的文件名(即可以查看该目录下的文件)

w :  表示是否可以在目录下创建修改文件(即可以修改目录下的文件,不是修改目录下的而文件内容)

x  : 表示目录是否可以被搜索

chown : 更改文件的所有者和所有组

chown root:root  file
chown root file
chown :root file

创建目录:mkdir

# mkdir 目录名
mkdir my_dir # - p 参数 : 递归创建目录,用于同时创建多级目录
mkdir a/b/c/d

创建文件:touch 改变文件或目录的时间,文件不存在时会创建一个空文件(国际项目,不同时区的代码编译,可以用这种方式,更改时间戳)

rm   : 删除命令 (# rm 命令太危险,不建议使用)

mv  : 移动或重命令文件或目录

mv SOURCE DEST  # 

mv test.log test.txt  # 文件改名
mv test1.txt dir1/ #移动文件
mv test1.txt test2.tx test3.tx dir1/ #移动多个文件

cp : 复制

cp SOURCE DEST # 复制文件

cp -i  SOURCE DEST  #   如果遇到需要覆盖的情况,则提示
cp -r dir1 dir2 # 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
cp -p file1 file2 # 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
cp -rp dir1  dir2

stat : 查看文件相信信息

cat : 链接文件后输出文件内容到屏幕上,其实就是查看文件内容

tac : 反转行的输出

wc   :统计指定文件中的字节数、字数、行数,并将统计结果显示输出

-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。(一个换行符表示两个字符)
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串

sort : 排序

sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思

history : 查看执行过的命令。

history  # 显示最近1000条历史命令
history 5 # 显示最后5条命令
!number# number为history之后命令前的序号:执行该条命令
!cat # 执行最后一条以cat开头的命令

which # 查找其他命令的位置

 which ls

more :   查看文件内容,显示不全的时候,用回车一行一行显示,空格是一页一页显示,b是返回上一行或上一页

less  : 查看文件内容

head : 输出文件的开始的部分, 可以指定行数 , 默认显示10行

head -n 5 file 

tail  :   查看文件尾部的内容。默认显示最后10行

tail file1
tail -n 5 file1
tail -f file1 # 动态监控文件

用户和用户组

linux使用文件保存用户信息 :

文件
#      /etc/passwd 用户账户信息。
#       /etc/shadow 安全用户账户信息。
#       /etc/group 组账户信息。
#       /etc/gshadow 安全组账户信息。
#       /etc/default/useradd 账户创建的默认值。
#       /etc/skel/ 包含默认文件的目录。
#       /etc/login.defs Shadow 密码套件配置。

useradd:  添加用户

# -c 备注 加上备注。并会将此备注文字加在/etc/passwd中的第5项字段中
# -d 用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权
# -e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow
# -f 缓冲天数。限定密码过期后多少天,将该用户帐号停用
# -g 主要组。设置用户所属的主要组 www.cit.cn
# -G 次要组。设置用户所属的次要组,可设置多组
# -M 强制不创建用户主文件夹
# -m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下
# -p 密码。输入该帐号的密码
# -s shell。用户登录所使用的shell
注:shell(区分核)提供了你与操作系统之间通讯的方式 :命令行shell:bash、sh 、ksh、csh(Unix/linux 系统)  
# -u uid。指定帐号的标志符user id,简称uid useradd user1 # 添加用户 user1 useradd -d /home/userTT user2

userdel : 删除用户

userdel  user1  #只删除用户账号信息,不删除该用户下的目录(应用场景:公司某人离职,删除其账号,但将其工作内容保存)
userdel -r user1#连同用户下的目录都删掉 # -r, --remove 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
# -f, --force 此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户

usermod : 修改用户信息

# -c<备注>  修改用户帐号的备注文字。
# -d登入目录>  修改用户登入时的目录。
# -e<有效期限>  修改帐号的有效期限。
# -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
# -g<群组>  修改用户所属的群组。
# -G<群组>  修改用户所属的附加群组。
# -l<帐号名称>  修改用户帐号名称。
# -L  锁定用户密码,使密码无效。
# -s<shell>  修改用户登入后所使用的shell。
# -u<uid>  修改用户ID。 # -U  解除密码锁定。(解锁后需要重新passwd密码) usermod -G staff user2 # 将 newuser2 添加到组 staff 中
usermod -l newuser1 newuser # 修改 newuser 的用户名为 newuser1
usermod -L newuser1 # 锁定账号 newuser1
usermod -U newuser1 # 解除对 newuser1 的锁定

groupadd : 添加组

groupadd group1
groupadd -g 1000 group1 # 指定gid(识别组的ID号)

groupdel : 删除组

groupdel group1 # 删除组

su与 sudo

su  : 切换用户,没有参数时,默认切换为root用户;

su   # 切换为root

## 推荐
su - # 切换为root 并加载user1的环境配置
su - user1 # 切换为user1 并加载user1的环境配置

sudo :   让当前用户暂时以管理员的身份root来执行命令。

Ubuntu 默认没有启用root用户, 普通用户执行一些特殊的操作时,使用sudo就可以让普通用户以root用户的身份执行命令

sudo有一个配置文件: /etc/sudoers  ;  通过修改配置文件可以让指定用户使用sudo命令

man sudoers # 查看man手册
看下面几行:
# Host alias specification # 配置Host_Alias:就是主机的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
# User alias specification # 配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3 # Cmnd alias specification # 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径!
Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4 # 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 # User privilege specification
# 配置权限的格式如下:
# USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG root ALL=(ALL:ALL) ALL
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG 格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选] 可以执行的命令(或Cmmd_Alias) 这样描述语法很生硬,不易理解,举例子
user1 host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill
user1 host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD # 这个tag,默认是PASSWD)
user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码
user1 host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于# su -u opertor /bin/kill
user1 host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。
%group_name host1 = /bin/kill # 所有group_name里面的用户都可以在host1上执行/bin/kill(Linux中一般代表整个用户群组用# %group_name)
再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行:
xxx ALL=NOPASSWD: /bin/su

alias : 给命令起别名

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

如果需要别名永久生效,需要保存到 .bashrc 文件

Day7 Ubantu学习(一)的更多相关文章

  1. Ubantu学习笔记2

    又是新的一天,继续学习Ubantu命令 cat 可以查看文件内容 cat -n p.py 可以在查看文件内容的同时显示行号 cat -s p.py 可以将多行空白的地方进行合并成一行(输入空格的地方不 ...

  2. day7 python学习

    今日内容# 枚举 此代码可以用于对有一定值的列表进行按带序列号的方式打印出来 lis=['手机','电脑','潜艇','手表'] for index,i in enumerate(lis,1): pr ...

  3. Day7前端学习之路——多栏布局

    该文章主要讨论两栏布局和三栏布局,三栏布局包括很著名的圣杯布局和双飞翼布局 一.两栏布局的七种方法(左边固定,右边自适应) 原理: block水平元素宽度能够跟随父容器调节的流动特性,block级别的 ...

  4. Ubantu学习笔记3

    修改PATH环境变量 ~/.profile --->(在文件最后一行添加) PATH="要增加的路径:$PATH" 或者 export 使用变量="调用参数&quo ...

  5. Ubantu学习笔记1

    重启后按e键进行编辑,在文档倒数第二行r0处修改为rw init=/bin/bash 然后F10操作,输入passwd zichua =>修改此用户名的密码,重新输入两次密码(这里密码是看不到的 ...

  6. 学到了林海峰,武沛齐讲的Day35 完 协程

    day3    requests.get  爬网页 greenlet  协程模块  还有asy!!!模快(后续版本) day4    事件驱动 day5    基础学习 day6    基础学习 da ...

  7. Python学习记录day7

    目录 Python学习记录day7 1. 面向过程 VS 面向对象 编程范式 2. 面向对象特性 3. 类的定义.构造函数和公有属性 4. 类的析构函数 5. 类的继承 6. 经典类vs新式类 7. ...

  8. ROS学习笔记(二)——ubantu 14.04 安装

    0.采用双系统安装(U盘安装) 1.安装文件在ubantu官网下载: ubantu官网 :https://www.ubuntu.com/ ubuntu的server版和desktop版有什么区? (来 ...

  9. python学习之路-day7

    本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法                             ...

随机推荐

  1. 在Lua中提示UnityEngine.dll的方法

    我的环境 安装最新的 EmmyLua-1.2.1及以上版本 IDEA 2017.1.2 及以上版本 关于EmmlyLua的介绍可查看我之前的文章:Lua代码提示和方法跳转 说明:本文方法摘自 Emmy ...

  2. RHEL/Centos7 安装图形化桌面

    Linux是一个多任务的多用户的操作系统,好多linux爱好者在安装完linux后经常遇到一个问题——没有图形化桌面.今天小编在安装RHEL7的时候,一步留神没有安装图形化桌面,下面分享一下安装图形化 ...

  3. Qt的事件

    Qt的事件机制 事件过滤器: 可以让一个对象侦听拦截另外一个对象的事件. 实现原理: 在所有Qt对象的基类:QObject中有一个 类型为:QObjectList 名字为:eventFilters 的 ...

  4. php学习----运算符

    PHP 1.运算符 加减乘除与数学运算无异 但PHP的赋值运算符有两种,分别是: (1)"=":把右边表达式的值赋给左边的运算数.它将右边表达式值复制一份,交给左边的运算数.换而言 ...

  5. JavaScript原型链和继承

    1.概念 JavaScript并不提供一个class的实现,在ES6中提供class关键字,但是这个只是一个语法糖,JavaScript仍然是基于原型的.JavaScript只有一种结构:对象.每个对 ...

  6. 数据结构【查找】—B树

    /*********************讲解后期补充*****************/ 先上代码 #include "000库函数.h" #define MAXSIZE 10 ...

  7. FinalShell安装

    Mac版安装路径/Applications/finalshelldata Linux版安装路径/usr/lib/finalshelldata 注意:1.FinalShell运行需要java或者jdk支 ...

  8. 5.05-requests_cookies2

    import requests # 请求数据url member_url = 'https://www.yaozh.com/member/' headers = { 'User-Agent': 'Mo ...

  9. 利用ENVI FX从RGB提取建筑物轮廓

        在QQ热线或者技术咨询会问到:"我有一副RGB的栅格图,想从上面提取相关的一些信息.能不能提取?精度有保证吗?"等等诸如此类的问题.本专题就採用我们经常使用的栅格地图进行建 ...

  10. Qt编译错误GL/gl.h: No such file or directory

          近期把系统换成ubuntu14.04的了.在安装Qt后,我执行了里面的一个演示样例,发现编译有错: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...