Linux常用命令及bash特性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用命令及bash特性相关的知识,希望对你有一定的参考价值。

Linux简单使用(1)

Linux常用命令介绍

linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。

linux命令在系统中有两种类型:内置Shell命令和Linux命令。可以使用help、man和info命令获得帮助。

* help提供内部命令的帮助;man和info提供外部命令的帮助。

Linux常用命令


    • pwd命令:以绝对路径的方式显示当前的工作目录;

[[email protected] ~]# pwd
/root

    • cd命令:用来切换工作目录至dirname,其中dirName表示法可为绝对路径或相对路径;

        使用格式:cd [-L|[-P [-e]]] [dir]

               选项:

                -P :如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录;

                   -L :如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录;

                – :当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录;

~]# cd          进入用户主目录;
~]# cd ~        进入用户主目录;
~]# cd -        返回进入此目录前所在的目录;
~]# cd ..       返回上级目录;
~]# cd ../..    返回上两级目录;
~]# cd !$       把上个命令的参数作为cd的参数使用;

    • ls命令:list,用于显示目录列表;

        使用格式:ls [OPTION]… [FILE]…

               选项:

                -a :显示所有文件,包括隐藏文件(.和..开头的文件和目录);

                -A :显示除.和..开头以外的所有文件;

                -l :长格式列表,显示文件的详细属性信息;

                -h :文件大小单位转换;

                -d :仅显示目录名,而不显示目录下的内容列表;

                -r :以文件名反序排列并输出目录内容列表;

                -R :递归处理,将指定目录下的所有文件及子目录一并处理;

[[email protected] ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg
 
[[email protected] ~]# ls -l
总用量 8
-rw-------. 1 root root 1604 8月  27 14:16 anaconda-ks.cfg
-rw-------. 1 root root 1652 8月  27 15:39 initial-setup-ks.cfg
 
[[email protected] ~]# ls -l -h
总用量 8.0K
-rw-------. 1 root root 1.6K 8月  27 14:16 anaconda-ks.cfg
-rw-------. 1 root root 1.7K 8月  27 15:39 initial-setup-ks.cfg

    • cat命令:连接文件并打印到标准输出设备上,经常用来显示文件内容;

        使用格式:cat [OPTION]… [FILE]…

               选项:

                -n :由1开始给所有输出的文本行编号;

                   -E :用$作为行结束符;

[[email protected] ~]# cat -n -E /etc/fstab
     1 $
     2 #$
     3 # /etc/fstab$
     4 # Created by anaconda on Sat Aug 27 13:53:04 2016$
     5 #$
     6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘$
     7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$
     8 #$
     9 /dev/mapper/centos-root /                       xfs     defaults        0 0$
    10  UUID=0532294a-f8c2-40a7-9d7b-5d84cc21cb92 /boot                   xfs     defaults        0 0$
    11  /dev/mapper/centos-swap swap                    swap    defaults        0 0$
  • tac命令:用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示;即显示方式与cat相反;

  • file命令:用来探测给定文件的类型;

[[email protected] ~]# file /tmp/fstab
/tmp/fstab: ASCII text

    • which命令:查找并显示给定命令的绝对路径;

        使用格式:which [options] [–] programname […]

            选项:

                –skip-alias :忽略指定命令的别名;

[[email protected] ~]# which pwd
/usr/bin/pwd

    • whereis命令:用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径;

        使用格式:whereis [options] [-BMS directory… -f] name…

            选项:

                -b :只查找二进制文件;

                -m :只查找说明文件;

[[email protected] ~]# whereis svn
svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz
[[email protected] ~]# whereis -b svn
svn: /usr/bin/svn
[[email protected] ~]# whereis -m svn
svn: /usr/share/man/man1/svn.1.gz

    • who命令:显示目前登录系统的用户信息;

        使用格式:who [OPTION]… [ FILE | ARG1 ARG2 ]

            选项:

                -b :显示系统此次的启动时间;

                -u :显示用户登录详细信息;

                -r :显示用户运行的级别;

         * w命令同who命令,可显示用户正在执行的操作;

[[email protected] ~]# who -b
         系统引导 2016-08-27 15:36
[[email protected] ~]# who -u
centos   :0           2016-08-27 15:40   ?         12176 (:0)
root     pts/0        2016-08-27 15:41   .         13263 (192.168.3.23)
[[email protected] ~]# who -r
         运行级别 5 2016-08-27 15:39
[[email protected] ~]# w 
 17:34:58 up  1:58,  2 users,  load average: 0.00, 0.03, 0.05
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
centos   :0       :0               15:40   ?xdm?   1:04   0.11s gdm-session-worker [pam/gdm-password]
root     pts/0    192.168.3.23     15:41    2.00s  0.14s  0.03s w

    • mkdir命令:用于创建目录;

        使用格式:mkdir [OPTION]… DIRECTORY…

            选项:

                -p :若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;

                -v :显示创建目录的详细过程;

                -m :建立目录的同时设置目录的权限;

示例:

[[email protected] ~]# mkdir -m 644 /tmp/text
drw-r--r--.  2 root   root        6 8月  27 19:49 text

    • rmdir命令:用于删除空目录;

        使用格式:rmdir [OPTION]… DIRECTORY…

            选项:

                -p :删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;

                -v :显示命令的详细执行过程;

示例:

[[email protected] ~]# rmdir -pv /tmp/text/tset/log
rmdir: 正在删除目录 "/tmp/text/tset/log"
rmdir: 正在删除目录 "/tmp/text/tset"
rmdir: 正在删除目录 "/tmp/text"
rmdir: 正在删除目录 "/tmp"
rmdir: 删除目录 "/tmp" 失败: 设备或资源忙

    • tree命令:以树状图列出目录的内容;

        使用格式:tree [OPTIONS] [directory …]

            选项:

                -L # :显示#级目录和文件

示例:

[[email protected] ~]# tree /tmp/a_c
/tmp/a_c
└── text

bash基础特性介绍)(1)

