Linux常用操作指令集合

此文为本人在学习Linux基础操作过程中的一些笔记与汇总,由于本人知识水平有限,错误在所难免,如若出现错误,恳请指教。
如果这篇文章对你有所帮助,不妨点赞与收藏,你们的支持是我继续写博客的最大动力。

文件及目录

  • ls:查看目录下内容

    ls [-aAlh] <dir or file>
    -a	#列出所有文件,包括隐藏文件
    -A	#列出所有文件,包括隐藏文件但不包括"."和".."两个目录文件
    -l	#列出文件的详细信息
    -h	#以易读单位显示文件的详细信息
    
  • cd:切换当前工作目录

    cd /etc 	#直接切换到/etc目录
    cd ..		#切换到上层目录
    cd .		#切换到当前目录
    cd			#回到自己的家目录
    cd ~		#同上
    cd ~<user> 	#到用户<user>的家目录
    cd -		#回到上次工作目录
    
  • pwd:打印工作目录

    pwd [-LP]
    -L	#显示逻辑工作目录,链接文件当前所在的目录
    -P	#显示物理工作目录,链接文件所指向的文件真实所在的目录
    
  • cp:拷贝

    cp [-irapdslu] <source> <destination>
    -i	#若文件存在,询问用户
    -r	#递归复制
    -a	#pdr的集合
    -p	#连同文件属性一起拷贝
    -d	#若源文件为连接文件,则复制连接文件的属性
    -s	#拷贝为软连接
    -l	#拷贝为硬连接
    -u	#源文件比目的文件新才拷贝
    
  • mv:移动文件及目录

    mv <source> <target>
    
  • rm:删除文件及目录

  • mkdir:创建目录

    mkdir [-pm] <dir>
    -p <dir>		#自动创建父目录
    -m <mod> <dir>	#设置权限为<mod>-掩码,若<mod>为777,最后文件夹的权限为755,这与掩码022有关
    
  • tree:打印目录树

  • tar:文件归档与压缩

  • ln:创建链接文件

    ln -s <file> <link> #软链接
    ln <file> <link> 	#硬连接,相当于给<file>取了一个别名
    ls -ali 			#查看硬连接文件的节点也是相同的
    
  • rmdir:删除目录

  • basename:一个路径最后一个文件夹/文件名称

  • dirname:一个路径的第一个文件夹名称

  • 文件的特殊权限

    权限作用的对象效果例子
    set_uids(原先没有x则为S)二进制程序文件,非脚本用户在执行该程序时获取程序所有者权限用户修改密码时获得passwd权限
    set_gids(原先没有x则为S)目录和二进制程序文件用户在该目录里,有效组变为目录所属组wall命令
    sticky Bitt目录在该目录下,用户只能删除自己创建的内容/tmp

文件内容的修改与查看

  • touch:创建空白文件

    touch [-acdmt] <file>
    -a	#仅修改访问时间
    -c	#仅修改文件时间,若文件不存在,不新建
    -d	#修改文件日期
    -m	#仅修改mtime
    -t	#修改文件时间[yymmddhhmm]
    
  • cat:正向连续读

    cat [-AbEnTv] <file> #文件名是作为参数传入
    -A	#相当于-vET
    -v	#列出看不出的字符
    -E	#显示断行符为$
    -T	#显示TAB为^I
    -b	#列出行号
    -n	#列出行号,连同空行也编号
    
  • tac:按行反向连续读

  • nl:输出行号显示文件

    nl [-bnw] <file>
    -b			#行号指定方式
    -b a		#相当于cat -n
    -b t		#相当于cat -b
    -n			#列出行号的表示方法
    -n ln		#行号在屏幕最左边显示
    -n rn		#行号在自己字段的最右边显示
    -n rz		#行号在自己字段的最右边显示,前面自动补全0
    -w <num>	#行号所占位数
    
  • vim:文本编辑器

  • echo:打印文本

  • more:一页一页地显示文件内容

    more <file>
    /string	#向下查找string关键字
    :f		#显示文件名称和当前显示的行数
    q 		#离开
    
  • less:与more相似,但是比more更好,可以上下翻看

    less <file>
    /string 	#向下查找
    n			#继续向下查找
    /?string	#反向查找
    N			#继续反向查询
    
  • head:只看文件的头几行

  • tail:只看文件的末尾几行

  • od:以二进制方式查看文件内容

  • diff:对比文件

  • grep:检索信息

    cat *.c | grep "haochen"	#在当前目录的所有.c文件中查找“haochen”
    ./a.out < "haochen"			#将haochen作为./a.out的输入,< > 都有输出流流向的意思。
    cat << haochen				#指定haochen为分隔符,当输入haochen时终止输入并输出
    
  • 文件隐藏属性:

    chattr [+-=] [ASacdistu] <file or dir>
    A	#不修改atime
    S	#同步写入,不通过缓冲的形式写入
    a	#只能增加数据
    c	#自动压缩,解压
    d	#不会被dump程序备份
    i	#不能删除,修改,建立连接
    s	#文件删除时,直接从磁盘删除
    u	#文件删除时,数据内容存在磁盘中
    

