Linux 操作系统是UNIX (UNIX 操作系统是美国贝尔实验室的肯·汤普Ken.Thompson和丹尼斯·里奇Dennis Ritchie 于1969 年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统。)操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。Linux 的核心是由Linus Torvalds 开发出来的,放在网络上供大家下载。由于Linux内核小而精巧很受到大家的喜欢,纷纷下载并加入研究。

          Linux是最受欢迎的自由电脑操作系统内核。它是一个C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。主流的Linux发行版 UbuntuDebian GNU/Linux ,FedoraGentooMandrivaLinux ,PCLinuxOSSlackware Linux ,openSUSEArchLinux,Puppylinux,Mint, CentOS,Red Hat等。

 Linux的哲学思想:

1、一切皆文件;

2、短小,且目的的单一程序组成


3 、串联多个小程序完成复杂的任务


4 、 尽量避免捕获用户接口
 

5、通过文本文件保存软件的配置信息

目录表示    在Linux中现有了解一些固定的英文所表示的意思。

nano 文件编辑器
 nano/etc/inittab

 .:当前目录
 . .:当前目录的上级目录
 ~:当前目录的家目录
.开头表示是一个隐藏文件
/bin:binary, 二进制 命令
/sbin:管理命令
/boot:引导目录,内核,grub initrd
/dev:device,设备文件目录,特殊文件目录
/etc:配置文件目录
/home /USERNAME/root:家目录
/lib:;ibrafy,库文件
/media,/mnt:额外文件系统的挂载目录
/misc:杂项
/opt:软件的安装目录
/proc:内核映像
/srv:服务器运行时产生的中间文件
/sys:内核中的硬件信息
/tmp:临时文件目录
/usr:安装文件放置目录
/var,经常发生变化的文件所放的目录

Linux基本命令:我们可以利用下面的命令来实现自己的目的。

命令
    内部 :所有内部命令没有二进制文件
   
    外部  :  有相对可执行的二进制文件
   
which   显示命令的完整路径

type  显示命令类型

command --help    help command


man command(命令)

q  退出
/  从尾部到首部查找
? 相反
n:  下一个
N:  前一个
man  为命令提供的使用手册是分章节的

 1:普通的用户命令
 2:系统调用
 3:库调用
4:特殊文件
5:文件格式
6  游戏
7 杂项
8 管理类命令
 man -k ls    只要含有ls都显示出来
 man -n command
info command  可作为man的补充命令

whatis +命令   命令的简单说明 可查看命令的手册页

NAME  DESCRIPTION   EXAMPLES  FILES  OPTIONS
K键 往前翻一行 b键往前翻一屏


/usr/share/doc/  帮助信息的位置
 

file 显示文件类型
BASH
history,
!$,  ALT+ ESC+
 命令行编辑
 Ctrl +a
  Ctrl+e
  Ctrl+u 
  Ctrl+k
  Ctrl+Arrow
文件名通配
 * :任意长度的任意字符
 ?:任意单个字符
 []:匹配指定范围内任意单个字符,  [abc]    [^]  取反
 [:keyword:] [:lower:](小写字母) [:upper:][:punct:]
 [:space:][:alpha:][:alnum:][:digit:](数字)

命令行补全和路径补全
命令行补全
echo $PATH(环境变量)
路径补全

命令行展开
~ :展开为对应目录的家目录
{}:展开路径
x/y.x/z,x/z/1,x/z/2

mkdir -pv x/{y,z/(1,2)}

mkdir -pv (x,y)_(1,2)

命令引用:
  $()
  ^
touch  “a*b”

切换X window与命令行模式

1、 Ctrl+Alt+F1~F6:命令行登陆tty1~tyy6终端

2、Ctrl+Alt+F7 ;Startx & ; startx -- :1 &    图形终端

 显示日期命令:date

Date mmddHHMMyy.ss  月日时分年 跟要设定时间


Date "+%H:%M:%S"

Date "+%y:%m:%d"

hwclock  修改时间 


  -w  表示系统时间是准确的,把硬件时间设为与系统时间一致
 
  -s 表示硬件时间是准确的,把系统时间设为与硬件时间一致

显示日历的命令:Cal          Cal接的语法:cal   月  年

更改文件权限:

chown 改变用户属主

