Linux基础知识总结2 | vim与bash

网友投稿 862 2022-05-29

1.Vim的使用

一般指令模式:vim进去模式的模式

编辑模式:在一般模式下按 “i, I, o, O, a, A, r, R” 可以进入编辑模式

命令行命令模式:在一般模式下输入 “: / ?” 任意一个,可以将光标移动到最下面那一列

vim fileName可以新建一个文件,编辑完后按ESC输入:wq即可完成编辑且退出,若文件权限不对无法写入,可以加一个!表示强制写入,即 :wq!,但这是在“你的权限可以改变”的情况下才能成立的

在一般指令模式下:按u可以撤销编辑模式下的修改、30 j向下移动30行光标、30 k向上移动30行光标

菜鸟教程 vim

2.BASH

2.1 认识bash与shell

通过“ Shell ”将输入的指 令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的工作

history:历史查询功能

Tab按键:自动补全

alias:命令别名设置功能,如:alias lm='ls -al' ,lm和ls -al功能是一样的,要取消别名的设置unalias lm

[root@VM-20-9-centos /]# 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; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot' alias xzegrep='xzegrep --color=auto' alias xzfgrep='xzfgrep --color=auto' alias xzgrep='xzgrep --color=auto' alias zegrep='zegrep --color=auto' alias zfgrep='zfgrep --color=auto' alias zgrep='zgrep --color=auto'

Wildcard:万用字符:比如查看 /usr/bin文件夹下面以x开头的文件或文件夹

[root@VM-20-9-centos /]# ls -l /usr/bin/x* lrwxrwxrwx 1 root root 7 4月 24 2020 /usr/bin/x86_64 -> setarch -rwxr-xr-x 4 root root 1257912 10月 12 2020 /usr/bin/x86_64-redhat-linux-c++ -rwxr-xr-x 4 root root 1257912 10月 12 2020 /usr/bin/x86_64-redhat-linux-g++ -rwxr-xr-x 3 root root 1253912 10月 12 2020 /usr/bin/x86_64-redhat-linux-gcc -rwxr-xr-x 3 root root 1253912 10月 12 2020 /usr/bin/x86_64-redhat-linux-gcc-8 -rwxr-xr-x. 1 root root 424 5月 11 2019 /usr/bin/x86_64-redhat-linux-gnu-pkg-config -rwxr-xr-x 1 root root 32832 10月 22 2020 /usr/bin/x86_energy_perf_policy -rwxr-xr-x. 1 root root 90312 5月 11 2019 /usr/bin/xargs -rwxr-xr-x 1 root root 340216 11月 9 2019 /usr/bin/xgettext -rwxr-xr-x 1 root root 20656 4月 7 2020 /usr/bin/xmlcatalog -rwxr-xr-x 1 root root 75096 4月 7 2020 /usr/bin/xmllint -rwxr-xr-x. 1 root root 35680 5月 11 2019 /usr/bin/xmlwf -rwxr-xr-x 1 root root 29248 10月 15 2020 /usr/bin/xsltproc -rwxr-xr-x 1 root root 23440 11月 12 2019 /usr/bin/xxd -rwxr-xr-x. 1 root root 91432 5月 11 2019 /usr/bin/xz lrwxrwxrwx. 1 root root 2 5月 11 2019 /usr/bin/xzcat -> xz lrwxrwxrwx. 1 root root 6 5月 11 2019 /usr/bin/xzcmp -> xzdiff -rwxr-xr-x. 1 root root 18376 5月 11 2019 /usr/bin/xzdec -rwxr-xr-x. 1 root root 6632 5月 11 2019 /usr/bin/xzdiff lrwxrwxrwx. 1 root root 6 5月 11 2019 /usr/bin/xzegrep -> xzgrep lrwxrwxrwx. 1 root root 6 5月 11 2019 /usr/bin/xzfgrep -> xzgrep -rwxr-xr-x. 1 root root 5628 5月 11 2019 /usr/bin/xzgrep -rwxr-xr-x. 1 root root 1802 5月 11 2019 /usr/bin/xzless -rwxr-xr-x. 1 root root 2161 5月 11 2019 /usr/bin/xzmore

type:查看指令是否为内置指令, 因此 type 也可以用来作为类似 which 指令的用途

