zoukankan      html  css  js  c++  java
  • Linux shell基础知识

    1.shell(Bourne Agin shell)是一个命令解析器,提供用户和机器之间的交互,还有zsh、ksh

    2.我们敲过的命令在什么地方存的呢?在家目录下的.bash_history文件中,最多可以保存1000条命令,可以用户history命令查看。

    [root@bogon ~]# ls /root/.bash_history 
    /root/.bash_history
    [root@bogon ~]# 
    

    3.1000条的个数是有环境变量$HISTSIZE 控制的

    [root@bogon ~]# echo $HISTSIZE 
    1000
    [root@bogon ~]# 
    

    4.清空当前的命令历史记录,不能清空配置文件中的命令

    [root@bogon ~]# history -c
    [root@bogon ~]# 
    
    [root@bogon ~]# history
        1  history
    [root@bogon ~]#

    5.刚敲得命令不是直接保存到文件中,先保存到内存中,当我们退出终端才保存到文件中。

    6.HISTSIZE环境变量控制命令保存条数配置文件在etc/profile中

    7.我们将这个值改成5000变量值并不会立即生效,必须source下才生效

    [root@bogon ~]# echo $HISTSIZE 
    1000
    [root@bogon ~]# source /etc/profile
    [root@bogon ~]# echo $HISTSIZE 
    5000
    [root@bogon ~]# 
    

    8.想要查看命令是什么时间执行的可以在当前终端定义环境变量

    [root@bogon ~]# HISTTIMEFORMAT="%Y%m/%d %H:%M:%S "
    [root@bogon ~]# 
    

    9.再执行history发现可以看到时间了

    [root@bogon ~]# history 
        1  201712/29 16:15:32 history
        2  201712/29 16:19:51 vim /etc/profile
        3  201712/29 16:22:32 echo $HISTSIZE 
        4  201712/29 16:23:10 source /etc/profile
        5  201712/29 16:23:20 echo $HISTSIZE 
        6  201712/29 16:24:49 history 
        7  201712/29 16:28:56 HISTTIMEFORMAT="%Y%m/%d %H:%M:%S "
        8  201712/29 16:29:19 history 
    [root@bogon ~]# 
    

    10.如果想永久生效需要将环境变量添加到/etc/profile文件中,然后保存推出source一下/etc/profile文件

    11.永久生效了

    [root@bogon ~]# echo $HISTTIMEFORMAT 
    %Y%m/%d %H:%M:%S
    [root@bogon ~]# 

    12.永久保存命令文件,执行了命令以后用户运行的所有命令都会已追加的形式被保存下来(直接关闭终端不会记录刚敲的命令)

    [root@bogon ~]# chattr +a ~/.bash_history 
    [root@bogon ~]# 
    

    13.!!就是上一条命令

    14.!n 就是运行多少条命令,n指的是多少条

    15.!word 是从下往上找以单词word开头的执行过的命令执行

     命令补全和别名

    1.默认不支持命令产生补全,需要安装bash-completion包,按完之后重启系统

    [root@bogon ~]# yum install -y bash-completion
    

    2.如果命令太长可以给命令起别名,然后直接执行restartnet就行了

    [root@bogon ~]# alias restartnet='systemctl restart network.service'
    [root@bogon ~]# 
    

    3.查看所有的alias别名命令

    [root@bogon ~]# 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 restartnet='systemctl restart network.service'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
    [root@bogon ~]# 
    

    4.用户家目录下的.bashrc文件中有系统配置的alias

    [root@bogon ~]# vim .bashrc
    

    5.其他的alias配置在/etc/profile.d/下

    [root@bogon profile.d]# cd /etc/profile.d/
    [root@bogon profile.d]# ls
    256term.csh                   colorls.csh  PackageKit.sh          vim.sh
    256term.sh                    colorls.sh   qt.csh                 vte.sh
    abrt-console-notification.sh  lang.csh     qt-graphicssystem.csh  which2.csh
    bash_completion.sh            lang.sh      qt-graphicssystem.sh   which2.sh
    colorgrep.csh                 less.csh     qt.sh
    colorgrep.sh                  less.sh      vim.csh
    [root@bogon profile.d]# 
    

    6.取消自定义的别名

    [root@bogon profile.d]# unalias restartnet
    [root@bogon profile.d]#  

    通配符 

    1.* 匹配0或多个字符、?匹配任意一个字符  、[0-3]匹配0-3中的字符 、[12] 1或2、[1-9a-zA-Z]、{1,2,3}也是或

    [root@bogon test]# ls
    1.txt  dnsmasq.txt  gzip
    [root@bogon test]# ls *.txt
    1.txt  dnsmasq.txt
    [root@bogon test]# ls ?.txt
    1.txt
    [root@bogon test]# 
    
    [root@bogon test]# ls [0-3].txt
    1.txt
    [root@bogon test]# 
    
    [root@bogon test]# ls [12].txt
    1.txt
    [root@bogon test]#
    [root@bogon test]# ls [1-9a-zA-Z].txt
    1.txt
    [root@bogon test]#
    
    [root@bogon test]# ls {1,2,3}.txt
    ls: 无法访问2.txt: 没有那个文件或目录
    ls: 无法访问3.txt: 没有那个文件或目录
    1.txt
    [root@bogon test]# 
    

      

     输入输出重定向

    1.> 正确的输出到文件中

    2.>>追加输出

    3.2>将错误输出到什么位置

    [root@bogon test]# lse
    bash: lse: 未找到命令...
    [root@bogon test]# lse 2> e.txt
    [root@bogon test]# cat e.txt 
    bash: lse: 未找到命令...
    [root@bogon test]# 
    

    4.2>>追加重定向

    [root@bogon test]# lse 2>> e.txt
    [root@bogon test]# cat e.txt    
    bash: lse: 未找到命令...
    bash: lse: 未找到命令...
    [root@bogon test]# 
    

    5.&> 结合了正确和错误,将正确和错误都输出到文本中。

    [root@bogon test]# ls
    1.txt  dnsmasq.txt  e.txt  gzip
    [root@bogon test]# ls 1.txt aaa &> e1.txt
    [root@bogon test]# cat e1.txt 
    ls: 无法访问aaa: 没有那个文件或目录
    1.txt
    [root@bogon test]# ls 1.txt aaa &>> e1.txt
    [root@bogon test]# cat e1.txt             
    ls: 无法访问aaa: 没有那个文件或目录
    1.txt
    ls: 无法访问aaa: 没有那个文件或目录
    1.txt
    [root@bogon test]# 
    

    6.>1.txt  2>a.txt 将正确的和错误的输出分别保存到文件中

    [root@bogon test]# ls
    1.txt  dnsmasq.txt  e1.txt  e.txt  gzip
    [root@bogon test]# ls [12].txt aaa.txt > 1.txt 2>a.txt
    [root@bogon test]# cat 1.txt 
    1.txt
    [root@bogon test]# cat a.txt 
    ls: 无法访问aaa.txt: 没有那个文件或目录
    [root@bogon test]# 
    

    7.<输入重定向

    [root@bogon test]# wc -l 1.txt  
    1 1.txt
    [root@bogon test]# 

      

     管道符和作业控制

    1.管道符的作用是把文件的输出内容传递给后面的命令

    [root@bogon test]# ls |wc -l
    6
    [root@bogon test]# cat 1.txt |wc -l
    2
    [root@bogon test]# 
    

    2.ctrl+z暂停一个任务

    [root@bogon test]# vim 1.txt 
    
    [1]+  已停止               vim 1.txt
    [root@bogon test]#  

    3.fg将一个命令调到前台

    [root@bogon test]# jobs
    [1]+  已停止               vim 1.txt
    [root@bogon test]# fg
    vim 1.txt
    [root@bogon test]# 
    

    4.jobs命令列出后台任务

    [root@bogon test]# vim 2.txt
    
    [1]+  已停止               vim 2.txt
    [root@bogon test]# vim 1.txt
    
    [2]+  已停止               vim 1.txt
    [root@bogon test]# jobs
    [1]-  已停止               vim 2.txt
    [2]+  已停止               vim 1.txt
    [root@bogon test]# 
    

    5.fg + 任务ID 调起后台命令放到前台

    [root@bogon test]# jobs
    [1]-  已停止               vim 2.txt
    [2]+  已停止               vim 1.txt
    [root@bogon test]# fg 2
    vim 1.txt
    [root@bogon test]# 
    

    6.bg + 任务id 将任务放到后台并运行

    [root@bogon test]# bg 1
    [1]+ vim 1.txt &
    [root@bogon test]# 
    

    7.vmstat 1不停的显示系统的状态

    [root@bogon test]# vmstat 1 
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     2  0 281464 324872     32 246636    0    1    29     6   56   94  0  0 99  0  0
     0  0 281464 324872     32 246668    0    0     0     0   54   78  1  0 99  0  0
     0  0 281464 324872     32 246668    0    0     0     0   45   66  0  1 99  0  0
     0  0 281464 324872     32 246668    0    0     0     0   47   72  0  0 100  0  0
    ^Z
    [2]+  已停止               vmstat 1
    [root@bogon test]# 
    

    8.&直接将任务放到后台

    [root@bogon test]# sleep 100 &
    [3] 49905
    [root@bogon test]# jobs
    [1]-  已停止               vim 1.txt
    [2]+  已停止               vmstat 1
    [3]   运行中               sleep 100 &
    [root@bogon test]# 
    

    shell变量 

    1.evn 获取系统变量

    [root@bogon test]# env
    XDG_SESSION_ID=577
    HOSTNAME=bogon
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=5000
    SSH_CLIENT=10.21.95.218 50134 22
    QTDIR=/usr/lib64/qt-3.3
    QTINC=/usr/lib64/qt-3.3/include
    SSH_TTY=/dev/pts/2
    QT_GRAPHICSSYSTEM_CHECKED=1
    USER=root
    

    2.set 用set 命令可以设置各种shell选项或者列 出shell变量,自己设置变量a,用set命令可以找的。

    [root@bogon test]# a=111
    [root@bogon test]# echo $a
    111
    [root@bogon test]# set |grep 111
    _=111
    a=111
    [root@bogon test]# 
    

      

    3.变量名首位不能是数字

    [root@bogon test]# a=1
    [root@bogon test]# echo $a
    1
    [root@bogon test]# 1a = 2
    bash: 1a: 未找到命令...
    [root@bogon test]# 
    

    4.变量值有特殊符号的时候要用单引号括起来

    [root@bogon test]# a=1
    [root@bogon test]# a=a b c
    bash: b: 未找到命令...
    [root@bogon test]# a='a b c'
    [root@bogon test]# 
    
    [root@bogon test]# a=1
    [root@bogon test]# b=2
    [root@bogon test]# echo $a$b
    12
    [root@bogon test]# 
    

    5.w命令 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

    [root@bogon test]# w
     11:34:37 up 5 days, 11:49,  4 users,  load average: 0.08, 0.03, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     :0       :0               2612月17 ?xdm?  43:29   2.45s gdm-session-wor
    root     pts/0    :0               二09    2days  0.04s  0.04s /bin/bash
    root     pts/1    :0               五18    5days  0.06s  0.06s /bin/bash
    root     pts/2    10.21.95.218     二09    5.00s  1.81s  0.71s w
    [root@bogon test]# 
    

    6.查看当前用户是在哪个TTY下

    [root@bogon test]# echo $SSH_TTY
    /dev/pts/2
    [root@bogon test]# 
    

    7.执行bash再开一个子进程(子shell),pstree查看

            ├─sshd───sshd───bash─┬─bash───pstree
            │                    ├─vim
            │                    └─vmstat
    [root@bogon test]# bash
    [root@bogon test]# pstree
    systemd─┬─ModemManager───2*[{ModemManager}]
            ├─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─abrt-dbus───3*[{abrt-dbus}]
            ├─2*[abrt-watch-log]
            ├─abrtd
            ├─accounts-daemon───2*[{accounts-daemon}]
            ├─alsactl
            ├─at-spi-bus-laun─┬─dbus-daemon
            │                 └─3*[{at-spi-bus-laun}]
            ├─at-spi2-registr───2*[{at-spi2-registr}]
            ├─atd
            ├─auditd─┬─audispd─┬─sedispatch
            │        │         └─{audispd}
            │        └─{auditd}
            ├─avahi-daemon───avahi-daemon
            ├─bluetoothd
            ├─caribou───2*[{caribou}]
            ├─colord───2*[{colord}]
            ├─crond
            ├─cupsd
            ├─2*[dbus-daemon]
            ├─dbus-launch
            ├─dconf-service───2*[{dconf-service}]
            ├─dhclient
            ├─dnsmasq───dnsmasq
            ├─evolution-calen───5*[{evolution-calen}]
            ├─evolution-sourc───2*[{evolution-sourc}]
            ├─gconfd-2
            ├─gdm─┬─Xorg
            │     ├─gdm-session-wor─┬─gnome-session─┬─abrt-applet───2*[{abrt-applet+
            │     │                 │               ├─gnome-settings-───4*[{gnome-s+
            │     │                 │               ├─gnome-shell─┬─ibus-daemon─┬─i+
            │     │                 │               │             │             ├─i+
            │     │                 │               │             │             └─2+
            │     │                 │               │             └─6*[{gnome-shell+
            │     │                 │               ├─gnome-software───3*[{gnome-so+
            │     │                 │               ├─nautilus───3*[{nautilus}]
            │     │                 │               ├─ssh-agent
            │     │                 │               ├─tracker-extract───13*[{tracke+
            │     │                 │               ├─tracker-miner-a───2*[{tracker+
            │     │                 │               ├─tracker-miner-f───3*[{tracker+
            │     │                 │               ├─tracker-miner-u───2*[{tracker+
            │     │                 │               └─3*[{gnome-session}]
            │     │                 └─2*[{gdm-session-wor}]
            │     └─3*[{gdm}]
            ├─gnome-keyring-d───4*[{gnome-keyring-d}]
            ├─gnome-shell-cal───5*[{gnome-shell-cal}]
            ├─gnome-terminal-─┬─2*[bash]
            │                 ├─gnome-pty-helpe
            │                 └─3*[{gnome-terminal-}]
            ├─goa-daemon───3*[{goa-daemon}]
            ├─goa-identity-se───3*[{goa-identity-se}]
            ├─gsd-printer───2*[{gsd-printer}]
            ├─gssproxy───5*[{gssproxy}]
            ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
            ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
            ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
            ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
            ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
            ├─gvfsd───2*[{gvfsd}]
            ├─gvfsd-fuse───5*[{gvfsd-fuse}]
            ├─gvfsd-metadata───2*[{gvfsd-metadata}]
            ├─gvfsd-trash───2*[{gvfsd-trash}]
            ├─httpd───6*[httpd]
            ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
            │             └─2*[{ibus-daemon}]
            ├─2*[ibus-x11───2*[{ibus-x11}]]
            ├─ksmtuned───sleep
            ├─libvirtd───15*[{libvirtd}]
            ├─lsmd
            ├─lvmetad
            ├─mission-control───3*[{mission-control}]
            ├─mysqld_safe───mysqld───15*[{mysqld}]
            ├─nginx───nginx
            ├─packagekitd───2*[{packagekitd}]
            ├─php-fpm───3*[php-fpm]
            ├─polkitd───5*[{polkitd}]
            ├─pulseaudio───2*[{pulseaudio}]
            ├─rsyslogd───2*[{rsyslogd}]
            ├─rtkit-daemon───2*[{rtkit-daemon}]
            ├─smartd
            ├─sshd───sshd───bash─┬─bash───pstree
            │                    ├─vim
            │                    └─vmstat
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            ├─tracker-store───7*[{tracker-store}]
            ├─tuned───4*[{tuned}]
            ├─udisksd───4*[{udisksd}]
            ├─upowerd───2*[{upowerd}]
            ├─vmtoolsd───{vmtoolsd}
            ├─vmtoolsd
            └─wpa_supplicant
    [root@bogon test]# 
    

      

     8.使用exit可以退出刚才的bash

    [root@bogon test]# exit
    exit
    [root@bogon test]# pstree
    systemd─┬─ModemManager───2*[{ModemManager}]
            ├─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─2*[abrt-watch-log]
            ├─abrtd
            ├─accounts-daemon───2*[{accounts-daemon}]
            ├─alsactl
            ├─at-spi-bus-laun─┬─dbus-daemon
            │                 └─3*[{at-spi-bus-laun}]
            ├─at-spi2-registr───2*[{at-spi2-registr}]
            ├─atd
            ├─auditd─┬─audispd─┬─sedispatch
            │        │         └─{audispd}
            │        └─{auditd}
            ├─avahi-daemon───avahi-daemon
            ├─bluetoothd
            ├─caribou───2*[{caribou}]
            ├─colord───2*[{colord}]
            ├─crond
            ├─cupsd
            ├─2*[dbus-daemon]
            ├─dbus-launch
            ├─dconf-service───2*[{dconf-service}]
            ├─dhclient
            ├─dnsmasq───dnsmasq
            ├─evolution-calen───5*[{evolution-calen}]
            ├─evolution-sourc───2*[{evolution-sourc}]
            ├─gconfd-2
            ├─gdm─┬─Xorg
            │     ├─gdm-session-wor─┬─gnome-session─┬─abrt-applet───2*[{abrt-applet}]
            │     │                 │               ├─gnome-settings-───4*[{gnome-settings-}]
            │     │                 │               ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
            │     │                 │               │             │             ├─ibus-engine-sim───2*[{ibus-engine-sim}]
            │     │                 │               │             │             └─2*[{ibus-daemon}]
            │     │                 │               │             └─6*[{gnome-shell}]
            │     │                 │               ├─gnome-software───3*[{gnome-software}]
            │     │                 │               ├─nautilus───3*[{nautilus}]
            │     │                 │               ├─ssh-agent
            │     │                 │               ├─tracker-extract───13*[{tracker-extract}]
            │     │                 │               ├─tracker-miner-a───2*[{tracker-miner-a}]
            │     │                 │               ├─tracker-miner-f───3*[{tracker-miner-f}]
            │     │                 │               ├─tracker-miner-u───2*[{tracker-miner-u}]
            │     │                 │               └─3*[{gnome-session}]
            │     │                 └─2*[{gdm-session-wor}]
            │     └─3*[{gdm}]
            ├─gnome-keyring-d───4*[{gnome-keyring-d}]
            ├─gnome-shell-cal───5*[{gnome-shell-cal}]
            ├─gnome-terminal-─┬─2*[bash]
            │                 ├─gnome-pty-helpe
            │                 └─3*[{gnome-terminal-}]
            ├─goa-daemon───3*[{goa-daemon}]
            ├─goa-identity-se───3*[{goa-identity-se}]
            ├─gsd-printer───2*[{gsd-printer}]
            ├─gssproxy───5*[{gssproxy}]
            ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
            ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
            ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
            ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
            ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
            ├─gvfsd───2*[{gvfsd}]
            ├─gvfsd-fuse───5*[{gvfsd-fuse}]
            ├─gvfsd-metadata───2*[{gvfsd-metadata}]
            ├─gvfsd-trash───2*[{gvfsd-trash}]
            ├─httpd───6*[httpd]
            ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
            │             └─2*[{ibus-daemon}]
            ├─2*[ibus-x11───2*[{ibus-x11}]]
            ├─ksmtuned───sleep
            ├─libvirtd───15*[{libvirtd}]
            ├─lsmd
            ├─lvmetad
            ├─mission-control───3*[{mission-control}]
            ├─mysqld_safe───mysqld───15*[{mysqld}]
            ├─nginx───nginx
            ├─packagekitd───2*[{packagekitd}]
            ├─php-fpm───3*[php-fpm]
            ├─polkitd───5*[{polkitd}]
            ├─pulseaudio───2*[{pulseaudio}]
            ├─rsyslogd───2*[{rsyslogd}]
            ├─rtkit-daemon───2*[{rtkit-daemon}]
            ├─smartd
            ├─sshd───sshd───bash─┬─pstree
            │                    ├─vim
            │                    └─vmstat
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            ├─tracker-store───7*[{tracker-store}]
            ├─tuned───4*[{tuned}]
            ├─udisksd───4*[{udisksd}]
            ├─upowerd───2*[{upowerd}]
            ├─vmtoolsd───{vmtoolsd}
            ├─vmtoolsd
            └─wpa_supplicant
    [root@bogon test]# 
    

      

     9.如何定义全局环境变量,使用export

    [root@bogon test]# a=linux
    [root@bogon test]# echo $a
    linux
    [root@bogon test]# bash
    [root@bogon test]# echo $a
    
    [root@bogon test]# 
    
    [root@bogon test]# exit
    exit
    [root@bogon test]# export a=linux
    [root@bogon test]# bash
    [root@bogon test]# echo $a
    linux
    [root@bogon test]# 
    

    10.unset 删除变量

    [root@bogon test]# echo $a
    linux
    [root@bogon test]# unset a
    [root@bogon test]# echo $a
    
    [root@bogon test]# 
    

    11.Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。

    环境变量配置文件有两类一个是系统的 /etc/下的   一个是用户家目录下。

    系统变量

    /etc/profile:这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等等。

    /etc/bashrc:这个文件主要预设umasky以及PS1。这个PS1就是我们在输入命令时,前面的那串字符。例如Linux系统的PS1就是“[root@localhost ~]”,我们不妨看一下PS1的值,如下所示:

    #echo $PS1

    [u@h W]$

    其中,u指用户,h指主机名,W指当前目录,$指字符“#”(如果是普通用户则显示为“¥”)。

    个人环境变量

    .bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专属于自己的shell信息,当前用户登入时,该文件仅仅执行一次。

    .bashrc:该文件包含专属于自己的shell的bash信息,当登入或每次打开新的shell时,该文件被读取。例如你可以将用户自定义的alais或者自定义变量写到这个文件中。

    .bash_history:该文件用于记录命令历史。

    .bash_logout:当退出shell时,会执行该文件。你可以将一些清理的工作放到这个文件中。

    12. source 和 . 是一个意思,都是加载一个配置文件

    13.PS1在/etc/bashrc下定义,作用是定义 [root@bogon test]

    14.特殊符号

     例子

    [root@bogon ~]# #ls 
    [root@bogon ~]# a=1
    [root@bogon ~]# b=2
    [root@bogon ~]# c
    bash: c: 未找到命令...
    [root@bogon ~]# c=3
    [root@bogon ~]# echo $c
    3
    [root@bogon ~]# echo $c
    $c
    [root@bogon ~]# 
    

      

     

    15.cut 截取字符串 -d 指定分割符 截取第一段 -f 1,截取12段-f 1,2  ,截取1到3 -f 1-3 ,-c 指定第几个字符

    [root@bogon ~]# cat /etc/passwd |head -2
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    [root@bogon ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1
    root
    bin
    [root@bogon ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
    root:x
    bin:x
    [root@bogon ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3
    root:x:0
    bin:x:1
    [root@bogon ~]# 
    

    16.sort命令对文件内容排序

    [root@bogon ~]# sort /etc/passwd
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    chrony:x:991:988::/var/lib/chrony:/sbin/nologin
    colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
    

    17.将passwd文件的头10行追加到1.txt

    [root@bogon ~]# head /etc/passwd >> 1.txt
    [root@bogon ~]# vim 1.txt 
    [root@bogon ~]# 
    

    18.sort -n 以数字排序 -r 倒序排

    19wc -l 统计行数 -m 统计字符数 -w 统计词

    20.cat -A 查看文件的所有内容包括换行符

    21.uniq 去重需要先排序再去重

    [root@bogon ~]# sort 1.txt |uniq -c
          1 adm:x:3:4:adm:/var/adm:/sbin/nologin
          1 bin:x:1:1:bin:/bin:/sbin/nologin
          1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
          1 halt:x:7:0:halt:/sbin:/sbin/halt
          1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
          1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
          1 operator:x:11:0:operator:/root:/sbin/nologin
          1 root:x:0:0:root:/root:/bin/bash
          1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
          1 sync:x:5:0:sync:/sbin:/bin/sync
    [root@bogon ~]# 

    22.|tee 类似  >  tee命令会在执行完显示执行结果 -a 选项是追加

    [root@bogon ~]# sort 1.txt |uniq -c |tee a.txt
          1 adm:x:3:4:adm:/var/adm:/sbin/nologin
          1 bin:x:1:1:bin:/bin:/sbin/nologin
          1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
          1 halt:x:7:0:halt:/sbin:/sbin/halt
          1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
          1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
          1 operator:x:11:0:operator:/root:/sbin/nologin
          1 root:x:0:0:root:/root:/bin/bash
          1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
          1 sync:x:5:0:sync:/sbin:/bin/sync
    [root@bogon ~]# 
    

      

    [root@bogon ~]# sort 1.txt |uniq -c |tee -a a.txt
          1 adm:x:3:4:adm:/var/adm:/sbin/nologin
          1 bin:x:1:1:bin:/bin:/sbin/nologin
          1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
          1 halt:x:7:0:halt:/sbin:/sbin/halt
          1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
          1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
          1 operator:x:11:0:operator:/root:/sbin/nologin
          1 root:x:0:0:root:/root:/bin/bash
          1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
          1 sync:x:5:0:sync:/sbin:/bin/sync
    [root@bogon ~]# cat a.txt 
    

    tr命令 替换字符

    [root@bogon ~]# echo "linux" |tr '[ln]' '[Ln]'
    Linux
    [root@bogon ~]# 
    

    1.将所有的字符变成大写

    [root@bogon ~]# echo "linux" |tr '[a-z]' '[A-Z]'
    LINUX
    [root@bogon ~]# 
    

    2.split 切割 -b 按大小  -l按行数

    [root@bogon ~]# split -l 1000 
    
    [root@bogon ~]# split -b 1k 1.txt 
    [root@bogon ~]# du -sh *
    4.0K    1.txt
    4.0K    anaconda-ks.cfg
    4.0K    a.txt
    2.2M    lnmp-install.log
    4.0K    xaa
    

    3.指定切割文件的前缀为abc

    [root@bogon ~]# split -b 1k 1.txt abc 

     

    特殊符号

    1.循环

    [root@bogon ~]# for i in `seq 1 10`
    > do
    > echo $i
    > done
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@bogon ~]# 
    

    2.[ -d dir] 判断目录是否存在

    [root@bogon ~]#  [ -d linux ] || mkdir linux
    [root@bogon ~]#  [ -d linux ] && mkdir linux  
    mkdir: 无法创建目录"linux": 文件已存在
    [root@bogon ~]# 
    

      

  • 相关阅读:
    第二十次codeforces竞技结束 #276 Div 2
    POJ 3414 Pots 记录路径的广搜
    C++primer原书中的一个错误(派生类using声明对基类权限的影响)
    leetcode day6 -- String to Integer (atoi) &amp;&amp; Best Time to Buy and Sell Stock I II III
    Android仿iOS7的UISegmentedControl 分段
    SICP 习题 (2.6) 解题总结:丘奇计数
    java中super()和this()浅析
    学习日记之命令模式和Effective C++
    因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
    OpenCV HaarTraining代码解析(二)cvCreateMTStumpClassifier(建立决策树)
  • 原文地址:https://www.cnblogs.com/sunyujun/p/8145775.html
Copyright © 2011-2022 走看看