linux笔记

以下内容全部采用Centos 7.X

🤮 下载centos

阿里云:http://mirrors.aliyun.com

网 易: http://mirrors.163.com

🤮 用户的类别

[root@localhost ~]#              "#"表示管理员
[centos@localhost ~]$             "$"表示普通用户

注: root和centos表示用户名,localhost表示计算机主机名,~表示当前位置为用户的家目录

🤮 ssh连接(待续......)

这里的ssh可不是【Struts+Spring+Hibernate】,指的是Secure Shell

1、首先检查是否开启22号端口
[root@localhost ~]# ss -tnl
......(省略部分)
LISTEN      0      128           *:22                        *:*                  
......(省略部分)

2、

🤮 echo 命令

-n: 不进行换行
-e: 让转义符生效
    \n: 换行符
    \t: 制表符
STRING可以使用引号,单引号和双引号均可用
双引号: 弱引用,变量引用会被替换
单引号: 强引用,变量引用不执行替换
        
 举例:
    [root@fjh ~]# echo $SHELL
    /bin/bash
    [root@fjh ~]# echo "$SHELL"
    /bin/bash
    [root@fjh ~]# echo '$SHELL'
    $SHELL
\color{red}{注意}: 变量引用的正规符号 ${name}

🤮 目录管理 命令
mkdir,rmdir

mkdir
  -p: 自动按需创建父目录
  -v: verbose,显示创建目录的步骤
  -m MODE: 直接给定权限
  注意: 路径基名为命令的作用对象,基名之前的路径表现得存在

rmdir
  -p: 删除某目录后,如果其父目录为空,则一并删除
  -v: 显示过程

🤮 命令行展开

~: 自动展开为用户的家目录,或指定的用户的家目录
{}: 可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径

例如: /tmp/{a,b} 相当于  /tmp/a    /tmp/b

思考???
问题1: 如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b ?
问题2: 如何创建a_c,a_d,b_c,b_d ?

🤮 tree命令

-L :指定要显示的层级 
[root@localhost ~]# tree -L 1 /etc

🤮 命令的执行状态结果

命令执行完,状态结果保存在特殊变量$?中
[root@localhost ~]# echo $?
0

🤮文件查看类命令
cat、tac、head、tail、more、less

cat 
   -n: 显示文本行编号
   -E: 显示行结束符$

tac
   与cat显示内容上下颠倒

head
  显示文件的前n行

tail
  显示文件的后n行
  -f: 查看文件尾部内容结束后不退出,跟随显示新增的行

🤮文件管理类命令
cp、mv、rm

cp
    单源复制
       非目录:提示是否覆盖
       目录:创建同名的文件,并复制其内容
    多源复制
       非目录:错误
       目录:分别复制每个文件至指定的目录

    -i: 交互式复制,即覆盖之前提醒用户确认
    -f: 强制覆盖目标文件
    -r: 递归复制目录
    -d: 复制符号链接文件本身,而非其指向的源文件

mv
    -i: 交互式
    -f: force

