首页 技术 正文
技术 2022年11月18日
0 收藏 627 点赞 3,736 浏览 4689 个字

Linux下使用BASH   Bourne Again Shell        另外一种由用于Unix的伯克利大学的Bill Joy设计的C Shell

系统中合法的shell会写入到/etc/shells文件,便于其他用户登录设置。

用户登录后取得的shell记录在/etc/passwd这个文件内

命令记录在.bash_history,为上一次登录执行的命令。bash-completion软件可以使用选项参数补齐。【tab】

查询命令是否为bash的内置命令: -t 显示命令的意义(外部,别名,shell命令)  -a由path定义的路径

如:type ls    type -t ls ; type -a ls;type cd

ctrl +u向前删除命令行ctrl+k向后删除命令行

ctrl+a光标移动到命令行最前   ctrl+e光标移动到命令行最后

显示部分环境变量:

别人的Linux私房菜(11)认识与学习BASH

变量要求:

等号赋值,英文字母或者数字,字母开头。使用双引号,内的$后加变量。使用单引号内的变量为字符串常量。

“和$可以用于额外命令执行如  version=$(uname -r)或version=’uname -r’

想要知道每个和crontab相关的文件名的权限:ls -ld `locate crontab`

使用转义字符\将回车$\空格‘等转换为一般字符

变量如果需要在其他子程序执行则需要export使变量变为环境变量。 export PATH

取消变量的办法为unset 如:unset myname

在PATH中累加路径:PATH=”$PATH”:/home/        PATH=${PATH}:/home/

在变量中累加变量:name=“$name”yes    name=${name}yes

进入字进程bash   退出exit   在子进程中调用父进程的变量使用export

子进程仅继承父进程的环境变量,所以自定义变量需要export将变量放入子进程

在~/.bashrc配置文件中有用户定义的变量别名,可以使用。

列出shell中所有环境变量和内容:env,如主机名,类型,条数,shell,使用者,语系,账号登录名等

用set观察环境变量和自定义变量:set

获得随机数:declare -i number=$RANDOM*10/32768;echo $number

PS1提示字符的命令行设置:具体的转义可以man bash

别人的Linux私房菜(11)认识与学习BASH

别人的Linux私房菜(11)认识与学习BASH

$本shell的PID(Process ID)echo $$

?上次执行命令的返回值,正确执行返回0

显示支持语系:locale -a

显示当前编码:locale。设置编码只需要设置LC_ALL和LANG即可。

系统默认语系的位置:/etc/locale.conf

read读取来自键盘的变量。如:read  atest

-p加入提示字符,-t等待输入的秒数。如:read -p “input:” -t 30 named

declare和typeset相同,声明变量的类型。如显示变量名:declare

将后面的变量定义为-a数组,-i整数-r只读。-x变量成为环境变量

如 declare -i sum=100+200等echo $sum

限制用户使用系统单资源:ulimit

-a所有,-f建立最大的文件容量

如列出所有限制额度:ulimit -a

如限制建立文件的大小:ulimit -f 10240 一般用户身份只能缩小建立的大小,不能增大

删除变量中的字段:

#删除变量从头开始符合要求的最小变量段

##删除变量从头开始的符合要求的最大变量段

