随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

Linux 认识 BASH 这个 Shell

在 Bash 中的每个指令都被记录到 ~/.bash_history 文件中了,包括密码等关键信息

要注意的是,它里面只包含了上一次登录前所执行过的指令,本次开机后执行的指令暂存在内存中,注销系统后才会记录到 ~/.bash_history 中

history 这个命令可以用来查询历史下达的指令, history -c;history -w  组合起来可以清除历史指令,防止指令泄露

!! 就是执行上一个指令

!number 执行第几笔指令的意思

!command 由最近的指令向前搜寻“指令串开头为 command" 的那个指令,并执行

 

alias  命令别名设定功能

type  可用于区分命令是内建在 bash 中还是外部指令

\ 可以让命令换行接着输入

 

echo $变量 可以输出变量的值,也可以加上 { } ,echo ${变量}  

如果需要给变量赋值,直接 变量=值 即可,不需要加 $ 也不需要加 ", = 两边不能有空格

未赋值的变量,输出的内容是空的

变量不能是数字开头,变量必须由字母与数字组成

变量的内容可以用 “” 或 ‘’ 包括起来,但 双引号内的特殊字符,还是会转义,单引号的会原样输出

  比如 "lang is $LANG" 输出内容是 lang is C.UTF-8

在不加“” 时,\ 后面可以加 回车、$、\、空格、' 等,变成一般字符

  $(指令) 或反单引号 `指令` 可以包含指令 并被执行

${变量} 或 "$变量" 可用于自增 PATH="$PATH":/home/bin  、PATH=${PATH}:/home/bin

  若该变量需要在其他子程序执行,则需要以 export 变量 来使变量变成环境变量

通常大写字符为系统默认变量,自行设定变量建议使用小写字符,便于区分

  取消变量的方法为 unset 变量

 

 

使用 env 可以查看环境变量( environment 环境的简写 )

 

 each $RANDOM 会随机输出 0 ~ 32767 之间的数值

set 会输出环境变量、以及其他在 bash 内的变量,信息很多

echo $PS1 会输出命令提示符的设定

 

 echo $$  输出 shell 的PID

echo $?  输出上一指令的错误代码,0 表示无错误

OSTYPE \ HOSTTYPE \ MACHTYPE 主机硬件与核心的等级

 

开启多个 bash 时,最后一个 bash 才会执行,之前的 bash 进入 sleep 状态。

当运行中的 bash 退出后,前一个 bash 会被唤醒

子程序仅会继承父程序的环境变量,子程序不会继承父程序的自定义变量

使用 export 变量  就可以把变量加入 环境变量

locale -a  命令可以查看当前系统支持多少语系

 

上面的命令可以临时将系统语系切换成英文,方便网页显示默认英文

 环境变量 可以理解为 全局变量  自定义变量 可以理解为 局部变量

read 变量 可以开始一行接收输入

read -p 提示文字  可以开始一行文字并接收输入

read -t 30 如果30秒内无动作,该指令就自动略过

 

declare / typeset 如果没有参数,和 set 一样,会输出所有变量名称与内容

 

 

 

 ulimit 磁盘配额,想要复原 ulimit 的设定最简单的方法就是注销再登录

 

 变量的修改删除说明:

 

 

 如果想要了解指令搜寻的顺序,可以透过 type -a ls 来查询:

alias echo='echo -n'

type -a echo

以上命令会输出 echo  的执行顺序

 

source 读入环境配置文件的指令, . (小数点) 也有一样的作用

还有一些组合键命令如下:

 

 通配符与特殊符号

 

 

数据流重导入,在输出导向时  > 会自动创建文件,如果文件存在则覆盖, >> 则不会覆盖原文件,而是累加到最后面。

 

 

将正确输出与错误输出到同一文件中时,可以使用 2>&1  或者 &> list 命令

/dev/null  垃圾桶黑洞,输出到这个位置的信息会被”吃掉“


 命令执行的判断依据:   ;,&& ,||

cmd1 ; cmd2  依次执行完 cmd1 然后 cmd2

$? 指令回传值 与  && 或 ||

 

 管线命令 | 仅能处理经由前面一个指令传来的正确信息,也就是 standard output 的信息,对于 standard error 并没有直接处理的能力。

echo ${PATH}

echo ${PATH} | cut -d ':' -f 5 取第5组路径

echo ${PATH} | cut -d ':' -f  3,5 取第3、5组路径

或者截断字符

export

export | cut -c 12-  取第12个字符开始的内容

或者取某一分组

last

last | cut -d ' ' -f 1 取第一列信息

以上是 cut 的用法,grep 是用来分析一行讯息:

 

sort 排序

cat /etc/passwd | sort 将输出按首字母排序

cat /etc/passwd | sort -t ':' -k 3 按以 :分隔的第三列排序

cat /etc/passwd |sort -t ':' -k 3 -n 按数字排序

last | cut -d ' ' -f1 | sort 将输出的数据仅取第一列,并加以排序

 

uniq 筛选重复

last | cut -d ' ' -f1 | sort | uniq 将结果进行去重处理

last | cut -d ' ' -f1 | sort | uniq -c 将结果去重处理,并显示重复次数

 

wc 计算输出信息的 行数、字数、字符数

cat /etc/man_db.conf | wc

 

 

 tee 双向重导向

 

 last | tee last.list | cut -d ' ' -f1  将内容输出到 last.list 和屏幕

ls -l /home | tee ~/homefile | more 将内容输出到文件和屏幕

ls -l /home | tee -a ~/homefile | more 将内容输出到文件和屏幕,文件如果已存在,累加到最后

 

字符转换命令: tr col join paste

last | tr '[a-z]' '[A-Z]'  将输出的信息里 a-z 转换成大写的 A-Z

cat /etc/passwd | tr -d ':'  加了 -d 参数,表示将输出的信息里 ':' 字符去掉

cat -A /etc/man_db.conf  加了 -A 参数,显示出所有的特殊按键

cat /etc/man_db.conf | col -x | cat -A | more 使用 col -x  将结果集中的 【tab】替换成空格键

 

join -t ':' /etc/passwd /etc/shadown | head -n 3  按 : 分隔,合并 XX 和 XX 文件的前三行

需要注意的是,在使用 join 之前,文件最好经过排序 sort 处理,否则比对可能被略过。

 

 

paste 与 join 相比,它是用来将两行贴在一起,中间以 [tab] 隔开,不判断两个文件的数据相关性

split 分割文件(分区命令)

split -b 300k /etc/services services  将文件分成 300K 一个(实际的文件名将是 servicesaa servicesab servicesac ...)

split -l 300 ....  将文件按 300行一个文件来分割

如果要把它们再合并起来  cat services* >> servicesback 即可

 

posted on   z5337  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-07-19 [转][C#].net依赖注入
2017-07-19 [Android] 开发第九天
2017-07-19 [Android] 开发第八天
2016-07-19 [C#][.net 4]Task 代码示例
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示