linux--bash

下面是最近学习bash的一些知识点总结

***博客园-邦邦酱好***

取得shell来工作
  登入动作,系统给一个shell:记录在/etc/passwd

查看系统版本
  lsb_release -a

bash shell
1.命令编修能力:history
  上下键:当前登陆下的前/后一个输入的指令,保存在内存中
  ~/.bash_history:记录前一次登入以前执行过的命令,注销系统后保存进这个文件

2.命令与档案补全功能:tab键
  连续按两次[tab]键就能够显示所有癿可执行指令
  如果想要知道系统当中所有以c为开头的指令呢?就按下『c[tab][tab]』

3.命令别名设定功能:alias
  alias lm=‘ls -al‘

4.档案说明:type
  type [-tpa] name
  file:表示为外部指令
  alias:表示为命令别名所设定的名称
  builtin:表示为bash内建的指令

5.分行输入指令:\后紧接enter键

6.变量
  引用变量:$variable 或者 ${variable}
  设置变量:variable=othername(1.等号两边不能有空格 2.内容有空格,可用引号保留 3.特殊符号如enter,$,\,空格等可以用\变成一般字符)
  注意:双引号可保留变量的内容,而单引号内的仅能是一般字符
  如:name=A
       myname="$nameB"
       echo myname  --->AB
       myname=‘$nameB‘
     echo myname   --->$nameB
  结合其他指令:version=$(uname -r) 或者version=`uname -r`(`是数字键1左边的那个按键,不是单引号)
  此反引号内的指令会首先被执行,然后将结果作为外部的输入信息
  比如:ls -l `locate crontab`(先locate再ls)

  取消变量:unset variablename

  使变量在子程序执行:export variable

7.环境变量:set命令可将bash内的变量都显示出来
  (1)PS1=‘[\[email protected]\h \w \A #\#]\$‘  --> [[email protected] /home 17:02 #85]#
  (2)$:关于本shell的PID  -->echo $$
  (3)?:关于上个执行指令的回传值 -->echo $?
  (4)OSTYPE,HOSTTYPE,MACHTYPE:个人计算机CPU主要分为32/64位,其中32位又可分为i386, i586, i686,而64位则称为x86_64
  (5)export:自定义变量转变成环境变量

8.影响显示结果的语系变量:locale
  整体中文语系支持的编码:big5,utf-8
  整体系统默认的语系定义:cat /etc/sysconfig/i18n

9.读取来自键盘的内容:read
  read [-pt] variable
  -->read -p "please keyin your name:" -t 30 named

10.宣告变量的类型:declare/typeset
   declare [-aixr] variable
--->declare -i sum=100+300+50
--->echo $sum  
--->450

11.数组(array)
  设置:var[1]="small min"

12.删除变量内容
  path=/user/ker/sbin;/user/ker/bin;/user/local/bin;/user/bin
    (1)#:从左到右删除符合取代文字的【最短的】那一个
  echo ${path#/*user/ker/bin;}
    (2)##:从左到右删除符合取代文字的【最长的】那一个
  echo ${path##/*;}
    (3)%:从右到左删除符合取代文字的【最短的】那一个
  echo ${path%;*bin}
    (4)%%:从右到左删除符合取代文字的【最长的】那一个
  echo ${path%%;bin}

13.取代变量内容
  (1)/旧字符串/新字符串:从左到右第一个旧字符串会被新字符串取代
  (2)//旧字符串/新字符串:全部的旧字符串会被新字符串取代

14.别名
  设置:alias lm=‘ls -al|more‘
  取消:unalias lm

15.历史命令:history
  -->history [-raw] histfiles
  默认历史位置:~/.bash_history
  历史文件大小:echo $HISTSIZE
  利用:!N-->执行第N个历史命令
  !com-->执行最近历史中以com开头的命令
  !!-->执行上一个历史命令

16.进站欢迎信息:/etc/issue
  telnet时的登入信息:/etc/issue.net

17.login shell读取的配置文件
(1)/etc/profile:系统的整体设定,最好不要修改。
  /etc/profile.d/*.sh 规范了bash操作接口的颜色,语系,ll与ls指令的命令别名,vi的命令别名等等。如果你需要帮所有使用者设定一些共享的命令别名时,可以在这个目录下自行建立扩展名为.sh的档案,并将所需要的数据写入即可。
  1./etc/profile会遍历这个目录下的所有.sh文件
  2.修改过这个目录下的文件后,需要重新登录,才能读入最新修改(source或者.命令可以使得配置马上生效)
(2)~/.bash_profile或~/.bash_login或~/.profile:属于使用者个人设定,要使用的数据可以写入这里

login shell的读取流程
/etc/profile(-->/etc/inputrc,/etc/profile.d/*.sh-->/etc/sysconfig/i18n)----->~/.bash_profile(-->~/.bashrc-->/etc/bashrc)---->开始操作bash

18.数据流重导向
(1)标准输入:<或者<<
(2)标准输出:>或者>>
(3)标准错误输出:2>或者2>>
(4)垃圾桶黑洞:/dev/null(忽略掉错误信息,不显示不存储)
(5)正误同时输出:command > filename 2>&1或者command &> filename
  1.创建新文本
    cat > newfile < oldfile
  2.标定终止键盘输入的标志
    cat > newfile << "end"  (不用标志的话,ctrl+d键可以终止输入)

19.命令之间的相关性
  (1)$?:前一个命令的返回值,正确执行$?=0
  (2)cmd1&&cmd2:cmd1执行正确,则开始执行cmd2;cmd1执行失败,则不执行cmd2。
    --> ls a.txt && echo "yes"
  (3)cmd1||cmd2:cmd1执行正确,则不执行cmd2;cmd1执行失败,则开始执行cmd2。
    --> ls a.txt || touch a.txt
    a || b && c 从左到右顺序执行
  (4)一次执行多个命令:命令与命令之间用;分号分隔。
    ls;cat a.txt

20.管道命令pipe
1.cut
  echo $PATH|cut -d ‘;‘ -f 5  (切取PATH路径的第五个分隔)
  export|cut -c 1-  (以字符为单位,切取export第1个字符以后的所有字符串)
  假如export是 ABC BCD,切取之后是BC CD

2.分析grep
  grep [-acinv] ‘搜寻字符串‘ [--color=auto] filename
    -a:把binary档案以text档案的方式搜索
    -c:计算找到“搜寻字符串”的次数
    -i:忽略大小写
    -n:顺便输出行号
    -v:反向选择,显示没有“搜寻字符串”内容的那一行
  ---->last|grep -v ‘root‘|cut -d ‘ ‘ -f 1

3.排序sort
  sort [-fbrtk] [file or stdin]
    -f:忽略大小写
    -b:忽略最前面的空格符部分
    -r:反向排序
    -t:分隔符,预设是用tab键分隔
    -k:以哪个区间来进行排序
  --->cat /etc/passwd|sort -t ‘:‘ -k 3

4.重复的仅显示一个uniq
  uniq [-ic]
    -i:忽略大小写
    -c:进行计数
  --->last|cut -d ‘ ‘ -f1|sort|uniq -c

5.统计行数,字数,字符数wc
  wc [-lwm]
    -l:仅列出行数
    -w:仅列出字数
    -m:多少字符
  --->last|grep [a-zA-Z]|grep -v ‘wtmp‘|wc -l

21.双向重导向tee
  tee [-a] file   -->将数据流分送到档案和屏幕
    -a:以累加的方式,将数据加入file中
  --->ls -l|tee -a list.txt|more

22.字符转换命令
1.删除一段信息中的文字或者进行信息中部分文字的替换tr
  tr [-ds] SET1 [SET2]
    -d:删除信息中的SET1这个字符串
    -s:用SET2取代掉SET1
  --->cat /etc/passwd|tr -d ‘r‘
  --->last|tr [a-z] [A-Z]   (所有小写替换成大写)

2.col[-xb]
  -x:将tab键转换成对等的空格键
  -b:在文字内有反斜杠时,仅保留反斜杠最后解的那个字符
  --->cat /etc/man.config|col -x|cat -A|more
  --->man col|col -b > /root/col.man

3.处理2个文档中有相同数据的那一行join
  jion [-ti12] file1 file2
    -t:默认以空格符分隔数据,并且对比第一个字段的数据,若相同,则将2笔数据联成一行,且把第一个字段放在第一个
    -i:忽略大小写
    -1:代表第一个file要用哪个字段来分析
    -2:代表第二个file要用哪个字段来分析
  --->jion -t ‘:‘ /etc/passwd /etc/shadow
  --->jion -t ‘:‘ -1 4 /etc/passwd -2 3 /etc/group
  注意:在进行jion操作前,先进行sort操作。

4.同一行贴一块paste
  paste [-d] file1 file2
    -d:后面接分隔字符,默认是[tab]键分隔
    -:如果file部分写成-,表示来自standard input的资料的意思

5.tab键转换成空格expand
  expand [-t]
    -t:后接数字,定义一个tab键代表多少个字符

23.分割命令split
  split [-bl] file PREFIX
    -b:分割成的档案大小,可加单位b,k,m等
    -l:以行数进行分割
    PREFIX:代表前导符的意思,可作为分割档案的前导文字
    --->ls -al /|split -l 10 -|sroot

24.减号-的用途
  在管道命令中,常常会使用到前一个指令的stdout作为这次的stdin,某些指令需要用到文件名来进行处理时,该stdin与stdout可以利用减号-来替代。
  --->tar -cvf - /home|tar -xvf -

时间: 2024-11-08 03:44:26

linux--bash的相关文章

Linux Bash脚本基本语法知识

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 前提:读者能够基本使用一款文本编辑器以及了解文件的权限概念. 准备工作 在/home目录创建script文件用于保存所有的脚本程序: # mkdir /home/script # cd /home/script/ Bash脚本的基本输入输出 第一个bash脚本: # vim ./hello-world.sh 说明: "#!"是一个约定标记,它告诉系统这个脚本需要什么解释器来执行 作为可

解决 linux -bash: telnet: command not found

输入命令telnet提示  linux -bash: telnet: command not found 解决方法: yum list telnet*   查看telnet相关的安装包 yum install telnet-server 安装telnet服务 yum install telnet.* 安装telnet客户端 然后运行telnet正常了

linux bash下免密碼登陸ROS

linux命令 1.生成key文件 ssh-keygen -t dsa 2.copy到ROS文件目錄裏面 scp .ssh/id_dsa username@XX.XX.XX.XX: 3.登陸ROS,並在ROS上面導入key user ssh-keys import public-key-file=id_dsa.pub user=username linux bash下免密碼登陸ROS,布布扣,bubuko.com

Linux bash介绍与使用

Linux----bash的简单使用 对于一个操作系统来说,shell相当于内核kernel外的一层外壳,作为用户接口.一般来说,操作系统的接口分为两类:GLI:command line interface命令行接口常见的有:sh  csh  ksh  zsh bash tcshGUI:graphical user interface 图形化用户接口常见的有:Gnome  KDE  Xfce bash及其特性: 1.bash实质上是一个可执行程序,一个用户的工作环境. 2.在每一个shell下可

Linux Bash内置命令大全详细介绍

转自:http://os.51cto.com/art/201006/207329.htm 主要Shell内置命令 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. A.2.1  bash内置命令 .:执行当前进程环境中的程序.同source. . file:dot命令从文件file中读取命令并执行. : 空操作,返回退出状态0. alias:显示和创建已有命令的别名. bg:把作业放到后台. bin

【转】Linux(BASH)命令搜索机制

原文网址:http://www.mike.org.cn/articles/linux-linux-bash-command-search-mechanism/ 转自:Eric Cheung: Linux(BASH)命令搜索机制 本文假设的环境是GNU/Linux,且shell是BASH; 注意: 另外,我们讨论的前提是当你键入一个命令时并没有指定该命令的路径, 举例来说就是我们键入的命令是以commandname的形式而不是/path/commandname或./path/commandname

学习鸟哥私房菜--linux bash 的环境变量ps1设置

bash里边的变量ps1是用户平时的提示符,系统默认为[[email protected] 工作目录]$.关于ps1的相关介绍详见:http://www.cnblogs.com/starspace/archive/2009/02/21/1395382.html 文章里边介绍了要想ps1的修改在重启有效需要将它写入~/.bash_profile中,但是这是针对login shell的(即各种tty终端界面等),对于进入xwindow启动的命令行终端这样的nonlogin shell就不管用了,这是

&lt;LINUX &gt;bash shell 入门 --linux学习笔记

首先说下我个人对于shell的理解,我觉得shell是一种通过各种控制语句将linux命令进行集合实现批处理的一种脚本语言. shell编程入门其实很简单,语法知识并不多,但是高级shell编程就很难,因为shell是用户和linux之间的桥梁,要编写高质量的shell脚本,就需要用户对linux有很全面的认识. 这里我们只分析shell脚本的语法知识,如想透彻的学习linux还需多努力. shell结构       1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建she

黑客通过linux bash漏洞借助apache cgi向产品服务器植入木马病毒的实例分享!

问题描述: 公司的某产品服务器(阿里云的)被黑客攻击了,确切的说是被黑客当成肉鸡了. 肉鸡:肉鸡也称傀儡机,是指被黑客通过各种方式植入木马病毒,然后被远程操纵的机器, 肉鸡可以是各种系统,如windows,linux和unix等,可以是一家公司,企业和学校甚至是政府军队的服务器. 发现问题: 阿里云管理中心给公司领导发短信了(阿里云账号绑定了手机号),短信说你的x服务器存在恶意攻击, 登陆阿里云管理中心发现x服务器有很多风险,如下图: 分析这些风险发现,x服务器向网络内很多服务器发送了暴力破解破

Linux Bash Scripting - Command Chaining & Command lists

# this is to show you how to execute a series of commands in one strike. $ clear; cd /; ls -l; echo "You are in $PWD"; echo "Time to go back home"; cd ~; # use semi colon between each command. # There is also command lists, which is fo