[root@VM-20-9-centos /]# type man man 是 /usr/bin/man [root@VM-20-9-centos /]# type ls ls 是 `ls --color=auto` 的别名 [root@VM-20-9-centos /]# type history history 是 shell 内建 [root@VM-20-9-centos /]# type cd cd 是 shell 内

\ + [Enter]键:换行输入

[root@VM-20-9-centos /]# ls \ > -al 总用量 80 dr-xr-xr-x. 19 root root 4096 3月 1 10:46 . dr-xr-xr-x. 19 root root 4096 3月 1 10:46 .. -rw-r--r-- 1 root root 0 11月 26 2019 .autorelabel lrwxrwxrwx. 1 root root 7 5月 11 2019 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 4月 13 2021 boot drwxr-xr-x 2 root root 4096 12月 10 2019 data drwxr-xr-x 19 root root 2960 11月 7 01:31 dev drwxr-xr-x. 100 root root 12288 2月 18 14:25 etc drwxr-xr-x. 6 root root 4096 2月 18 14:25 home lrwxrwxrwx. 1 root root 7 5月 11 2019 lib -> usr/lib lrwxrwxrwx. 1 root root 9 5月 11 2019 lib64 -> usr/lib64 drwx------. 2 root root 16384 11月 26 2019 lost+found drwxr-xr-x. 2 root root 4096 5月 11 2019 media drwxr-xr-x. 2 root root 4096 5月 11 2019 mnt drwxr-xr-x. 3 root root 4096 11月 6 10:59 opt dr-xr-xr-x 100 root root 0 11月 7 01:31 proc dr-xr-x---. 6 root root 4096 2月 28 14:22 root drwxr-xr-x 31 root root 1020 2月 23 11:34 run lrwxrwxrwx. 1 root root 8 5月 11 2019 sbin -> usr/sbin drwxr-xr-x. 2 root root 4096 5月 11 2019 srv dr-xr-xr-x 13 root root 0 11月 7 01:31 sys drwxrwxrwt. 4 root root 4096 3月 1 10:27 tmp drwxr-xr-x. 12 root root 4096 11月 26 2019 usr drwxr-xr-x. 20 root root 4096 11月 26 2019 var

2.2 变量

定义:变量就是让某一个特定字串代表不固定的内容

如系统变量 一般是大写 PATH、HOME、SHELL、MAIL

变量的取用:echo,一般会在变量前面加上$

oot@VM-20-9-centos /]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@VM-20-9-centos /]# echo $HOME /root [root@VM-20-9-centos /]# echo $MAIL /var/spool/mail/root [root@VM-20-9-centos /]# echo $SHELL /bin/bash

变量的设置:=,变量开头不能是数字,等号两边不能接空格

[root@VM-20-9-centos /]# echo ${myname} [root@VM-20-9-centos /]# myname=试一下设置变量 [root@VM-20-9-centos /]# echo ${myname} 试一下设置变

取消变量的设置:unset

[root@VM-20-9-centos /]# echo ${myname} 试一下设置变量 [root@VM-20-9-centos /]# unset myname [root@VM-20-9-centos /]# echo ${myname}

环境变量

env:列出来所有的环境变量

[root@VM-20-9-centos /]# env LS_COLORS=rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;5;9:*.esd=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.mjpg=38;5;13:*.mjpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.m4a=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.oga=38;5;45:*.opus=38;5;45:*.spx=38;5;45:*.xspf=38;5;45: SSH_CONNECTION=58.251.76.253 52032 10.0.20.9 22 LANG=zh_CN.UTF-8 HISTTIMEFORMAT=%F %T HOSTNAME=VM-20-9-centos OLDPWD=/root XDG_SESSION_ID=66213 USER=root PWD=/ HOME=/root SSH_CLIENT=58.251.76.253 52032 22 SSH_TTY=/dev/pts/0 MAIL=/var/spool/mail/root TERM=xterm-256color SHELL=/bin/bash SHLVL=1 PROMPT_COMMAND=history -a; history -a; printf "3]0;%s@%s:%s

