【Linux】常用命令和技巧

来源:互联网 发布:三维编程 编辑:程序博客网 时间:2024/05/21 16:32

持续更新中……


1.重要的组合键

自动补全—— [tab]

输入命令的前半部分再按下tab键,如果在所有命令或符合输入的参数中,只有唯一一个符合该前缀的,就直接补全命令,多于一个的,将列出所有以该输入为前缀的命令或参数。该功能即可以减少工作量,又可以减少输入错误。

如输入:ma[tab]

[lx@localhost ~]$ ma[tab]
machinectl mailx makedumpfile
manpath mattrib mail make maketext
mapfile mailq makedb man mapscrn
mailq.postfix makedeltarpm mandb matchpathcon

如输入:mai[tab]
即可自动补全为:mail

中断当前进行的程序执行——ctrl+c
发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。

挂起进程——ctrl-z
发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程,可以使用jobs命令来查看挂起的进程,并通过fg+编号来激活挂起的进程。

jobs :查看后台暂停的程序,-l参数列出PID
fg:通过jobs显示的程序编号来继续前台运行程序
bg:通过jobs显示的程序编号来继续后台运行程序
kill:通过jobs显示的程序编号来将程序杀死,-9参数表示强制执行。

文件结束——ctrl-d
不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

中断所有前台进程——ctrl-\
发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件。

删除字符——ctrl+u/ctrl+k
删除光标到行首/行尾的字符。

清屏——ctrl+l
相当于clear命令。

man——查看命令使用方法

用法:man 命令名称

echo——打印字符串或系统变量值

用法:echo 字符串或echo $系统变量

date——格式化打印系统时间

用法:date “+%H-%M-%S”

reboot——重启

用法:reboot

wget——下载网络文件

用法实例:wget -O /home/lx www.baidu.com

elinks——纯文本浏览器

用法实例:elinks www.baidu.com

ifconfig——查看网卡配置与网络状态

用法:ifconfig(正在使用的网卡)
ifconfig -a (列出所有网卡信息,包括未启动的)
ifconfig 网卡名 up (启动网卡)
ifconfig 网卡名 down(关闭网卡)

uname——查看系统版本

用法实例:①uname
②:uname -a

who——查看当前登入主机的用户
用法:who
last——查看所有登入记录
用法:last

history——查看使用过的命令历史

用法:history
注:history保存在~/.bash_history文件中,可以使用cat ~/.bash_history清空

sosreport——收集系统配置并诊断后输出结论文档

用法:sosreport

pwd——查看当前工作目录

用法:pwd -P

cd——切换工作目录

用法:
①切换到绝对路径目录:cd /etc
②切换到home目录:cd ~
③切换到上一级:cd -或 cd ..
④切换到相对路径目录:cd ./lx

ls——查看目录中的文件和目录信息

用法:
①查看所有文件:ls -a或la
②查看所有文件包括详细信息:ls -l或ls -al
③查看目录本身:ls -d或ls -dl

文本查看命令

cat——查看较短的纯文本文件

用法:
cat 参数 文件名
参数:
-n 显示行号
-b 显示行号,去掉空行
-A 显示空白符号,如空格等

more——查看较长纯文本文件

用法:
more 参数 文件名
参数:
-数字 数字表示要显示多少行
-d 显示提示语与报错信息

head——查看纯文本文档的前N行

格式:
head 参数 文件名
参数:
-n 10 显示前10行
-n -10 显示除最后10行的文本

文件目录管理命令

touch——创建空白文件或修改文件时间

注:文件时间包括:更改内容时间(mtime)、更改权限时间(ctime)、读取时间(atime)
用法: touch 【参数】【文件名】
参数
-a 修改访问时间atime
-m修改更改内容时间mtime
-d同时修改atime和mtime
-t要修改成的时间格式[YYMMDDhhmm]
实例: 将test文件的修改时间和访问时间修改为两天前

touch -d "tow days ago" test

mkdir——创建空白目录

格式: mkdir 【参数】 目录名
参数:
-m=MODE 默认文件目录权限
-p 连续创建多层目录
-v 显示创建过程
实例:创建多级目录
mkdir -p a/b/c/d/e

cp——复制文件或目录

格式: cp 【参数】 源文件 目标目录或文件
注:目标可以是目录或文件,目录则直接复制过去,文件则覆盖。
参数:
-p 保留源文件属性
-d 若对象为链接文件,则保留链接文件的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr
实例:在当前目录创建一个名为test.log的文件,并创建副本

touch test.logcp test.log test1.logls -l

mv——移动文件或修改文件名

格式: mv 【参数】 文件名 【目标路径或文件名】
实例:将test.log重命名为test2.log

mv test.log test2.log

rm——删除文件或目录

格式:rm 【参数】文件
参数:
-f 忽略警告信息
-i 删除前先询问
-r 删除文件夹
实例:无论如何强制删除test.log文件
rm -f test.log