chown [options] USERANME  file

-R     递归修改
--reference=  以某标准修改  
chown USERNAME:GRONAME file

chown USERNAME.GRPNAME file
chown:GRPNAME file


chgrp 改变用户属组
 

chmod  改变用户权限
chmod[options]mode file...
chmod 777 a.txt
chmod u=rw- a.txt
+/-
chmod go=-w a.txt  属组
chmod +x a.txt
  -R    
  --reference=

相对路径  绝对目录
cd:change Directory
cd:切换回当前用户的家目录
cd-  切换到前一个目录
 cd~别的用户名  表示切换回别的家目录
cd ..切换回父目录
cd../..

pwd:  printing working directory   

-p  显示实际路径    
显示当前目录所在位置

ll 查看详细信息=ls -l
ls
-l  详细的显示用户信息
-h  显示易读信息
-d  显示文件本身
-a  显示所有文件
-lhd 显示目录自身的属性
-r 以逆序显示
-R 递归显示

目录的管理命令
创建目录
mkdir/path/to/new_dir
-p可以依次创建多个目录
-v显示创建目录过程
-pv

建立新目录:mkdir

-m  设置文件权限

-p 建立所需的递归目录

删除目录 rmdir   只能删除空目录

删除文件
rm
-i  删除时提醒
-r  删除目录
-f  强行删除
-rf 强行删除目录

cp SOURCE(复制谁) DEST(复制到什么地方去)
-r 复制目录
-i
-p  保留属组,属主文件信息

 

-a=-rp

文本查看类命令
 /etc/inittab
 cat: concatinate  dump
 链接显示多个文件
cat -e  行结束符

-A列出一些特殊符号

-E  显示换行符$显示

-n  显示行号


more 向后翻屏
less  b键向前翻  

tailh(后)-n 
 hend(前) -n
echo   向文件加一行
 tail    -n     -f
 wc 文本文件有多少行 ,多少字节
wc -c 显示多少个字节
 wc  -l 统计有多少行 字节 字符 单词

/etc/passwd
    shadow  密码
    gshadow
建立用户:useradd gentoo
tail -l /etc/passwd
用户名:密码x:uid:基本组gid:用户的全名:用户的家目录:shell
密码是 叹号 表 禁止

用户名:x(占位加密)密码:用户的ID(UID):用户的基本组GID::用户的家目录:默认用户SHELL

/etc/shadow 下的 英文的意思
用户名: 加密的密码:记录密码上一次修改时间:
密码最短使用期限:密码的最长使用期限:
提前多长时间提醒用户密码到期了:密码过期多少天以后密码被禁用
:账号的使用期限:(默认天数99999)
永久有效

系统上如何实现用户
用户 是权限UID
user用户,Group 组,penrmission
组:权限  组密码 GID
 管理员的IP 号永远为root 0
1-499 为系统用户
普通用户:500-65534
nobody来宾账号  65535
组:私有组 () 共有组
任何一个用户必然会属于某一个组,私有组 基本组
公共组,附加组

安全上下文:secure context
当一个进程
 进程:资源分派的单位,是一个程序的正在执行的副本
root@ linux -xshell 3.0

文件权限:前三位 属主
中间三位属组
后三位 其他
文件
r 读
w  写
x 执行
目录
r:LS
W:能够到目录中新建文件
x;cd,ls -l
 

新增用户    useradd  
数 oracle   
id oracle 查看
   -u  uid

-M  强制  不建立家目录

-m  强制  建立用户家目录
-g  gid
   -G  GRoup
   -c  COMMEN
   -d  家目录
   -s   SHELL

删除用户 userdel 
 -r
删除组 groupdel

usermod:
  -u
  -g
  -a -G
  -s
  -c
  -M -d
  -l 用户过期时间
  -e
  -L 锁定用户账号
  -u

  groupmod
  -g
  -n
passwd
  --stdin 把标准输入改为别的
  -l
  -u
  finger  显示用户的详细信息
  id  显示用户的id信息
  who 显示用户
  属主:rwx
  属组:rwx
  其他:rwx
  rwx:
  --- 000 0
  --x 001 1
  -w- 010 2
  -wx 011 3
  r-- 100 4
  r-x 101 5
  rw- 110 6
  rwx 111 7

