linux常用命令
1. date
查看日期
2.Ctrl + C
中断目前的程序
3.Ctrl + d
比如我通过dc进入了计算机的程序,现在输入的代码都是执行bc的命令,这时候要退出到linux命令行就需要输入quit退出bc,更简单的就是 ctrl + d 退出.
4.Shift + Page Up/Page Down
翻页,没什么好说的.
5.帮助命令
[Command] --help
基本上所有的程序都是--help来查看命令提示.z
6.手册
man [Command]
/word,可以在手册中查找word的关键词.
显示手册
7.cal
日历
8.who
查看谁在使用linux
9.shutdown
关机
关机前最好执行sync命令回写内存数据到硬盘中,
10.reboot
重启
11.chgrp
修改文件的用户组 chgrp users filename
要注意users必须存在/etc/group 这个文件中
12.chown
修改文件的拥有者 chown lishuaiqi:users filename
注意lishuaiqi必须存在/etc/passwd中 加上 : 可以一起修改用户组,或者用.直接修改用户组
13.chmod
修改文件的读写权限 -rwxrwxrwx 三个一组,分别代表文件拥有者,群组,其他人的 读 写 执行权限.
语法有很多:
chmod 777 filename 三个一组,rwx分别代表4 2 1,加起来就是7.
chomod u=rwx,go=rwx filename u user 所属个人 g group 所属群组 o others 其他人
chmod a+r filename 代表给所有人添加读取的权限
chmod a-r filename 给所有人删掉读取的权限
rwx对于目录来说,分别代表能否查询该目录下的文件数据,是否有改变目录结构列表的权限,是否有进入该目录的权限,如cd
14. basename
查看文件的文件名
15. dirname
查看文件的路径
16. cat
查看文件内容,输出所有内容,不经常用
17. tac
cat的反写,和cat输出的顺序不同,从最后输出到第一行
18. nl
输出文件内容的时候加上行号
19.more
翻页输出文件内容,空格翻页,回车往下走一行
20.less
less可以使用pageup,pagedown来上下翻页,这是more不具备的.
21. head -n [行号] [文件]
打印前面几行,如果 行号为负数,则不打印尾部的行数
22.tail
同 head,不过是尾部开始,多了 -f 参数,可以持续监测尾部的数据更新
23.od -t [type] [文件]
根据参数type读取二进制文件,如:od -t c /usr/bin/passwd 用ASCII码输出密码
echo password | od -t oCc 输出 password的ASCII对照表
24. touch [文件名]
如果没有文件则创建文件,有文件则更新 修改时间 状态时间 读取时间这三个时间.
25. umask 设置文件的默认属性
比如:
最后三位为022,代表分别减去的权限,2代表减去 rwx 中 w权限,也就是不能修改.
用户简历文件的默认权限为 rw-rw-rw,减去w后生成的文件,所以生成的文件权限是 rw-r-r
目录的默认权限是rwxrwxrwx,减去 022 后就成了 rwx-r x-r x
26. chattr 修改文件的隐藏属性
chattr +i [文件] 让一个文件不能被删除修改
chattr -i [文件] 去除 i属性
+a 只能增加数据,不能删除也不能修改数据
-a 去除 a属性
chattr增加的属性无法通过 ll 或者 ls -l 查看
只能通过 lsattr 命令查看
27.查找脚本文件
which ifconfig
查找 ifconfig 命令的所在位置
which默认找的是PATH内所设置的目录
28. 文件的查找
whereis [文件名] 只查找特定的目录 可以通过 whereis -l 来查看查找的目录
locate [文件名] 需要安装程序 yum install mlocate; yum install updatedb;updatedb ; 直接 locate -l 5 passwd ,输出passwd相关的五个文件;
因为locate是在数据库中查找的,所以新建立的文件需要更新数据库才能找到,updatedb命令执行就可以. linux 默认每天更新一次.
find [文件名] 直接在硬盘中查找,比较慢
29.查看硬盘使用情况
df -h 或者 du
du -sb 计算当前目录有多少容量(字节)
30.硬链接
ln /etc/crontab .
不能链接目录,不能跨文件系统
符号链接
ln -s /etc/crontab crontab2
ln -snf /etc/crontab crontab3 更新软链接
区别:
符号链接是新文件,会重新生成一个新的inode,类似于windows的快捷方式;
而硬链接只是相同inode不同的文件名,相当于一个别名作用的关联数据.
31.列出所有存储设备
lsblk
查看设备的uuid
blkid
列出磁盘的分区表类型和分区信息
parted device name print
比如:parted /dev/vda print 列出/dev/vda的磁盘相关信息
parted具体怎么用还不清楚
32. 分区操作
MBR使用fdisk,GPT使用gdisk,两个都可以在输入命令后使用?访问相关操作,可以创建分区删除分区等等.
更新分区:partprobe
32.解决文件系统错乱(真的是常用的命令吗?)
xfs_repair
33.挂载
设备在不同系统之间名称会不同,所以我们需要用xfs_admin修改XFS文件系统的UUID,这样就可以使用 mount UUID=xxx /data/xfs 来挂载.利用uuidgen命令生成一个新的UUID
34.内存交换分区
内存不够的时候,可以使用物理分区或者文件来当做内存交换分区
物理分区:用gdisk或者fdisk创建一块内存,然后mkswap 加载创建的物理分区,swapon启用交换分区,然后free或者swapon -s即可查看内存的使用情况
文件:dd if=/dev/zero of=/tmp/swap bs=1M count=128,mkswap + swapon,同上.
35.压缩与解压缩
linux的压缩命令通常只针对单个文件,所以为了能打包多个文件或者目录,需要tar命令来进行打包
gzip 会把文件压缩为 .gz结尾的目录,源文件会消失,解压: gzip -d ,
bzip2 : gzip的加强版,压缩比更好,但是碰到大文件会压缩慢,因为计算多.压缩文件以bz2结尾,bzcat读取压缩后的文件.
xz : 比bzip2压缩比更好,但是也更慢,文件以xz结尾. xzcat 读取压缩后的文件.
总结: 压缩比越好的软件,压缩速度也就越慢,所以要做取舍.
36. 打包
因为linux的压缩与解压缩只能针对单个文件,所以需要使用tar进行打包.
压缩: tar -jcv -f filename.tart.bz2 [文件或者目录]
查询 : tar -jtv -f filename.tar.bz2
解压缩: tar -jxv -f filename.tar.bz2 -C [指定解压缩到的目录]
- P (大写) 保留绝对路径,这样解压后就会覆盖原本压缩的目录.不保留的话不会覆盖.
解压缩单个文件: tar -jxv -f filename.tar.bz2 [文件名] 可以在执行这个命令之前用 tar -jtv -f filename.tar.bz2 | grep [关键字] 搜索一下关键字.
打包更新的文件: tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 --newer-mtime="2021/07/09" /etc/* 在/etc目录下打包比2021/07/09这个时间更新的文件到/root/etc.newer.then.passwd.tar.bz2 这个文件中.
利用 tar 替换 cp -r 操作: tar -cvf - /etc | tar -xvf - (仁者见仁)
xfs系统备份与还原: xfsdump xfsrestore 主要是这两个命令,可以自行了解。
其他命令备份: dd if=/etc/passwd of=/tmp/passwd.back 将/etc/passwd 备份到 /tmp/passwd.back中
cpio:
find * | cpio -ocvB > [file/device] 备份 这个命令可以备份任何文件,只是需要用find先查找文件然后用管道流进行操作。
cpio -ivcdu < [file/device] 还原
cpio -ivct < [file/device] 查看
37. type命令 用于查看命令是否属于内置命令
type -a ls 就会列出所有ls 路径和别名
38. ctrl +u 删除光标以前的命令 ctrl + k 删除光标以后的命令 ctrl + a 移动光标到最前面 ctrl + e 最后面
39. 变量双引号和单引号的区别
"" 双引号中的 ${HOME} 会保留$的特性,直接输出 HOME变量,如果是单引号的话 '' 就不会, 会原样输出 ${HOME};
变量累加: PATH=${PATH}:/usr/java/home
一般情况加,父shell定义的变量子进程无法使用.我们可以用 export [变量名]将变量变成环境变量,来让子进程使用
如果想让某个命令执行的结果复制到变量中,我们可以使用 $(),比如: version=$(uname -r) 就把uname -r 输出的内核版本作为变量赋值给version, $` `也可以达到相同的效果
40. 变量相关
随机数 echo ${RANDOM}
查看所有环境变量 env 或者 export
进程pid $$
上一个命令的执行结果 echo $? 如果是0则执行成功, 非0则执行失败
set 观察所有变量,包括自定义和环境变量 env只能查看环境变量
查看linux支持的编码 locale -a
读取用户输入的命令: read 比如: read name 输入后在执行 echo ${name} 就会输出刚刚输入的内容 -p [提示]-t [等待秒数]
变量的类型 : 有整型,字符串等 可以通过 declare 命令来定义 declare -i sum=1+1 定义sum为整型,可以计算后面的结果 -a 数组 -x环境变量,同 export -r 只读
如果我们想把环境变量设置为自定义变量,可以执行 declare +x sum
数组的定义直接加[]即可 var[1]="hello" var[2]="world"
42. 文件系统和程序的限制关系命令: ulimit,详情 --help
例子: 限制使用者简历10M以下容量的文件 ulimit -f 10240
43. 变量替换相关
删除:
假如要删除path的/local/bin,可以执行
echo ${path#/*local/bin:} #表示符合替换文字的最短一个 ##表示最长 # 是从前匹配 相反 % 是从后匹配,%%也表示最长的匹配.
替换:
echo ${path/bin/aa} / / 中间的字符表示要替换的字符,这个命令的意思是把bin替换为aa,只替换第一个匹配的,如果要全部替换,则加上两个/, echo ${path//bin/aa}
变量不存在:
假如变量不存在 我们可以用 - 号赋值默认值, echo ${username-root} 如果username不存在的话,就会输出root,但是如果 username=""空值的话,echo ${username-root} 这个命令就不管用了,还是会输出空值,所以我们要用 echo ${username:-root} 这个命令, 加了 : 以后,如果 username为空值或者不存在,就会输出root
- 号不会给username赋值,如果要赋值的话需要用 =
echo ${username=root} 如果username不存在,输出root,并且给username赋值root
同理,如果空字符串也想赋值root的话,需要加上: echo ${username:=root}
echo ${username=}
如果变量不存在,则通知有错误:
echo ${username?var} 如果username没有值,则会在控制台打印错误. 同理,要处理空字符串需要加上 :
44.别名
我们可以给常用的命令赋值别名,比如: alias testVar="echo aa" 这样我们输入testVar命令的时候就会打印aa,如果要删除别名,就需要执行unalias testVar删除刚刚新建的别名
45.历史命令
执行history可以查看历史命令, history 3 查看最近的前三条命令,查找到命令后,我们可以执行以下命令操作:
![number] 比如: !3 执行 历史命令的第三个
![command] 执行最近的命令开头为command的命令
!! 上一个命令
命令基本上都存在 ~/.bash_history 文件中,我们可以执行 history -w 来写入前面的文件中