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的更多相关文章

  1. 别人的Linux私房菜(13)学习Shell脚本

    CentOS6.x以前版本的系统服务启动接口在/etc/init.d/目录下,存放了脚本. Shell脚本因调用外部命令和bash 的一些默认工具,速度较慢,不适合处理大量运算. 执行方式有:直接命令 ...

  2. 鸟哥的linux私房菜——第五章学习(Linux的文件权限与目录配置)

    ******************第五章学习****************** 1.[重要的三个概念] 1).文件拥有者(使用者):User,该文件/文件夹只能我来读写: 2).群组:Group, ...

  3. 《鸟哥的Linux私房菜》部分章节学习笔记整理

    简介 此笔记为<鸟哥的Linux私房菜·基础学习篇>中部分章节的学习笔记. 目录 0 计算机概论 1 Linux是什么与如何学习 2 主机规划与磁盘分区 3 安装CentOS7.x 4 首 ...

  4. 别人的Linux私房菜(14)Linux账号管理和ACL权限设置

    用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...

  5. 别人的Linux私房菜(17)进程管理与SELinux初探

    程序在磁盘中,通过用户的执行触发.触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限. PID和登陆者的UID/GID有关.父进程衍生出来的进程为子 ...

  6. 别人的Linux私房菜(23)软件安装RPM、SRPM、YUM

    RPM(RedHat Package Manager),不同Linux发行版发布的RPM文件甚至不同版本,不通用. SRPM为Source RPM,所提供的软件内容没有经过编译,格式为xxx.src. ...

  7. 别人的Linux私房菜(22)软件安装:源代码与Tarball

    执行make,会在当前目录查找makefile文本文件(记录了源代码如何编译的详细信息). 内核相关的函数信息放置在/usr/lib./usr/lib64里. 在Tarball(一般为xxx.tar. ...

  8. 别人的Linux私房菜(20)启动流程、模块管理与Loader

    系统启动时,首先加载BIOS,通过BOIS读取COMS的硬件信息,进行自我检测,取得第一个可启动的设备(多个根据设置有关). 读取并执行设备内的MBR启动引导程序,引导程序调用boot sector中 ...

  9. 别人的Linux私房菜(19)认识与分析日志文件

    日志文件通常只有root可以读取,解决系统和网络方面的问题. /var/log/boot.log本次开机系统检测和启动硬件,和内核支持的相关功能的信息记录. /var/log/cron计划任务有没有被 ...

随机推荐

  1. word文档内容如何防止被复制

    word2016 审阅->限制编辑->1格式设置编辑 and 2编辑限制->3是,启动强制保护->输入秘密

  2. c# word操作篇,解决字符串长度超过255就不能替换的问题

    本文使用的是Microsoft.Office.Interop.Word组件,必须在系统安装了office相关组件的条件下进行,在com里面找到Microsoft  Word 16.0 Object L ...

  3. python3文件的读写操作

    open函数:对文件进行读写操作前,先打开文件,获取文件的句柄: open(file, mode, encoding, buffering) 参数说明 file_name:一个包含了你要访问的文件路径 ...

  4. C程序设计第一次实验报告

    C程序设计实验报告 实验项目: 1.字符与ASCII码 2.运算符与表达式的运用 3.顺序结构应用程序 4.数学函数的算法描述 5.鸡兔同笼的算法描述 6.确定坐标的运算描述 姓名:王煜 实验地点:教 ...

  5. ssh服务器配置

    使用如下终端命令可以在 Linux 主机中安装 ssh服务器sudo apt-get install openssh-server lin@lin-machine:~$ sudo apt-get in ...

  6. HTML5-canvas1.0

    HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图形容器,您必须使用脚本来绘制图形.你可以通过多种方 ...

  7. XAMPP与本地Mysql冲突解决方法

    1.更改regeit目录 https://blog.csdn.net/sinat_37633633/article/details/77645463 2.更改配置文件my.ini (1)https:/ ...

  8. MySQL中Checkpoint技术

    个人读书笔记,详情参考<MySQL技术内幕 Innodb存储引擎> 1,checkpoint产生的背景数据库在发生增删查改操作的时候,都是先在buffer pool中完成的,为了提高事物操 ...

  9. Linux:sudo,没有找到有效的 sudoers 资源。

    首先,这是因为用户的权限不够导致的. 使用 ls -l /etc/passwd 查看所有用户及权限.只有可读权限(r),说明用户的权限不够. 因此,我们可以用以下方法修改用户权限: 1. su roo ...

  10. 使用idea生成maven项目的jar包(转)

    第一步  第二步  第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651