文件查找与定位

文件的三个时间

mtime:内容数据改动(modify)时才更新这个时间

ctime:文件的权限,属性改动(chmod)时更新这个时间

atime:文件的内容被取用(access)时,更新这个时间

  • find:多样化高级查找

    find [PATH] [option] [action]
    #与时间相关的参数:-atime, -ctime, -mtime
    -mtime n		#n天前的"一天之内"修改的文件amin
    -mtime +n		#n天之前,不包含n,修改过的文件
    -mtime -n		#n天之内,包含n,修改过的文件
    -newer <file>	#比<file>还要新的文件
    #与用户或用户组相关的参数
    -uid <id>		#用户UID为n
    -gid <id>		#群组GID为n
    -user <name>	#用户名为<name>
    -group <name>	#群组名为<name>
    nouser			#文件所有者不存在
    nogroup			#文件所在组不存在
    #与文件权限及名称相关的参数:
    -name <file>	#文件名为<file>
    -size [+-] SIZE	#查找比SIZE大或小的文件
    -type <TYPE>	#查找文件类型为<TYPE>,<TYPE>可以是 f b c d l s p
    -perm <mode>	#mode刚好等于的文件
    -perm -<mode>	#权限超过mode的文件
    find -exec ls -l {} \;
    #将find找到的路径放入大括号内,ls是action的命令,-exec相当于action开始,分号相当于action的结束
    
  • which:查找PATH路径下第一个可执行文件(系统决定使用的那个)

  • whereis:查找可执行、源码、帮助手册

    whereis [-bmsu] <file or dir>
    -b	#只查找二进制文件
    -m	#只查找manual路径下的文件
    -s	#只查找source源文件
    
  • locate:定位任何文件(可部分查找)

    无法找到刚新建的文件,需要先通过管理员权限执行updatedb命令更新文件索引数据库

    locate [-ir] <keyword>
    -i	#忽略大小写
    -r	#后面可接正则表达式
    

