shell简介
Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
常见的shell有两种,一种是图形界面,即GUI,一种是命令行终端,即CLI。
常用的GUI:Graphic User Interface
- Windows
- X-Window
- Gnome
- KDE
- Xfce
常用的CLI:Command Line Interface
- bash
- sh
- csh
- zsh
- ksh
- tcsh
Redhat 和 Centos使用的是:bash shell
命令行界面
命令行是可被用来输入指令到计算机系统中的基于文本的界面。 Linux的命令行是通过一个叫做shell程序提供。Redhat和Centos系统默认的shell为Bourne-Again Shell(bash)。 Bash是在类UNIX系统中,是Bourne shell(sh)使用的最成功的其中一个shell的改进版本。
当shell被交互使用时,它将显示一个字符串时,它从用户等待一个命令。这就是所谓的shell提示符。当一个普通用户启动一个shell,默认提示以$字符结束。
Linux基础命令
格式
命令 [选项] [参数] 选项:(可以有0个或多个) 短选项:- 多个选项可以组合: -a -b = -ab 长选项:-- 长选项通常不能组合 参数:命令的作用对象(可以有0个或多个)
类型
- 内部命令:shell内置
- 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
- type 显示那种类型
[root@C20230104840383 ~]# type cd cd 是 shell 内嵌
目录管理命令
//目录管理 ls //列出目录内容 -l //长格式 //以长格式显示的第一段含义: 第一个字符:文件类型 - //普通文件(f) d //目录文件 b //块设备文件(block) c //字符设备文件(character) l //符号链接文件(symbolic link file) p //命令管道(pipe) s //套接字文件(socket) 后面九位字符:文件权限 9位,每3位一组,每一组:rwx(读,写,执行) //以长格式显示的第二段含义: 文件硬链接的次数 //以长格式显示的第三段含义: 文件的属主(owner) //以长格式显示的第四段含义: 文件的属组(group) //以长格式显示的第五段含义: 文件大小(size),单位是字节 //以长格式显示的第六,七,八段含义: 时间戳(timestamp),最近一次被修改的时间 访问 //access,访问的时间 修改 //modify,文件内容被修改的时间 改变 //change,metadata(元数据)变化的时间 -h //做单位转换 -a //显示以.开头的隐藏文件 . //表示当前目录 .. //表示父目录 -d //显示目录自身属性 -i //显示文件的inode(index node) -r //逆序显示 -R //递归(recursive)显示 cd //切换目录 pwd //查看当前所在目录路径 tree //查看目录树 -d //只显示目录 -L level //指定显示的层级数目 -P 字符串 //显示指定字符串匹配到的文件
文件管理
/文件管理 mkdir //创建目录 -p //创建目录时若父目录不存在则自动创建 -v //显示目录创建过程 rmdir //删除目录,只能删除空目录 touch //创建一个空文件,touch一个已经创建的文件修改时间戳 stat //显示文件或文件系统的状态 rm //删除文件,删除命令默认会提示是否需要删除。 -r //递归删除,删除目录时必须使用此选项 -f //强制删除,不询问 cp //复制文件,一个文件到一个文件,多个文件到一个目录 可同时移动多个 最后必须为目的地 -r //递归拷贝,拷贝目录时必须使用此选项 -p //拷贝时保留原权限 -a //相当于-rp mv //移动文件 可同时移动多个 最后必须为目的地 //特殊用法 改名 在当前目录进行 mv 123 321 install //复制文件并且设置属性 -m MODE //复制时修改权限 -o OWNER //复制时修改文件属主 -g GROUP //复制时修改属组
主机管理
//主机名管理 hostname //查看或临时修改主机名,重开终端生效,重启失效 hostname uquq //临时修改主机名 hostnamectl //查看或永久修改主机名,重开终端生效,重启依然有效 hostnamectl set-hostname uquq //永久修改主机名 或者直接编辑配置文件 vim后续会继续说到 vim /ect/hostname //按i进行编辑光标在前一位进行输入或者按a进行编辑光标会自动往后移一位 一般用a方便插入 按之后最下面会显示 -- INSERT -- 可移动光标删除写入主机名 按ESC退出编辑 输入:wq保存退出 //其它 time //显示命令的执行时间,例如time ls /etc clear //清屏 whoami //显示当前登录用户 who //查看当前在线用户 w //显示当前在线用户并显示其在运行的命令 which //显示指定命令的绝对路径 date //显示或设置日期与时间 //不带参数的date用于显示当前系统日期与时间 //格式化输出时间:+ %Y //年 %m //月 %d //日 %F //年-月-日 %H //时 %M //分 %S //秒 如date "+%Y-%m-%d" -s //以字符串方式设置时间如 date -y "+%Y-%m-%d" cal //打印日历 cal -3 //打印三个月 上下一个月 cal -y //打印一年 bc //Linux中的计算器 -l //使用标准数学库 echo 'scale=3;20/2'|bc -l //scale=3表示保留两位小数 ldd //查看指定程序有哪些依赖库文件 程序组成: 二进制程序 库文件 配置文件 帮助文件
获取命令帮助
//内部命令 help COMMAND //外部命令 COMMAND --help //在线文档 info COMMAND //命令手册 manual man COMMAND //文档 /usr/share/doc whatis COMMAND //用于查看COMMAND出现在man的哪一章节中。 //查询man帮助中此命令的作用 //man是分章节的,以下是每一章节的内容介绍: 1 用户命令(/bin,/usr/bin,/usr/local/bin); 2 系统调用; 3 库调用; 4 特殊文件(设备文件); 5 文件格式(配置文件 的语法); 6 游戏; 7 杂项(Miscellaneous); 8 管理命令(/sbin,/usr/sbin,/usr/local/sbin) //man手册注意事项: [] //可选 <> //必选 ... //可以出现多次 | //多选一 {} //分组 NAME //命令名称及功能简要说明 SYNOPSIS //用法说明,包括可用的选项 DESCRIPTION //命令功能的详尽说明,可能包括每一个选项的意义 OPTIONS //说明每一个选项的意义 FILES //此命令相关的配置文件 BUGS //报告bug EXAMPLES //使用示例 SEE ALSO //另外参照 //man翻屏 SPACE //向后翻一屏 b //向前翻一屏 enter //向后翻一行 k //向前翻一行 //查找 /text //向后 ?text //向前 n //下一个 N //前一个 q //退出
bash特性
bash支持以下特性:
- 支持命令历史、命令补全
- 支持管道、重定向
- 支持命令别名
- 支持命令行编辑
- 支持命令行展开
- 支持文件名通配
- 支持变量
- 支持编程
bash支持的引号
"" //双引号,弱引用,可以实现变量替换 '' //单引号,强引用,不完成变量替换 `` //反引号,键盘左上角Esc下面的键,用于命令替换 $() //与反引号用
常用操作
//光标跳转 Ctrl+a //跳到命令行首 Ctrl+e //跳到命令行尾 Ctrl+u //剪切光标至命令行首的内容 Ctrl+k //剪切光标至命令行尾的内容 Ctrl+<- //光标定位到离自己最近的一个单词前面 Ctrl+p //重复上一次命令 Ctrl+w //剪切前面的字符至上一个空格处 Ctrl+y //粘贴或者恢复上次的删除。 Ctrl+l //清屏 Ctrl+s //暂时冻结当前shell的输入 Ctrl+q //解冻 //tab键命令和路径补全 在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令,供用户选择。 在命令行输入文件路径时,如果忘记文件路径全称,则只需要输入文件路径开头几个字母,也可以使用tab键进行补全。 //命令别名 alias name="命令 参数" [root@cx ~]# alias kkkk="ls /root" [root@cx ~]# kkkk anaconda-ks.cfg iftop-1.0pre4 //例如 //命令行常见特殊符号 ~ //展开为用户的家目录 ~USERNAME //展开为指定用户的家目录 {} //列表,可用于存放数据 例如创建5 0个文件 touch abc{1..50} \ //转义,使得后面一个特殊字符没有任何特殊含义 && //前面的命令执行成功后才执行后面的命令 || //前面的命令执行失败后才执行后面的命令 ; //不管前面的命令执行成功还是失败都执行后面的命令 //文件名通配符 * //匹配任意长度的任意字符 例如看以1结尾的文件 ls *1以CX开头 ls CX* ? //匹配任意单个字符 ls CX? 表示查看三个字符且以CX开头的文件 [] //匹配指定范围内的任意单个字符 // ls CX[0-9] 表示查看三个字符且以CX开头的文件且以0-9结尾的文件 例如:[abc],[a-m],[0-9] [[:space:]] //表示空白字符 [[:punct:]] //表示标点符号 [[:lower:]] //表示小写字母 [[:upper:]] //表示大写字母 [[:alpha:]] //表示大小写字母 [[:digit:]] //表示数字 [[:alnum:]] //表示数字和大小写字母 [^] //匹配指定范围之外的任意单个字符 //环境变量 PATH //命令搜索路径 HISTSIZE //命令历史缓冲区大小 SHELL //当前shell //bash内置变量 RANDOM //保存着0-32768之间的随机数 //命令历史 history //查看命令历史 -c //清空命令历史 -d OFFSET [n] //删除指定位置的命令历史 -w //保存命令历史至历史文件~/.bash_history中 //命令历史的使用技巧 !n //执行命令历史中的第n条命令 !-n //执行命令历史中倒数第n条命令 !! //执行上一条命令 !string //执行命令历史中最近一个以指定字符串开头的命令 !$ //引用前一个命令的最后一个参数 esc . //按下esc松开后按. 引用前一个命令的最后一个参数
评论 (0)