linux 学习笔记(持续更新中...)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  • 一般文件操作
  • useradd alex 创建新用户 Alex
  • passwd alex Apasswd123 给用户 alex 设置密码为 Apasswd123
  • userdel alex 删除这个用户
  • rm -rf alex 删除这个用户下的所有文件
  • PATH="${PATH}:/root" // 把 /root 加入环境变量里
  • echo $PATH // 查看环境变量里都有哪些文件
  • cp -a (属性全复制) -i (存在询问是否覆盖) -r(复制目录跟目录下的内容会改变属性,也可用-a) -l(硬链接) -s(软链接) -u(目标文件与源文件有差异时复制) -d(链接文件,复制过来还是链接文件**不加-d 复制过来的是真正文件)
  • rm -f(不存在的文件也不产生警告) -i(询问是否删除) -r(递归删除,危险的操作)
  • ctrl + c 快捷键,可以终止一些终端的等待操作(比如下载等待...)
  • mv -f(force 强制) -i(询问) -u (update 目标文件已存在,源文件比较新才会执行)
  • pwd 显示当前目录的路径

  • 文件权限属性
  • 查看文件: cat nl more less head(head -n 10 文件 : 截取前10行显示) tail od(读取二进制文件)
  • mtime -> 文件的修改时间 ctime -> 状态时间 atime 读取时间
  • touch 可以修改文件的时间
  • umask 建文件时默认的权限(展示的是减后的状态值后三位)
  • chattr [+-=] [ASacdisu] 设置文件隐藏属性 重点说明: +i文件不能修改 +a 文件只能增加不能进行其他修改操作(日志文件)
  • lsattr [-adR] 文件名或目录 显示文件的隐藏属性
  • 文件的特殊权限 SUID SGID SBIT (linux 私房菜 198 页)
  • file 查看文件类型
  • owner 拥有者 ,group 用户组 , other 其他用户
  • chgrp [-R] 文件 修改文件所属用户组 -R 递归修改目录内的文件
    example: chgrp users /root/test 修改test 文件所属的用户组为 users
  • chown 修改文件的拥有者
  • chmod 修改文件的权限 读read 权限 对应数字4 ,写write权限 对应数字2 ,执行execute权限 对应数子 1
    example : chmod 752 .bash 修改 .bash 文件的权限为 owner --> rwx , group --> r-x , other --> -w-

  • 查找跟搜索
  • which [-a] 查找执行文件(命令)的完整目录
  • whereis 只找系统内特定目录下的文件 (可以使用 -l 查看找的那几个目录)
  • locate [-ir] keyword 查找 mlocate.db 数据库中的数据 数据库中的数据未必是最新数据,可以用updatedb 命令来更新数据库
  • find / -mtime 0 查看一天内修改过的文件
  • find /etc -newer /etc/passwd 找出比 passwd 更新的文件
  • find /home -user dmtsai 查找 /home 下属于用户 dmtsai 的文件
  • find / -name passwd 找出文件名为passwd 的这个文件
  • find / -name "*passwd*" 找出文件名中包含passwd 的文件
  • find /run -type s 找出/run 目录下文件类型为socket的文件名有哪些
    文件类型大致有: 一般正规文件 f ; 设备文件(b,c); 目录 d ; 链接文件 l ; socket s ;FIFO p;
  • find /usr/bin /usr/sbin -perm /6000 查找两个目录下的有SUID 跟 SGID 这两个特殊权限的文件
  • find /usr/bin -perm /7000 -exec ls -l { } ; -exec 到 \ 之间 为额为的命令 { }代表的是find 查找出来的文件

  • 硬盘操作
  • dumpe2fs 查看ext2类型的文件系统的相关信息
  • ls -l /lib/modules/$(uname -r)/kernel/fs 查看你的Linux 支持的哪些文件系统
  • cat /proc/filesystems 系统目前已经加载到内存中支持的文件系统
  • df [-ahikHTm] [目录或文件名] 列出文件系统的整体磁盘使用量
  • du [-ahskm] 文件或目录名字 查看目录所占磁盘空间
  • ln [-sf] 源文件路径 目标文件 加-s 软连接(源文件如果删了链接文件就打不开了) 什么都不加是硬链接(源文件删了也没事,但是不能链接目录文件)-f如果目标文件存在,主动的删除重建
  • lsblk [-dfimpt] [device] 列出系统上所有的磁盘列表 -f 列出文件系统名称UUID 信息 -p 展示全路径 -d 仅列磁盘本身不列分区内容
  • blkid 显示出目前系统被格式化的设备(UUID展示)
  • parted /dev/sda print 列出磁盘的分区表类型与分区信息
  • gdisk/fdisk 磁盘分区命令 gdisk 是GPT 分区磁盘使用(现在磁盘几乎都是GPT分区,fdisk是MBR分区磁盘几乎被淘汰)进入命令函数,敲?即可查看提示命令 q 离开
  • partprobe -s 更新linux内核的分区表信息

  • vi编辑器

  • 一般命令模式 , 编辑模式 , 命令行模式 ,i 一般 进入 编辑模式 ,esc 编辑退 回一般模式 , :、/ 、? 一般进入命令行模式 。一般模式是中间状态,从编辑模式不能直接进入命令行模式

  • h、j、k、l 对应 光标 向左 、向下、向上、向右 移动,←↓↑→ 键同效果,输入数字再按方向键,可以让光标对应移动相应距离example: 输入 20 再按 j 光标向下移动20行

  • [ctrl] + f 向下翻页 相当于 [Page Down] 按钮 , [ctrl] + b 向上翻页

  • 0 光标移动到这一行的行首 ,$ 移到行尾

  • G 移动到文件的最后一行 输入数字 10 再 按 G 移动到文本的第10行

  • /word 向下寻找 word, ?word 向上寻找 word , n 重复上一次命令的查找 , N 上一次查找的反方向查找

  • :n1,n2s/word/word1/g n1 到n2 行之间查找到word 并把它替换成 word1

  • :1,$s/word/word1/g 第一行到最后一行 查找替换

  • :1,$s/word/word1gc 替换 并且在每一次替换时询问是否进行替换

  • 一般模式下: x向后删除,X 向前删除一个字符 ,输入数字10 再按 x 删除光标后连续10个字符, 按X 删除光标前10个字符

  • dd 删除光标所在那一整行, yy 复制

  • ndd n为数字删除光标向下n 行 ,nyy 复制

  • d1G 删除光标所在到第一行的数据 , y1G 复制

  • dG 删除光标到最后一行的数据 , yG 复制

  • d0 删除光标所在到这行最前面的字符 , y0 复制

  • d$ 删除光标所在到这行末尾 , y$ 复制

  • p 把复制的内在粘贴到光标之后,P 复制到光标之前

  • u 回复上一个操作(撤销),[ctrl] + r 重做前一个操作 , . 点也是重做前一个操作

  • :set nu 设置行号, :set noun 取消行号

  • :w [filename] 另存为一个文件

  • :r [filename] 把另一个文件内容读入光标处

  • 在一般命令模式下按v 会进入可视化区块模式,这个时候光标移动过的地方会反白 ,按 y 可以将反白的地方复制下来, d 将泛白的地方删除 , p 粘贴。

  • vim 后跟多个文件可以一次性打开多个文件 , :w 保存写入的内容 ,:n 编辑下一个文件 , :N 编辑上一个文件。 :files 列出目前打开的所有文件

  • :sp {filename} 打开多窗口 , 如果不跟文件名,就是自己本身的文件再开一个窗口展示, 【ctrl】+ w + ↑ ,【ctrl】+ w + ↓ 来上下移动鼠标进入对应的窗口操作, 【ctrl】+ w + q 退出正在操作的窗口

  • vim 语法补全功能, 【ctrl】+ x --> 【ctrl】+ n 根据上下文进行代码补全
    【ctrl】+ x --> 【ctrl】+ o 以vim 内置的关机词进行代码补全,(该功能是根据文件名来的,比如你想要进行html 的标签补全,文件要是以 .html 结尾文件)

  • vim 总的环境设置文件是 /etc/vimrc ,单独的环境配置是 ~/.vimrc(这个文件默认不存在需要你手动建立,这个文件编写的时候 "" 双引号是注释的意思)


  • bash Shell

  • alias 查看命令别名,alias lm='ls -al' 设置ls -al 命令的别名为 lm

  • type + 命令 可以查看该命令是shell 内部命令builtin 还是别名alias 还是外部命令file

  • 当命令过长时,输入反斜杠 \ 紧跟【return】按钮可以进行换行

  • 【ctrl】+ u 光标处向前删除命令串 【ctrl】+ k 光标处向后删除命令串

  • 【ctrl】+ a 光标移动到最前面 【ctrl】+ e 光标移动到最末尾

  • echo $PATH ,查看 $PATH 变量

  • myname=zhangsan 就在设置了变量 myname的内容为zhangsan 了(注意中间不能有空格)变量不能以数字开头,双引号内可以以$开头引用变量,单引号内不行,export MYNAME 可以将 MYNAME 变成环境变量(环境变量一般都是大写) , unset myname 取消变量 myname 变量

  • bash 进入子程序,exit 退出子程序

  • 在一串命令中想使用其他命令,`命令` 或 $(命令) 。example1: cd /lib/modules/`uname -r`/kernel 或 cd /lib/modules/$(uname -r)/kernel 进入内核的模块目录 ,其中 uname -r 是版本输出的命令
    example2: ls -ld $(locate crontab) locate 是列出所有相关文件的文件名 ,这个命令串是列出所有crontab 相关文件的文件名跟权限。

  • env 展示所有的环境变量

  • set 展示所有的变量,包括环境变量跟自定义变量

  • PS1 变量是命令提示符展示形式 [root@bogon home]$ 这个东西,可以用man bash 去查看它的相关设置

  • “ $ ” 是shell 进程的PID 你可以 echo $$ 试试看

  • “ ? ” 关于上一个命令的执行结果,如果执行正确了就 返回 0 ,执行错误可以根据相关的软件排错

  • locale 语系变量

  • history , history 10 ,查看10条历史命令, !61 执行第61 条命令, !en 执行最近的以en 开头的命令

  • name=${mm-kunge} 如果没有mm 变量 name 变量被赋值为kunge 如果mm 变量为空字符串 name 变量为空,如果mm 变量为mengge name 变量为mengge

  • source ~/.bashrc 把文件 ~/.bashrc 的配置文件读取到shell 环境中 (source 也可以用 "." 来代替)

  • stty -a 展示所有的bash 操作快捷键

  • 快捷键 : ctrl + c 终止目前命令 , ctrl + U 将整列命令删除

  • 通配符与特殊字符
    1 : * 代表0到无穷多个任意字符
    2 : ? 代表一定有一个任意字符
    3 : [] 一定有一个[]内的字符 ,example: [abcd] 代表一定有abcd 中的一个字符 可能是a,b,c,d 中的任何一个。
    4 :[-] example : [0-9] 代表0到9之间的所有数子
    5 : [^] 反向选择, example : [^abc] 代表一定有一个字符,只要不是a,b,c 的其他字符都可以
    6 : 数据流重定向 , > 输出定向,会覆盖之前的内容,>> 定向输入,累加,不会覆盖之前的内容,(2> ,2>> 对应是standard error out 错误输出的重定向) 。< 输入定向 , << 输入定向,后面加结束字符。
    example:查找/home 文件下的.bashrc 文件,并把正常错误信息输出到list_info 文件内: find /home -name .bashrc 2>&1 list_info (也可写 &> )
    查找/home 文件下的.bashrc 文件,并把正常信息输出到list_right 文件内 错误信息输出到 list_error 文件内 :find /home -name .bashrc > list_right 2> list_error
    输入重定向: cat > catfile < ~/.bashrc ,把~/.bashrc 文件 重定向输入进 catfile 文件内,键盘输入内容也可以,cat > catfile << "eof" 以 “eof”结束输入
    7 : | 管道命令
    8 : ' ' 单引号不具备变量替换功能
    9 : " " 双引号具备变量替换功能
    10 : ( ) 中间为子 shell 的起始与结束
    11 : { } 中间为子命令区块的组合

  • cut -d ":" -f 3 展示的数据以 ":" 分割,只展示第3段数据 , -c 切割数据格式比较整齐的数据,对行数据进行处理
    example: echo ${PATH} | cut -d ":" -f 3 ,输出全局变量文件的第3个文件路径
    example: export | cut -c 12-20 , 输出每一行的第12到20个字符。

  • grep -a : 将二进制文件以文本文件的方式查找数据。
             -c : 计算找到‘查找字符’的次数
             -i : 忽略大小写的不同,所以大小写视为相同
             -n : 顺便输出行号
             -v : 反向选择,亦即显示出没有‘查找字符’的那一行
             --color=auto : 可以将找到的关键字部分加上颜色显示

  • sort -f : 忽略大小写的差异
            -b : 忽略最前面的空格字符部分
            -M : 以月份的名字来排序
            -n : 使用纯数字进行排序(默认是以文字的形式来排序的)
            -r : 反向排序
            -u : 就是uniq 相同的数据中,仅出现一行代表
            -t : 分隔符号,默认是用tab 键来分隔
            -k : 以哪个区间来进行排序的意思

  • uniq 去重

  • wc -l : 列出有多少行
          -w : 列出有多少字
          -m : 列出有多少字符

  • tee : 双向重定向 -a :以累加的方式把输出到屏幕的东西同时存入某个文件
    example : last | tee last.list | cut -d " " -f 1 // last 输出的系统登录人信息在显 示到屏幕的同时也往last.list 文件内存一份,还不耽误后面的管道命令

  • tr -d 'set' :删除文件中的 set 字符
        -s : 替换字符
          example : last | tr '[a-z]' '[A-Z]' 小写变大写

  • col :讲tab 转为空格
    join : 处理两个文件当中,有相同数据的那一行,才将它加在一起
    paste : join需要对比两个文件数据的相关性,paste 直接将他们贴在一起用tab 隔开
    expand:将tab 转空格

  • sed -n : 使用安静(silent)模式,之有经过sed 特殊处理过的那一行才会被现实到屏幕上。
            -e: 直接在命令行模式上进行sed的操作编辑。
            -f: 直接将sed操作写到一个文件内,跟filename则可以执行filename内的sed操作。
            -r: 使用扩展型表达式。
            -i: 直接修改文件的内容而不是屏幕输出。
            n1,n2: 操作选择行内的。
             a: 新增 ,example: sed '2a drink tea' , drink tea 就会被新增到下一行
             d: 删除,example: sed '2,4d' , 会删除第二到四行的数据。
             c: 替换,后面跟字符串 example: sed '2,5c no I`m good' ,第二行到第五行就会替换成 no I`m good
             i: 插入,会在上一行插入数据。
             p: 打印
             s:替换,搭配正则表达式,

  • printf ,格式化输出。

  • awk ,主要处理每一行的字段内的数据
            awk '条件类型1 {操作1} 条件类型2 {操作2} ...' filename
             NF : 每一行$0 拥有的字段总数
             NR : 目前 awk 所处理的是第几行数据
             FS : 目前的分隔字符,默认是空格键。


  • shell 脚本
  • sh 执行脚本,是开一个子线程执行,声明的变量也不会变成全局变量,source 执行脚本就是在父进程中执行
  • test 测试功能,偷个懒 ^_^


    IMG_3357.JPG
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343