[root@VM-20-9-centos /]# env LS_COLORS=rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;5;9:*.esd=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.mjpg=38;5;13:*.mjpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.m4a=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.oga=38;5;45:*.opus=38;5;45:*.spx=38;5;45:*.xspf=38;5;45: SSH_CONNECTION=58.251.76.253 52032 10.0.20.9 22 LANG=zh_CN.UTF-8 HISTTIMEFORMAT=%F %T HOSTNAME=VM-20-9-centos OLDPWD=/root XDG_SESSION_ID=66213 USER=root PWD=/ HOME=/root SSH_CLIENT=58.251.76.253 52032 22 SSH_TTY=/dev/pts/0 MAIL=/var/spool/mail/root TERM=xterm-256color SHELL=/bin/bash SHLVL=1 PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}" LOGNAME=root DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus XDG_RUNTIME_DIR=/run/user/0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin HISTSIZE=3000 LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env

7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}" LOGNAME=root DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus XDG_RUNTIME_DIR=/run/user/0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin HISTSIZE=3000 LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env

set:列出所有变量(包括 环境变量、自定义变量、与 bash 操作接口有关的变量)

[root@VM-20-9-centos /]# set BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASHRCSOURCED=Y BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_VERSINFO=([0]="2" [1]="7") BASH_LINENO=() BASH_REMATCH=() BASH_SOURCE=() BASH_VERSINFO=([0]="4" [1]="4" [2]="19" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu") BASH_VERSION='4.4.19(1)-release' COLUMNS=179 COMP_WORDBREAKS=$' \t\n"\'><=;|&(:' ...

export:后面不接变量则和env的作用一样,显示所有环境变量,若接了变量 export 变量,则可以把当前变量添加到环境变量中,用unset 变量可以把该变量从环境变量中取消

[root@VM-20-9-centos /]# myname=测试一下环境变量 [root@VM-20-9-centos /]# export myname [root@VM-20-9-centos /]# export declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus" declare -x HISTSIZE="3000" declare -x HISTTIMEFORMAT="%F %T " declare -x HOME="/root" declare -x HOSTNAME="VM-20-9-centos" declare -x LANG="zh_CN.UTF-8" declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s" declare -x LOGNAME="root" declare -x LS_COLORS="rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;5;9:*.esd=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.mjpg=38;5;13:*.mjpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.m4a=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.oga=38;5;45:*.opus=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:" declare -x MAIL="/var/spool/mail/root" declare -x OLDPWD="/root" declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" declare -x PROMPT_COMMAND="history -a; history -a; printf \"\033]0;%s@%s:%s\007\" \"${USER}\" \"${HOSTNAME%%.*}\" \"${PWD/#$HOME/\~}\"" declare -x PWD="/" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="58.251.76.253 52032 22" declare -x SSH_CONNECTION="58.251.76.253 52032 10.0.20.9 22" declare -x SSH_TTY="/dev/pts/0" declare -x TERM="xterm-256color" declare -x USER="root" declare -x XDG_RUNTIME_DIR="/run/user/0" declare -x XDG_SESSION_ID="66213" declare -x myname="测试一下环境变量"

locale:查询语系

[root@VM-20-9-centos /]# locale -a C C.utf8 en_AG en_AU en_AU.utf8 en_BW en_BW.utf8 en_CA en_CA.utf8 en_DK en_DK.utf8 en_GB en_GB.iso885915 en_GB.utf8 en_HK en_HK.utf8 en_IE en_IE@euro en_IE.utf8 ... [root@VM-20-9-centos /]# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" LC_ALL= [root@VM-20-9-centos /]# cat etc/locale.conf LANG=en_US.UTF-8

变量键盘读取、阵列与宣告

read:读取来自键盘变量的输入

[root@VM-20-9-centos /]# read test //按下回车后请输入内容 你好 [root@VM-20-9-centos /]# echo $test 你好

declare:宣告变量的类型

array:类似于数组

[root@VM-20-9-centos /]# var[1]=1 [root@VM-20-9-centos /]# var[2]=2 [root@VM-20-9-centos /]# var[3]=3 [root@VM-20-9-centos /]# echo ${var[1]}, ${var[2]}, ${var[3]} 1, 2, 3

命令执行的判断依据

cmd1 ; cmd2:可以一次执行多个指令,用 ; 隔开

[root@VM-20-9-centos /]# echo aa;echo bb aa bb

cmd1 && cmd2、cmd1 || cmd2

[root@VM-20-9-centos /]# echo a && echo b a b [root@VM-20-9-centos /]# echo a || echo b a

2.3 管线命令(pipe)

如果一群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来设置?这就牵涉到管线命令的问题了 (pipe),管线命令使用的是“ | ”这个界定符号! 另外,管线命令与“连续下达命令”是不一样的

