linux基础命令

Posted xiangmeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础命令相关的知识,希望对你有一定的参考价值。

用户登陆
root 用户
? 一个特殊的管理帐户也被称为超级用户
? root已接近完整的系统控制,对系统损害几乎有无限的能力
普通(非特权)用户
? 权限有限
? 造成损害的能力比较有限
终端
设备终端
? 键盘鼠标显示器
物理终端
? 控制台console
虚拟终端
? tty 可有n个,Ctrl+Alt+F[1-6]
图形终端
? CentOS 6: Ctrl + Alt + F7
? CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
串行终端
? ttyS
伪终端
? pty, SSH远程连接
查看当前的终端设备
? tty

预登陆信息
? /etc/issue
? 示例

Hostname is 主机
Terminal is l 终端
Time is 时间
S
Kernel on an m
? /etc/gdm/custom.conf 系统自动登陆

AutomaticloginEnable=true
Automaticlogin=root
登陆后信息
? /etc/motd

交互式接口
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
GUI:Graphic User Interface
? X protocol, window manager, desktop
? Desktop
? GNOME (C, 图形库gtk)
? KDE (C++,图形库qt)
? XFCE (轻量级桌面)
CLI:Command Line Interface
? shell程序:sh (bourn 史蒂夫·伯恩) csh tcsh ksh (korn) bash (bournagain shell)GPL zsh

支持多个“标签”shell的图形化终端模拟器
? Ctrl-Shift-n 创建新窗口
? Ctrl-Shift-q 关闭当前窗口
? Ctrl-Shift-t 创建一个标签页
? Ctrl-Shift-w 关闭一个标签页
? Ctrl-PaUp/PgUn 切换到下一个/前一个标签页
? Ctrl-Shift-c 复制选中的文本
? Ctrl-Shift-v 把文本粘帖到当前光标处

shell介绍
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter)
shell是一种高级程序设计语言
? 示图
jpeg
bash shell
GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容
CentOS默认使用
显示当前使用的shell
? echo ${SHELL}
显示当前系统使用的所有shell
? cat /etc/shells
命令提示符
命令提示符:prompt
[root@localhost~]#
? # 管理员
? $ 普通用户
显示提示符格式
? [root@localhost~]#echo $PS1
修改提示符格式
? PS1="[e[1;5;41;33m][u@h W]$[e[0m]"
? 修改颜色示例

cat >> /root/.bashrc << EFO
PS1="33[35;40mecho $PS133[0m"
EFO

!/bin/bash

cat >> /root/.bashrc <<EFO
PS1="33[32;40m$PS133[0m"
EFO
exec bash

vim不带颜色解决方案

TERM=xterm
export TERM
? e 33u 当前用户
? h 主机名简称H 主机名
? w 当前工作目录W 当前工作目录基名
? 24小时时间格式T 12小时时间格式
? ! 命令历史数 # 开机后命令历史数

执行命令
输入命令后回车
? 提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来
在shell中可执行的命令有两类
内部命令
? 由shell自带的,而且通过某命令形式提供
? help 内部命令列表
? enable 列出内部命令
? enable cmd 启用内部命令
? enable –n cmd 禁用内部命令
? enable –n 查看所有禁用的内部命令
外部命令
? 在文件系统路径下有对应的可执行程序文件
? 查找外部命令路径:which -a |–skip-alias ; whereis
区别指定的命令是内部或外部命令
? type COMMAND
? type -a cmd 查看命令的执行路径
命令格式
COMMAND [OPTIONS…] [ARGUMENTS…]
? 选项
 ? 用于启用或关闭命令的某个或某些功能
 ? 短选项:-c 例如:-l, -h
 ? 长选项:--word 例如:--all, --human-readable
? 参数
 ? 命令的作用对象,比如文件名,用户名等
注意
? 多个选项以及多参数和命令之间使用空白字符分隔
? 取消和结束命令执行:Ctrl+c,Ctrl+d
? 多个命令可以用;符号分开
? 一个命令可以用分成多行

