第1章:linux基础

ABI与API;用户空间与内核空间 =================================================================== ABI:描述了应用程序和OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行 API:定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译 windows的运行程序格式:exe;.dll;.lib linux的运行程序格式:ELF;.so;.a =================================================================== 用户空间(user space) 用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不受影响。 只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(system call),才能向内核发出指令 内核空间(kernel space) linux内核的运行空间,可以执行任意命令,调用系统的一切资源 str="www.baidu.com" #用户空间 x=x+100 #用户空间 file.write(str) #切换到内核空间,用户不能直接写文件(操纵硬件,写入内容到磁盘),必须通过内核安排 y=x+200 #切换回用户空间 在用户空间,只能做一些普通的操作 而要涉及到操作硬件,则只有内核才有权限,比如open,read,write,close等等,需要切换到内核空间,才能进行这些操作 用户空间,内核空间,上下文切换

linux通配符;linux特殊字符 ------------------------------------------------------------------------------- linux通配符: * 匹配所有 ? 匹配单个字符,有且只有1个 [acgz] 匹配中括号内的任意一个字符 [a-z] 匹配中括号中指定范围内的任意一个字符(注意,[a-c]将匹配a,A,b,B,c) [!a-d]或[^1-9] !或^都可以用于取反 各种预定义的字符类,例如[:digit:],详见正则 ---------------------------------------------- linux特殊字符---路径位置: ~ 用户家目录路径 - 上一次目录路径 . 当前目录路径 .. 上级目录路径 ---------------------------------------------- linux特殊字符---引号相关: ''单引号 所见即所得:shell忽略所有特殊字符 ""双引号 在双引号中的三种特殊字符不被忽略:$、\、`;即双引号会解析变量 ``反引号 解析命令,等价于$(),但是推荐使用$() shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。 ---------------------------------------------- linux特殊字符---其他字符: ; 分号,命令分隔符。分号前后是2条无关联的命令 # 1.管理员root提示符,2.注释 $ 1.普通用户提示符;2.调用变量时使用,例如$();touch $(date +%F).txt | 管道符,前面的数据交给后面处理 \ 转义字符,让字符还原本义 {} 1.生成序列;2.引用变量,让变量成为整体,例如 ehco "${a}is a teacher" ! 1.取反;2.vim 强制;3.先显示符合字符开头的命令,然后再执行该命令, 例如:!echo,将会打印显示上一次的echo,然后执行该命令;完全也可以使用!ec,因为只是匹配符合字符开头的命令 && 等同于and,前面正确后面才输出,例如:pwd && echo oldboy || 等同于or,前面错误后面才输出,例如:touch || echo oldboy & 将程序放入后台运行符,该命令还未讲

pwd、dirname、basename、cd、ls、echo、printf、tr(字符替换) ============================================================== pwd 打印工作目录;打印当前目录 pwd命令 显示当前shell的绝对路径 -L 显示链接路径(默认) -P 显示真实物理路径 basename #接收绝对路径形式的字符串,打印基名,即打印文件名 dirname #接收绝对路径形式的字符串,打印目录名,即绝对路径中的目录 --------------------------------------------------------- cd命令用于切换当前工作目录。 cd /home/dir #切换目录,绝对路径 cd home/dir #切换目录,相对路径 cd .. #切换到上一级目录 cd - #切换到上一次目录,其实就是切到$OLDPWD cd #切换到当前用户的家目录 cd ~ #切换到当前用户的家目录 相关环境变量 $PWD 当前目录路径 $OLDPWD 上一次目录路径 --------------------------------------------------------- ls 默认罗列当前目录下的文件和目录(默认不显示隐藏文件) -l long长葛市显示文件属性*** -a 显示所有文件,含隐藏文*** -d 只显示目录***默认查看目录内的文件,-d则查看目录 -i 显示inode节点*** -h human以人类可读形式显示(目前只观察到文件大小会自动换算成KB,MB等) -p 目录结果加'/',区分目录和文件 -F 不同文件结果加不同标识,目录结果加'/' --color==auto 显示不同文件的颜色 -1 文件分行显示 -S 按从大到小排序 -rt (猜测r是反转排序,t是按mtime排序) -t modify,文件内容被改过之后的时间。 -c change,文件属性发生改变的时间。 -a access,文件内容被访问过的时间。 --------------------------------------------------------- ehco命令,用于字符串的输出 -E (默认)不支持'\'解释功能 -n 不自动换行 -e 启用'\'字符的解释功能 \a 发出警告声 \b 退格键 \c 最后不加上换行符号 \n 换行且光标移动至行首 \r 回车,即光标移动至行首,但不换行 \t 插入tab \\ 插入'\' \Onnn 插入八进制字符串 \xHH 插入十六进制字符串 支持转移字符输出,echo -e "hello world\n hello world" --------------------------------------------------------- printf 格式化打印字符串,即默认支持特殊字符输出,printf "hello world\n hello world" printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 --------------------------------------------------------- tr 替换or删除字符 -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换 -d, --delete:删除指令字符 -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符 -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等 --help:显示程序用法信息 --version:显示程序本身的版本信息 支持[:alpha:]、\n等特殊字符 示例: tr 'o' 'O' < test1.txt # 将txt中的文本导入到输出中,再执行小写o替换成大写O tr 'a-c' '1-3' < test1.txt # 'a-c' '1-3'一一对应进行替换 tr -s "abc" < test1.txt #去重;压缩连续的字符,不连续的不压缩 tr -s " " ":" < test1.txt #先对test1.txt中的空格进行去重,然后替换为":" tr -d "abc" < test1.txt #删除指定字符 tr -dc "abc" < test1.txt #反向删除指定字符,即保留指定字符

Bash 常用快捷键 ctrl+A 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。 ctrl+E 把光标移动到命令行结尾。 ctrl+C 强制终止当前的命令。 ctrl+L 清屏,相当于clear命令。 ctrl+U 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便 ctrl+K 删除或剪切光标之后的内容。 ctrl+Y 粘贴ctrl+U或ctul+K剪切的内容。 ctrl+R 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。 ctrl+D 退出当前终端。 ctrl+Z 暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管理章节详细介绍。 ctrl+S 暂停屏幕输出。 ctrl+Q 恢复屏幕输出。

shell命令分类(内部命令、外部命令);type命令;enable命令;which命令;whereis命令;hash命令和hash缓存表 ============================================================= shell命令分类: 内部命令:shell自带, linux系统运行时,内部命令已存在于内存中,运行内部命令时,不需要去磁盘读取命令 help #默认查看全部内部命令 enable cmd #启用内部命令 enable -n cmd #禁用内部命令 enable -n #查看被禁用的内部命令 外部命令:在文件系统路径下有对应的课指定程序文件 查看路径:which -a|--skip-alias;whereis ------------------------------------------------------------------ type命令可以用于区分一个命令是外部命令还是内部命令;内部命令就是写在bash内部的命令 [root@yefeng28325 ~]# type tree tree is /usr/bin/tree [root@yefeng28325 ~]# type enable enable is a shell builtin ------------------------------------------------------------------ enable #启用、禁用、查看内部命令 enable cmd #启用内部命令 enable -n cmd #禁用内部命令 enable -n #查看被禁用的内部命令 ------------------------------------------------------------------ which命令 查找外部命令(搜索命令所在路径及别名) ------------------------------------------------------------------ whereis 命令名 搜索命令所在路径及帮助文档所在位置 -b :只查找可执行文件位置 -m:只查找帮助文件 ------------------------------------------------------------------ hash命令和hash缓存表 系统初始hash表为空;当外部命令执行时,shell解释器首先会查看hash表, 1.如果存在该命令,则直接执行; 2.如果不存在该命令,则会从PATH路径下寻找该命令,找到后将这条命令的路径记录到hash表中 hash常见用法 hash #显示hash缓存 hash -l #显示hash缓存,可作为输入使用 hash -p path name #将命令全路径path起别名为name hash -t name #打印hash缓存中name的路径 hash -d name #从hash缓存将指定命令清除 hash -r #清空hash缓存

命令帮助(内部命令获取帮助、外部命令获取帮助);man命令、help命令、info命令、whatis命令 ============================================================= 内部命令:help、man 外部命令: 1.command --help;command -h 2.man 3.info 4.程序自身的帮助文档:README/INSTALL/ChangeLog 5.程序官方文档 6.发行版的官方文档 7. whatis 显示命令的简短描述,基于数据库,所以刚安装后不可立即使用 makewhatis | mandb 制作数据库 示例:whatis cal 或 man -f cal ----------------------------------- [root@yefeng ~]# date --help Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] []表示可选项 CAPS或<> 表示变化的数据 ... 表示一个列表 x|y|z 表示或 -abc 表示 -a -b -C {} 表示分组 ------------------------------------------------------ help命令 #查看内部命令,默认查看全部内部命令 ------------------------------------------------------ man命令 几乎每个命令都有man的"页面",手册页放在/usr/share/man man命令的配置文件:/etc/man_db.conf或/etc/man.config 中文man需要安装包 man-pages-zh-CN man章节:1.用户命令;2.系统调用;3.C库调用;4.设备文件及特殊文件;5.配置文件格式;6.游戏;7.杂项;8.管理类的命令;9.linux内核API man -f passwd man命令常用参数 -a 显示所有匹配项 -d 显示man查照手册文件时候,搜索路径信息,不显示手册页内容 -D 同-d,显示手册页内容 -f 同命令whatis ,将在whatis数据库查找以关键字开同的帮助索引信息 -h 显示帮助信息 -k 同命令apropos 将搜索whatis数据库,模糊查找关键字 -S list 指定搜索的领域及顺序 如:-S 1:1p httpd 将搜索man1然后 man1p目录 -t 使用troff 命令格式化输出手册页 默认:groff输出格式页 -w 不带搜索title 打印manpath变量 带title关键字 打印找到手册文件路径,默认搜索一个文件后停止 -W 同-w section 搜索领域【限定手册类型】默认查找所有手册 man command #man共有9章节,默认从第一章开始查找,并显示第一个找到的文件 man 5 passwd #查看第五章节的passwd说明文件 man -f passwd #在whatis数据库查找以关键字开同的帮助索引信息 man -k passwd #-k与-f都是搜索whatis数据库,区别在于-f(准确搜索),-k(模糊搜索) man -a passwd #逐次显示所有章节的passwd的相关文件 man -w passwd #显示查找到的帮助文档的路径 man BASH #这里可以看到所有变量的说明 man界面的操作方法(基于less命令实现,详见less) ------------------------------------------------------ info适用于通用文档参考,info页面的结构像一个网站,每一页分为‘节点’,链接节点之前* info页面操作 方向键、PgUp、PgDn 移动到下一个链接 tab 显示主题目录 d 显示主题首部 home 进入选定链接 回车 进入下/前/上一层/最后一个链接 n/p/u/l 文本搜索 s 退出info q

source命令;alias、unalias命令; ------------------------------------------------------------- source命令(从 C Shell 而来)是bash shell的内置命令。'.'命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。 这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行(其他方式的运行脚本都是在子shell中运行的,这点是最重要的区别,所以source命令可以重载脚本中的变量) ------------------------------------------------------------- alias、unalias命令 alias 查看or设置别名 alias NAME='VALUE' 在命令行中设置别名,仅对当前shell进程有效;在脚本中无法使用alias 若要永久有效,则需要将alias定义在配置文件中:~/.bashrc(仅对当前用户有效);/etc/bashrc(对所有用户有效) unalias 取消别名 unalias -a 取消所有别名

调用历史参数;history命令 ============================================================================= 调用历史参数 command !^ 利用上一条命令的第一个参数做cmd的参数 command !$ 利用上一条命令的最后一个参数做cmd的参数 command !* 利用上一条命令的全部参数做cmd的参数 command !:n 利用上一条命令的第n个参数做cmd的参数 command !n:^ 调用第n条命令的第一个参数 command !n:$ 调用第n条命令的最后一个参数 command !n:m 调用第n条命令的第m个参数 command !n:* 调用第n条命令的所有参数 command !string:^ 从命令历史中搜索以string开头的命令,并获取它的第一个参数 command !string:$ 从命令历史中搜索以string开头的命令,并获取它的最后一个参数 command !string:n 从命令历史中搜索以string开头的命令,并获取它的第n个参数 command !string:* 从命令历史中搜索以string开头的命令,并获取它的所有参数 ============================================================================= history命令 -c:清空当前历史命令; -d<offset>:删除历史记录中第offset个命令 n:打印最近的n条历史命令 -a:将历史命令缓冲区中命令写入历史命令文件中; -r:将历史命令文件中的命令读入当前历史命令缓冲区; -w:将当前历史命令缓冲区命令写入历史命令文件中; -n<filename>:读取指定文件 -N: 显示历史记录中最近的N个记录; -p:展开历史参数成多行,但不存在历史列表中 -s:展开历史参数成一行,附加在历史列表中 命令历史相关的环境变量 $HISTSIZE 命令历史记录的条数 $HISTFILE 指定历史文件,默认为~/.bash_history $HISTFILESIZE 命令历史文件记录历史的条数 $HISTCMD $HISTCONTROL history命令,命令行历史 命令历史文件~/.bash_history:保存着命令行执行过的命令的列表;登陆shell时,会读取该文件内容到缓存中;当退出shell时,缓存数据才会保存到命令历史文件~/.bash_history中 执行上一条命令的4种方法: 1.向上的方向键 2.!!并回车执行 3.!-1并回车执行 4.ctrl+p并回车执行 !:0 执行前一条命令(去除参数) ctrl+n 显示当前历史中的下一跳命令,但不执行 ctrl+j 执行当前命令 !n 执行history命令输出对应序号n的命令 !-n 执行history历史中倒数第n个命令 要重新调用前一个命令中最后一个参数 !$ 表示 esc,. (点击esc键后松开,然后点击.键) alt+. (按住alt键的同时点击.键)

文件描述符;标准I/O、I/O重定向(>、2>、&>、>>、2>>、&>>)、(<、<<EOF) =========================================================================== 打开的文件都有一个fd(file description文件描述符) ll /proc/$$/fd #查看文件描述符 exec 8<> file #将文件与文件描述符进行绑定 cat /proc/$$/fd/8 #通过文件描述符查看文件和直接查看文件是等效的 exec 8>&- #对文件描述符进行解绑 ls > /dev/pts/5 #将ls的标准输出重定向到其他终端/dev/pts/5 ls /err /data >log1 2>&1 ls /err /data 2>log2 1>&2 ls /err /data &>all.log 这里的&没有固定的意思 放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符如下 1 => stdout 2 => stderr 0 => stdin 换言之 2>1 代表将stderr重定向到当前路径下文件名为1的regular file中,而2>&1代表将stderr重定向到文件描述符为1的文件(即/dev/stdout)中,这个文件就是stdout在file system中的映射 而&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同,都等价于 file 2>&1 此处&>或者>&视作整体,分开没有单独的含义 源文档 <https://my.oschina.net/u/4131409/blog/3079199> ------------------------------------------------------------------------- linux给程序提供三种I/O设备 标准输入stdin---0 默认接收来自键盘的输入 标准输出stdout---1 默认输出到终端窗口 标准错误stderr---2 默认输出到终端窗口 I/O重定向:改变默认位置 > 重定向标准输出 2> 重定向标准错误 &> 重定向标准输出和标准错误 >文件内容会被覆盖 set -C 禁止将内容覆盖已有文件,但可以追加 >| file 强制覆盖 set +C 允许覆盖 >> 在原有内容基础上,追加内容 <或0< 清空已有内容,数据一般从文件流向处理的命令 <<或0<< 追加内容到底部,数据一般从文件流向处理的命令 >或1> 正常输出重定向到文件,会清空已有内容 >>或1>> 将内容追加重定向到文件底部,不会清空已有内容 2> 将标准错误内容重定向到文件,会清空已有内容 2>> 将标准错误内容追加重定向到文件底部,不会清空已有内容 把输出和错误重新定向到文件 2> 覆盖重定向错误输出数据流 2>> 追加重定向错误输出数据流 command > file.out 2>error.out #将标准输出和标准错误输出到不同的文件中 合并标准输出和标准错误为同一个数据流,并进行重定向 &> 覆盖重定向(centos4,5可能不支持这种写法) &>> 追加重定向 command > file.out 2>&1 (顺序很重要) command >> file.out 2>&1 ()合并多个程序的标准输出 (cal 2007;cal 2008) > all.txt 要重定向输入,那么这个命令首先应该能接收标准输入 cat <f1 >f2 cat <f1 >>f2 这两种写法,输出对象是其他文件,那么结果符合预期 但是输出对象是自己时,结果就不符合预期了 cat <f1 >f1 #f1文件被清空 cat <f1 >>f1 #这种写法造成了循环... 以下这3种用法均等效: touch >> log.txt 2>> log.txt echofdsfsdfs &> log.txt 等效于 echofdsfsdfs > log.txt 2> log.txt echofdsfsdfs >> log.txt 2>&1 此外还有一个特殊重定向用法:将标准错误重定向到标准输出,即标准错误和标准输出一样从定向到文件中,这个功能有3种实现命令方法。 方法1:echo "I am oldboy" >oldboy.txt 2>oldboy.txt 方法2:echo "I am oldboy" &>oldboy.txt 方法3:echo "I am oldboy" 1>oldboy.txt 2>&1 --------------------------------------------- < 重定向标准输入 cat > file1 < file2 #从文件2导入标准输入,将标准输出重定向到文件1 <<终止词(<<EOF) 将多行内容重定向到标准输入 <是单行重定向,每输入一个回车,就重定向一次(当前终端的每一次回车,使用另一个终端查看文件,都能看到内容) <<EOF是多行重定向,输入回车不会导致重定向;只有当遇到EOF终止符时,才会进行重定向(只有当遇到终止符时,才会一次性重定向) 视频中用于比较的2个命令 cat >111.txt cat <<EOF >111.txt 文件描述符;标准I/O、I/O重定向(>、2>、&>、>>、2>>、&>>)、(<、<<EOF) <<EOF用法 EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名 其用法如下: <<EOF //开始 .... EOF //结束 还可以自定义,比如自定义: <<BBB //开始 .... BBB //结束 [root@yefeng28325 directory_test]# more <<EOF >123.txt [root@yefeng28325 directory_test]# cat <<EOF >123.txt [root@yefeng28325 directory_test]# cat >123.txt <<EOF #这种写法与上一种等效
/dev/null 文件:如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到**/dev/null**中

管道"|";xargs命令;xargs与find -exec比较;tee命令 ========================================================================== 管道"|" 命令1 | 命令2 | 命令3 #将命令1的标准输出作为命令2的标准输入,将命令2的标准输出作为命令3的标准输入 标准错误默认不能通过管道转发,可利用2>&1或者|&实现 管道后面能结合的命令是需要标准输入的,否则没有意义 管道中的"-"符号 tar -cvf - /home | tar -xvf - 将/home里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后,将tar -cvf - /home传送给后面的tar -xvf - ,后面的这个-则是取自前一个命令的stdout,因此就不需要使用临时file了 强调:管道左边的命令一定要有标准输出,管道右边的命令一定要有标准输入 标准输入的命令,有一个特点,单敲一个命令,命令行界面会换行,等待标准输入 ------------------------------------------------------------------------------------------- xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。 xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。 xargs用于产生某个命令的参数,xargs可以读取stdin的数据,并且以空格符or回车符将stdin的数据分隔成为arguments 命令格式:somecommand |xargs -item command 参数: -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。 -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。 -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。 -a file 从文件中读入作为 stdin -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。 -p 当每次执行一个argument的时候询问一次用户。 -t 表示先打印命令,然后再执行。 -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。 -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。 -x exit的意思,主要是配合-s使用。 -L num 从标准输入一次读取 num 行送给 command 命令。 -l 同 -L。 -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。 xargs 一般是和管道一起使用。 xargs -d"." -n2 <test.txt #-n按指定数量进行分组;-d指定分隔符,默认是空格 xargs命令功能: 1.由于很多命令不支持管道来传递参数,而日常工作中有这个必要 find /sbin -perm +700 |ls -l #错误用法 find /sbin -perm +700 |xargs ls -l #正确用法 2.有些命令不能接受过多参数,命令执行可能会失败 touch {1..1000000}.txt #提示Argument list too long echo {1..1000000}.txt |xargs touch #成功创建 #作为内容,长度没有限制;但是作为参数,个数是有限制的! rm -rf * #提示Argument list too long echo {1..1000000}.txt | xargs rm -rf #删除成功 ------------------------------------------------------------------------------------------- xargs与find的-exec比较 find /data -type f -exec rm -f {} \; 相当于 rm -f oldboy1.txt rm -f oldboy2.txt rm -f oldboy3.txt 效率低。 find /data -type f|xargs rm -f 只是一条命令 rm -f oldboy1.txt oldboy2.txt oldboy3.txt 效率高 ------------------------------------------------------------------------------------------- tee命令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。 -a或--append 附加到既有文件的后面,而非覆盖它. ls | tee ls.log #达到同时将标准输出输出到终端和保存到文件的目的,保存文件默认是覆盖 ls | tee -a ls.log #-a 追加到文件
tee命令用于定时任务crontab清空日志文件
sudo echo "" |tee `sudo find /dir/ -mtime +7 -type f 、\( -name "xxxxx.log.*" \)`

linux的两种时钟(date命令、hwclock命令、clock命令);关机重启命令(halt命令、poweroff命令、reboot命令) =================================================================================== linux的两种时钟 1.系统时钟 2.硬件时钟:主板 date命令 显示和设置系统时间 hwclock,clock 显示硬件时钟 -s,--hctosys 以硬件时钟为准,校正系统时钟 -w,--wywtohc 以系统时钟为准,校正硬件时钟 cat /etc/localtime #查看时区 cal -y #查看日历,默认显示当月月份,-y显示一年 ntpdate 192.168.1.1 #同步时间 ----------------------------------------------------------- 关机:halt,poweroff 重启:reboot -f 强制,不调用shutdown -p 切断电源 关机或重启:shutdown -r reboot -h halt -c cancel TIME:无指定,默认相当于+1 now 立刻,相当于+0 +m 相对时间表示法,几分钟之后,例如+3 hh:mm 绝对时间表示,指明具体时间

mail命令、reset命令;使用原始命令的4种方法;命令优先级;其他小知识点 ========================================================== mail命令 mail #查看邮箱 echo hello word | mail -s " title" 123456@qq.com #发送邮件 mail -s " title" 123456@qq.com < mail.txt =============================================================== reset命令其实和 tset 是一同个命令,它的用途是设定终端机的状态。 除了在 login 时使用外,当系统终端机因为程序不正常执行而进入一些奇怪的状态时,你也可以用它来重设终端机. 例如不小心把二进位档用 cat 指令进到终端机,常会有终端机不再回应键盘输入,或是回应一些奇怪字元的问题。此时就可以用 reset 将终端机回复至原始状态。 ================================================================= 使用原始命令的4种方法 1.使用全路径(仅适用于外部命令) 2.\命令 -------反斜线 3.'命令'-------单引号 4.command 命令 ----------------------------------------- 命令优先级 别名>内部命令>外部命令 别名的优先级比内部优先级高(enable命令为查看激活的内部命令;1.alias enable=who;2.enable查看结果显示为who的结果) 外部命令默认是不加载到内存中的,只有使用到外部命令,才会将外部命令加载到内存中 ----------------------------------------- echo $SHELL #查看当前使用的shell cat /etc/shells #查看当前系统支持的所有shell ----------------------------------------- PS1=[\u@\h \W]\$ \e\033 \u 当前用户 \h 主机名简称 \H 主机名 \w 当前工作目录 \W 当前工作目录基名 \t 24小时时间格式 \T 12小时时间格式 \! 命令历史数 \# 开机后命令历史数 ----------------------------------------- $()或``:把一个命令的输出打印给另一个命令的参数 {}:打印重复字符串的简化形式 {1,3,5};{1..10};{a..z} ----------------------------------------- tab键:命令补全、路径补全 常见用法不总结了,补全2个不熟悉的用法 ~2tab 所有用户列表 $2tab 所有变量 ----------------------------------------- 文件有两类数据:元数据metadata、数据data 字母是否大小写敏感,是和文件系统相关的!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!