在每个管线后面接的第一个数据必定是“指令”!而且这个指令必须要能够接受standard input 的数据才行,这样的指令才可以是为“管线命令”,例如 less, more, head, tail等都是可以接受 standard input 的管线命令啦。至于例如 ls, cp, mv 等就不是管线命令了!因为 ls, cp, mv 并不会接受来自 stdin 的数据

cut:可以把一段信息的某一段切出来,以行为单位,cut 在处理多空格相连的数据时,可能会比较吃力

[root@VM-20-9-centos /]# last root pts/1 58.251.76.253 Tue Mar 1 13:44 still logged in root pts/0 58.251.76.253 Tue Mar 1 10:24 - 14:31 (04:07) root pts/0 58.251.76.253 Tue Mar 1 10:17 - 10:24 (00:06) root pts/0 58.251.76.253 Mon Feb 28 09:51 - 14:22 (04:31) root pts/0 58.251.76.253 Wed Feb 23 16:40 - 17:49 (01:08) root pts/1 58.251.76.253 Fri Feb 18 14:00 - 20:10 (06:09) root pts/0 58.251.76.253 Fri Feb 18 11:39 - 14:33 (02:54) lighthou pts/0 81.69.102.16 Wed Feb 16 00:10 - 00:11 (00:01) lighthou pts/0 81.69.102.25 Wed Feb 16 00:05 - 00:06 (00:01) lighthou pts/0 81.69.102.18 Wed Feb 16 00:00 - 00:02 (00:02) lighthou pts/0 81.69.102.22 Tue Feb 15 23:57 - 23:58 (00:01) ... [root@VM-20-9-centos /]# last | cut -d ' ' -f 1 root root root root root root root lighthou lighthou lighthou lighthou ...

grep:分析一行讯息,若当中有我们需要的信息,则把该行拿出来

[root@VM-20-9-centos /]# last | grep 'root' -n 1:root pts/1 58.251.76.253 Tue Mar 1 13:44 still logged in 2:root pts/0 58.251.76.253 Tue Mar 1 10:24 - 14:31 (04:07) 3:root pts/0 58.251.76.253 Tue Mar 1 10:17 - 10:24 (00:06) 4:root pts/0 58.251.76.253 Mon Feb 28 09:51 - 14:22 (04:31) 5:root pts/0 58.251.76.253 Wed Feb 23 16:40 - 17:49 (01:08) 6:root pts/1 58.251.76.253 Fri Feb 18 14:00 - 20:10 (06:09) 7:root pts/0 58.251.76.253 Fri Feb 18 11:39 - 14:33 (02:54)

sort:排序

如下默认以开头的第一个字母排序

[root@VM-20-9-centos /]# cat etc/group root: x:0: bin: x:1: daemon: x:2: sys: x:3: adm: x:4: tty: x:5: disk: x:6: [root@VM-20-9-centos /]# cat etc/group | sort adm: x:4: audio: x:63: bin: x:1: cdrom: x:11: cgred: x:983: chrony: x:987:

uniq:重复的数据仅显示一行

[root@VM-20-9-centos /]# last root pts/1 58.251.76.253 Tue Mar 1 13:44 still logged in root pts/0 58.251.76.253 Tue Mar 1 10:24 - 14:31 (04:07) root pts/0 58.251.76.253 Tue Mar 1 10:17 - 10:24 (00:06) root pts/0 58.251.76.253 Mon Feb 28 09:51 - 14:22 (04:31) root pts/0 58.251.76.253 Wed Feb 23 16:40 - 17:49 (01:08) root pts/1 58.251.76.253 Fri Feb 18 14:00 - 20:10 (06:09) root pts/0 58.251.76.253 Fri Feb 18 11:39 - 14:33 (02:54) lighthou pts/0 81.69.102.16 Wed Feb 16 00:10 - 00:11 (00:01) lighthou pts/0 81.69.102.25 Wed Feb 16 00:05 - 00:06 (00:01) lighthou pts/0 81.69.102.18 Wed Feb 16 00:00 - 00:02 (00:02) lighthou pts/0 81.69.102.22 Tue Feb 15 23:57 - 23:58 (00:01) ... [root@VM-20-9-centos /]# last | cut -d ' ' -f 1 | sort | uniq -c 1 67 lighthou 3 reboot 28 root 1 wtmp

wc:显示某个文件里面有多少字、多少行、多少字符