--help和-h选项
? 显示用法总结和参数列表
? 使用的大多数,但并非所有的
? 示例
 ? date --help
 ? x |y| z 的意思是“x 或y 或z “
 ? { } 表示分组

执行外部命令
hash缓存表
? 系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率
hash常见用法
? hash 显示hash缓存
? hash –l 显示hash缓存,可作为输入使用
? hash –p path name 将命令全路径path起别名为name
? hash –t name 打印缓存中name的路径
? hash –d name 清除name缓存
? hash –r 清除缓存
命令扩展与集合
命令行扩展:$( ) 或``
? 把一个命令的输出打印给另一个命令的参数
? echo “Thissystem’s name is $(hostname) “
? This “system’s name isserver1.example.com
? echo “iam whoami

括号扩展:{ }
? 打印重复字符串的简化形式
? echo file{1,3,5} 结果为:file1 file3 file5
? rm -f file{1,3,5}
? echo {1..10}
? echo {a..z}
? echo {01..20..2}

tab键
命令补全
? bash-completion 包名称
? 内部命令
? 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻
以给定命令名命名的文件,第一次找到的命令即为要执行的命令
? 用户给定的字符串只有一条惟一对应的命令,直接补全
? 否则,再次Tab会给出列表
路径补全
? 把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
? 如果惟一:则直接补全
? 否则:再次Tab给出列表

双击Tab键
? command 2Tab 所有子命令或文件补全
? string2Tab 以string开头命令
? /2Tab 显示所有根目录下一级目录,包括隐藏目录
? ./2Tab 当前目录下子目录,包括隐藏目录
? *2Tab 当前目录下子目录,不包括隐藏目录
? ~ 2Tab 所有用户列表
? $2Tab 所有变量
? @2Tab /etc/hosts记录(centos7不支持)
? =2Tab 相当于ls –A (centos7不支持)

命令历史
保存你输入的命令历史。可以用它来重复执行命令
登录shell时,会读取命令历史文件中记录下的命令~ /.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追
加”至命令历史文件中
重复前一个命令,有4种方法
? 重复前一个命令使用上方向键,并回车执行
? 按!! 并回车执行
? 输入!-1 并回车执行
? 按Ctrl+p 并回车执行

!:0 执行前一条命令(去除参数)

Ctrl + n 显示当前历史中的下一条命令,但不执行
Ctrl + j 执行当前命令
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!u 最后一条以u开头的命令
!?tn 最近包含tn的命令

录像小方法

录像命令
开始script -t 2> time.log -a cmd.session
结束exit
播放
scriptreplay time.log cmd.session
相关环境变量
HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~ /.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT=“%F %T “显示时间
? 示例

HISTTIMEFORMAT="%F %T whoami "
cat >> /etc/profile.d/his.sh <<EOF
HISTTIMEFORMAT="%F %T whoami "
EOF
exec bash
HISTIGNORE=“str1:str2*:…“忽略str1命令,str2开头的历史

