“Linux命令行与Shell脚本编程大全”学习记录上
1. 文件目录处理
文件
- ls -sail 显示文件块大小,列出所有文件,文件的索引节点,产生长列表
- ls a? 显示所有a+“一个字符”文件
- ls a* 显示所有a+“多个或零个字符”文
- touch test 创建名为test的空文件/改变已有文件的更新时间不改变内容
- touch -a test 改变test文件访问时间
- touch -m test 改变test文件修改时间
- touch -t 201112251200 test 修改test文件时间为指定时间
- cp test1 test2 将test1复制到test2
- cp -p test1 test2 复制并保留源文件的访问时间和修改时间
- cp -R test1 test2 递归复制整个文件test1的内容到test2
- cp -f test* test2 将所有以test开头的文件复制到test2,-f为强制覆盖dir中的内容而不会提示用户
- cp -l test1 test2 创建指向test1的硬链接test2
- cp -s test1 test2 创建指向test1的软链接test2(相当于文件的快捷方式)
- mv test1 test2 将test1中的文件和目录移动到test2
- rm -f test 不提醒强制删除test
- stat test 查看文件所有状态信息
- file test 查看文件类型(文件不能为空)
- cat test 查看整个文件
- cat -n test 查看整个文件,并给每个文件加行号
- cat -b test 查看整个文件,给有文本的文件加行号
- cat -s test 查看整个文件,多个空白行压缩至单个空白行
- cat -T test 查看整个文件,并禁用制表符,用^I代替制表符
- more test 查看整个文件
- less test 查看整个文件
- tail -f test 监控日志使用,看文件
- head test 查看文件开头内容
目录
- mkdir dir 创建目录dir
- mkdir -p dir 递增创建目录,即使上一层目录不存在
- rmdir dir 删除目录dir,dir只能是空文件夹
- rm -r dir 递归删除目录中的文件,最后删除目录自身(会逐一判断是否删除,很难受)
- rm -rf dir 递归删除目录中的文件,最后删除目录自身, 直接删除,无需判断
- stat dir 查看目录所有状态信息
- pwd 显示工作路径
2. 监测程序,处理数据
进程
- ps 显示当前用户,当前控制台的进程
- ps -ef 显示所有运行在程序上的进程,并扩展输出
- ps -H 显示树状进程
- top 动态显示进程
- kill 9 app 无条件终止app进程
- killall http* 终止以http开头的进程
磁盘
- mount 输出当前系统挂载的设备列表
- mount -t vfat sda sdb 手动将sda挂载到sdb上
- umount /home/app 卸载home下的app,不能卸载正在使用或有进程的App
- df 查看已挂载磁盘使用情况
- df -h 查看已挂载磁盘使用情况,并详细显示内存使用情况
- du 显示当前目录下,所有文件,目录的磁盘使用情况
- du -c 显示所有已列出文件,总的大小,磁盘使用情况
- du -h 显示所有已列出文件,总的大小,并用可读格式代替字节
- du -s 显示每个输出参数的总计
- du -sh * 显示当前文件夹文件大小
处理数据
- sort file 按默认顺序为文本文件内容排序
- sort -n file 按默认顺序为文本文件内容排序,数字按照数字顺序排序
- sort -M file 按照三字符的月份命名排序
- sort -r file 反序排序
- sort -t':' -k 3 -n /etc/passwd 以":"为分隔符,以第3位为排序字段,以数字形式排序/etc/passwd文件
- grep aa file 在file中查找包含aa的文本,定位到行
- grep -v aa file 在file中查找不包含aa的文本,定位到行
- grep -n aa file 在file中查找包含aa的文本,并添加行号
- grep -c aa file 输出file中查找包含aa的文本的行数
- grep -e a -e b file 在file中查找文本中包含a或b的行,并集
- grep [ab] file 在file中查找文本中包含a或b的行,并集(正则表达式法)
- bzip2【gzip】 dir 用bzip2【gzip】工具,压缩文件dir
- bzcat【gzcat】 dir.bz2 用bzip2【gzip】工具,显示压缩后的文本文件内容
- bunzip2【gunzip】 dir.bz2 用bzip2【gzip】工具,解压文件dir.bz2
- bzip2recover dir.bz2 用来尝试恢复损坏的压缩文件
- zip dir 创建一个压缩文件,包含指定的文件和目录
- zipcloak dir 创建一个加密的压缩文件,包含指定的文件和目录
- zipnote dir.zip 从zip中提取批注
- zipsplit dir.zip 将现有zip文件分割成多个固定大小文件
- unzip dir.zip 从压缩过的zip文件中提取文件和目录
- tar -cvf file.tar dir1/ dir2/ 创建一个包含dir1和dir2目录内容的叫file.tar的归档文件
- tar -tf file.tar 列出tar文件的内容,但不解压
- tar -xvf file.tar 从file.tar中提取文件内容(解压文件)
- tar -xvf file.tar -C /path 解压文件到/path目录下
3. 环境变量
- printenv 查看全局变量
- echo $HOME 查看$HOME全局变量
- set 查看某个进程设置的所有环境变量
- test=testting 给test环境变量赋值为testing
- echo $test 显示test环境变量的值
- test=‘testing is a word’ 给test赋值带有空格的环境变量
- export test 将已经设置为局部变量的test导出到全局变量
- unset test 删除环境变量test
- PATH=$PATH:/home/test 把目录加到PATH环境变量中
- test=(one two three four) 给test环境变量赋值一个数组
- echo ${test[2]} 结果返回three
- echo ${test[*]} 显示整个数组
- test[2]=seven 改变某一索引的值
- unset test[2] 删除某一索引的值
- unset test 删除整个数组
- alias -p 查看命令别名设置
- alias ll='ls -l' 自建别名
4. 文件权限
- usermod -e 修改/etc/passwd文件,用户过期时间
- usermod -l 修改/etc/passwd文件,用户账户的登录名
- usermod -p 修改/etc/passwd文件,用户账户的登录密码
- usermod -L 锁定账户,用户无法登录
- usermod -U 解除锁定用户可以正常登陆
- passwd user1 修改user1的密码
- /usr/sbin/groupadd shared 在系统上创建新组
- tail /etc/group 查看组
- /usr/sbin/usermod -G shared test 为shared组添加用户test
- /usr/sbin/groupmod -n sharing shared 改组名shared为sharing,不影响文件内容
- umask 显示文件默认权限
- umask 026 设置文件的权限为640
- chmod 760 file 设置文件file权限为-rwxrw----
- chmod a+x file 为文件file添加x(可执行)权限
- chmod u+x file 为文件file的属主添加x(可执行)权限
- chmod g+r file 为文件file的属组添加r(可读)权限
- chmod o-w file 为文件file的其他用户去掉w(可写)权限
- chown dan file 文件file的属主改为dan
- chown dan.shared file 同时改变文件file的属主为dan,属组为shared
- chown .shared file 改变文件file默认属组为shared
- chgrp shared file 改变文件file的默认属组
5. 安装软件程序
Debian版本
- sudo 以root用户执行命令
- aptitude show jdk Debian系统中,使用aptitude工具显示软件库jdk软件包信息
- dpkg -L jdk Debian系统中,使用dpkg工具显示已安装jdk软件包信息
- dpkg --search /root/jdk.zip 查找jdk.zip属于哪个软件包(必须是决对路径)
- sudo aptitude install wine 以root身份运行,使用aptitude命令安装wine软件包
- aptitude search wine 查找软件包wine,已安装显示为i,未安装显示为p
- aptitude safe-upgrade 更新所有系统上的软件包,更新为软件库最新版
- sudo aptitude purge wine 以root身份运行,删除软件包wine和相关数据和配置文件
- sudo aptitude remove wine 以root身份运行,删除软件包wine,保留相关数据和配置文件
Red Hat系统
- rpm -q xterm 查看包xterm是否安装
- yum list installed 列出系统所有已安装的包
- yum list xterm 查看xterm包是否安装
- yum provides file 查找什么包提供了系统上的file文件
- yun install xterm 使用yum工具安装xterm包
- yum localinstall xterm.rpm 本地安装xterm.rpm包
- yum list updates 列出系统中所有需要更新的安装包
- yum update xterm 使用yum工具更新xterm包
- yum update 更新所有安装包
- yum remove xterm 卸载xterm包,保留配置文件和数据文件
- yum erase xterm 卸载xterm包和配置文件和数据文件
- yum update --skip-broken 跳过损坏包,更新下面的的包
- yum repolist 查看是在什么库中获取的包
- urpm -i xterm 查看xterm包信息
- urpm xterm 使用urpm工具安装xterm包
- urpme xterm 卸载xterm包和配置文件和数据文件
- zypper search -s xterm 查看xterm包信息
- zypper install xterm 使用zypper工具安装xterm包
- zypper update 更新所有安装包
- zypper remove xterm 卸载xterm包和配置文件和数据文件
6. 编辑器
Vim编译器
- vi file.txt 查看文件内容,进入普通模式
- i 文本进入编译模式
- ESC键 退出编译模式,进入普通模式
- Ctrl+f 普通模式下,下翻一屏数据
- Ctrl+k 普通模式下,上翻一屏数据
- G 普通模式下,移到缓冲区最后一行
- num G 普通模式下,移到缓冲区第num行
- gg 普通模式下,移动到缓冲区第一行
- : 进入命令行模式
- :set number 加行号
- :q 命令行模式下,如果未修改缓冲区数据,退出
- :q! 命令行模式下,取消所有对缓冲区的修改并退出
- :w test.txt 命令行模式下,将文件保存到test.txt文件下
- :wq 命令行模式下,保存缓冲区文件并退出
- dd 普通模式下,删除光标所在行
- x 普通模式下,删除光标所在位置的字符(删除键默认为此命令)
- yw 普通模式下,复制光标所在位置的单词
- y$ 普通模式下,复制光标所在位置,到行尾之间的文本
- v 进入可视模式,并且移动光标高亮显示,并覆盖想要复制的内容
- y 可视模式下,激活复制命令,并进入普通模式
- p 普通模式下,在光标所在位置插入上一次删除或复制的内容
- / 普通模式下,可输入字符,按回车进行查找
- n 光标移动到要查找下一个字符
- :s/old/new 用new单词来快速替换old单词,只替换第一次出现old的单词
- :s/old/new/g 用new单词来快速替换old单词,替换所有
- :n.ms/old/new/g 替换行号n和m之间所有的old
- :%s/old/new/g 用new单词来快速替换old单词,替换整个文件old
7.文本处理
-
awk '{print $1,$4}' log.txt 以空格为分隔符输出文本中第1,4项
- awk -F, '{print $1,$2}' log.txt 以,为分隔符输出文本中第1,2项
-
awk 'NR==1 {print $1}' 打印第一行的第一个字段
-
sed -n '3p' passwd 输出passwd文件中的第三行
-
sed -n '3,5p' passwd 输出passwd文件中的第3-5行
-
sed -n '3,5d' passwd 删除passwd文件中的第3-5行
-
sed 's#3#88#g' test.txt 把test文件中所有3替换为88(#为分隔符,默认为/,也可以是其他字符除了\)
- sed -i '0,/a/s/a/e/g' test.txt 在test.txt文件中,把a替换成e,替换一次
- sed -e '/abc/d' test.txt 删除文件中包含abc的行
初学者,臭原创,臭手敲,不定时更新,随学随记,欢迎来参与讨论
若有错误,请评论指出,谢谢!
转发请标明出处 https://www.cnblogs.com/yeshengx/p/13879684.html 谢谢!
浙公网安备 33010602011771号