LInux基础命令

一、基础命令

内部命令: 由shell自带的,而且通过某些命令形式提供

  help 内部命令列表

  enable cmd 启用内部命令

  enable -n cmd 禁用内部命令

  enable -n  查看所有禁用的内部命令

外部命令:在文件系统路径下有对应的可执行程序文件

  查看路径: which cmd | whereis cmd

区别指定的命令是内部或外部命令

  type cmd

hash  查看命令缓存表

alias 起别名

  alias cdnet='cd /etc/sysconfig/network-script'

存别名的文件”

  用户家目录下.bashrc  仅当前用户生效

  /etc/bahsrc  对所有用户生效

命令执行过程

  1. 别名

  2. 内部

  3. 外部命令hash表

  4. 外部命令 $PATH

命令格式

command [option] [arguments]

  短选项: -c 例如: -l, -h

  长格式:--word 例如: --all

多条命令在一行用分号隔开

日期与时间

Linux的两种时钟

  系统时间:由Linux内核通过CPU的工作频率进行的

  硬件时间:主板

相关命令

  date 显示和设置系统时间

    date + %s

    date -d  @

  hwclock, clock: 显示硬件时间

    clock -s  系统同步硬件时间

    clock -w 硬件同步系统时间

获取帮助

  whatis  cmd   查看某个命令的简要说明

    mandb 生成whatis数据库, 一般会自己生成

  

内部命令

  help command 或 man bash

外部命令

  command --help 或 command -h

whoami

who 

w  显示当前谁在登录,编辑哪个文件

screen 在一个终端上虚拟出一个终端来

  LInux基础命令