控制命令历史的记录方式
? 环境变量:HISTCONTROL
? ignoredups 默认,忽略重复的命令,连续且相同为“重复”
? ignorespace 忽略所有以空白开头的命令
? ignoreboth 相当于ignoredups, ignorespace的组合
? erasedups 删除重复命令
export 变量名="值“
? export HISTTIMEFORMAT="%F %T"
存放在/etc/profile 或~ /.bash_profile
bash的快捷键
常见快捷键
? Ctrl + l 清屏,相当于clear命令
? Ctrl + o 执行当前命令,并重新显示本命令
? Ctrl + s 阻止屏幕输出,锁定
? Ctrl + q 允许屏幕输出
? Ctrl + c 终止命令
? Ctrl + z 挂起命令
? Ctrl + a 光标移到命令行首,相当于Home
? Ctrl + e 光标移到命令行尾,相当于End
? Ctrl + f 光标向右移动一个字符
? Ctrl + b 光标向左移动一个字符
? Alt + f 光标向右移动一个单词尾
? Alt + b 光标向左移动一个单词首
? Ctrl + xx 光标在命令行首和光标之间移动
? Ctrl + u 从光标处删除至命令行首
? Ctrl + k 从光标处删除至命令行尾
? Alt + r 删除当前整行
? Ctrl + w 从光标处向左删除至单词首
? Alt + d 从光标处向右删除至单词尾
? Ctrl + d 删除光标处的一个字符
? Ctrl + h 删除光标前的一个字符
? Ctrl + y 将删除的字符粘贴至光标后
? Alt + c 从光标处开始向右更改为首字母大写的单词
? Alt + u 从光标处开始,将右边一个单词更改为大写
? Alt + l 从光标处开始,将右边一个单词更改为小写
? Ctrl + t 交换光标处和之前的字符位置
? Alt + t 交换光标处和之前的单词位置
? Alt + N 提示输入指定字符后,重复显示该字符N次
? Alt 100 a 100个a
? 注意:Alt组合快捷键经常和其它软件冲突
简单命令
echo
功能:显示字符
语法:echo [-neE][字符串]
说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号
选项
? -E (默认)不支持 解释功能
? -n 不自动换行
? -e 启用 字符的解释功能
显示变量
? echo “$VAR_NAME“ 双引号:变量会替换,弱引用
? echo ‘$VAR_NAME‘ 单引号:变量不会替换,强引用
? 示例