命令的执行结果状态返回

Linux下一条命令或一个进程执行完成会返回一个一个状态码。

        0 :表示成功执行

        非0 :表示执行过程中出现异常或非正常退出

        在Shell脚本中 最后执行的一条命令将决定整个shell脚本的状态. 此外 shell的内部命令exit也可以随时终止shell脚本的执行,返回Shell脚本的状态码;当shell脚本执行结束前的最后一个命令是不带参数的exit ,那么 shell脚本的最终返回值就是exit语句前一条语句的返回值,根据这个值可以判断脚本成功执行与否。

         $? 可以查看最后一条命令的返回值,该变量可以在shell 脚本中的任何地方使用。

[[email protected] ~]# pwd
/root
[[email protected] ~]# echo $?
0
[[email protected] ~]# pwwwd
bash: pwwwd: 未找到命令...
[[email protected] ~]# echo $?
127

命令行展开

在非引号内的内容,如果用花括号包括,而且里面用逗号分隔(至少包含一个逗号,可以是空内容),这样花括号里的内容会被展开成用空格分开的一个列表,花括号前后可以紧随前缀和后缀(前后缀都是可选的);

示例1:在tmp目录下创建a_c、a_d、b_c、b_d四个目录;

[[email protected] ~]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: 已创建目录 "/tmp/a_c"
mkdir: 已创建目录 "/tmp/a_d"
mkdir: 已创建目录 "/tmp/b_c"
mkdir: 已创建目录 "/tmp/b_d"

示例2:在tmp目录下创建各种目录:

~]$ mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
mkdir: 已创建目录 "/tmp/mylinux"
mkdir: 已创建目录 "/tmp/mylinux/bin"
mkdir: 已创建目录 "/tmp/mylinux/boot"
mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
mkdir: 已创建目录 "/tmp/mylinux/dev"
mkdir: 已创建目录 "/tmp/mylinux/etc"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts"
mkdir: 已创建目录 "/tmp/mylinux/lib"
mkdir: 已创建目录 "/tmp/mylinux/lib/modules"
mkdir: 已创建目录 "/tmp/mylinux/lib64"
mkdir: 已创建目录 "/tmp/mylinux/proc"
mkdir: 已创建目录 "/tmp/mylinux/sbin"
mkdir: 已创建目录 "/tmp/mylinux/sys"
mkdir: 已创建目录 "/tmp/mylinux/tmp"
mkdir: 已创建目录 "/tmp/mylinux/usr"
mkdir: 已创建目录 "/tmp/mylinux/usr/local"
mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin"
mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin"
mkdir: 已创建目录 "/tmp/mylinux/var"
mkdir: 已创建目录 "/tmp/mylinux/var/lock"
mkdir: 已创建目录 "/tmp/mylinux/var/log"
mkdir: 已创建目录 "/tmp/mylinux/var/run"