如:echo {path#/*:}删除了环境变量中的第一个路径

echo {path#/*:}剩下了环境变量中的最后一个路径(介于斜线和冒号之间)

%删除变量从尾开始符合要求的最小变量段

%%删除变量从尾开始符合要求的最大变量段

/   /将旧字符串的第一个替换为新字符串

//    /将旧字符串全部替换为新字符串

如:echo {$path/sbin/SBIN}和echo {$path//sbin/SBIN}

此外还有:-将不存在的变量替换为新变量,存在则不变:username=${usernae-root}

此外还有:: =不论存在与否都替换。?旧变量不存在告知信息:var=${str?noThis}

命令别名设置:alias lm=‘ls -al | more’

取消别名:unalias lm

显示所有输入过的命令:history

-c全部清除 -a新增入histfile,若没有则增如入~/.bash_history -w写入文件 -r读取那个文件

记录的数据条数和bash的HISTFILESIZE大小有关

!239执行第239条命令          !!执行上一条命令             !al执行最近的以al开头的命令

~/.bash_logout显示退出时间

bash执行命令时的路径查找顺序:以相对路径查找,通过alias查找,通过bash内置命令,通过PATH查找第一个

如:type -a echo可以查看echo的顺序

bash的欢迎信息在/etc/issue中,/etc/issue.net提供了telnet远程登录的欢迎信息。

而用户登录后的欢迎信息在/etc/motd中。所有一般账户和root登录后显示

bash启动时会读取配置文件,包括全局系统配置文件,个人偏好配置文件。

每个用户登录后,系统的整体设置:/etc/profile,主要有BASH、MAIL、USER、HOSTNAME、HISTSIZE、umask等

之后该文件调用其他文件,如/etc/profile.d/*.sh(别名,颜色等)     /etc/locale.conf(语系)    /usr/share/bash-completion/completions/*

用户个人设置:~/.bash_profile或~/.bash_login或~/.profile之一。按顺序选择读取

(会调用  ~/.bashrc)

source命令或.命令读入配置文件,如:source ~/.bashrc      .  ~/.bashrc

non-login shell(如bash子进程)仅会读取~/.bashrc

以上都会调用/etc/bashrc,定义出在不同UID下的umask,PS1,/etc/profile.d/*.sh的设置等

/etc/man_db.conf#man page路径到哪里寻找

~/.bash_history#历史命令文件

~/.bash_logout#注销bash后执行完里面的操作再离开

终端的环境设置

stty -a列出所有按键与按键内容(快捷键)

如intr 中断,quit退出,erase向后删除,kill删除命令行,eof结束输入,start重启输出,stop停止输出,等

如stty erase ^h(ctrl h)

一些变量利用set来显示,如显示所有设置的值:echo $-

-u未设置的变量显示错误信息,-x命令显示前会显示++提示等

如:设置:set -u   取消设置:set +u

通配符号与特殊符号:

*多字符          ?一字符            []一定有一个在内           [-]顺序内的所有     [^]反向选择

&将任务变成后台任务的命令

标准输入,代码0:<    <<

原本由键盘输入的数据改由其它,

如创立文件并写入信息:cat >catfile  [ctrl +d 退出]。

创立文件把文件bashrc写入:cat >files < ~/.bashrc

<<为结束的输出字符设置,如cat >catfile <<“eof”

标准输出,代码1:>    >>

如ll  /  > ~/rootfile 将正确的输出信息存入文件,若使用>>则为新增效果

标准错误输出,代码2:2>    2>>

如:find /home –name .bashrc > list_right 2>list_error,将输出数据分别显示

将错误和正确信息写入一起:find /home –name .bashrc > list 2>&1或find /home –name .bashrc &> list

垃圾桶设备,/dev/null

如:find /home –name .bashrc 2>/dev/null则只显示正确的数据。

连续命令执行的特殊字符

;连续执行的命令

&&前命令执行正确则执行后命令

||前命令执行错误则执行后命令

|管道命令

仅处理标准输出     后接能接受标准输入的命令如:less,more,head,tail,而不能是ls cp mv

选取命令将数据一行一行分析,cut和grep

cut  -d加入分隔字符  -f根据-d的分隔字符将信息划分数段  -c以字符单位取出固定字符区间  –color=auto颜色特殊显示

如:echo ${PATH} |cut -d ‘:’ -f 3,5#列出第三和第五段数据

如:export | cut -c 12- #取出每行的第12到最后字符

grep -c找到次数  -i忽略大小写  -n输出行号  -v反向选择

如:last 输出信息中,取出没有root的每行  last | gerp -v “root”

排序命令:sort

sort  -n使用纯数字排序  -t分隔符号设置(默认tab)    -k排序区间选定等(默认字符排序)

如:cat /etc/passwd | sort

如:cat /etc/passwd | sort -t ‘:’ -k 3以:作为分隔符用第三列进行排序

uniq  计数命令 -i忽略大小写,-c进行计数

如:last | cut -d ‘  ’ -f1  | sort  | uniq -c 计数每个人的登录总次数

wc计算输出信息的整体数据 ,-l输出行,-w字母数,-m字符数

如:cat /etc/man_db.conf | wc

tee双向重定向,转存文件,-a累加方式

ls -l / | tee -a ~/homefile | more #将文件数据显示到屏幕并转存一份到文件

tr删除或替换文字        -d加删除字符,-s替换重复的字符

如:last | tr ‘[a-z]’ ‘[A-Z]’    #小写变大写

如:cat ~/passwd | tr -d ‘\r’ > ~/passwd.Linux#将/r去掉,即dos2unix,并另存

col   -x将tab按键,转换为空格

如:cat /etc/man_db.conf | col -x | cat -A  | more #转换并显示结果,包括特殊按键

join处理两个文件之间的数据,将相同一行加在一起

-t 分隔字符  -i忽略大小写  -1  第一个文件栏位,-2第二个文件栏位

如:join -t ‘:’ /etc/passwd /etc/shadow | head -n 3 相同合并并选前三行显示

如:join -t ‘:’ -1 4 /etc/passwd -2 3 /etc/shadow | head -n 3 自定义合并并显示

合并前应排序

paste将两行贴在一起,tab分隔开 -d选择分隔符

如:paste /etc/passwd /etc/shadow#合并

expand 将tab转为空格 -t 指定替换为空格的个数

如:grep ‘^MANPATH’ /etc/man_db.conf | head -n 3 | expand -t 8 – |cat -A#其中的file写成了-,为标准输入数据。

split划分命令:-b加划分文件大小  -l以行数来划分。

如:cd /tmp; split -b 300k /etc/services newfile#划分后出现newfile[a-z]等

将文件合并:cat newfile* >> newfile.back

又如:ls -al / | split – l 10 – lsboot#以行数划分

xargs参数,产生某个命令的参数个数,-n加次数 -p询问 等

如:id root;

cut -d ‘:’ -f 1 /etc/passwd | head -n 3 | xargs -n 1 id #一次给予id一个参数,并完成全部显示

,做标准输入或输出使用,代替文件名

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,999
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,357
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,140
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848