echo ‘echo $USER‘ 输出 echo $USER
echo "echo $USER" 输出 echo root
echo echo $USER 输出 root
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
? a 发出警告声
?  退格键
? c 最后不加上换行符号
? 换行且光标移至行首
? 回车,即光标移至行首,但不换行
? 插入tab
? 插入字符
? nnn 插入nnn(八进制)所代表的ASCII字符
? echo -e ‘33[43;31;5centos33[0m’
? xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

hash
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率
hash常见用法
? hash 显示hash缓存
? hash –l 显示hash缓存,可作为输入使用
? hash –p path name 将命令全路径path起别名为name
? hash –t name 打印缓存中name的路径
? hash –d name 清除name缓存
? hash –r 清除缓存
history
常见选项
? -c: 清空命令历史
? -d offset: 删除历史中指定的第offset个命令
? n: 显示最近的n条历史
? -a: 追加本次会话新执行的命令历史列表至历史文件
? -r: 读历史文件附加到历史列表
? -w: 保存历史列表到指定的历史文件
? -n: 读历史文件中未读过的行到历史列表
? -p: 展开历史参数成多行,但不存在历史列表中
? -s: 展开历史参数成一行,附加在历史列表后
? hisotry -s “rm -rf /*“
alias
显示当前shell进程所有可用的命令别名
? alias
定义别名NAME,其相当于执行命令VALUE
? alias NAME=’VALUE’
? alias cdnet="cd /etc/sysconfig/network-scripts"
在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
? 仅对当前用户:~ /.bashrc
? 对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效
bash进程重新读取配置文件
? source /path/to/config_file
? . /path/to/config_file
撤消别名:unalias
? unalias[-a] name [name …]
? unalias cdnet
? -a 取消所有别名
如果别名同原命令同名,如果要执行原命令,可使用
? ALIASNAME
? “ALIASNAME”
? ‘ALIASNAME’
? command ALIASNAME
? /path/commmand
优先级
? 别名 > 内部命令 > hash > 外部命令
date
Linux的两种时钟
? 系统时钟:由Linux内核通过CPU的工作频率进行的
? 硬件时钟:主板
系统时间
? date +%s
? date -d @1509536033
硬件时间
? hwclock,clock
? -s, –hctosys 以硬件时钟为准,校正系统时钟
? -w, –systohc 以系统时钟为准,校正硬件时钟
时区:/etc/localtime
显示日历:cal –y
同步时间
? ntpdate IP
任意时间换算
? date -d "2008-08-08 20:00:00" +%s
? date -d @时间戳 +%F%T
设置时区
? 操作系统:Centos7
 ? timedatectl list-timezones 列出时区
 ? timedatectl set-timezone centos7
 ? ls -l /etc/localtime

? 操作系统:Centos6
 ? tzselect

shutdown
关机
? halt
? poweroff
重启
? reboot
 ? -f: 强制,不调用shutdown
 ? -p: 切断电源

关机或重启:shutdown
? -r: reboot
? -h: halt
? -c:cancel

? TIME:无指定,默认相当于+1(CentOS7)
 ? now: 立刻,相当于+0
 ? +m: 相对时间表示法,几分钟之后;例如+3
 ? hh:mm: 绝对时间表示,指明具体时间
 ? shutdown -r 18:30
 ? shutdown -r +30

who
用户登录信息查看命令
? whoami: 显示当前登录有效用户
? who: 系统当前所有的登录会话
? w: 系统当前所有的登录会话及所做的操作
? 查看运行级别
 ? who -r
 ? runlevel
scree
创建新screen会话
? screen –S [SESSION]
显示所有已经打开的screen会话
? screen -ls
加入screen会话
? screen –x [SESSION]
退出并关闭screen会话
? exit
剥离当前screen会话
? Ctrl+a,d
恢复某screen会话
? screen -r [SESSION]
实际应用、远程备份时间长环境
? 第一步: screen 创建会话
? 第二步: screen -ls
? 第三步: screen -r 恢复
whatis
显示命令的简短描述
使用数据库
刚安装后不可立即使用
makewhatis| mandb制作数据库
? whatis cal 或 man -f cal
wall
发送广播
? wall “system will shutdown at 23:00:00”
info
man常用于命令参考,GNU工具info适合通用文档参考
没有参数,列出所有的页面
info 页面的结构就像一个网站
每一页分为“节点”
链接节点之前 *
info [ 命令]
? info ls
info导航页
方向键,PgUp,PgDn 导航
Tab键移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字文本搜索
q 退出info
man命令
man介绍
提供命令帮助的文件
手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
man页面分组为不同的“章节”
man命令的配置文件:/etc/man.config | man_db.conf
? MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
? man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索
COMMAND命令的手册页并显示
中文man需安装包man-pages-zh-CN
man章节
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux 内核API
帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
? [] 可选内容
? <> 必选内容
? a|b 二选一
? { } 分组
? … 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
man帮助
查看man手册页
? man [章节] keyword
列出所有帮助
? man –a keyword
搜索man手册
? man -kkeyword 列出所有匹配的页面
? 使用whatis 数据库
相当于whatis
? man –f keyword
打印man帮助文件的路径
? man –w [章节] keyword
man命令
man命令的操作方法:使用less命令实现
? space, ^v, ^f, ^F: 向文件尾翻屏
? b, ^b: 向文件首部翻屏
? d, ^d: 向文件尾部翻半屏
? u, ^u: 向文件首部翻半屏
? RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行y or ^Y or ^P or k
or ^K:向文件首部翻一行
? q: 退出
? #:跳转至第#行
? 1G: 回到文件首部
? G:翻至文件尾部
参见用法
? man ascii
? man bash
man搜索
/KEYWORD
? 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区
分字符大小写
? n: 下一个
? N:上一个
?KEYWORD
? 以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区
分字符大小写
? n: 跟搜索命令同方向,下一个
? N:跟搜索命令反方向,上一个
命令帮助
多层次的帮助
? whatis
? command --help
? man and info
? /usr/share/doc/
? Red Hat documentation
? 其它网站和搜索
内部命令
? help COMMAND 或man bash
外部命令
? COMMAND –help
? COMMAND -h

? 使用手册(manual)
? man COMMAND

? 信息页
? info COMMAND

? 程序自身的帮助文档
? README
? INSTALL
? ChangeLog

? 程序官方文档
? 官方站点:Documentation

? 发行版的官方文档
? Google

官方文档
? http://www.nginx.org
? http://tomcat.apache.org
? http://httpd.apache.org
? http://www.python.org
? http://kbase.redhat.com
? http://www.redhat.com/docs
? http://access.redhat.com

网站搜索
? http://tldp.org
? http://www.slideshare.net
? http://www.google.com

以上是关于linux基础命令的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么查看mysql数据库版本

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

逆向及Bof基础实践

20155307刘浩《网络对抗》逆向及Bof基础