[root@VM-20-9-centos /]# cat etc/passwd | wc 33 70 1719

输出的三个数字中,分别代表: “行、字数、字符数”

可以将数据流的处理过程中某段讯息存下来,同时输出到屏幕供下个指令继续处理

[root@VM-20-9-centos ~]# ls [root@VM-20-9-centos ~]# last | tee last.list root pts/1 58.251.76.253 Tue Mar 1 13:44 still logged in root pts/0 58.251.76.253 Tue Mar 1 10:24 - 14:31 (04:07) root pts/0 58.251.76.253 Tue Mar 1 10:17 - 10:24 (00:06) root pts/0 58.251.76.253 Mon Feb 28 09:51 - 14:22 (04:31) root pts/0 58.251.76.253 Wed Feb 23 16:40 - 17:49 (01:08) root pts/1 58.251.76.253 Fri Feb 18 14:00 - 20:10 (06:09) root pts/0 58.251.76.253 Fri Feb 18 11:39 - 14:33 (02:54) lighthou pts/0 81.69.102.16 Wed Feb 16 00:10 - 00:11 (00:01) lighthou pts/0 81.69.102.25 Wed Feb 16 00:05 - 00:06 (00:01) lighthou pts/0 81.69.102.18 Wed Feb 16 00:00 - 00:02 (00:02) lighthou pts/0 81.69.102.22 Tue Feb 15 23:57 - 23:58 (00:01) ... [root@VM-20-9-centos ~]# ls last.list [root@VM-20-9-centos ~]# cat last.list root pts/1 58.251.76.253 Tue Mar 1 13:44 still logged in root pts/0 58.251.76.253 Tue Mar 1 10:24 - 14:31 (04:07) root pts/0 58.251.76.253 Tue Mar 1 10:17 - 10:24 (00:06) root pts/0 58.251.76.253 Mon Feb 28 09:51 - 14:22 (04:31) root pts/0 58.251.76.253 Wed Feb 23 16:40 - 17:49 (01:08) root pts/1 58.251.76.253 Fri Feb 18 14:00 - 20:10 (06:09) root pts/0 58.251.76.253 Fri Feb 18 11:39 - 14:33 (02:54) lighthou pts/0 81.69.102.16 Wed Feb 16 00:10 - 00:11 (00:01) lighthou pts/0 81.69.102.25 Wed Feb 16 00:05 - 00:06 (00:01) lighthou pts/0 81.69.102.18 Wed Feb 16 00:00 - 00:02 (00:02) lighthou pts/0 81.69.102.22 Tue Feb 15 23:57 - 23:58 (00:01) ...

tr:可以用来删除一段信息中的文字,或者是进行文字信息的替换,不改变原文件里的数据,只是改变展示出来的数据

[root@VM-20-9-centos ~]# cat fileTest Line 105: Expected '!==' and instead saw '!=' eqeqeq Line 115: Expected '!==' and instead saw '!=' eqeqeq Line 149: Expected '===' and instead saw '==' eqeqeq Line 154: Expected '===' and instead saw '==' eqeqeq Line 155: Expected '!==' and instead saw '!=' eqeqeq Line 166: Expected '===' and instead saw '==' eqeqeq Line 194: Expected '===' and instead saw '==' eqeqeq Line 216: Expected '===' and instead saw '==' eqeqeq Line 262: Expected '!==' and instead saw '!=' [root@VM-20-9-centos ~]# cat fileTest | tr -d '!' Line 105: Expected '==' and instead saw '=' eqeqeq Line 115: Expected '==' and instead saw '=' eqeqeq Line 149: Expected '===' and instead saw '==' eqeqeq Line 154: Expected '===' and instead saw '==' eqeqeq Line 155: Expected '==' and instead saw '=' eqeqeq Line 166: Expected '===' and instead saw '==' eqeqeq Line 194: Expected '===' and instead saw '==' eqeqeq Line 216: Expected '===' and instead saw '==' eqeqeq Line 262: Expected '==' and instead saw '=' [root@VM-20-9-centos ~]# cat fileTest Line 105: Expected '!==' and instead saw '!=' eqeqeq Line 115: Expected '!==' and instead saw '!=' eqeqeq Line 149: Expected '===' and instead saw '==' eqeqeq Line 154: Expected '===' and instead saw '==' eqeqeq Line 155: Expected '!==' and instead saw '!=' eqeqeq Line 166: Expected '===' and instead saw '==' eqeqeq Line 194: Expected '===' and instead saw '==' eqeqeq Line 216: Expected '===' and instead saw '==' eqeqeq Line 262: Expected '!==' and instead saw '!='

