别人的Linux私房菜(11)认识与学习BASH
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光标移动到命令行最后
显示部分环境变量:
变量要求:
等号赋值,英文字母或者数字,字母开头。使用双引号,内的$后加变量。使用单引号内的变量为字符串常量。
``和$可以用于额外命令执行如 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
$本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一个参数,并完成全部显示
-,做标准输入或输出使用,代替文件名
别人的Linux私房菜(11)认识与学习BASH的更多相关文章
- 别人的Linux私房菜(13)学习Shell脚本
CentOS6.x以前版本的系统服务启动接口在/etc/init.d/目录下,存放了脚本. Shell脚本因调用外部命令和bash 的一些默认工具,速度较慢,不适合处理大量运算. 执行方式有:直接命令 ...
- 鸟哥的linux私房菜——第五章学习(Linux的文件权限与目录配置)
******************第五章学习****************** 1.[重要的三个概念] 1).文件拥有者(使用者):User,该文件/文件夹只能我来读写: 2).群组:Group, ...
- 《鸟哥的Linux私房菜》部分章节学习笔记整理
简介 此笔记为<鸟哥的Linux私房菜·基础学习篇>中部分章节的学习笔记. 目录 0 计算机概论 1 Linux是什么与如何学习 2 主机规划与磁盘分区 3 安装CentOS7.x 4 首 ...
- 别人的Linux私房菜(14)Linux账号管理和ACL权限设置
用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...
- 别人的Linux私房菜(17)进程管理与SELinux初探
程序在磁盘中,通过用户的执行触发.触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限. PID和登陆者的UID/GID有关.父进程衍生出来的进程为子 ...
- 别人的Linux私房菜(23)软件安装RPM、SRPM、YUM
RPM(RedHat Package Manager),不同Linux发行版发布的RPM文件甚至不同版本,不通用. SRPM为Source RPM,所提供的软件内容没有经过编译,格式为xxx.src. ...
- 别人的Linux私房菜(22)软件安装:源代码与Tarball
执行make,会在当前目录查找makefile文本文件(记录了源代码如何编译的详细信息). 内核相关的函数信息放置在/usr/lib./usr/lib64里. 在Tarball(一般为xxx.tar. ...
- 别人的Linux私房菜(20)启动流程、模块管理与Loader
系统启动时,首先加载BIOS,通过BOIS读取COMS的硬件信息,进行自我检测,取得第一个可启动的设备(多个根据设置有关). 读取并执行设备内的MBR启动引导程序,引导程序调用boot sector中 ...
- 别人的Linux私房菜(19)认识与分析日志文件
日志文件通常只有root可以读取,解决系统和网络方面的问题. /var/log/boot.log本次开机系统检测和启动硬件,和内核支持的相关功能的信息记录. /var/log/cron计划任务有没有被 ...
随机推荐
- word文档内容如何防止被复制
word2016 审阅->限制编辑->1格式设置编辑 and 2编辑限制->3是,启动强制保护->输入秘密
- c# word操作篇,解决字符串长度超过255就不能替换的问题
本文使用的是Microsoft.Office.Interop.Word组件,必须在系统安装了office相关组件的条件下进行,在com里面找到Microsoft Word 16.0 Object L ...
- python3文件的读写操作
open函数:对文件进行读写操作前,先打开文件,获取文件的句柄: open(file, mode, encoding, buffering) 参数说明 file_name:一个包含了你要访问的文件路径 ...
- C程序设计第一次实验报告
C程序设计实验报告 实验项目: 1.字符与ASCII码 2.运算符与表达式的运用 3.顺序结构应用程序 4.数学函数的算法描述 5.鸡兔同笼的算法描述 6.确定坐标的运算描述 姓名:王煜 实验地点:教 ...
- ssh服务器配置
使用如下终端命令可以在 Linux 主机中安装 ssh服务器sudo apt-get install openssh-server lin@lin-machine:~$ sudo apt-get in ...
- HTML5-canvas1.0
HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图形容器,您必须使用脚本来绘制图形.你可以通过多种方 ...
- XAMPP与本地Mysql冲突解决方法
1.更改regeit目录 https://blog.csdn.net/sinat_37633633/article/details/77645463 2.更改配置文件my.ini (1)https:/ ...
- MySQL中Checkpoint技术
个人读书笔记,详情参考<MySQL技术内幕 Innodb存储引擎> 1,checkpoint产生的背景数据库在发生增删查改操作的时候,都是先在buffer pool中完成的,为了提高事物操 ...
- Linux:sudo,没有找到有效的 sudoers 资源。
首先,这是因为用户的权限不够导致的. 使用 ls -l /etc/passwd 查看所有用户及权限.只有可读权限(r),说明用户的权限不够. 因此,我们可以用以下方法修改用户权限: 1. su roo ...
- 使用idea生成maven项目的jar包(转)
第一步 第二步 第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651