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
MAIL
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]

原创粉丝点击