标签:txt 路径 需要 完整 bash 判断 variable 替代 conf
In unix terminology, the short answer is that
控制台,终端和tty联系密切。最初,它们代表一台可以与计算机进行交互的设备:在unix的早期,它代表(teleprinter)电传打字机-外形类似打印机,也叫teletypewriter,或者缩写为"tty"。“终端”是从电子的角度看,“控制台”是从设备的角度看。在unxi的最初阶段,键盘和显示器成为终端的标准。
而shell,在unix系统管理中,一个用户的shell是指他们登录时被调用的程序。普通用户拥有一个命令行shell,但限制权限的用户会拥有一个restricted shell或者只能运行特定命令的shell(如仅用于文件传输的账户)。
所以我的个人理解是,shell是系统管理中真正的“中间件”,它接收来自终端等的信号输入,调用内核提供的函数等帮助我们与系统进行交互。所以说shell接受来自用户的指令,来与核心进行沟通,比较常见的是命令行界面的shell,当然也有图形界面等的。它自身也就是一个程序,特性是它能调用其他程序。
最初的shell是Bourne SHell(sh),过后的其他shell基本都是按这个来的,包括当前linux使用的Bourne Again SHell(bash),是该原始版本的增强版。
简单看一下我们的/etc/shells下的几种可用的shell。linux默认使用的是/bin/bash。/bin/sh已经被/bin/bash所替代了。
bash指令的类型有三种,file表示为外部命令,alias表示别名,builtin表示bash内置的命令功能。该指令是为了找出“执行文件”而不是一般的文件名。
-a 可以查看执行的查找循序,-t 表示类型
shell环境变量可以理解为全局变量,就是子程序也可以获取到,还有一种是自定义变量相当于是局部变量。
alias lm=‘ls -l | more‘
history
!number 表示执行第number条命令
!! 执行上一条命令
!al 执行最近以al开头的命令
大概流程如下
ctrl+C | 终止当前的命令 |
ctrl+D | 输入结束(EOF) |
ctrl+M | 就是enter |
ctrl+S | 暂停屏幕输出 |
ctrl+Q | 恢复屏幕输出 |
ctrl+U | 当前命令行清空 |
ctrl+Z | 暂停当前命令 |
符号 | 内容 |
# | 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行 |
\ | 跳脱符号:将『特殊字符或通配符』还原成一般字符 |
| | 管线 (pipe):分隔两个管线命令的界定(后两节介绍); |
; | 连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同) |
~ | 用户的家目录 |
$ | 取用变量前导符:亦即是变量之前需要加的变量取代值 |
& | 工作控制 (job control):将命令变成背景下工作 |
! | 逻辑运算意义上的『非』 not 的意思! |
/ | 目录符号:路径分隔的符号 |
>, >> | 数据流重导向:输出导向,分别是『取代』与『累加』 |
<, << | 数据流重导向:输入导向 (这两个留待下节介绍) |
‘ ‘ | 单引号,不具有变量置换的功能 |
" " | 具有变量置换的功能! |
` ` | 两个『 ` 』中间为可以先运行的命令,亦可使用 $( ) |
( ) | 在中间为子 shell 的起始与结束 |
{ } | 在中间为命令区块的组合! |
标准输入stdin,代号是0,使用<或者是<<
标准输出stdout,代号是1,使用>或者是>> 前者表示覆盖输出,后者表示增加输出
标准错误输出stderr,代号是2,使用2>或者是2>>
输出重定向意义是将命令数据输出内容输出到指定的文件或者设备上。这与后面管道符号的意义是不同的,管道改变输入输出是为了程序之间的内容传递。
find /home -name .*c > list 2> list_err 将找到的不同结果存放在不同的文件内
find /home -name .*c >list 2>&1
find /home -name .*c &>list 这两者都表示同时输出到list中
cat > catfile <~/.bashrc 用stdin替代键盘输入以创建新的文件
cat > catfile <<"eof" 当输入到eof关键字就可以终止输入了
命令之间加上 ; 表示不考虑关联性连续命令执行
命令之间加上 && 或者 || 表示有一定的逻辑关系
使用 | 将前一个命令的stdout变为后一个命令的stdin,管道命令仅会处理stdout但是对于std err 会忽略,必须能够接受来自前一个命令的数据成为stdin继续处理才行。
cut 【-dfc】
-d 分隔符 与 -f 一起使用
-f 切割后选择第几段,从1开始
-c n1-n2 取出字符区间【n1,n2】,n2可以不写
grep 【-acinv】【--color=auto】‘char‘ filename
wc 行数,字数,字符数
tee 双重定向,将相同的内容一份导向file,一份导向了屏幕
last | tee last.txt | more
- 减号,可以用来代替上一个命令的stdout的内容作为这次的stdin
标签:txt 路径 需要 完整 bash 判断 variable 替代 conf
原文地址:https://www.cnblogs.com/GrimReaper/p/9251877.html