快乐的shell命令行
创始人
2024-05-26 08:16:25
0

快乐的shell命令行

PART1——基础

1.权限

  • #超级用户权限
  • $普通用户

2.复制粘贴

  • 复制:鼠标左键沿着文本拖动高亮的文本被复制到X管理的缓冲区(或者双击一个单词)
  • 粘贴:鼠标中键

3.简单命令

  • 时间和日期date
  • 当前月份的日历cal
  • 磁盘剩余空间的数量df
  • 空闲内存的数量free
  • 结束终端exit
  • 打印

PART2——文件

目录

  • 系统程序安装目录/usr/bin

  • 家目录~

~家目录
/根目录
/bin系统启动和运行必须的二进制程序
/bootLinux内核、初始RAM磁盘映像和启动加载程序
/dev设备节点,内核在此目录维护所有设备的列表
/etc系统层面的配置文件,包含一系列的shell脚本(/etc/crontab,定义自动运行的任务)(/etc/passwd,用户账号列表)
/lib核心系统程序所使用的共享库文件(Windows中的动态链接库)
/media可移动介质的挂载点
/mnt早些linux系统中的可移动介质的挂载点
/opt安装可选软件
/proc一个由Linu系统维护的虚拟文件系统
/sbin为超级用户保留的系统二进制文件
/usr普通用户所需要的所有程序和文件
/usr/bin系统安装的可执行程序
/usr/lib/usr/bin中程序的共享库
/usr/local通常由源码编译的程序回安装在/usr/local/bin下

PART3——系统

ls

选项长选项描述
-a–all列出所有文件(包括隐藏文件)
-l以长格式显示结果
-t按照修改时间排序
-h–human-readable当以长格式列出时,以人们可读的方式展示
-d–directory可以看到目录的详细信息
-r–reverse以相反的顺序显示结果,ls通常是按字母升序排列
-S按文件大小来排序
-F–classify如果名字是目录名则会加上一个‘/’字符

file

打印文件内容的简单描述

less

页面调度器类程序

less filename

命令行为
PageUp、b向上翻滚一页
PageDown、space向下翻滚一页
UpArrow向上一行
DownArrow向下一行
q退出
h显示帮助屏幕
G移动到最后一行
g移动到第一行
/charates向前查找指定的字符串
n向前查找下一个出现的字符串(之前指定的)

符号链接

PART4 操作文件与目录

  • cp
  • mv
  • mkdir
  • rm
  • ln

4.1 通配符

通配符描述
匹配一个字符
*匹配多个字符(0个或者多个)
[characters]匹配任意一个属于字符集中的字符
[!characters]匹配任意一个不属于字符集中的字符
[[:class:]]匹配任意一个属于字符类中的字符

4.1.1 字符类

字符类描述
[:alnum:]字母或数字
[:alpha:]字母
[:digit:]数字
[:lower:]小写
[:upper:]大写

ls命令为例

  • ls *所有文件
  • ls g*以g开头的所有文件
  • ls g???以g开头后面紧跟三个字符的文件
  • ls [abc]*以a或b或c开头的文件
  • ls abs[0-9][0-9][0-9]以abc开头后面紧跟三个数字的文件
  • [[:alpha:]]*以字母开头的所有文件
  • [![digit]]*不是以数字开头的所有文件
  • *[[:lower:]123]以小写字母或1或2或3结尾的文件

4.2 复制cp

cp file dir将文件复制到dir中

  • -a复制其所有权和权限
  • -i重写已存在文件前,提示用户确认
  • -u仅复制目标目录中不存在的文件
  • -r递归复制目录以及目录中的内容,目录复制时使用
  • -v显示过程

4.3 移动mv

  • -i重写已存在文件前,提示用户确认
  • -u仅移动目标目录中不存在的文件
  • -v显示过程

4.4 删除rm

  • -i删除已存在文件前,提示用户确认
  • -r递归删除
  • -v显示过程
  • -f忽视不存在的文件,覆盖-i

4.5 创建连接ln

  • ln file link创建硬链接
  • ln -s file link创建软连接

PART5 使用命令

  • which显示一个可执行程序的位置
  • help显示shell内建命令的帮助文档
  • --help显示用法信息
  • man显示程序手册页

5.1 创建命令别名alias

  • 使用方式alias name='string'
  1. 尝试名字是否被占用type name
  2. 创建别名alias foo='cd /etc;ls;cat passwd'
  3. 删除别名unalias foo

PART6 重定向

  • cat
  • sort

6.1 输出重定向

6.1.1 标准输出重定向 >

  • ls -l /usr > ls_output.txt
  • > ls_output.txt删除其中的内容,因为每次重定向都是从头写入
  • ls -l /usr >> ls_output.txt每次重定向,续写

6.1.2 标准错误重定向 2>

标准输入、输出和错误, shell 内部分别将其称为文件描述符 0、 1 和 2

  • ls -l /bin/123 2> ls_output.txt

文件描述符 “2”,紧挨着放在重定向操作符之前,来执行重定向标准错误到文件 ls-error.txt任务