数据提取操作

  • cut:切分

    cut [-dfc] <file>
    -d <char>	#以自定义字符<char>为分隔符分割,默认为制表符
    -f <num>	#显示第<num>个字段的内容 <num>有三种形式:[n- | n-m | -m] ~ [第n个到最后一个字段 | 第n到m个字段 | 第一个到第m个字段]
    -b <byte>	#以字节<byte>为单位进行分割
    -c 			#以字符为单位进行分割
    
  • sort:排序

    sort [-fbMnrtuk] <file or stdio>
    -f			#忽略大小写
    -b			#忽略最前面的空格符
    -M			#以月份名称排序
    -n			#以纯数字方式排序,不加-n则默认以字典序排列
    -r			#反向排序
    -u			#对结果去重
    -t <char>	#以自定义字符<char>为分割符分割,默认[TAB]
    -k <num>	#以分割后的第<num>个区间排序
    
  • uniq:去重

    uniq [-ic] <file>
    -i	#忽略大小写字符的不同
    -c	#去重后进行计数
    
  • split:把一个文件切分成若干个小文件

    split [-bl] <file>
    -b <size>	#切分为<size>大小的文件
    -l <num>	#以num行作为大小切分
    
  • tr:替换、压缩和删除

    tr [cdst] <字符集> <字符集>
    -c	#取代所有不属于第一个字符集的字符,字符集<a-zA-Z>代表所有字母>,<0-9>代表所有数字
    -d	#删除所有属于第一字符集的字符
    -s	#压缩每一个连续的的重复字符段为一个字符
    -t	#先删除第一个字符集较第二字符集多出的字符
    $ echo "abcdefghjl" | tr "ach" "321"
    $ 3b2defg1jl
    $ tr "[:lower:]" "[:upper:]" <file> #将<file>文件中的小写字符变为大写字符
    
  • wc:统计字符,字数,行数

    wc [-lwm] <file or stdin>
    -l	#仅列出显示行数
    -w	#仅列出显示字数
    -m	#仅列出字符个数
    
  • grep:检索

    grep [-acinv] <string> <file>
    -a	#将二进制文件以普通文件的形式搜寻数据
    -c	#统计在每个<file>中搜寻到<string>的次数
    -i	#忽略大小写
    -n	#顺序输出<string>在<file>中的行号
    -v	#反向输出(输出没找到的)
    last | grep -v ^$ | grep -v begins | cut -d " " -f 1 | sort | uniq -c ##查看最近登陆的用户及登录次数
    #^代表行开始,$代表行末,^$组合在一起代表空行
    
  • awk:数据整理、数据分析,对文本进行格式化输出、格式化统计并生成数据报表

    awk [-Ffv] 'BEGIN{ commands } pattern { command } END{ commands }' file
    -F <fs>			#<fs>是所指定输入分隔符,<fs>可以是字符串或正则表达式也可以省略,如果省略,则默认空格/回车/<tab>作分隔符
    awk -F 'BEGIN{ printf("%s\n", "Begin") } pattern { printf("%s\n", $1) } END{ printf("Bye") }' /etc/passwd
    #上面命令的意思是,在开头打印"Begin",读取/etc/passwd文件,并以默认分隔符分割,对每段进行打印,最后打印"Bye"
    -v var=<value>	#赋值一个用户定义的变量,将外部变量传递给awk
    -f <scripfile>	#从文本文件<scripfile>中读取而不是命令
    #第一步:执行BEGIN{ commands }语句块中的语句;
    #第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,知道文件全部被读取完毕.
    #第三步:当读至输入流末尾时,执行END{ commands }语句块.
    
  • sed:数据替换、查找、删除,与vim中的操作类似

  • tee:双向重导项,既保存又输出到stdout

    tee [-a] <file>
    -a	#追加到文件后面而不是覆盖它
    
  • xargs:参数代换,把前一个命令的输出当作后一个命令的参数

    xargs [-0pne] <command>
    -0			#将特殊字符还原为普通字符
    -e<arg>		#当xargs读到指定的一个<arg>时停止(<arg>也会读入),而<arg>后续的参数不再读入
    -p			#执行指令前询问
    -n <num>	#每次执行command时从参数流中读取<num>个参数,不加则默认一次性读取参数流中的所有参数
    echo "/etc/" | xargs ls
    

