@学习总结
一, linux基础命令
查看系统基本信息
1 查看主机信息
hostname 查看主机名
cat 查看文件
uname -r 查看内核版本
lscpu 查看cpu
free -h 查看内存大小
2 用户登录信息:
id -u username 查看用户uid
passwd username 修改用户密码
whoami 显示当前登录有效用户
who am i 查看当前登录的用户的信息
who 系统当前所有的登录会话
w 系统当前所有的登录会话及所做的操作
3 日期和时间
date显示和设置系统时间
date +%s
date -d @1509536033
clock 显示硬件时钟
-s 时间校正以硬件时间为准
-w 时间校正以系统时间为准
/etc/localtime 时区
cal -y 显示日历
ntpdate ipaddress 同步远程服务器时间
4 常用的基本命令
echo 显示字符
echo [-neE] [字符串] 将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行符
-n 不自动换行
-e 启用\字符的解释功能
显示变量
echo `echo $VAR_NAME` 命令,变量都能识别
echo "$VAR_NAME" 变量会替换,弱引用
echo '$VAR_NAME' 变量不会替换,强引用
命令行扩展:$()或`` 例如:echo "i am `whoami`/$(whoami)"
括号扩展:{} 打印重复字符串的简化形式
示例: echo file{1,3,5} 结果为: file1,file2,file3
echo {000..20..2} 结果为: 000 002 004 006...020
关机或重启
关机:halt, poweroff
重启:reboot
-f: 强制,不调用shutdown
-p: 切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间
alias 定义或显示别名
alias 显示当前用户定义的别名
alias name='VALNE' 定义别名 优先级:别名>内部命令>内存缓存>外部命令
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
例:alias cdnet='cd /etc/sysconfig/network-scripts/'
unalias [-a] name 取消别名
\name 暂时禁用别名
二,获取帮助
1 whatis 功能
显示命令的简短描述 例如:whatis cal 或 man -f cal
使用数据库
刚安装后不可立即使用
makewhatis(centos6) | mandb(centos7) 制作数据库
2 命令帮助–help
内部命令:help command 或 man bash
外部命令:command -h 或 man command
--help和-h选项
显示用法总结和参数列表
使用的大多数,但并非所有的
示例:
date --help
Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[] 表示可选项
CAPS或 <> 表示变化的数据
... 表示一个列表
x |y| z 的意思是“ x 或 y 或 z “
-abc的 意思是-a -b –c
{ } 表示分组
3 man命令
提供命令帮助的文件
手册页存放在/usr/share/man
几乎每个命令都有man的"页面"
man页面分组为不同的"章节"
统称为Linux手册
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
man帮助段落说明
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
... 同一内容可出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
man帮助
查看man手册页
man [章节] keyword
列出所有帮助
man –a keyword
搜索man手册
man -k keyword 列出所有匹配的页面
使用 whatis 数据库
相当于whatis
man –f keyword
打印man帮助文件的路径
man –w [章节] keyword
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搜索
/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
n: 下一个
N: 上一个
?KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
三 文件系统
1 文件系统结构:
/boot: 引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin: 所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin: 管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib: 启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64: 专用于x86_64系统上的辅助共享库文件存放位置
/etc: 配置文件目录
/home/USERNAME:普通用户家目录
/root: 管理员的家目录
/media: 便携式移动设备挂载点
/mnt: 临时文件系统挂载点
/dev: 设备文件及特殊文件存储位置
b: block device 随机访问
c: character device 线性访问
/opt: 第三方应用程序的安装位置
/srv: 系统上运行的服务用到的数据
/tmp: 临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib: 32位使用
lib64: 只存在64位系统
include:C 程序的头文件(header files)
share: 结构化独立的数据,例如doc, man等
local: 第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var : variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local: 专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys: 用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
linux下的文件类型
- 普通文件
d 目录文件
b 块设备
c 字符设备
l 符号链接文件
p 管道文件pipe
s 套接字文件socket
文件名规则:
文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色-->目录
绿色-->可执行文件
红色-->压缩文件
浅蓝色-->链接文件
灰色-->其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
标准Linux文件系统(如ext4),文件名称大小写敏感
###绝对和相对路径
绝对路径
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径名
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
基名: basename /path/to/filename
目录名: dirname /path/to/filename
2 文件系统的基本命令
显示当前工作目录
每个shell和系统进程都有一个当前的工作目录
CWD:current work directory
显示当前shell CWD的绝对路径
pwd:显示当前工作目录
-P 显示真实物理路径
-L 显示链接路径
更改目录
cd 改变目录
使用绝对路径 或相对路径
cd /home/wang/
cd home/wang
切换至父目录: cd ..
切换至当前用户主目录: cd
切换至以前的工作目录: cd -
选项: -P
相关的环境变量:
PWD: 当前目录路径
OLDPWD: 上一次目录路径
列出当前目录的内容或指定目录
ls [options] [file_or_dirs]
-a 显示全部文件
-l 显示额外的信息
-R 目录递归通过
-ls 目录和符号链接信息
-l 文件分行显示
-S 按从大到小显示
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-d 不显示文件夹里面的文件或目录
查看文件
stat
文件:metadata, data
三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间, mtime,改变文件内容(数据)
change time 改变时间, ctime,元数据发生改变
创建空文件和刷新时间
touch [option] file
-a 仅改变atime和ctime
-m 仅改变mtime和ctime
-t [[cc]YY]MMDDHHmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
复制文件和目录
cp src dest
src 是文件:
如果目标不存在:
新建DEST,并将src中内容填充至DEST中
如果目标存在:
DEST是文件,将SRC中的内容覆盖至DEST中,基于安全建议为cp -i
DEST是目录,在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
cp SRC... DEST
SRC... 多个文件
DEST 必须存在,且为目录,其它情形均会出错
-i 覆盖前提示
-n 不覆盖,注意两者顺序
-r,-R 递归复内部的所有内容
-a 归档,相当于-dR --preserall
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p 等同--preserv=mode,ownership,timestamp
-v --verbose
-f --force 将文件删除,在重建一个名称一样的文件。
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,形式为filename~
--backup=number 目标存在,覆盖前先备份加数字后缀
备注:/etc/和/etc的区别
只是 /etc/ 强调了"etc"是一个文件夹所以部分只能作用于文件上的命令会直接报错退出(比如不带-R参数的copy)
移动和重命名文件
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
以表达式替换文件名
rename [options] expression replacement file...
-v 显示操作
-s 对链接文件的目标文件进行操作
示例:
rename test good cttest
删除
rm [OPTION]... FILE...
常用选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
目录操作
tree 显示目录树
-d: 只显示目录
-L level: 指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
mkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
rmdir 删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
rm -r 递归删除目录树
3 文件通配符
* 匹配零个或多个字符--不包含隐藏文件
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]: 小写字母
[A-Z]: 大写字母
[zhang] 匹配列表中的任何的一个字符
[^zhang] 匹配列表中的所有字符以外的字符
预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符