rmdir——删除空目录(不为空则报错)

实例:若lx目录为空则删除,否则不删除

rmdir /home/lx

压缩和解压命令

tar——压缩和解压

格式: tar 【参数】【文件】
参数:
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内的文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示过程
-f 目标文件名
-p 保留原始权限与属性
-P 使用绝对路径来压缩

实例:将lx目录内的文件通过bzip2格式压缩命名为lx1.tar.gz

tar -cjvf lx1.tar.gz ~/lx

文件查询搜索命令

grep——对文本进行搜索

格式: grep 关键字 【参数】【文件】
参数:
-b 将可执行文件当做文本文件来搜索
-c 仅显示找到的次数
-i 忽略大小写
-n 显示行号
-v 反向选择——只列出没有关键词的行
实例:找出~/lx/test.log文件中包含lx的行,并输出到~/lx/result文件中
grep lx ~/lx/test.log >> ~/lx/result

软件管理工具

rpm——RPM软件包管理工具

格式: rpm [选项] [参数]
选项:
-a:查询所有套件;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-d:只列出文本文件,本参数需配合”-l”参数使用;
-f<文件>+:查询拥有指定文件的套件;
-i:显示套件的相关信息;
-i<套件档>或–install<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-s:显示文件状态,本参数需配合”-l”参数使用;
-U<套件档>或–upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。

参数为要操作的软件包名称(或路径)。

/dev/null

这是一个黑洞,任何重定向到它的流都会消失。
如,将输出重定向到null之后将消失。

ls -al >> /dev/null

为命令设置别名——alias

如:使用ll代替ls -al命令

alias ll='ls -al'

ps -l——查看当期系统运行的进程信息

pstree——查看进程树

$——将指令放到后台运行

cp file1 file2 &

?——是一个变量

表示上一条命令执行的结果,一般是一个数字,执行成功为0
可以:

echo $?

查看。

&& || ;——命令结果判断

这三个符号通过前一条命令的结果来判断是否执行下一条命令:

——无论如何都执行下一条命令,也就是用于分割两条命令的符号
&&——前一条命令执行成功才执行下一条命令
||——前一条命令执行失败才执行下一条命令

执行成功与否,看命令返回值是否为0,可以用echo $?来查看,为0时成功,否则失败。
如当存在/lx这个目录时,在其下创建一个test文件,否则先创建文件件再创建文件:
ls /lx && touch /lx/test || mkdir /lx;touch /lx/test

test——文件属性检查

test 【参数】【文件、目录名】

常用参数:

-e:文件或目录是否存在
-f:是否为file
-d:是否为director

另外,可以使用test vatiate1=vatiate2来判断两个变量是否相同。

[ ]——判断条件

[ $vatiate1 == $vatiate2 ] 判断变量是否相同
[ $vatiate1 == $vatiate2 ]判断变量是否不同
[ $vatiate1 == $vatiate2 -o $vatiate3 == $vatiate4 ] -o表示or

还可以是:

-eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f “filename” ])
-d — 检查目录是否存在

需要注意的是,这个命令的所有部分都必须以空格分开。

$0 $1 $2…——系统默认参数

01:表示第一个参数
$2:第二个参数 … …

如你写了一个脚本,你想知道用户输入的参数是什么,就可以用这个。
写一个如下脚本:

root]# vim test.sh#/bin/bashecho 'the script name is' $0echo 'first argument is' $1

这样运行脚本和结果:

root]# sh test.sh abcd    the script name is test.sh    first argument is abcd

‘’“” “——单引号、双引号和反引号

双引号内的字符串可以有变量和指令替换属性(即&和“字符仍然有效),单引号内的字符串就是单纯的字符串。
如:

[lx@localhost scripts]$ ls=123[lx@localhost scripts]$ echo $ls123[lx@localhost scripts]$ echo "$ls" //双引号123[lx@localhost scripts]$ echo '$ls'//单引号$ls

反引号“(英文输入时tab键上面那个)是命令替换,shell执行时先执行“中的内容,并将返回结果保存起来,如:

a=`ls | grep "bin"`

将后面指令的结果保存到a变量中。

if——分支语句

if [判断条件]; then    todoelif [判断条件]; then    todoelse    todofi

判断条件使用上面说到的[ ]来表示,可以使用&&和||来将多个[ ]连起来。

#/bin/bashread -p "please input a num:" numecho 'the number you inputed is' $numif [ "$num" == "1" ];then        echo "yes,you inputed $num"elif [ "$num" == "2" ];then        echo "yes,you inputed $num"else        echo "you inputed other number $num"fi
[lx@localhost scripts]$ sh test.sh     please input a num:2    the number you inputed is 2    yes,you inputed 2

case——分支语句

case $变量名 in    "case1")    //引号和后括号        todo        ;;      //两个分号    "case2")        todo        ;;    "case3")        todo        ;;    *)        //表示以上结果都不是        else todo        exit 1        ;;esac