rm
    -i: interactive
    -f: force
    -r: recursive 
    删除目录: rm -rf /PATH/TO/DIR
    💀危险操作💀: rm -rf /*
    注意: 所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站)

🤮文件名通配

*: 匹配任意长度的任意字符
?: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
    有几种特殊格式:
      [a-z],[A-Z],[0-9],[a-z0-9]
      [[:upper:]] 所有大写字母
      [[:lower:]] 所有小写字母
      [[:alpha:]] 所有字母
      [[:digit:]] 所有数字
      [[:alnum:]] 所有的字母和数字
      [[:space:]] 所有的空白字符
      [[:punct:]] 所有标点符号
    [^]: 匹配指定范围外的任意单个字符

    举例:
        [^[:upper:]] 除大写字母以外的所有字符
        [^0-9]  除0-9之外的所有字符
        [^[:alnum:]] 除字母和数字之外的所有字符
----------------------------------------------练习-----------------------------------------------------
  练习1: 显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录
        ~]# ls -d /var/l?[[:lower:]]

  练习2: 显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
        ~]# ls -d /etc/[0-9]*[^0-9]

  练习3: 显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录
        ~]# ls -d /etc/[^a-z][a-z]*

  练习4: 复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至dhh目录
        ~]# cp -r  /etc/m*[^0-9] dhh

  练习5: 复制/usr/share/man 目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man目录下
        ~]# cp -rv  /usr/share/man/man[0-9] /tmp/man

  练习6: 复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d目录下
        ~]# cp -rv /etc/{m,n,r,p}*.conf /tmp/conf.d
        或
        ~]# cp -rv /etc/[mnrp]*.conf /tmp/conf.d

🤮IO重定向及管道

IO重定向

    输出重定向: >
        特性: 覆盖输出
        举例: ~]# cat /var/log/yum.log > test/file.txt

    输出重定向: >>
        特性: 追加输出
        举例: ~]# cat /etc/issue >> test/file.txt

    set -C:
        禁止覆盖输出重定向至已存在的文件
        此时可使用强制覆盖输出: >|
        举例: 
            ~]# set -C
            ~]# cat /var/log/yum.log > test/file.txt
            -bash: test/file.txt: 无法覆盖已存在的文件
    set +C
        关闭上述特性

    错误输出流重定向: 2>,2>>

    合并(正常+错误)输出流:
        (1) &>,&>>
        (2) COMMAND > /path/tosomefile 2>&1
        COMMAND >> /path/tosomefile 2>&1
        特殊设备: /dev/null

    输入重定向:<
      举例:
      [root@localhost ~]# wc -l <  test/test01/centos7/fstab
      说明: 将需要统计的文本,重定向到指定文件

    Here Document:<<
      [root@localhost ~]# wc -l << EOF
      > 你还好吗?
      > 我,最近过的不太好
      > 压力挺大的
      > EOF
      3
      说明: EOF(名称随便写)表示结束符,在文本出现即退出编辑。

      管道: 将前一个命令的输出,当作下一个命令的输入流
            练习1: 把/etc/passwd文件的前6行的信息转换为大写字符后输出
                   ~]# head -6 /etc/passwd | tr 'a-z' 'A-Z'

🤮用户和组

groupadd: 添加组
    -g GID: 指定GID: 默认时上一个组的GID+1
    -r: 创建系统组 

groupmod: 修改组属性
    -g GID: 修改GID
    -n new_name: 修改组名

groupdel: 删除组

useradd: 创建用户
    -u, --uid UID: 指定UID
    -g, --gid GROUP: 只当基本组ID,此组事先存在
    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 指明附加组,多个组之间用逗号分隔
    -s, --shell SHELL: 指定用户的默认shell,可用的所有shell列表为/etc/shells文件
    -r, --system: 创建系统用户

usermod: 修改用户属性
    -u: 修改用户的ID为此处指定的新UID
    -g: 修改用户所属的基本组
    -G GROUP1[,GROUP2,...[,GROUPN]]]: 修改附加组,覆盖原来的附加组
    -l: 修改用户名
    -s: 修改用户的默认shell
    -L, --lock: 锁定用户密码
    -U,--unlock: 解锁用户的密码

userdel: 删除用户
    -r: 删除用户时一并删除其家目录

passwd:
     (1) passwd: 修改用户自己的密码
     (2) passwd USERNAEM: 修改指定用户的密码,但仅root有此权限
      -l, -u: 锁定和解锁用户
      -d: 清除用户密码串
      -e DATE: 过期期限,日期
      -i DAYS: 非活动期限
      -n DAYS: 密码的最短使用期限
      -x DAYS: 密码的最长使用期限
      -w DAYs: 警告期限
      --stdin:  #标准输入流
      [root@localhost ~]# echo "fjh" | passwd  --stdin fjh

gpasswd:
      -a USERNAME: 向组中添加用户
      -d USERNAME: 从组中移除用户

🤮权限管理

权限:
      r: readable,读
      w: writeable,写
      x: executable,执行

      文件:
          r: 可获取文件的数据
          w: 可修改文件的数据
          x: 可将此文件运行为进程

      目录:
          r: 可使用ls命令获取其下的所有文件列表
          w: 可修改此目录下的文件列表,即创建或删除文件
          x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息

🤮grep 命令

grep: 基本正则表达式

        -i: ignore,忽略字符的大小写
        -o: 仅显示匹配到的字符串本身
        -v: 显示不能被模式匹配到的行
        -E: 支持使用扩展的正则表达式元字符
        -q: 静默模式,即不输出任何信息
        -A #: after,后#行
        -B #: before,前#行
        -C #: context,前后#行
-----------------------------------------正则表达式---------------------------------------
字符匹配:
      .: 匹配任意单个字符
      []: 匹配指定范围内的任意单个字符
      [^]: 匹配指定范围外的任意单个字符

匹配次数: 用在要指定其出现的而次数的字符的后面,用于限制其前面字符出现的次数,默认工作与贪婪模式
      *: 匹配前面任意次,0、1、多次
     .*:      匹配任意长度的任意字符
     \?:      其前面的字符0次或1次,即其前面的字符是可有可无的
     \+:         匹配其前面的字符1次或多次,即其前面的字符要出现至少一次
    \{m\}:   匹配其前面的字符m次
   \{m,n\}: 匹配其前面的字符至少m次,至多n次
   \{0,n\}:至多n次
    \{m,\}:  至少m次

位置锚定
      ^: 行首锚定,用于模式的最左侧
      $: 行尾锚定,用于模式的最右侧
     ^$: 空白行
     ^[[:space:]]*$: 空行或包含空白字符的行
     \< 或 \b: 词首锚定,用于单词模式的左侧
     \> 或 \b: 词尾锚定,用于单词模式的右侧
     \<PATTERN\>: 匹配完整单词

分组及引用
      \(\): 将一个或多个字符捆绑在一起,当作一个整体进行处理
      \(xy\)*ab

后向引用: 引用前面的分组括号中的模式所匹配到的字符
        ~]# grep "\(l..e\).*\1" lovers.txt     ( \1:表示第一个括号中匹配到的字符,以此类推)

🤮egrep 命令

egrep:  扩展正则表达式
-----------------------------------------正则表达式---------------------------------------
字符匹配:
      .: 任意单个字符
      []: 匹配指定范围内的任意单个字符
      [^]: 匹配指定范围外的任意单个字符

次数匹配: 
    *: 任意次,0,1或多次
    ?: 0次或1次,其前面的在字符是可有可无的
    +: 其前字符至少1次
    {m}: 其前的字符m次
    {m,n}: 至少m次,至多n次
    {0,n}:0至n
    {m,0}:

位置锚定
    ^: 行首锚定
    $: 行尾锚定
    \<,\b: 词首锚定
    \>,\b: 词尾锚定

分组及引用
    (): 分组,括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量中
    后向引用: \1,\2,……

或:
    a|b: a或者b
    (c|C)at: cat或Cat
-----------------------------------end-----------------------------------------
练习:
    1、找出/proc/meminfo文件中,所有以大写或小写s开头的行,至少有三种实现方式
        ~]# grep -i "^s" /proc/meminfo 
        ~]# grep "^[Ss]" /proc/meminfo
        ~]# egrep "^(S|s)" /proc/meminfo

    2、显示当前系统上root、fjh或dhh用户的相关信息
        # 锚定行首,锚定词尾
        ~]# grep -E "^(root|fjh|dhh)\>" /etc/passwd

    3、找出/etc/rc.d/init.d/functions文件中某单词后跟一个小括号的行
        ~]# grep -E "[_[:alnum:]]+\(\)" /etc/rc.d/init.d/functions

    4、使用echo命令输出绝对路径,使用egrep取出基名
        ~]# echo "/etc/lsm/lsmd.conf/" | egrep -o  "[^/]+/?$"
            进一步: 取出其路径名,类似于对其执行dirnam命令的结果

    5、找出ifconfig命令结果中的1-255之间的数值
        ~]# ifconfig | grep -E -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"

    6、找出ifconfig命令结果中的ip地址

    7、添加用户bash,testbash,basher以及nologin(其shell为/sbin/nologin),
      而后找出/etc/passwd文件中用户名同shell名的行
        ~]# grep -E "^([^:]+\>).*\1$" /etc/passwd

🤮fgrep 命令
不支持正则表达式元字符
当无需用到元字符编写模式时,使用fgrep必能更好

🤮文本查看及处理工具

wc: 
    word count 输出文件中的行数、单词数、字节数

cut: 
    在文件的每一行中提取片断
      -d CHAR: 以指定的字符为分隔符
      -f FIELDS: 挑选出的字段
       #: 指定的单个字符
       #-#: 连续的多个字段
       #,#: 离散的多个字段

sort: 
      sort [OPTION]... [FILE]...
        -n: 基于数值大小而非字符进行排序
        -t CHAR: 指定分隔符
        -k #: 用于排序比较的字段
        -r: 颠倒顺序
        -f: 忽略字符大小写
        -u: 重复的行只保留一份
            重复行: 连续且相同

uniq: 
      删除排序文件中的重复行
        uniq [OPTION]... [INPUT [OUTPUT]]
        -c: 显示每行重复的次数
        -u: 仅显示未曾重复的行
        -d: 仅显示重复过的行

diff: 找出两个文件的不同点

patch: 
    打补丁
        #生成补丁文件
        [root@localhost ~]# diff fstab fstab.new > fstab.patch

        #向fstab中打补丁
        [root@localhost ~]# patch -i fstab.patch fstab

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

推荐阅读更多精彩内容