6.1.3 重定向标准输出和错误 &>

  • ls -l /usr/bin > ls_output.txt 2>&1

或者

  • ls -l /usr/bin &> ls_output.txt

两个重定向。首先重定向标准输出到文件 ls-output.txt,然后重定向文件描述符 2(标准错误)到文件描述符 1(标准输出)使用表示法 2>&1。 顺序不能错

6.1.4 处理不需要的输出 /dev/null

  • ls -l /usr/bin 2> /dev/null

系统通过重定向输出结果到一个叫做 “/dev/null” 的特殊文件,为我们提供了解决问题的方法。这个文件是系统设备,叫做位存储桶,它可以接受输入,并且对输入不做任何处理。

6.2 标准输入重定向

6.2.1 cat

  • cat file显示文本内容,一般用于显示简短文本
  • cat movie.jpeg.0* >movie.jpeg,将分散的多个文本连结起来(一般都是顺序的文件,所以也会按顺序连结)
  • cat不带参数表示从键盘的输入作为输入源,以Ctrl+d作为结束
  • cat > cat_input.txt,将键盘的输入写入cat_input.txt中,以Ctrl+d作为结束,一般用于创建简短文件
  • cat < test.txt将test.txt作为输入源,与cat test.txt一样的效果

管道线 |

  • 命令从标准输入读取数据并输送到标准输出的能力被一个称为管道线的 shell 特性所利用
  • 使用管道操作符 “|”(竖杠),一个命令的标准输出可以通过管道送至另一个命令的标准输入
  • ls -l /usr/lib | less,将ls的输入作为less的输入进行展示

过滤器

  • ls /bin /usr/bin | sort | less,将ls的输出作为sort的输入,进行排序后的输入作为less的输入进行展示

uniq忽略重复行

  • uniq 从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行

  • uniq 命令经常和 sort 命令结合在一起使用

  • ls /bin /usr/bin | sort | uniq | less,从 sort 命令的输出结果中,来删除任何重复行

  • 如果我们想看到重复的数据列表,让 uniq 命令带上 “-d” 选项

    ls /bin /usr/bin | sort | uniq -d| less

wc打印行数/字数/字节数(wc->word_count)

  • wc text.txt打印的结果分别是:行数-单词数-字节数
  • wc text.txt -l只打印行数

grep 打印匹配行

  • grep一个文本查找工具; awk,一个文本分析工具; sed,一个文本处理工具
  • 详见

head/tail打印文件头/尾部分内容

  • 默认各打印10行,可以通过-n num指定打印行数
  • tail通过加入-f可以查看实时文件,当文件更新时自动更新显示

tee将中间输出的内容保存

  • tee 程序从标准输入读入数据,并且同时复制数据到标准输出(允许数据继续随着管道线流动)和一个或多个文件。当在某个中间处理阶段来捕捉一管道线的内容时,这很有帮助
  • ls /usr/bin | tee ouput.txt | grep zip,将ls的输出先进行保存后再进行grep过滤处理(用于调试,将中间结果保存)

PART7——shell解析字符

7.1 字符/路径展开

  • echo hello打印hello

  • echo *shell处理的时候会将*展开后的内容打印处理

  • echo +通配符展示指定文件

7.2 ~展开

  • 展开当前用户目录
  • ~+用户名展开制定用户目录

7.3 {}花括号展开

  • 花括号展开模式可能包含一个开头部分叫做报头,一个结尾部分叫做附言。

  • 花括号表达式本身可能包含一个由逗号分开的字符串列表,或者一个整数区间,或者单个的字符的区间

  • echo front_{1,2,3}_back

    front_1_back front_2_back front_3_back

  • echo front_{1..5}_back

    front_1_back front_2_back front_3_back front_4_back front_5_back

  • 批量创建文件夹mkdir {2020..2023}-0{0..9} {2020..2023}-{10..12}

    2020-01  2020-07  2021-01  2021-07  2022-01  2022-07  2023-01  2023-07
    2020-02  2020-08  2021-02  2021-08  2022-02  2022-08  2023-02  2023-08
    2020-03  2020-09  2021-03  2021-09  2022-03  2022-09  2023-03  2023-09
    2020-04  2020-10  2021-04  2021-10  2022-04  2022-10  2023-04  2023-10
    2020-05  2020-11  2021-05  2021-11  2022-05  2022-11  2023-05  2023-11
    2020-06  2020-12  2021-06  2021-12  2022-06  2022-12  2023-06  2023-12
    