# 管理员
$ 用户
passwd
linux 简化命令
密码复杂性
至少包含3类字符
命令严格区分大小写
options:转换命令执行方式
  短选项:-l,-h -lh
  长选项:--help, --long
  arguments:命令的作用对象
 
  快速切换用户
  root -->student
 su:switch user
 su[option][arguments]
 su -l 打开一个登录
shell
任何一个用户登录系统每时每刻都在某个目录中,当前目录,工作目录

history 命令历史
history -c  删除历史

编程语言:
   脚本语言:以源程序的方式存在,执行前不需要编译,而是靠一个解释器执行;
   维护简便
   执行效率差
  
   bash perl python ruby php
   编译型语言:
   编辑-->编译-->连接-->运行

  c c++
  脚本:
  #!/bin/bash,shabang


变量 :命名的存储空间
echo $NAME
 -n    表示不显示换行符
 -e   \n  \t   转义符
 命令引用:、、
 变量引用:“”  弱引用,可以进行变量替换
          ‘’    强引用,不会进行变量替换
         
          bash  变量不需要声明 ( 字符串型)
          变量不区分类型
   变量类型:
   变量名=“strings”
   set变量名=“strings”
   unset 变量名

变量:
 本地变量
 环境变量  export,导出
 export A=3  直接导出
 
 HISTSTZE
 DISPLAY
 HOME 系统 的家目录
 PATH
 PS1(是1) 基名
 env
特殊变量:$?  上一个命令 是否成功
位置变量:$1,$2, $3

 做算术运算:
例 A=2  B=3 
 echo "$[$A+$B]"
 
BASH 别名

登出去,在登进来,就失效

全局:/etc/profile ,etc/profile.d/*/etc/basnrl

局部:~/.bash_profile,~/bashrc.-/bash_logout
profile类:设置环境变量
运行用户登录要执行的一些命令

bashrc类:设置别名
设置本地变量
sheell:交互式登录shell,非登录式shell,

 交互式叫  输入密码 。
 读取 /etc/profile--/etc/profile.d/*--~/ .bash_profile --~/ .bash --/etc/bashrc
 非登录叫 只是在脚本系统自动的
~/ .bash --/etc/bashrc --/etc/profile.d/*


输入输出重定向,管道|
标准输入:/dev/stdin ,0  KEYBOARD <
标准输出:/dev/stdout,1   NONITOR  >
错误输出:/dev/stderr,2   NONITOR  2>

>覆盖输出重定向
>>追加输出重定向
自定义 输出重定向   exec 3> /tmp/myout.out
ls /var >&3
查看 cat /tmp/myout.out
撤销 exec 3>&-
&> /dev/null  不用的文件放在这里
只能在尾部 echo "------------------------------->> /tme/ls.out

set -C 开启 拒绝覆盖
set +C  关闭

管道| 
用管道 符 改密码 etc "123456" | passwd --stdin redhat  把root 密码该123456
多次使用
t 既可以给别的文件,也可以自己保存
多个命令的输出都需要保存至同一个文件

 

程序执行流:
顺序执行
选择(分支)执行
循环执行 :1+...+100
for 关键字
创建5个目录 
for I in {1..5};do
 useradd user$I
 done
 
 简单列表 1,2,3,4
 复杂列表 This is
变量 `seq 1 $
命令 `
通配符  for I in /var/*
文本处理类命令:
文本切割的命令  cut
-d:-f后跟所取第几段数字

grep: 找文件 ,或者是找匹配的
grep,egrep,fgrep
grep [options] PATTERN file...

grep :-i
-v 显示没配的目录
-n  显示匹配到的行号
 -An n表示自己要显示的后几(数字)行
 -Bn
 -
 
 -E  =egrep
 --color 匹配到的字符串 显示出来

模式  要用引号
正则表达式(基本正则表达式,扩展正则表达式),元字符 re
^ 行首定位符
.用于匹配单个字符
* 匹配0或者多个重复位于星号的字符
\ 用来转移
\<词首定位符

$ ? :上一个命令执行状态结果
o:success
1-255
短路操作符:
   &&  与
   ||     或
   短路操作符要记住一个原则:

1和任何数做与运算都得任何数
0和任何数做与运算都得0
0和任何数做或运算都得任何数
1和任何数做或运算都得1