终端是主机的一个远程输入/输出设备。在早期计算机主机昂贵,一个主机一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成。个人计算机可以运行称为终端仿真程序来模仿一个终端的工作。
通常在使用Linux时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成,在图形界面下为了实现在一个窗口中完成用户输入和显示输出,Linux系统还提供了一个叫做终端模拟器的程序(Terminal)。
终端本质上对应着 Linux 上的 /dev/tty 设备,Linux 多用户登录就是通过不同的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说应该是 6 个 virtual consoles)来让用户登录。
在物理机系统上可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换。当切换到其中一个终端后想要切换回图形界面,可以按下[Ctrl]+[Alt]+[F7]来完成。
Shell和桌面一样是计算机接收用户指令的一种环境,其内置了一系列命令,如 cd、mkdir 等,用户通过这些指令能操作计算机执行指定的操作。
不同的操作系统具有不同的Shell,不同Shell在终端的提示也不完全相同:
Shell缩写完整路径root 用户提示符非 root 用户Bourne shellsh/bin/sh#``$C shellcsh/bin/csh#``%Korn shellksh/bin/ksh#``$Bourne-Again shellbash/bin/bash[user@hostname path] #``[user@hostname path] $Z shellzsh/bin/zsh<hostname>#``<hostname>%
执行which $SHELL查看系统当前Shell,执行cat /etc/shells列出当前系统所有可用的Shell,执行chsh -s /bin/bash修改默认Shell为Bash。
Bash是大多数Linux发行版的默认Shell。Shell命令除了直接在终端输入外,还可以写在Shell脚本文件中,文件后缀名为.sh。对于Bash而言,在文件第一行添加#!/bin/bash告知终端使用Bash执行这个脚本文件。
执行/bin/bash --version查看当前Bash版本。
若当前Shell不是Bash,输入bash进入Bash环境。输入exit命令或按Ctrl + d退出Bash环境。
单行注释是一行文本,以井号(#)开头,从该字符开始一直延伸到该行结束。在此行内,任何内容都会被 Shell解释器忽略。
Shell脚本也支持多行注释,也称块注释。在Bash Shell中,块注释通常使用以下语法:
: ' 这是多注释 这是多注释 这是多注释 这是多注释 '
Bash 中的单引号和双引号都可用来表示字符串,不过单引号会保留字符串的字面意思,如单引号中$和```不会进行计算,</code>也不会转义。
a=1 echo '$a' # 输出:$a echo "$a" # 输出:1 echo '`date`' # 输出:`date` echo "`date`" # 输出:2023年 09月 08日 星期五 15:06:03 CST
双引号的另一个用处是保证命令按原始格式输出:
echo "ls -l"
反斜杠</code>在 Bash 中用法如下:
Shell可以看做是一个命令解释器,提供了交互式的文本控制台界面,通过终端控制台输入命令,由Shell进行解释并最终交给内核执行。
一些基础功能的系统命令是直接内嵌在Shell中的,系统加载启动之后会随着Shell一起加载,常驻系统内存中。这些命令被称为“内置(built-in)命令”;相应的其他命令被称为“外部命令”。
判断是否内置命令:type 命令。
help命令获得Shell内置命令的帮助信息,外部命令帮助信息可用:命令 --help。
命令通用格式:command [-options] [parameter]
常用快捷键功能ctrl + c强制停止ctrl + d退出或登出ctrl + l清屏,等同于clear,彻底清屏是:resettab提示(更重要的是可以防止敲错)上下键查找执行过的命令ctrl + a跳到命令开头,ctrl + e:跳到命令结尾ctrl + 左键头向左跳一个单词,ctrl + 右键头:向右跳一个单词
cd回到家目录cd -回到上一次所在目录cd ..回到当前目录的上一级目录cd -P a/如果目标目录是软链接,则直接切换到软链接指向的实际目录
创建多级目录:mkdir -p a/b/c
删除多级目录:rmdir -p a/b/c
删除非空目录:rm -rf 目录名
重命名目录:mv old_dir_name new_dir_name
# 复制目录 cp -r a/ b/ # 有些命令可能是别名,在命令前加反斜杠\使用原生命令 \cp -r a/ b/ # 查看别名 alias # 删库跑路,千万不要使用 rm -rf /*
输出内容到控制台。-e:支持反斜线控制的字符转换。
$ echo 'abc\n123' abc\n123 $ echo -e 'abc\n123' abc 123 # 输出某个变量值内容 $ echo $USER root
输出文件尾部。 tail -f 文件:持续显示文件最新追加的内容,按Ctrl + s暂停监听,按Ctrl + q继续监听。
查看历史命令:history。
快捷键:ctrl + r,输入内容去匹配历史命令(reverse-i-search)`py': python。如果搜索到的内容是需要的,按回车键直接执行;键盘左右键,可以得到此命令(不执行)。
清空历史命令:history -c。
$ date "+%Y-%m-%d %H:%M:%S" 2023-09-15 12:48:49 # 查看时间戳 $ date +%s 1694753377 # 设置系统当前时间 $ date -s "2123-09-15 12:48:49" # 同步时间 $ ntpdate
# 显示当前所有登录的用户信息 who # 查看当前用户,实际用户(登陆系统时所使用的用户) who am i # 查看当前用户,有效用户(当前执行操作的用户) whoami
查找命令所在位置。
# which cd /usr/bin/cd # whereis cd cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/mann/cd.n.gz
首先添加一个硬盘,使用命令fdisk -l查看,发现没有找到新加的硬盘,使用命令lsblk查看,也是没有找到新加的硬盘,这时需要重启:reboot。重启完,使用命令lsblk查看,发现多了一块硬盘,假如硬盘为/dev/sdb。
接下来对硬盘进行分区:fdisk /dev/sdb,输入n开始分区,输入p选择主分区,一直回车即可。输入命令p显示当前磁盘分区,接着输入w写入分区信息并退出。
接下来需要对硬盘进行格式化文件系统操作:mkfs -t xfs /dev/sdb1,查看信息:lsblk -f。
最后,将硬盘挂载到指定目录:mount /dev/sdb1 /home/test/。想卸载的话:unmount /home/test/。
CentOS使用yum管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法:yum [-y] [install | remove | search] 软件名称
选项:-y,自动确认,无需手动确认安装或卸载过程。install:安装,remove:卸载,search:搜索。
yum命令需要root权限,可以su切换到root,或使用sudo提权。
Ubuntu使用apt管理器。语法:apt [-y] [install | remove | search] 软件名称
tar命令用于压缩和解压缩,命令选项如下: -c:创建打包文件 -v:显示打包或解包详细信息 -f:指定文件名称,必须放到所有选项后面 -z:压缩(.gz) -j:压缩(.bz2),压缩率更高 -x:解压缩 -C:解压到指定目录
压缩:tar -zcvf 1.tar.gz *.txt或tar -jcvf 1.bz2 *.txt
解压缩:tar -zxvf 1.tar.gz或tar -jxvf 1.bz2,指定目录tar -zxvf 1.tar.gz -C ./abc
本文作者:a
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!