Linuxnotes: bash shell1
来源:互联网 发布:图片动态特效制作软件 编辑:程序博客网 时间:2024/05/29 14:25
shell: 用户操作系统的一个接口
bash:是linux默认的shell
bash的功能
- 查询过去命令: 使用过的命令全部记在/root/.bash_history里
- 补全命令或文件:[tab]
- 命令别名配置:alias,leg:alias lm=’ls -al’ 输入alias查看被更改过的命令
1.变量
a,变量的取用
echo $variable
echo $PATH
b,配置
variable=’variable content’ #变量内容有空格或特殊符号时用‘’或“”或 {},
name=daxia
namemore=”name is me”
namemore=’name is me’ #“”可保留定义的内容中包含的变量的原有内容,而‘’只有字符串
name=${name}export PATH #把变量变为环境变量,
export #把所有环境变量列出unset variable #取消变量名的配置
Tip1: 一串命令中‘前的会先运行并打印运行结果
Tip2: 可以将常用的工作目录保存成变量
work = “/home/haoren/temp”
cd $work
c, 环境变量的功能
env #显示环境变量
set #显示所有变量
HOME
SHELL
HISTSIZE
PATH
LANG
RANDOM # 通过$RANDOM取随机数echo $? 上个命令的回传值,若有错,返回错误编号,无错 返回0
d, 变量的有效范围
启动一个shell时,进入子程序,父程序自定义的变量在export成为环境变量,之后才能使用。
e, 变量键盘读取read,数组array, declare
—read -p “Please enter your name:” -t 30 variable name
$显示-p后的文字,并等30s之后自动忽略declare -a(array) -i(integer) -x(export) -r(read only 不能更改以及unset)
$如果不需要字符串变量就需要declare; 若设为read only则需要注册在登录才能恢复原来变量类型—配置数组:
var[1]=”hello”
var[2]=”world”
var[3]=”yo”
echo “${var[1],var[2],var[3]}”
??????????????????
—ulimit 限制用户的系统资源
ulimit -f 10240
用户只能创建10MBytes以下容量的文件
f, 变量的删除,取代,替换
删除
echo ${variable#/*delete content:}
echo ${variable%*delete content bin}
从前往后#(后往前%)删除满足delete content,从”/”到“:”的最短#或%(最长#或%)的内容。
取代
echo {variable/old_content/new_content}
取代第一个
echo${variable//old_content/new_content}
取代所有
变量别名设置
alias new=old
unalias new #取消
历史命令history
history -n #列出最近n条命令
!66 运行第66个命令
!! 运行上一个
$同时开多个窗口运行bash时,只有最后一个会被写入~/.bash_history
Bash进站欢迎信息
修改/etc/issue, /etc/motd
\d 本地端时间的日期;
\l 显示第几个终端机接口;
\m 显示硬件的等级 (i386/i486/i586/i686…);
\n 显示主机的网络名称;
\o 显示 domain name;
\r 操作系统的版本 (相当于 uname -r)
\t 显示本地端时间的时间;
\s 操作系统的名称;
\v 操作系统的版本。
Bash环境配置文件
自定义变量在bash logout后会消失,要保留配置,需要把配置写入配置文件
login shell 取得bash时需要的完整登录流程
login shell会读取如下文件
/etc/profile #配置PATH; MAIL;USER;HOSTNAME;HISTSIZE等变量,并呼叫外部配置数据,如下
/etc/inputrc
/etc/profile.d/.sh #可在该目录下创建.sh 文件给所有使用者*共享命令别名~/.bash_profile #该文件存在,就不会读取以下两个
~/.bash_login #存在就不读取下一个
~/.profile
一般login时取loginshell,读取配置文件。若要不注销登录直接读取配置文件利用source
source 配置文档名 #将文件配置读入当前环境中
bash通配符
*代表『 0 个到无穷多个』任意字符
? 代表『一定有一个』任意字符
[ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如[abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』
[ -] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9之间的所有数字,因为数字的语系编码是连续的!
[^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如[^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。
Standard output & Standard error output > and >>
stdin: 标准输入, < 或 <<
stdout: 标准输出,> 或 >>
stderr: 标准错误输出 2> 或 >>
ll/
#根目录下所有文件信息
ll/> ~/rootfile
# 屏幕信息被导入到rootfile中
ll/>> ~/rootfile
#>>表示累加
$ find /home -name.bashrc>list_right2>list_error
#分开列出
standard input < and <<
cat > catfile
#读取键盘输入放在catfile文件中
cat > catfile <~/bashrc
#用文件取代
&& ||
cmd1&&cmd2 #1正确才运行2
cmd1||cmd2 #1错误才运行2
ls /tmp/abc||mkdir /tmp/abc && touch /tmp/abc/hehe #不存在就创建
注意是从左到右顺序执行
cut
主要作用在于同行的分解
echo $PATH |cut -d ':' -f 3,5
取出PATH中以:分隔的字符中的第3到第5个
cut -c
表示格式化的输出
grep
按行分析信息
last | grep 'root'
# 取出last中有root的那一行
last | grep -v 'root'
#last中没有root的那一行
好多啊。。TBC
排序
sort
sort [-fbMnrtuk] [file or stdin] number(按照第几栏排序)#各种排序
uniq
让排序的结果只显示一个
last|cut -d '' -f1|sort|uniq
wc
计算信息整体数据: 行,列,字符
cat /etc/passwd |wc -l #列出账号文件中的文件数
tee
用>导入数据流时,把数据流中处理过程中某段信息存下来
tee [-a] file
#把数据累加到file中
字符转换命令:tr,col, join,paste,expand
tr
删除或文字信息替换
last | tr '[a-z]''[A-Z]'
#所有小写替换成大写
cat /etc/passwd | tr -d ':'
#删除所有:
col
-x :将 tab 键转换成对等的空格键
-b :在文字内有反斜杠 (/) 时,仅保留反斜杠最后接的那个字符
expand
expand -t number
#把expand换成number个空格(标准是八个)
join
两文件有相同部分,即累加在一起
join [-ti12] file1 file2
head -n 3 /etc/passwd /etc/shadow
可以观察,两文件第一字段开头相同,即可用join合并
join -t ':' /etc/passwd /etc/shadow
paste
直接把两行粘在一起,用tab隔开
paste [-d] file1 file2
split
把大文件分割成小文件
split -b 300k /etc/temp temp
# 把temp文件分割成以300k为单位的文件,前导名为temp(split后会自动编号)
cat temp* >>temp
#把分开的小文件合并成一个temp
xargs 参数替换
读入stdin 数据, 用空格作为分隔 生成argument
xargs [-0epn]
- Linuxnotes: bash shell1
- shell1
- shell1
- shell1--变量定义
- shell1--变量2
- linux课堂笔记--shell1之变量
- bash
- .bash
- bash
- bash
- bash
- bash
- bash
- Bash
- Bash
- bash
- bash
- Bash
- javaseday22补充(file file的常见方法 遍历文件夹 后缀过滤器 )
- 流媒体开发: RTP协议全解析(H264码流和PS流)
- java语言实现:写一个函数,使字符串倒序
- Spring Boot全局支持CORS(跨源请求)的配置方法
- Spring中@Autowired和@Resource的区别
- Linuxnotes: bash shell1
- SLAM学习--非线性优化
- springboot 使用CGLib 方式实现AOP代理
- ActiveMQ 的安装与使用(单节点)
- 6.表格
- linux下如何利用gdb调试汇编代码
- Core 2.0 的dll实时更新、https、依赖包变更问题及解决
- cassandra 获取int型数据问题
- Spring Cloud之 Spring Cloud Config(一)