echo: 显示字符

  LInux基础命令

   LInux基础命令

 调颜色:  echo -e ['e[32m OK e[0m]'

命令行扩展、被括起来的集合

  命令扩展: $()或``  把一个命令的输出打印给另一个变量的参数

  echo "This system's name is $(hostname)"

  括号扩展: {} 打印重复字符串的简化形式

  echo {a..z}  打印出a~z

  单引号:把特殊符号挡着普通字符

  双引号:解析特殊符号的含义,不解析命令

  反撇号:把执行的结果,由另一个命令来引用

tab 自动补全

history 查看历史命令

   -c 清除历史  

   -d offset  清除指定行历史

  在/etc/profile 里面该历史记录条数

  LInux基础命令

  一般会保存在用户家目录下.bash_history

  LInux基础命令

   LInux基础命令

   LInux基础命令

  LInux基础命令

 屏幕快捷键

  LInux基础命令

  LInux基础命令

二、 文件系统和文件管理命令 

特殊目录: 这两个目录不占磁盘空间

  sys: 映射硬件设备

  proc: 进程相关

文件后缀颜色定义文件:/etc/DIR_COLORS

lsblk:  查看磁盘列表

pwd: 查看当前目录

  -P 查看真实路径

cd: 切换文件夹

  cd -  回到刚才切换过来的目录

  cd ~ 到家目录

basename: 取出文件,不要文件夹

dirname: 和上面相反

ls: 列出列表

  -R 递归跌出

  -l 查看属性

  -d 列出文件夹本身

  --time=atime   查看文件读时间  并不是所有的场景都会记录

  --time=ctime  文件属性更改时间

l. 列出当前所有隐藏的文件夹

stat: 查看文件元数据  

文件通配符

  *  匹配零个或多个字符 (不包含隐藏文件)

  ?匹配任意一个字符

  ~ 当前家目录

  ~- 前一个文件夹

  [0-5] 表示一个范围里面取一个,大小写敏感

  [^0-5] 排除中括号里面的内容

  [a-c]  a A b B c

  [:lower:] 小写a-z

  [:upper:] 大写

touch: 创建文件

  touch `date -d '-d day' +%F`.log   创建昨天时间命名的文件

xxd: 查看文件16进制

hexdump: 查看二进制文件

cp: 拷贝

  -p 保留原权限

  -a 保留最全的属性

  -r  复制目录

  -i 覆盖前提示

  -n 不覆盖

  -d 只复制链接名 不复制文件

  -v 拷贝过程

  -f 强制

  -u 复制源比目标更新文件,或目标不存在的文件

  -b 目标存在,覆盖前先备份

  --backup=numberd 覆盖前备份,加数字命名

  常见组合 -av

mv 移动和重命名

  -i 交互

  -f 

  -b 目标存在,覆盖前先备份

rm 删除

  -r 递归

  -f 强制喊出

  -i 交互

mkdir 创建文件夹

  -p 如果上级不存在,创建上级

  -v 查看创建过程

tree 显示目录树

  -d 只显示目录

  -L 指定显示的层级数目

  -P 只显示由pattern匹配到的路径

rmdir 删除空文件夹

rename 批量改名

  例子: rename .log .log.bak * 

释放磁盘空间的正确方法

> filename

rm -f filename

索引节点

ls -i 查看文件节点

df -i 查看磁盘每个挂载点能创建多少个文件

inode (index node)表中包含文件系统

一个节点是

ln 创建硬连接

  特性: (同一个文件多个名称)删除源文件,链接文件还在,平级关系,不能跨设备创建,不能针对文件夹创建

ln -s 创建软连接

  特性: 删除软连接时不要加斜线

file: 判断一个文件的格式

三、文本编辑工具vim

文本编辑种类

  行编辑器: sed

  全屏编辑器: nano, vi

vim的用法:

  vim +n filename   进入到指定的行

  -d file1 file2   文件做比较

  -b file  二进制方式打开文件

  -m 只读打开文件

vim的三种模式

  命令模式:默认模式,移动光标,剪切/粘贴文本

    ZZ

    ZQ

    字符间跳转:h左 l右  j下  k上

    w 跳到下一个单词词首

    e 跳到上一个单词词首

    当前页跳转: H 页首  M 页中间行  L 页底

    行首行尾跳转:

      ^ 跳转到行首的第一个非空白字符

      0 跳转至行首

      $ 跳转至行尾

    行间移动 

      #G 跳转到指定的行

      G 最后一行

      gg 第一行

    字符编辑

      x 删除光标处的字符

      #x 删除光标所在处起始的#个字符

      xp 交换光标所在处的字符及其后面字符的位置

      ~ 交换大小写

      J 删除当前行后的换行符

    替换命令

      r  替换光标所在处的字符

      R 切换成REPLACE模式

    删除命令:

      d 删除命令,可结合光标 跳转字符,实现范围删除

      d$ 删除到行尾

      d^ 删除到非空行首

      d0 删除到行首

    dd 删除光标所在行

    yy 复制

    p 粘贴

    搜索

      /  n   N

      ?

    撤销

      u  撤销最近的更改

      #u 撤销之前多次更改

      U 撤销光标落在这行后所有此行的更改

      

  插入模式:修改文本,i I o O a A

  扩展命令: 保存 退出 

    q 退出

    q! 强制退出

    wq 保存退出

    x 退出保存

    !临时调用linux命令

    r!command  把linux命令执行结果放到当前文件

    替换

    LInux基础命令

     LInux基础命令

Esc键 退出当前模式

四、标准输入输出

程序: 指令 + 数据

  读入数据: Input

  输出数据:Output

pidof command   查看执行程序分配的id号

LInux基础命令

LInux基础命令

  标准输入的方法

  < 

  tr  转换和删除字符  

   LInux基础命令

  

  cat 也有单行重定向的功能

    cat > filename

    多行重定向生成新文件

    cat << EOF

    ....

    EOF

  管道符 |  只能执行标准输出的结果

    2>&1 |   解决错误输出

  tee 标准输出在屏幕上显示,也可以做重定向

    hostname | tee tee.txt

    -a 追加

  seq  

五、用户和组管理

  资源分配: 认证 授权 审计

用户user

  令牌token,identity

  Linux用户: Username/UID

  管理员: root, 0

  普通用户: 1-60000自动分配

    系统用户 1-499,500-999

    登录用户 500+

  组group

  LInux基础命令

 安全上下文

LInux基础命令

配置文件

 LInux基础命令

opensssl 生成 随机口令

openssl rand -base64 9

修改用户口令信息

chage 用户名  

getent shawon 用户名   过滤出shadown里面的某一个用户

vipw

vigr

pwck  检查passwd文件是否争取

grpck 检查group 是否正确

组的操作

groupadd 

groupmod

groupdel

用户操作

useradd

  -u  指定uid

  -o 忽略id唯一  

  -r 系统账号  不会创建家目录 

  -s 指定shell类型

  -g 指定组

  -G 指定附加组

  -N 不创建和自己同名的组

  -d 指定家目录

  -M 

  -m 

  -c

  创建用户时使用的文件/etc/default/useradd   /etc/skel/

  /etc/login.defs 定义口令的信息

usermod

  /etc/passwd  一个叹号代表锁定

  -G 配合-a 用

  -L 锁定用户

  -U 解锁

  -e 指定有效期

  -f 设置宽限期

  

userdel

  -r 删除时连加目录和邮箱也删除

批量创建用户

  准备一个和/etc/password相同格式的文件

  newusers  文件

  chpasswd 改口令

    用户名:密码

    也可以准备用文件存放数据根式为 用户名:密码

    执行命令:cat 文件 | chpasswd

id命令

  -u 显示UID

  -g 显示GID

  -G 显示用户所属的组的ID

  -n 显示名称,先要配合前面三个使用

su 切换用户

  -  带家目录

sudo -i  提权

passwd

  -d 删除指定用户密码

  -l 锁定指定用户

  -u 解锁指定用户

  -e 强制次登录修改密码

  -f 强制操作

  n 指定最短使用期限

  -x 最大使用期限

  -w 提前多少天使用

echo 密码 | passwd --stdin 用户 &> /dev/null

groupmembers  管理组相关的

chown 修改所有者

chmod 修改权限

chgrp  修改组相关

目录

读权限: 可以列出文件名

执行:可以进出目录,可以访问目录的文件内容

写:决定了能不能创建新文件 

特殊权限

suid 作用域可执行的二进制的程序,功能:用户执行此程序时,将继承此程序的所有者权限

sgid 作用域可执行的二进制的程序,功能:用户执行此程序,将继承此程序的所有属组权限

   作用在目录: 将来新建的文件将自动继承此目录的所属组

sticky 作用域目录,功能: 只能删除自己的文件

设定文件特定属性

chattr +i 不能删除,改名,更改

  -i  取消权限

  -a 可以用echo >> 追加

lsattr 查看权限

umask权限

功能:将777|666中对应权限去掉,得出默认权限

默认权限

  目录: 777 - umask

     文件: 666 -umask  如果有奇数+1 偶数保持不变

FACL 访问控制列表

  除了文件的所有者 所属组 其它,还可以设置其它权限

  setfacl -m -u:用户:权限  文件   给用户设置acl

  setfacl -m -g:用户:权限  文件    给组设置acl

  setfacl -x -g:用户 文件    查看权限

  setfacl -R -b dir   删除所有acl权限    

  getfacl 文件    查看权限

六、正则表达式

匹配文本中的内容

抽取文本的工具

  文本内容:cat, more, less

  文件截取:head, tail

  按列抽取:cut

  排序和统计: sort, wc

  按关键字抽取:grep

cat的常见选项

  -E 显示回车换行

  -A 显示所有的符号

  -V 显示

  -n 加行号

  -b 非空行

  -s 压缩多个空行

tac 倒着显示

nl 跟cat -n一个效果

rev 同一行倒着显示

more 允许分页显示

  -d 显示翻页信息

less 分页处理

head 

  -c 指定获取多少字节

  -n 指定获取多少行

tail  默认后十行

  -c  取几个字符

  -f 动态显示新追加的内容

  例如:tr -dc [:alnum:] < /dev/urandom | head -c 12

  查看被跟踪的文件:ls /proc/`pidof tailf`/fd -l

cut 对文本的特定列抽取

  cut -d: -f1,3 /etc/passwd

  -d  指定分隔符

  -f 指定要抽取的列

  -c 指定字符数量

  --output-delimiter=分隔符

    指定输出分隔符

    cut -d: -f1,3-5 --output-delimiter=" " /etc/passwd

  

  

paste 横向合并文件

  -d 指定合并符号

  -s 把原来的文件放在一行然后再合并

wc 文本数据统计

  -l  统计行  

  -w 统计单词

  -c  

  -L

  -m

sort 文本排序

把整理过的文本显示stdout,不改变原始文件

  sort [options] file(s)

  r 执行反方向(由上至下)整理

  -R 随机排序

  -n 执行按数组大小整理

  -f 选项忽略

  -u 删除输出中的重复行

  -t c 选项使用c做为字段界定符

  -k X 选项按照使用c字符分割

uniq 从舒服中删除前后相接的重复的行

  uniq [option] [file]

  -c 显示每行重复出现的次数

  -d 仅显示重复过的行

  -u 显示不重复的

diff 比较两个文件

patch 

    

grep: 文本过滤

LInux基础命令

 命令选项

  --color=auto: 对匹配到的文本着色显示

  -m # 匹配#次后停止

  -v 取反

  -i 忽略大小写

  -n 显示匹配的行号

  -c 统计匹配的行数

  -o 仅显示匹配的字符串

  -q 静默默认,不输出任何 信息

  -A # after 后多少行

  -B # before 前#行

  -C # content, 前后各#行

  -e 实现多个选项之间的逻辑or关系

    grep -e 小e表示或的关系

  -w 单词

  -E 表示用正则表达试

  -F 表示用普通匹配模式

  -f 指文件,把搜索的关键字放在文件里面进行过滤

正则表达式

  元字符分类:字符匹配、匹配次数、位置锚定、分组

  man 7 regex

  字符匹配

    * 前面的字符出现任意次

    . 匹配任意单个字符

    [] 匹配指定范围外的任意单个字符

    [^ ] 匹配指定范围外的任意单个字符

    [:alnum:] 字母和数字

    [:alpha:] 代表任何英文大小写字符

    [:lower:] 小写字母 [:upper:] 大写字母

    [:blank:] 空白字符

    [:space:] 空白字符和制表符

    [:cntrl:] 不可打印的控制符

    [:digit:] 十进制数字

    [:graph:] 可打印非空白字符

    [:print:] 可打印字符

      [:punct:] 表达符号

  匹配次数

    LInux基础命令

   位置锚定:定位出现的位置

    LInux基础命令

   

  分组:将一个或多个字符捆绑在一起,当作一个整体

    LInux基础命令

egrep扩展正则表达式

  egrep = grep -E

  egrep [OPTION] PATTERN FILE

  扩展正则表达式的元字符

  字符匹配

    . 任意单个字符

    [] 规定范围内的字符

    [^] 不在指定范围的字符

  匹配次数

    LInux基础命令

   位置锚定

    ^ 行首

    $ 行尾

    <, 语首

    >, 语尾

  分组

    ()

    向后引用:1, 2

  或者

    a|b

    C|cat

    (C|c)at