用户相关命令

  • useradd:新建用户

    useradd [-dmMsugGnefcD] <user>
    -d <dir> 		#指定$HOME目录
    -m 				#自动建立$HOME目录 (/home/${<user>})
    -M 				#不自动建立$HOME目录
    -s <shell> 		#设置用户登录shell
    -u <UID> 		#设置用户编号
    -g <group> 	#设置用户归属群组
    -G <group> 	#设置用户归属附加群组
    -n 				#不建立以用户名称为群组名称的群组
    -e <days> 		#设置账号过期时间,绝对时间
    -f <days> 		#缓冲时间,days天后关闭账号
    -c <string> 	#设置用户备注
    -D <expression>	#更改预设值
    /etc/login.defs #新建用户规则
    /etc/skel/ 		#新建用户默认文件
    
  • userdel:删除用户

    userdel -r <user>
    -r	#删除用户相关文件和目录(邮件,$HOME目录)
    
  • usermod:修改用户

    usermod [-cdefgGlLsuU] <user>
    -c <string> 	#修改备注信息
    -d <dir> 		#修改$HOME目录
    -e <days> 		#账户失效时期 YY-MM-DD
    -f <days> 		#密码过期后宽限的日期
    -g <group> 	#修改用户所属群组
    -G <group> 	#修改用户所属附加群组
    -l <user> 		#修改用户账号名称
    -L 				#锁定用户密码,使密码无效
    -s <shell> 		#修改用户登录后所使用的shell
    -u <UID> 		#修改用户ID
    -U 				#解除密码锁定
    
  • passwd:修改密码

    passwd [-dleSxnf] <user>
    -d 			#清除密码
    -l 			#锁定账户
    -e 			#使密码过期
    -S 			#显示密码认证信息
    -x <days>	#密码修改后最大使用天数
    -n <days> 	#密码修改间隔时间
    -f 			#更改用户信息(用户昵称)
    -i 			#密码过期后宽限时间
    
  • gpassws:设定群组密码

    gpasswd [-adrAM] <group>
    -a <user> 	#将用户加入群组
    -d <user> 	#将用户从群组中删除
    -r 			#删除密码
    -A <user>	#将用户设置为群组管理员
    -M <user1>, <user2> #设置群组成员
    
  • su:切换用户

    su [-lmpfc] <user>
    su - <user>		#环境变量还原,推荐,而无-则环境变量保持
    su -l <user>	#同上
    su -m 			#不更改环境变量
    su -p 			#同上
    su -c <command> #切换后执行命令,并退出
    
  • sudo:获取管理员权限

    sudo [-siul] <command>
    -s 					#切换到root shell
    -i 					#切换到root shell,并初始化
    -u <user> | <UID>	#通过<user> | <UID>决定执行命令的身份
    -l 					#显示当前用户的权限
    
  • chgrp:修改所属组

    chgrp <group> <file> #修改<file>文件所属的组为<group>
    
  • chmod:文件权限修改

    chmod a=x <file> 			#令<file>文件的root、组、用户只有执行权限
    chmod a+x <file> 			#给<file>文件的ugo都赋予执行的权限
    chmod o-x <file> 			#o失去对<file>文件的执行权限
    chmod 755 <file> 			#设置<file>文件的权限为rwxr-xr-x
    chmod u=rwx,go=rx <file> 	#设置file文件的权限为rwxr-xr-x
    
  • chown:修改文件所属

    chown <user> <file> 				#修改<file>文件的所属用户为<user>
    chown <user>:<group> <file>			#修改<file>文件的所属用户为<user>,所属组为<group>
    chown -R <user>:<group> <dir>		#修改<dir>目录及目录下的所有文件的所属用户为<user>,所属组为<group>
    
  • chsh:更改用户SHELL

    chsh -s <path of shell> <user>
    
  • id:显示用户信息

    id [-gGnru] <user>
    -g	#下属所属组ID
    -G	#显示附加组ID
    -n	#显示用户,所属组,或附加群组的名称
    -u	#显示用户ID
    -r	#显示实际ID
    
  • logout:退出用户

  • exit:退出用户

进程相关命令

  • ps:报告当前进程状态

    ps -ef	#用标准syntax列出系统的所有进程
    ps -aux #列出所有正在运行的进程
    
  • kill:删除执行中的程序和工作

    kill [-alpsu] <PID>
    -a								#处理当前进程时,不限制命令名和进程号的对应关系
    -l <signal ID>					#不加信号ID,则列出全部信号
    -p <PID>						#给PID的进程只打印相关进程号,而不发送任何信号
    -s <signal ID> | <signal name> 	#指定要发出的信号
    -u 								#指定用户
    kill -9 <PID> 					#强制杀死进程
    kill <PID>
    
  • pkill:批量按照进程名杀死进程

    pkill [-onpgt] <process name>
    -o			#起始<PID>
    -n 			#结束<PID>
    -p <PID>	#指定父进程号发送信号
    -g 			#指定进程组
    -t <tty> 	#指定终端
    
  • killall:批量杀死进程

  • crotab:定时任务

  • <ctrl> + z:挂起前台进程

  • fg:将进程调至前台运行

  • bg:让挂起的进程后台执行

  • jobs:查看挂起和后台进程

  • pstree:以树状显示进程派生关系

    pstree [-acGhHlnpuU]
    -a	#显示每个程序的完整指令
    -n 	#使用PID排序
    -p 	#显示PID
    -u 	#显示用户名
    -l 	#使用长列格式显示树状
    
  • pgrep:查找进程ID

    pgrep [-onlpgtu] <process name>
    -o 			#起始进程号
    -n 			#结束进程号
    -l 			#显示进程名称
    -p <PID>	#指定父进程
    -g <GID>	#指定进程组
    -t <tty>	#指定开启的进程终端
    -u <UID>	#指定uid
    

