linux

内部命令和外部命令

• Shell不需要启动一个单独的进程来运行内部命令

• Shell需要创建(fork)和执行(exec)一个新的子进程来运行外部命令

• 尽量使用内部命令有助于性能的提升

bash-->cd --解析内部命令的流程

bash-->forks-->bash(子进程)-->ls --解析外部命令的流程

# type ls --外部命令

ls is aliased to `ls --color=tty'

# type cd --内部命令

cd is a shell builtin

1、文件名

• 你可以用任何你认为合适的可见字符或不可见字符为文件或目录命名,但不要给自己找麻烦

• 从安全和方便角度

• 大小写字符

• 下划线

• 圆点

• 逗号

• 尽量不要出现“空格”

• 扩展名

• 方便分类,非必须

• 命令通过文件内结构判断其类型(file)

-type c

File is of type c:

b block (buffered) special

c character (unbuffered) special

d directory

p named pipe (FIFO)

f regular file

l symbolic link; this is never true if the -L option or the -fol-

low option is in effect, unless the symbolic link is broken.

If you want to search for symbolic links when -L is in effect,

use -xtype.

s socket

D door (Solaris)

linux

2、通配符

• ? 任意单个字符,不能匹配空

• * 任意零个或多个字符组(不能匹配以点开头的文件)

• [ab] a或者b

• [a-z] a到z之间的任意字符,包括端点在内

• 是Shell 而非命令本身处理通配符,命令后的通配符会在命令执行前就被代换了

• 如果需要命令而非Shell处理通配符,请用“"将通配符转义,跳脱字符

# ll /dev/sd?

brw-r----- 1 root disk 8, 0 03-14 09:03 /dev/sda

# ll /dev/sd*

-rw-r--r-- 1 root root 0 03-14 11:30 /dev/sd

brw-r----- 1 root disk 8, 0 03-14 09:03 /dev/sda

brw-r----- 1 root disk 8, 1 03-14 09:03 /dev/sda1

brw-r----- 1 root disk 8, 2 03-14 09:03 /dev/sda2

brw-r----- 1 root disk 8, 3 03-14 09:03 /dev/sda3

brw-r----- 1 root disk 8, 4 03-14 09:03 /dev/sda4

brw-r----- 1 root disk 8, 5 03-14 09:03 /dev/sda5

# ll /dev/sd?[1-5]

brw-r----- 1 root disk 8, 1 03-14 09:03 /dev/sda1

brw-r----- 1 root disk 8, 2 03-14 09:03 /dev/sda2

brw-r----- 1 root disk 8, 3 03-14 09:03 /dev/sda3

brw-r----- 1 root disk 8, 4 03-14 09:03 /dev/sda4

brw-r----- 1 root disk 8, 5 03-14 09:03 /dev/sda5

# ll /dev/tty[1-5][0-9]

# ll /dev/sda[13]

brw-r----- 1 root disk 8, 1 03-14 09:03 /dev/sda1

brw-r----- 1 root disk 8, 3 03-14 09:03 /dev/sda3

# ll /dev/sda[1-3]

brw-r----- 1 root disk 8, 1 03-14 09:03 /dev/sda1

brw-r----- 1 root disk 8, 2 03-14 09:03 /dev/sda2

brw-r----- 1 root disk 8, 3 03-14 09:03 /dev/sda3

3、转义

# touch test*?[].sh

4、跳脱字符

# ls

> /root

> a

> /b

5、bash中的引号

双引号 “ ” :允许通过$符号引用其他变量值,会把引号的内容当成整体来看待

单引号 ‘ ’ :禁止引用其他变量值,shell中特殊符号都被视为普通字符,会把引号的内容当成整体来看待

6、反撇号 ``

$() 在执行命令的过程中会优先执行

; 可对一行命令进行分割,在执行过程中不考虑上一个命令执行是否是正确的

&& 可对一行命令进行分割,在执行过程中考虑上一个命令执行是否是正确的

||

7、! 命令历史

# echo "This system is "HOSTNAME""

This is system is HOSTNAME

# echo "This system is "$HISTNAME""

This is system is

# echo "This system is "$HOSTNAME""

This is system is desktop8.example.com

# echo 'This system is "$HOSTNAME"'

This is system is "$HOSTNAME"

[root@desktop8 ~]# echo $5.00

.00

[root@desktop8 ~]# echo $5.00

$5.00

# host=`ifconfig eth0 |grep 'inet addr'|cut -d : -f2|cut -d ' ' -f1`

# host2=$(ifconfig eth0 |grep 'inet addr'|cut -d : -f2|cut -d ' ' -f1)

8、运算符

$[]

# a=$((1 + 10))

# echo $a

# a=$[1 + 100]

# echo $a

9、shell的配置文件(软件+配置文件)

• csh

• $HOME/.cshrc

• 登录时执行$HOME/.login

• 登出时执行$HOME/.logout

• bash

用户加载shell配置流程:

# user01-->login-->bash-->/etc/profile-->$HOME/.bash_profile-->$HOME/.bashrc-->/etc/bashrc

全局配置文件:

/etc/profile --bash工作环境的配置(环境变量)

/etc/profile.d/*.sh --/etc/profile的扩展配置文件

/etc/bashrc --bash的配置文件

针对每个用户的配置文件:

$HOME/.bash_history--存放命令历史

$HOME/.bash_logout--注销/退出shell的时候执行的脚本

$HOME/.bash_profile

$HOME/.bashrc

10、命令的编辑

ctrl + u --删除当前光标至行首内容

ctrl + k --删除当前光标至行尾内容

ctrl + c --中断

ctrl + l --清屏

ctrl + a --跳到行首HOME

crtl + e --路到行尾END

ctrl + r --快速搜索history命令

ctrl + z --转入后台运行 fg bg

Ctrl + d --退出shell,logout

↑(Ctrl+p) 显示上一条命令

↓(Ctrl+n) 显示下一条命令

alias--查询系统中所有已经存在的别名

alias 别名=‘真名’

unalias--取消系统中的别名

unalias 别名

unalias -a删除所有的别名

临时:

alias la='ls -a'

固定:

可以写至以下文件,定义完成需要使用source来刷新,或者注销重新登录用户:

/etc/profile

$HOME/.bash_profile

$HOME/.bashrc

/etc/bashrc

/etc/profile.d/*.sh

11、命令历史

HISTSIZE=1000设置命令历史的条数

history 查询当前用户用过的所有命令历史(内存)

cat $/HOME/.bash_history | grep xx(硬盘)

history -w 同步内存中的命令至硬盘($/HOME/.bash_history)

自动同步:exit/注销

history -c

echo "" > $HOME/bash_history--清空命令历史

# :> $HOME/bash_history

调用命令历史:

!101通过编号

!!调用最后一条命令历史

!vim调用离我最近一条以vim开头的命令历史

!$调用最后一条命令历史中的参数

命令字 + [选项] + 参数

ls -l /

ctrl + r查找命令历史

12、bash的特殊符号

< << > >> &> |

shell 非_Shell基本操作(一)相关推荐

  1. redchat怎么编写shell脚本_shell脚本编写思路

    shell有两种执行命令的方式: 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条. 批处理(Batch):用户事先写一个Shell脚本(Script) ...

  2. 面试常用shell脚本_Shell脚本编写及常见面试题

    注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规则:变量名大写.局部变量小写,函数名小写,名字体现出实际作用. 4)默认变量是全局的,在函 ...

  3. linux 自动化交互套件 expect 介绍 shell非交互

    expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信. expect自动交互流程: spawn启动指定进程---expect获取指定关键字--- ...

  4. false shell 判断_Shell 流程控制

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) {s ...

  5. shell 工具_shell 脚本加密工具 - shc

    shell 脚本写起来很方便,身为脚本的问题就是保密性不行,写了什么内容编辑器一打开看看就知道了, 脚本里面完全不能放用户名,密码什么的, shc 可以解决你的这一部分问题. 安装shc * ubun ...

  6. shell脚本_Shell脚本

    shell脚本 In the command line, a shell script is an executable file that contains a set of instruction ...

  7. mysql定义shell变量_shell 变量的定义,赋值,运算

    一.变量类型 1.1.自定义变量 1.定义变量 不能使用纯数字命名,不能使用横杠命名 变量名=变量值 [root@localhost ~]# name=erha 2.引用变量 $变量名 或者 ${变量 ...

  8. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  9. expect 赋值shell变量_Shell处理字符串常用技巧终结篇

    Shell处理字符串常用技巧之判值.赋值 在Shell编程中,经常要处理一些字符串变量. 下面给大家整理Shell处理字符串常用技巧之判值.赋值. 请参考: Shell处理字符串常用技巧之分割.替换字 ...

最新文章

  1. 深度学习不work?这有一份超全的Debug检查清单
  2. app开发外包的流程、需求、报价,需要知道的细节!
  3. 在centos安装redis
  4. Kullback–Leibler divergence(相对熵,KL距离,KL散度)
  5. JavaFX 一 出生新手村(阅读小规则)
  6. 【APICloud系列|13】移动端适配通揽
  7. flutter版本的玩Android客户端
  8. web.xml 配置 contextConfigLocation
  9. 【笔记】android应用签名
  10. 雾霾颗粒物携带了什么,从何而来?微生物组测序告诉您!
  11. 海湾标准汉字码表查询_标准汉字码表
  12. 单片机蓝牙模块与手机蓝牙通信(7)
  13. 获取Linux服务器公网和内网IP地址
  14. 思科(Cisco)交换机路由器命令大全
  15. LearnOpenCV学习——平均脸
  16. K8s污点容忍度横向主节点
  17. Detecting Photoshopped Faces by Scripting Photoshop笔记
  18. 【面试技巧】十大面试必胜绝招
  19. AliExpress绑定万事达虚拟信用卡(Mastercard)测试实操教程
  20. Android Studio教程从入门到精通

热门文章

  1. 端到端神经视频编码=A Better Trade-off ?
  2. 窥见C++11智能指针
  3. AI商业产品经理:我眼中的AI简史
  4. FFMPEG结构体分析
  5. FFMPEG学习(一)---【命令行】采集视频和音频
  6. RTMPdump(libRTMP)源代码分析 4: 连接第一步——握手(Hand Shake)
  7. rtmp官方协议详解
  8. MacOS运行多个实例
  9. Spark _16 _SparkUIMaster HA
  10. 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?