7.4 参数展开

  • echo $USER用户名展开

  • pinrtenv查看可展开的变量

  • 将命令作为参数展开

    echo $(ls -l /usr/bin)

  • 查看过滤后的文件的属性

    file $(ls /usr/bin/* | grep zip)

7.5 控制展开

7.5.1 双引号

  • 如果你把文本放在双引号中,shell 使用的特殊字符,都失去它们的特殊含义,被当作普通字符来看待。有几个例外:$,\ (反斜杠),和 ‘(倒引号)

  • 单词分割、路径名展开、波浪线展开和花括号展开都将失效

    • echo this is a test

      this is a test

    • echo "this is a test"

      this is a test

  • 然而参数展开、算术展开和命令替换仍然执行

    • echo "$USER $((2+2))"

      lux 4

7.5.2 单引号

  • 禁止所有的展开

  • echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

    text /home/lux/test.txt a b foo 4 lux

  • echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"

    text ~/*.txt {a,b} foo 4 lux

  • echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'

    text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

  • \转译字符,可以消除特殊字符的含义,但是在单引号中转译字符也没用

PART8——键盘使用技巧

  • clear清空屏幕
  • history历史命令

8.1 命令窗口快捷键

8.1.1 移动光标

快捷键描述
Ctrl+a移动光标到行首
Ctrl+e移动光标到行尾
Alt+f向前移动一个字
Alt+b向后移动一个字

8.1.2 剪切/粘贴文本

快捷键描述
Ctrl+k剪切光标到行尾
Ctrl+u剪切光标到行首
Ctrl+y粘贴到光标处

8.2 历史命令

  • history查找历史命令

  • history | grep /usr/bin查找历史命令中与/esr/bin相关的命令

    2051  file $(ls /usr/bin* | grep zip)2052  ls /usr/bin*2053  file $(ls /usr/bin* | grep x)2054  file $(ls /usr/bin* | grep zip)2069  history | gerp /usr/bin2070  history | grep /usr/bin2071  ls /usr/bin*2072  history | grep /usr/bin
    
  • ! 2052即可执行对应的命令

PART9——权限

  • id显示用户身份号
  • chmod更改文件模式
  • umask设置默认的文件权限
  • su以另一个身份来运行shell
  • sudo以另一个用户的身份来执行命令
  • chown更改文件所有者
  • chgrp更改文件组所有权

9.1 读取/写入/执行权限

  • ls -l test.txt

    -rw-rw-r-- 1 lux lux 6 2月 20 10:55 test.txt

  • 前10个字符解析

    第一个:

    符号意义
    -普通文件
    d一个目录
    l一个符号链接
    c一个字符设备文件
    b一个块设备文件

    剩余9个(文件模式):

    代表着文件所有者、文件组所有者和其他人的读、写和执行权限

    可以用rwx来表示,刚好三位可以用八进制表示:

    7->rwx 1->x 2->w 4->r

    所以之前用的chmod 777 test.txt就是将所有者、文件组所有者和其他人组的权限都设置为可读写执行

    u代表文件所有者

    g代表文件所属组

    o代表其他所有者

    chmod u+x test.txt 给文件所有者添加可执行权限

    chmod u-x test.txt 给文件所有者删除可执行权限

    以此类推

9.2 umask设置默认权限

  • umask 022
  • 掩码中若出现一个数字 1,则删除文件模式中和这个 1 在相同位置的属性

9.3 su/sudo

9.4 chown/chgrp

9.5 更改用户密码

  • passwd [user]修改密码

PART10——进程

  • ps
  • top
  • jobs
  • bg
  • fg
  • kill
  • killall
  • shutdown

…未完待续

上一篇:Netty学习笔记1

下一篇:java的remove方法

相关内容

热门资讯

什么是友谊的定义? 什么是友谊的定义?君子之交淡如水朋友没有定义,和你义气相投的就是你的朋友!
君子兰夏季养护方法 君子兰夏季养护方法 君子兰 夏季养护时,需要将其放在散光充足的环境中,以免强光灼伤叶片,也需...
介绍一下巴萨飞翼阿尔维斯。 介绍一下巴萨飞翼阿尔维斯。一个边前锋。具有边前卫技术的边后卫,在巴萨阵中经常作为边锋使用的边后卫~我...
用名字做一副对联 用名字做一副对联爷爷八十生日,想写副含他名字的对联送给他,请各位大神帮帮忙,爷爷名字是仕仁,希望是比...
请问魔幻手机第二部什么时候开放 请问魔幻手机第二部什么时候开放知道的请告诉下我`我好想看`谢谢`2009年2月份开机,2009年10...
穿越电视剧 宫 的原版小说是什... 穿越电视剧 宫 的原版小说是什么穿越电视剧 宫 的原版小说是什么我的野蛮王妃
如果男人敢背叛感情,多年以后通... 如果男人敢背叛感情,多年以后通常会有哪种结局?多年以后男人结局并不会特别的好,很多时候他们都会后悔的...
有个男人说他从来不看电视,只看... 有个男人说他从来不看电视,只看电影。他是什么性格?以前吵架时,那种无处可去的茫然与痛苦,女人有个自己...
一字之差,劳动关系和劳务关系大... 转自:中国妇女报  □ 吴亚轩  宋涛是通达公司的员工,因其公司不承认与自己存在劳动关系,导致其相应...
稻果飘香两岸情 转自:团结报  □ 张 璐  仲夏时节,走进广东广州从化区太平镇井岗村,鲜红欲滴的井岗红糯荔枝压弯枝...