join:两个文件当中,有 "相同数据" 的那一行加在一起,如下两个文件分别是4行和9行,且都有相同的数据,所用join后总共有36行

[root@VM-20-9-centos ~]# cat fileTemp | nl 1 Line 9: Expected a default case default-case 2 Line 20: Expected a 'break' statement before 'case' no-fallthrough 3 Line 30: Expected a 'break' statement before 'case' no-fallthrough 4 Line 48: Expected a default case default-case [root@VM-20-9-centos ~]# cat fileTest | nl 1 Line 105: Expected '!==' and instead saw '!=' eqeqeq 2 Line 115: Expected '!==' and instead saw '!=' eqeqeq 3 Line 149: Expected '===' and instead saw '==' eqeqeq 4 Line 154: Expected '===' and instead saw '==' eqeqeq 5 Line 155: Expected '!==' and instead saw '!=' eqeqeq 6 Line 166: Expected '===' and instead saw '==' eqeqeq 7 Line 194: Expected '===' and instead saw '==' eqeqeq 8 Line 216: Expected '===' and instead saw '==' eqeqeq 9 Line 262: Expected '!==' and instead saw '!=' [root@VM-20-9-centos ~]# join fileTemp fileTest | nl 1 Line 9: Expected a default case default-case 105: Expected '!==' and instead saw '!=' eqeqeq 2 Line 9: Expected a default case default-case 115: Expected '!==' and instead saw '!=' eqeqeq 3 Line 9: Expected a default case default-case 149: Expected '===' and instead saw '==' eqeqeq 4 Line 9: Expected a default case default-case 154: Expected '===' and instead saw '==' eqeqeq 5 Line 9: Expected a default case default-case 155: Expected '!==' and instead saw '!=' eqeqeq 6 Line 9: Expected a default case default-case 166: Expected '===' and instead saw '==' eqeqeq 7 Line 9: Expected a default case default-case 194: Expected '===' and instead saw '==' eqeqeq 8 Line 9: Expected a default case default-case 216: Expected '===' and instead saw '==' eqeqeq 9 Line 9: Expected a default case default-case 262: Expected '!==' and instead saw '!=' 10 Line 20: Expected a 'break' statement before 'case' no-fallthrough 105: Expected '!==' and instead saw '!=' eqeqeq 11 Line 20: Expected a 'break' statement before 'case' no-fallthrough 115: Expected '!==' and instead saw '!=' eqeqeq 12 Line 20: Expected a 'break' statement before 'case' no-fallthrough 149: Expected '===' and instead saw '==' eqeqeq 13 Line 20: Expected a 'break' statement before 'case' no-fallthrough 154: Expected '===' and instead saw '==' eqeqeq 14 Line 20: Expected a 'break' statement before 'case' no-fallthrough 155: Expected '!==' and instead saw '!=' eqeqeq 15 Line 20: Expected a 'break' statement before 'case' no-fallthrough 166: Expected '===' and instead saw '==' eqeqeq 16 Line 20: Expected a 'break' statement before 'case' no-fallthrough 194: Expected '===' and instead saw '==' eqeqeq 17 Line 20: Expected a 'break' statement before 'case' no-fallthrough 216: Expected '===' and instead saw '==' eqeqeq 18 Line 20: Expected a 'break' statement before 'case' no-fallthrough 262: Expected '!==' and instead saw '!=' 19 Line 30: Expected a 'break' statement before 'case' no-fallthrough 105: Expected '!==' and instead saw '!=' eqeqeq 20 Line 30: Expected a 'break' statement before 'case' no-fallthrough 115: Expected '!==' and instead saw '!=' eqeqeq 21 Line 30: Expected a 'break' statement before 'case' no-fallthrough 149: Expected '===' and instead saw '==' eqeqeq 22 Line 30: Expected a 'break' statement before 'case' no-fallthrough 154: Expected '===' and instead saw '==' eqeqeq 23 Line 30: Expected a 'break' statement before 'case' no-fallthrough 155: Expected '!==' and instead saw '!=' eqeqeq 24 Line 30: Expected a 'break' statement before 'case' no-fallthrough 166: Expected '===' and instead saw '==' eqeqeq 25 Line 30: Expected a 'break' statement before 'case' no-fallthrough 194: Expected '===' and instead saw '==' eqeqeq 26 Line 30: Expected a 'break' statement before 'case' no-fallthrough 216: Expected '===' and instead saw '==' eqeqeq 27 Line 30: Expected a 'break' statement before 'case' no-fallthrough 262: Expected '!==' and instead saw '!=' 28 Line 48: Expected a default case default-case 105: Expected '!==' and instead saw '!=' eqeqeq 29 Line 48: Expected a default case default-case 115: Expected '!==' and instead saw '!=' eqeqeq 30 Line 48: Expected a default case default-case 149: Expected '===' and instead saw '==' eqeqeq 31 Line 48: Expected a default case default-case 154: Expected '===' and instead saw '==' eqeqeq 32 Line 48: Expected a default case default-case 155: Expected '!==' and instead saw '!=' eqeqeq 33 Line 48: Expected a default case default-case 166: Expected '===' and instead saw '==' eqeqeq 34 Line 48: Expected a default case default-case 194: Expected '===' and instead saw '==' eqeqeq 35 Line 48: Expected a default case default-case 216: Expected '===' and instead saw '==' eqeqeq 36 Line 48: Expected a default case default-case 262: Expected '!==' and instead saw '!='

