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. 使用Tensorflow操作MNIST数据

    MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会被用作深度学习的入门样例.而TensorFlow的封装让使用MNIST数据集变得更加方便.MNIST数据集是NIST数据集的 ...

  2. jQuery解决IE6/7/8不能使用 JSON.stringify 函数的问题

    原文地址:http://www.ynpxrz.com/n1445665c2023.aspx JSON 对象是在 ECMAScript 第 5 版中实现的,此版于 2009 年 12 月发布:IE6 I ...

  3. Python撰写mail

    版本1   指定邮箱进行发送 """ 说明:指定账户密码进行邮件发送 由312051952@qq.com-->c4kaichen@163.com "&qu ...

  4. windows copy 和xcopy

    #将文件夹下文件拷贝到指定目录 将d盘下1文件夹内所有内容拷贝到测试目录下copy d:\1\ Z:\chenkai\测试目录\ /yxcopy D:\soft\svn工具 Z:\chenkai\测试 ...

  5. [UE4]Retainer Box

    把子元素的内容渲染到一个Render Target上去,然后放把它放置到到屏幕上去. Retainer Box的作用: 1.控制UI更新频率 2.把渲染后的UI当成Texture,放入材质中,加工后, ...

  6. React.js 学习总结

    1.用React的优越性 独立,小巧,快速 ReactDOM 会构建一个虚拟的DOM tree, 只有DOM tree 的某个部分发生变化,便重新渲染某个部分. React 判断DOM 是否重新渲染的 ...

  7. 配置gitlab自动备份

    在gitlab机器的root用户执行 首先,假设有2台机器. gitlab 1.1.1.1 backup 2.2.2.2 做秘钥信任 gitlab root 生成 ssh-key copy密钥到bac ...

  8. CentOS安装mysql源码包

    1.# cd /usr/local/src 2.上传mysql.tar.gz文件 3.# tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz 4.# ...

  9. mysql Mac篇

    默认为mysql下载和安装完毕,安装为默认安装 下载地址:https://dev.mysql.com/downloads/file/?id=473576 1.启动mysql sudo /usr/loc ...

  10. MATLAB——矩阵排序详解

    <span style="font-size:18px;">(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排 ...