系统信息获取命令

  • date:查看或设置系统时间与日期

    date [dsu] <arg>
    -d <string>	#显示字符串<string>所指的日期
    -s <string>	#设置时间为字符串<string>所指的时间
    -u			#显示GMT(如果是CST的情况下)
    #参数:
    #<+日期格式>:显示使用的日期格式
    
  • df:查看文件系统

  • du:获取目录文件大小

  • free:打印系统情况和内存情况

    free [-bkmgotsh]
    -b/-k/-m/-g 	#分别以bit/Kb/Mb/Gb显示
    -o 				#忽略缓冲区调节列
    -t <seconds>	#每隔<seconds>执行一次
    -h 				#以可读形式显示
    
  • top:显示当前系统进程情况,内存,CPU等信息

  • htop:查看系统信息

  • dstat:试试监控磁盘,CPU,网络等

    dstat
    dstat 2 	#每隔两秒显示一次
    dstat 2 10 	#每隔两秒显示一次,总共显示10次
    dstat -list
    dstat 2 10 -output /tmp/data.csv
    
  • nmon:查看系统信息

  • ifconfig:查看IP信息

  • uname:打印当前系统信息

    uname [options]
    -a	#全部信息
    -m	#电脑类型
    -n	#网络上主机的名称
    -v	#os版本
    -p	#处理器类型
    -i	#硬件平台
    -o	#操作系统名称
    
  • last:显示用户最近登录信息

      last [fnx] <user...> <tty...>
      -f <file>	#指定记录文件
      -n <num>	#指定输出记录数
      -x			#显示系统关机,重新关机等信息 
    
      last | grep -v ^$ | grep -v begins | cut -d "   " -f 1 | sort | uniq -c ##查看最近登陆的用户及登录次数
      #-v 反选
    
  • who:显示当前登录系统的用户信息

    who [option] <file | arg1 arg2>
    -H	#各栏的标题信息列
    -u	#显示空置时间
    -q	#只显示登录系统的用户名称和总人数
    
  • uptime:打印系统运行时长和平均载荷

    uptime [phsV]
    
  • w:当前登录用户列表及正在执行的任务

  • whoami:打印当前有效的用户名称

    whoami #打印当前身份,当普通用户切换到root时,显示root
    
  • cal:显示日历

  • wall:给所有用户发信息

    wall <info>
    echo <info> > /dev/pts/0 #最后一个参数不一定是0,需要通过w指令获取用户的tty
    
  • dstat:类似于windows的任务管理器,需要另外安装

其他命令

  • ssh:远程连接

  • scp:远程拷贝

  • wget:获取http文件

  • ping:测试远程主机

  • poweroff:关机

  • reboot:重启

  • cron:定时任务(重启也不会失效,除非用户被删除)

    crontab -e 	#编辑
    crontab -l 	#显示列表
    crond 		#守护进程
    
  • at:在指定的时间执行一个指定的任务

    at [ldc] <args>
    -l 					#列出当前用户的at任务列表,也可以使用atq
    -d <task number> 	#删除一个at任务,等同于atrm
    -c <task number> 	#显示该任务的实际内存及详情
    #时间指定方式
    #HH:MM
    #HH:MM YYYY-MM-DD
    #HH:MM[am|pm] [month] [date]
    #HH:MM[am|pm] + number[minutes|hours|days|weeks]
    #now + <时间> #at now + 2 days
    #atd为at提供守护进程,需要保证atd启动
    
  • sleep:睡眠

  • time:查看运行一个命令的时间

    time ./a.out
    

实际使用遇到疑惑

寻找所需指令

  1. <tab>:命令补全

  2. history<ctrl> + r:检索历史命令

  3. man -kgrep搭配检索

    man -k copy | grep ssh
    
  4. apt

    sudo apt-cache search nmon
    

如何使用

  1. 直接运行指令获取help手册

  2. –help

  3. maninfo

  4. tldr

    $ tldr ssh-copy-id
    Install your public key in a remote machine's authorized_keys.
    
     - Copy your keys to the remote machine:
       ssh-copy-id {{username@remote_host}}##大括号内是需要更改的变量
    
     - Copy the given public key to the remote:
       ssh-copy-id -i {{path/to/certificate}} {{username}}@{{remote_host}}
    
     - Copy the given public key to the remote with specific port:
       ssh-copy-id -i {{path/to/certificate}} -p {{port}} {{username}}@{{remote_host}}
    
  5. vim中可以通过<shift> + k快速调用函数的相关手册

  6. 国外stackoverflow论坛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值