paste:paste 就要比 join 简单多了,相对于 join 必须要比对两个文件的数据相关 性, paste 就直接“将两行贴在一起,且中间以 [tab] 键隔开”

Linux基础知识总结2 | vim与bash

[root@VM-20-9-centos ~]# paste fileTemp fileTest | nl 1 Line 9: Expected a default case default-case Line 105: Expected '!==' and instead saw '!=' eqeqeq 2 Line 20: Expected a 'break' statement before 'case' no-fallthrough Line 115: Expected '!==' and instead saw '!=' eqeqeq 3 Line 30: Expected a 'break' statement before 'case' no-fallthrough Line 149: Expected '===' and instead saw '==' eqeqeq 4 Line 48: Expected a default case default-case Line 154: Expected '===' and instead saw '==' eqeqeq 5 Line 155: Expected '!==' and instead saw '!=' eqeqeq 6 Line 166: Expected '===' and instead saw '==' eqeqeq 7 Line 194: Expected '===' and instead saw '==' eqeqeq 8 Line 216: Expected '===' and instead saw '==' eqeqeq 9 Line 262: Expected '!==' and instead saw '!='

split:可以将一个大文件按文件大小或行数来分区为小文件

如下将fileTest按每2行分成几个小文件,总共有9行,可以分为5个文件,fileSplitaa、fileSplitab、fileSplitac、fileSplitad、fileSplitae

[root@VM-20-9-centos ~]# cat fileTest Line 105: Expected '!==' and instead saw '!=' eqeqeq Line 115: Expected '!==' and instead saw '!=' eqeqeq Line 149: Expected '===' and instead saw '==' eqeqeq Line 154: Expected '===' and instead saw '==' eqeqeq Line 155: Expected '!==' and instead saw '!=' eqeqeq Line 166: Expected '===' and instead saw '==' eqeqeq Line 194: Expected '===' and instead saw '==' eqeqeq Line 216: Expected '===' and instead saw '==' eqeqeq Line 262: Expected '!==' and instead saw '!=' [root@VM-20-9-centos ~]# split -l 2 fileTest fileSplit [root@VM-20-9-centos ~]# ls fileSplitaa fileSplitab fileSplitac fileSplitad fileSplitae fileTemp fileTest last.list [root@VM-20-9-centos ~]# cat fileSplita* Line 105: Expected '!==' and instead saw '!=' eqeqeq Line 115: Expected '!==' and instead saw '!=' eqeqeq Line 149: Expected '===' and instead saw '==' eqeqeq Line 154: Expected '===' and instead saw '==' eqeqeq Line 155: Expected '!==' and instead saw '!=' eqeqeq Line 166: Expected '===' and instead saw '==' eqeqeq Line 194: Expected '===' and instead saw '==' eqeqeq Line 216: Expected '===' and instead saw '==' eqeqeq Line 262: Expected '!==' and instead saw '!='

linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:都2021了,还没体验过项目上云?——老司机带你一行代码秒上云
下一篇:行行摄摄——从风景画谈风光摄影(二)
相关文章