~]# tree /tmp/mylinux
/tmp/mylinux
├── bin
├── boot
│   └── grub
├── dev
├── etc
│   ├── rc.d
│   │   └── init.d
│   └── sysconfig
│       └── network-scripts
├── lib
│   └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│   └── local
│       ├── bin
│       └── sbin
└── var
    ├── lock
    ├── log
    └── run

24 directories, 0 files

元数据及命令引用

元数据介绍

任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode)等。

在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。 

元数据管理方式

元数据管理有两种方式:集中式管理和分布式管理。

集中式管理是指在系统中有一个节点专门司职元数据管理,所有元数据都存储在该节点的存储设备上。所有客户端对文件的请求前,都要先对该元数据管理器请求元数据。

分布式管理是指将元数据存放在系统的任意节点并且能动态的迁移。对元数据管理的职责也分布到各个不同的节点上。

元数据信息及查看方法

文件的元数据信息包括文件类型,权限,属主,属组,文件大小,时间戳

文件类型:


    • 普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx];

    • 目录文件(directory):就是目录,第一个属性为 [d],例如 [drwxrwxrwx];

    • 连接文件(link):类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx];

    • 设备与设备文件(device):与系统外设及存储等相关的一些文件,通常都集中在 /dev目录;

    • 套接字文件(sockets):这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型;

    • 管道文件(FIFO,pipe):FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p];

权限:


    • 读权限:[r]

    • 写权限:[w]

    • 执行权限:[x]


时间戳类型:通常是一个字符序列,唯一地标识某一刻的时间;


    • access time :最近访问的时间;

    • modife time :最近更改的时间;

    • change time :最近改动的时间;


查看文件元数据方法:


    • ls命令:

        ls -l :以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

示例:

[[email protected] ~]# ls -l /tmp
总用量 156
drwxr-xr-x.  3 root   root       17 8月  27 20:04 a_c
drwxr-xr-x.  2 root   root        6 8月  27 18:17 a_d
-rw-r--r--.  1 root   root     1723 8月  27 15:39 anaconda.log

    • stat命令:用于显示文件的状态信息;输出的信息比ls命令的输出信息要更详细。

                使用格式:stat FILE…

示例:

[[email protected] a_c]# stat /tmp/a_c
  文件:"/tmp/a_c"
  大小:17           块:0          IO 块:4096   目录
设备:fd00h/64768d Inode:26679       硬链接:3
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2016-08-27 20:05:42.077946648 +0800
最近更改:2016-08-27 20:04:51.633918078 +0800
最近改动:2016-08-27 20:04:51.633918078 +0800
创建时间:-

    • touch命令:有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

        使用格式:touch [OPTION]… FILE…

            选项:

                -c :不建立任何文件;

                -a :只更改存取时间;

                -m :只更该变动时间;

                -t :使用指定的日期时间,而非现在的时间;

示例:

[[email protected] a_c]# touch -t 201311231123.30 /tmp/a_c
[[email protected] a_c]# stat /tmp/a_c
  文件:"/tmp/a_c"
  大小:17           块:0          IO 块:4096   目录
设备:fd00h/64768d Inode:26679       硬链接:3
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2013-11-23 11:23:30.000000000 +0800
最近更改:2013-11-23 11:23:30.000000000 +0800
最近改动:2016-08-27 20:36:25.210605071 +0800
创建时间:-

命令别名的定义及引用

在管理和维护Linux系统的过程中,将会使用到大量命令,有一些很长的命令或用法经常被用到,重复而频繁地输入某个很长命令或用法是不可取的。这时可以使用命令别名功能将这个过程简单化。

通常情况下,系统中已经定义了一些命令别名,要查看已经定义的命令别名,可以使用alias命令:

[[email protected] a_c]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

当我们使用命令cp(复制文件命令)时,系统会用cp -i代替命令中的cp。除此之外,还定义了ls命令及其使用的颜色、移动文件命令mv、删除命令rm等;

用于设置系统别名的相关文件保存在/etc/profile.d/目录中(系统别名目录);

许多时候管理员都会按自己的使用习惯定义命令别名:

[[email protected] a_c]# alias mk=‘mkdir‘
[[email protected] a_c]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mk=‘mkdir‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

要取消已经定义好的命令别名,可以对别名使用unalias命令:

[[email protected] a_c]# unalias mk
[[email protected] a_c]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

命令引用

引用就是指将字符串用引用符号括起来,以防止特殊字符被解释为其他意义。引用时屏蔽特殊字符的特殊意义,而将其解释为字面意义。

引用命令的执行结果可以使用两种方式:

    $(COMMAND)或`COMMAND`

示例:

[[email protected] a_c]# echo $? `cp /etc/fstab /tmp/a_d`
0

bash基础特性介绍)(2)

文件名通配

当在使用命令行时,有很多时间都用来查找你所需要的文件,如ls、find等。 shell提供了一套完整的字符串模式匹配规则,或者称之为元字符,当shell遇到上述字符时,就会把它们当作特殊字符,而不是文件名中的普通字符,这样用户就可以用它们来匹配相应的文件名,这可以称为通配符。

通配符列表:

        * :表示匹配任意长度的任意字符;

例:

[[email protected] ~]# ls in*
initial-setup-ks.cfg

        ? :表示匹配任意单个字符;

例:

[[email protected] tmp]# ls -d a*
ac  a_c  a_d  anaconda.log
[[email protected] tmp]# ls -d a?
ac

       [] :表示匹配指定范围内任意单个字符;常用的有[a-z],[0-9],[A-Z]

            常用字符集合:均只匹配单个

                [[:space:]] :所有空白字符 ;

                [[:punct:]] :所有标点符号; 

                [[:lower:]] :所有小写字母;

                [[:upper:]] :所以大写字母;

                [[:digit:]] :所有数字集合;

                [[:alnum:]] :所以字母和数字;

                [[:alpha:]] :所以字母;

                [^] :匹配指定范围外的任意字符;

示例1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

[[email protected] var]# ls
123edv   _efn1234asdf   l234d  lib  local  lock  log  lsd2asd  mail  nis  opt  preserve  run  spool  tmp  yp
[[email protected] var]# ls -d l*[0-9]*[[:lower:]]
l234d  lsd2asd

示例2:显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

[[email protected] etc]# ls [0-9]*[^0-9]
231nsdjk.dsf  324asd

示例3:显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

[[email protected] etc]# ls [^a-z][a-z]*
2djfio21  _bhds2147

date命令:可以用于创建以当前系统日期与时间为名的文件和目录;

    使用方法:date [options][+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

示例:在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

[[email protected] tmp]# touch "tfile-$(date +%Y-%m-%d-%H-%M-%S)"
[[email protected] tmp]# ls
ks-script-XyUjMw  tfile-2016-08-27-22-44-42  yum.log

复制匹配到的文件到指定目录:

示例1:复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[[email protected] etc]# ls -d p*[^0-9]
pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d  
[[email protected] etc]# mkdir /tmp/mytest1
[[email protected] etc]# cp -r /etc/p*[^0-9] /tmp/mytest1
[[email protected] etc]# cd /tmp/mytest1
[[email protected] mytest1]# ls
pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d

示例2:复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

[[email protected] ~]# ls -d /etc/*.d
/etc/bash_completion.d /etc/depmod.d /etc/init.d /etc/modules-load.d 
/etc/prelink.conf.d /etc/binfmt.d /etc/dnsmasq.d /etc/ld.so.conf.d
[[email protected] ~]# mkdir /tmp/mytest2
[[email protected] ~]# cp -r /etc/*.d /tmp/mytest2
[[email protected] ~]# ls /tmp/mytest2
bash_completion.d  cron.d     dracut.conf.d  ld.so.conf.d  modules-load.d

示例3:复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

[[email protected] ~]# ls -d /etc/{l,m,n}*.conf
/etc/ld.so.conf  /etc/libaudit.conf  /etc/libuser.conf 
[[email protected] ~]# mkdir /tmp/mytest3
[[email protected] ~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3
[[email protected] ~]# ls /tmp/mytest3
ld.so.conf  libaudit.conf  libuser.conf










本文出自 “飞翔ジ羽毛” 博客,请务必保留此出处http://feixiangyumao.blog.51cto.com/9913184/1851607

以上是关于Linux常用命令及bash特性的主要内容,如果未能解决你的问题,请参考以下文章

Linux bash基础特性二

bash基本特性及linux基本命令

bash基本特性及linux基本命令

Linux自学笔记:bash基础特性及基础命令

linux学习12 bash的常见特性及文本查看命令实战

Linux基础之bash shell介绍及基本特性