linux基础命令1
回显命令:echo
内建命令
echo "How are you"
echo "$SHELL" 弱应用,显示变量中的值
/bin/bash
echo '$SHELL' 强引用类型,不会显示变量中的值
$SHELL
-n:禁止显示换行符,默认自动加换行符
-e:允许使用转义符
\n:换行
\t:制表符
echo -e "\n 哈哈"
显示文件的路径:which
which [OPTION] COMMAND
--skip-alias 不显示别名
whereis:locate the binary,source,and manual page files for a COMMAND
whatis
使用mkwhatis命令可将当前系统上所有的帮助手册及与之对应的关键字
创建一个数据库
Linux会自动运行创建这个数据库
系统管理类命令:
关机:
halt,poweroff,shutdown,init 0
shutdown是安全关机方式
重启: reboot,init 6,shutdown与用户登录有关的: w,who,whoami whoami: 看当前用户是谁 who: 显示当前有哪些用户登录系统 w: show who is logged on and what they are doing关机或重启命令: halt,poweroff,reboot -f 强制关机,不建议。不保存。 -p 切断电源。 shutdown shutdown [OPTION]... TIME [MESSAGE] -r reboot -h halt 切断电源。 -c cancel 取消shutdown TIME: now 0也是现在 +m:表示从命令提交开始m分钟之后 hh:mm 绝对时间。 MESSAGE:警告的内容
Linux的文件系统
根文件系统(rootfs):
root filesystem
LSB:FHS (FileSystem Heirache Standard) /etc,/usr,/var,/root,/home,/dev /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub) 都存放在此目录 /bin:供所有用户使用的基本命令:不能关联至独立分区,OS启动就用到的程序放在这里 /sbin:管理类的基本命令;不能关联至独立分区,OS启动就用到的程序放在这里. /lib:基本的共享库和内核模块,以及内核模块文件(/lib/modules); /lib64:专用于x86_64基本的共享库和内核模块,以及内核模块文件; /etc:配置文件目录(纯文本文件) /home/USERNAME:家目录 /root:管理员的家目录 /media:Mount point for removeable media /mnt:Mount point for temporarily media /dev:Device files;设备文件及特殊文件 b:block Device --可随机访问 c:character device --必须顺序访问 /opt Add-on application software packages 第三方应用程序的安装位置。 /srv:系统上运行的服务用到的数据 /tmp:临时文件存放位置 /usr:一般独立分区 universal shareable read-only data 必须有下列目录 bin:存放系统完成基本功能的程序,不是启动时的 sbin lib lib64 include:c程序的头文件存放位置 share:结构化独立的数据,例如doc,man等 src:源代码所在位置 local:Local hierachy;第三方应用程序的安装位置,目前最常见,也可以mount到独立的文件系统 bin,sbin,lib,lib64 /var: Hierarchy 经常发生变化的数据文件存放位置 cache:应用程序缓存数据目录 lib:应用程序状态数据 local:专用于为/usr/local下的应用程序存储可变数据 lock:应用程序的锁文件 log:日志文件 opt:专用于/opt下的可变数据 run:运行中的进程相关数据;通常用于存储进程的PID文件 spool:缓冲池 tmp:系统2次重启过程中的临时文件存放位置 /proc:伪文件系统,用于输出内核与进程信息相关的虚拟文件系统。 /sys:伪文件系统,用于输出当前系统上硬件设备相关信息的虚拟文件系统。 /selinux:security enhanced Linux,selinux相关的安全策略等信息的存储位置。Linux上的应用程序的组成部分 二进制程序: /bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin 库文件: /lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib 配置文件:/etc,/etc/directory,/etc/local/etc 帮助文件:/usr/share/man,/usr/share/doc ,/usr/local/share/man,/usr/local/share/docLinux下的文件类型: - (f):普通文件 d:目录文件 b:块设备: c:字符设备 l:符号链接文件,软连接文件 p:管道文件; s:套接字文件;socket文件
bash的基础特性:
(1) 命令历史
history
环境变量:
HISTSIZE:命令历史记录的条数:
HISFILE: ~/.bash_history;
HISFILESIZE; 命令历史文件记录历史的条数;
history -d OFFSET 删除指定条目的历史记录 -c 清空 history #:显示最近的number个历史记录 -a:append;手动追加当前会话缓冲区的命令历史至历史文件中。 调用历史中的命令: !!:最近一次命令 !# :第#号命令 !string:最近一个已制定字符串开头的历史命令 调用上一条命令的最后一个参数 !$: 上一条命令: cat /etc/fstab 当前命令:ls -l !$ #相当于 ls -l /etc/fstab ESC, . 控制命令历史的记录方式: 环境变量:HISTCONTROL ignoredups:忽略重复的命令,连续而且相同 ignorespace:忽略所有以空白字符开头的命令 ignoreboth:以上二者都生效 修改环境变量的方式:(只对当前shell和子进程有效) export 变量名=.....(2)命令补全 bash执行命令: 内部命令:build in 外部命令:搜索$PATH环境变量定义的路径,自左向右在每个路径搜寻以用户给定 名命名的文件,第一次找到的即为要执行的命令。(3) 路径补全(4) 命令行展开 ~:展开为用户的家目录 ~USERNAME :展开为USERNAME的家目录 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径。 /tmp/{a,b} = /tmp/a,/tmp/b 例子: (1):如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a, /tmp/x/y1/b,/tmp/x/y2/a,/tmp/x/y2/b mkdir -p /tmp/x/{y1,y2}/{a,b} (2):如何创建x_m,y_m,x_n,y_n mkdir -p /tmp/{x,y}_{m,n} (3):如何创建/tmp/bin,/tmp/sbin,/tmp/usr,/tmp/usr/bin, /tmp/usr/sbin mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}(5) 命令的执行结果状态 bash使用特殊变量$?保存最近一条命令的执行状态结果。 0:成功 1-255:失败
目录管理类命令:
cd pwd,ls
mkdir rmdir ,tree
mkdir [option] /path/to/somewhere /path/to/somewhere2
可以用空格,一次创建多个目录。
-p:存在也不报错。如果需要,自动创建父目录。
-m mode ,创建目录时直接指定权限。
rmdir [option] /path
只能删除空目录
-p: 删空目录,一直追溯到不空的父目录
tree: 树状结构显示 -d 仅显示目录 -L:最多显示多少层级。
文件查看类命令
cat,tac
more,less,tail,head
more [option] [file]less [option] [file]head [option] [file] -c #:指定获取前#个字节 -n #:指定获取前#行;默认就是前十行tail [option] [file] 与head类似 -f 继续跟踪file新追加的内容。查看log文件特别有用
文件的时间戳管理工具
touch
文件:metadata,data
查看文件状态:stat
三个时间戳:
access time,atime: 访问时间,只要用可执行程序访问过,就更新此时间
modify time,mtime:修改时间,改变文件内容,更新这个数据
change time ctime: 改变时间,元数据改变,更新这个数据,而元数据包含这三个时间戳
所以,如果atime和mtime改变了。那么ctime也改变了。
touch [option] [file]
默认touch会改变文件的atime、mtime、ctime
-a: 只改变访问时间
-m:只改变修改时间戳
-t:指明时间戳
touch -m -t 201909011234666 /etc/fstab
-c: 如果文件不存在,那么不创建文件。