<span>linux(2)深入shell</span>

1、通配符

通配符含义===>匹配文件名

符号 作用
* 匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个) ls file *
? 匹配任何一个字符(不在括号内时)?代表任意1个字符 ls file 0
[abcd] 匹配abcd中任何一个字符
[a-z] 表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0
{…} 表示生成序列. 以逗号分隔,且不能有空格
[!abcd] 或[^abcd]表示非,表示不匹配括号里面的任何一个字符
 [root@localhost ~]# cd /etc #切换目录
 [root@localhost etc]# ls *.png #列出所有PNG图片
 favicon.png
[root@localhost etc]# ls a? #列出首字母是a,文件名只有两个字符的所有文件
ls: 无法访问a?: 没有那个文件或目录
[root@localhost etc]# ls [abc]* #列出首字母是a、b或c的所有文件
adjtime      autofs.conf            brltty.conf                crontab
aliases      autofs_ldap_auth.conf  cgconfig.conf              crypttab
aliases.db   auto.master            cgrules.conf               csh.cshrc
anacrontab   auto.misc              cgsnapshot_blacklist.conf  csh.login
ant.conf     auto.net               chrony.conf
asound.conf  auto.smb               chrony.keys
at.deny      bashrc                 cron.deny
preferreddrivers.xml
[root@localhost etc]# ls [!abc]*		#列出首字母不是a、b或c的所有文件
DIR_COLORS                  krb5.conf                 pcp.sh
DIR_COLORS.256color         ksmtuned.conf             pinforc
DIR_COLORS.lightbgcolor     ksysguarddrc              pnm2ppa.conf
dleyna-server-service.conf  ld.so.cache               printcap

2、重定向

输出重定向

[root@localhost etc]# cat > f1 #创建f1文件,输入内容,按【Ctrl+D】退出

This is my file named f1.
[root@localhost etc]# cat > f2		#创建f2文件
This is my file named f2.
[root@localhost etc]# cat f1 f2>f		#将f1、f2合并并生成f

[root@localhost etc]# cat f		#查看f文件内容
This is my file named f1.
This is my file named f2.

[root@localhost etc]# cat >>f1 #向f1文件添加内容

append to f1

[root@localhost etc]# cat f1 #查看f1文件内容

This is my file named f1.
append to f1

错误输出重定向

[root@localhost etc]# ls /temp 2>err		

[root@localhost etc]# cat err

ls: 无法访问/temp: 没有那个文件或目录

[root@localhost etc]# cat <f1		#用输入重定向的方式查看f1的文件内容
This is my file named f1.
append to f1

3、管道

[root@localhost etc]# ls |wc -l #统计当前目录中文件和子目录的数目

318

4、历史记录

[root@localhost etc]# history 5 #查看最近执行过的5个shell命令

  120  ls /temp 2>err
  121  cat err
  122  cat <f1
  123  ls |wc -l
  124  history 5

[root@localhost etc]# !123 #执行序号为123的shell命令

ls |wc -l
318

[root@localhost etc]# !! #执行刚刚执行过的命令

ls |wc -l
318

5、别名

[root@localhost etc]# 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'
[root@localhost etc]# alias ctab='cat /etc/initab'		#设置别名命令ctab

[root@localhost etc]# unalias ctab=‘cat /etc/initab’ #删除已创建的别名命令

-bash: unalias: ctab=cat /etc/initab: 未找到

6、自动补全

[root@localhost etc]# ls #查看当前目录中的文件和子目录
favicon.png                 nsswitch.conf.bak         terminfo
fcoe                        ntp                       tmpfiles.d
festival                    ntp.conf                  tomcat
filesystems                 numad.conf                Trolltech.conf
firewalld                   oddjob                    trusted-key.key
fonts                       oddjobd.conf              tuned
fprintd.conf                oddjobd.conf.d            udev
[root@localhost etc]# cat fs #不需要输入完整的命令cat fstab,只需输入cat fs,然后按下【tab】即可
[root@localhost etc]# cap #输入命令后,连续按两次【Tab】键,屏幕显示所有以cap开头的shell命令
capsh      captoinfo  
[root@localhost etc]# capsh #用户补齐命令的剩余部分即可执行相关命令
[root@localhost ~]# cat /etc/
cat: /etc/: 是一个目录
[root@localhost ~]# cat /etc/pr
prelink.conf.d/ profile         protocols       
printcap        profile.d/      
[root@localhost ~]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}

文本编辑器vi

Vi工作模式

启动vi

[root@localhost etc]# vi num		#vi 文件名
[root@localhost etc]#vi 			#不输入文件名会在保存退出时必须指定文件名

编辑文件(此步在vi文件中操作)

输入文本

直接按键盘上的字母(区分大小写)

字符 作用
i 从当前的光标位置开始输入字符
I 光标移动到当前的行首,开始输入字符
a 从当前的光标的下一个位置,开始输入字符
A 光标移动到当前的光标的行尾,开始输入字符

查找字符

字符 作用
/字符 从行首开始搜索这个字符
?字符 从行尾开始搜索这个字符
n 继续查找满足条件的字符串

撤销与重复(命令模式下)

字符 作用
u 撤销上一步操作
. 重复上一步操作

文本块操作

字符 作用
:set nu 显示行号
:set nonu 不显示行号
:n1,n2 co n3 将从n1到n2之间的所以文本复制到n3行之下
:n1,n2 m n3 将从n1到n2之间的所以文本移动到n3行之下
:n1,n2 d 删除从n1到n2之间的所以文本
:n1,n2 s/字符串1/字符串2/g 将n1行到n2行之间的所有字符串1用字符串2代替

保存与退出(此步在vi文件中操作)

字符 作用
:w[文件名] 保存为指定文件
:w 直接保存退出
:q 退出vi,如有改动会提示请保存退出
:q! 不保存,强制退出vi
:wq 保存并退出
:x 保存并退出
全部评论

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务