zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux命令

2023-09-14 08:56:53 时间

ps -ef | grep:列出相关进程。

    -u name:列出某个用户的进程。

top:查看某个或者某些进程信息。

     -p +pid  某个进程

du -sh:当前文件夹的大小。

df -l:磁盘使用情况。

du -h:当前文件夹及以下的文件夹的使用情况。

quota:列出磁盘使用量

mkdir -p /root/test/test  这样可以现在root下新建/test目录,然后再在test下新建test目录。

tee:从标准输入设备读入数据,输出到标准输出设备,并保存为文件。

       -append  不覆盖既有文件,添加到既有文件之后。

       pwd | tee -append who.out

more:与cat命令类似,输出文件内容到屏幕,支持分页显示,空格显示下一个命令,q停止。

       ls -l | more

       more 2016.log

\cmd:临时取消alias,调用原始路径与命令。

cat:命令可以完整的显示整个文件,当文件较大时,会不方便。cat可以将两个文件合并为一个  car file1 file2 > file3

less:与more命令类似,支持上下键滚动屏幕。

sleep:延时命令的执行时间,sleep 1:延时1s 

                                               sleep 1s:延时1s

                                               sleep 1m:延时1分钟

                                               sleep 1h:延时一小时

wait[n]:等待进程号为n的进程结束,并报告它的结束状态,如果默认参数n,等待shell上的所以活动的后台进程结束

ctrl alt k表示linux和window下的程序切换锁定

alt tab切换应用程序

sort   -n按数值大小排序,小的排前边,

    -r按相反的顺序来排序,

统计当前文件夹下的文件个数:ls -l | grep "^-" | wc -l

统计当前文件夹下的目录个数:ls -l | grep "^d" | wc -l

 

dos2unix,将可能存在的dos操作符,转换为unix格式。 

 

tr命令,对来自标准输入的字符进行替换,压缩,删除。

  echo "HELLO_WORLD" | tr 'A-Z' 'a-z'  将大写的A-Z,替换为小写的a-z

  -d  删除所有属于第一字符集的字符,  echo "hello 123 world 456" | tr -d '0-9'  输出 “hello world”

  -s  把连续重复的字符以单独的一个字符表示    echo "thisssss is a text  lineeeee" | tr -s 'se'   输出 “this is a text line”

  -t   删除第一字符集较第二字符集多出的字符。

  -c  取代所有不属于第一字符集的字符。

  

tty,显示当前终端实例。

linux中在bashrc中,设置EDITOR,VISUAL,为gvim,这样默认都是用gvim的编辑器。

 

chsh, 用于改变使用者shell设定, chsh - l,列出当前环境中可用的shell。

                chsh -s,更改当前的shell类型。

 

sh命令是shell命令语言解释器,执行命令从标准输入读取或者从一个文件读取,然后执行。

  sh -c 表示从之后的字符串读取内容。 sh -c "echo $1"

xterm是图形界面下的一个virtual terminal的实现。

 

date +%s,显示当前时间,以秒为单位;

   +%N,显示当前ns;

cut -c num1-num2,以byte为单位,取其中的几个。

 

strings命令,在对象文件或二进制文件中查找可打印的字符串。

true:bash中的内建命令,啥也不做,只是设置退出码为0,

true > 1,可以新建一个空文件。

touch  修改文件的访问时间,也可以直接创建一个新的空文件。

 

环境变量LS_COLORS,设置linux文件系统中的文件夹和文件的颜色;

环境变量GREP_COLOR,设置grep匹配时,关键字的颜色;

 

rename(原字符串,目标字符串,文件列表),只能对文件名进行替换,改变。

  rename  main1.c main.c  main1.c    将main1.c改名为main.c

  支持通配符,?随机一个字符,*随机很多字符。     

  假设有文件foo0,,,,,,,foo278;

    rename foo foo0 foo?,首先文件list是foo0-9,之后将这些文件的文件名中的foo改为foo0;

    rename foo foo0  foo??,首先文件list是foo0-278,之后将这些文件名中的foo改为foo0;

对正则表达式的使用,rename  "s/AA/aa/"  *,将当前文件里的所以文件名中的AA,改为aa

          rename  "s/.html/.php/"  *,将当前所有文件里的所有文件名中的,以.html结尾的文件名,改为以.php结尾。 

 

chmod,设置权限,用户分为u:该user,g:该group,o:other

           操作有:r,w,x

    chmod ugo +r file   所有人都可读

    chmod u-w file  同组没有写操作

  chmod   777  表示所有用户都有读写执行权;

      755  表示只有该用户有读写权,同组有执行,读权利,其他只有执行权利。

 

xclip命令,在linux中,从一个窗口复制数据到另一个窗口,有两套机制,Selections和cut buffers,

  常用的copy&paste是利用的cut buffers的机制,

  鼠标选中文件中文字,在另一个窗口按鼠标中键实现复制,利用的是Selection机制,分为Master Selection,Slave Selection

xclip命令,可以不需要鼠标选中,来将数据搬运到Master Selection中,

  xclip -i /etc/passwd  之后鼠标中键,粘贴就可以

 

ENV显示当前terminal中的环境变量,

环境变量USER,GROUP,HOST,REMOTEHOST,DISPLAY,TERM,OSTYPE,MACHTYPE,

 

wget是一个从网络上自动下载文件的自由工具,支持http,https,ftp协议。可以使用http代理。

wget支持用户退出系统之后的后台执行,常见用法:wget -P download  url  下载文件放在download文件夹中。

 

ls命令使用: 

        ls -a:列出文件夹下所有的文件

        ls -l:列出文件的详细信息

        ls -t:按时间进行文件的排序

        ls -s:在文件后加上文件的大小

        ls -L:列出文件的连接名

        ls -S:以文件的大小进行排序

        ls | less:实现文件列表的分页

  ls  -i:在文件前加入inode编号

  ls -1:只在一列中显示文件

  ls --color=always:颜色显示

也可以组合显示:ls -atrl,表示按逆序显示目录下的文件显示格式。

tree,列出文件的所有hier信息。

ls -ld: 将子目录下的文件也列出来。

ls -d ./test   将子目录等同于文件来表示。

ls | sed s":^:`pwd`/:"  在所有的文件前加上绝对路径显示。

 

linux终端显示颜色的控制,与具体的语言没有关系,只要加相应的颜色转义字符打印在终端上,就可以改变终端默认的黑色显示。

转义字符以‘ESC’和[ 开始,'ESC',一般由八进制或16进制,通过asiic来表示,十进制 27,十六进制0x1B,八进制033,

  所以可以写成 \033[  开始和 结束,   %c[ 开始和结束, 之后的参数化打印选择1bH,033O,或者27D。

  控制颜色显示的数字,Param1;Param2 m。m表示该参数结束。

  Param1,显示方式,0--默认,1--粗体,高亮,4--单条下划线,5--闪烁,

  Param2,前景色,数字30+颜色值 表示,0--黑,1--红,2--绿,3--黄,4--蓝,6--青,7--白

  Param3,背景色。数字40+颜色值 表示。

命令   \033[显示方式 Param1;前景色 Param2; 背景色 Param3 m

      “输出字符串”   

     \033[显示方式 Param1;前景色 Param2; 背景色 Param3 m

一般的结束都是改为默认色,\033[0m

 

linux打开pdf,evince/acroread

 

寻找help信息,

1):cmd --help

2):man cmd

3):whatis cmd等同于man -f

4):info cmd 详细显示cmd信息

 

xargs命令:给命令传递参数的一个过滤器。用在很多不支持管道传递参数的命令中。

                能够捕获一个命令的输出,然后作为参数传递给另外一个命令。

     xargs的默认命令是echo,空格是默认定界符

                -I 将xargs的每一项,一行一行的赋值给{},

                    find ./* -name "*abc*" -type -d | xargs -I {} rm -rf {}

                -a file 从文件中读入数据。

      -t  先打印命令,在执行

     -d ''  指定分隔符,-d '@'

xargs捕获的是将数据作为下一命令的命令行参数输入管道捕获的是程序输出的结果,作为下一个命令的标准输入

echo "--help" | cat

echo "--help" | xargs cat,  输出的是help的信息

 

-exec命令,与xargs命令类似,但是-exec的参数是一个一个传递的,传递一次就执行一次命令

    find ./ -iname  "*.txt" -exec rm {} \;     之后的\;必须添加,rm命令会被执行很多次。

 xargs命令,可以通过-n +num的形式来控制,每次传递的参数的个数。

 

ln命令:link功能,将同一个文件在不同的目录中建立link关系

           ln [命令参数] [源文件目录] [目标文件目录]

           -f  force执行, -s 软链接

软链接类似win中的快捷操作;

硬链接类似文件副本的形式保存,但是并不占内存

 

echo -n 输出不加换行符。  echo -n "123";   echo "456"  最终输出123456。

echo -e 可以识别特殊字符。 echo -e "\n1234"  输出换行1234。

 

hostname:服务器名字;

whoami:用户名;

last -n +number:最后登录的几个用户名;

 

head -n <行数> 文件,输出文件的开头至标准输出中;

tail -n <行数> 文件,输出文件的结尾至标准输出中;

 

linux快捷键操作:

F11最大化当前terminal;

ctrl 0正常化大小的terminal;

ctrl+page up/down,在一个terminal中切换tab;

ctrl+shift+t,在一个terminal中新建tab;

ctrl+alt+t,新建一个terminal;

 

sed:Stream Editor,流式编辑器,一次处理一行内容,把当前处理行的内容放在临时缓冲区,称为"模式空间"(pattern space)

        接着用sed命令处理缓冲区的内容,处理完成后,将缓冲区的内容送到屏幕,如此重复,直到文件结束。

sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序。本身就是一个管道命令,可以将数据进行替换,删除,

        新增,选取等工作,

 

sed定址,通过定址来定位希望编辑的行,用数字($/正则表达式)构成,以逗号分隔的两个行数,表示行的起始范围。

sed命令的两种方式: sed [options] 'command'  files

                             sed [options] -f scriptfile files

 

常用选项:-n silent模式,本来所有来自STDIN的资料都会列出到屏幕上,加上-n之后,只有经过sed处理的那一行才输出到STDOUT。

                  -f  filename,直接执行filename中的sed命令。

                   -i  直接修改缓冲区内的内容,不由屏幕输出。

                   -e  进行多行编辑时,使用

# sed -e '1,10d' -e 's/My/Your/g' datafile  使用-e第一个执行结束,更新缓冲区内的行,之后第二个命令执行,所以顺序影响之后的结果。

 

常用命令:a+string 新增,这些string加在新的一行中。

              c+string 取代,string直接取代n1,n2之间的行。

              d           删除,删除执行地址内的内容。

              i+string  插入,这些string插在指定行之前。

              p           输出,将选中的内容输出,通常与-n选项一同运行。

              s           取代,搭配正在表达式来使用。

 

# sed '1d' ab 删除第一行。

# sed '$d' ab 删除最后一行。

# sed '1,2d' ab 删除第一行到第二行。

# sed '2,$d' ab 删除第二行到最后一行。

 

# sed -n '1p' ab 显示第一行。

# sed -n '$p' ab 显示最后一行。

# sed -n '1,2p' ab 显示第一行到第二行。

 

# sed -n '/ruby/p' ab 查询ruby所在行,并显示出来。

# sed -n '/\$/p' ab 查询$所在行,并显示出来。

 

append操作只会增加新行,要在行尾增加字符,只能用s/$/string/

# sed '1a drink tea' ab  第一行后,增加字符串"drink tea"

# sed '1a drink tea \n or coffeee' ab 第一行之后,新增两行。

# sed '$a bye' ab 新增最后一行。

 

# sed '1c Hi' ab 第一行替代为Hi

# sed '1,2c Hi' ab 第一行到第二行替代为Hi

 

# sed -n '/ruby/p' ab | sed 's/ruby/bird/g' 替换ruby为bird

# sed -n '/ruby/p' ab | sed 's/ruby//g' 删除所有ruby

 

sed中可以直接使用环境变量中的值, test=hello

                 echo  hello WORLD | sed "s/$test/HELLO/"

    这时只能使用双引号。

sed中的  “,”表示选定行的范围

    “;”表示组合多个表达式

n表示延续到下一输入行,覆盖原来的内容,允许跨行匹配

  sed -n 'n;p' test,输出偶数行,

  sed -n 'p,n' test,输出奇数行,

N表示追加下一行到模式空间,不覆盖原来的内容,实现多行匹配。  

  sed -n 'N;p' test,输出连续的两行。

P打印多行模式空间的第一部分

  sed -n 'N;P' test,输出连续的两行的第一行  

 

awk:一种编程语言,对文本和数据进行处理,可以在命令行中使用,也可以在script中使用。

         以文件中的一行为处理单元,awk每次接收文件中的一行,执行相应操作,再处理下一行。

        语法形式:awk [options]  'script' var=value file

                      awk [options]  -f scriptfile var=value file

        常用命令选项:-F 指定输入分隔符,

                                 -f scriptfile 从脚本文件中读取awk命令,

         指定输出分隔符,-vOFS

        基本结构:awk 'BEGIN {}  pattern {command}  END {}'  file,BEGIN语句块,模式匹配的通用语句块,END语句块                               

                      首先执行BEGIN语句块,逐行扫描文件,执行pattern {command},直到文件结束,最后执行END {command}操作。

 

        cat /etc/passwd | awk -F ':' '{print $1"\t"$7}'  读入有\n换行符的一条记录,按指定的域分隔符划分域,$0表示所有域,$n表示第n个域,

                       awk默认的分割符是空格,print是awk内的命令

  echo $PATH | awk -vOFS "\n" -F ":" '{ $1=$1; print;}'  将path改为以换行分割

 

正则表达式:grep/sed/awk/gvim中都会遇到的匹配模式。

                 1:字符集,[]表示,[\d]表示所有数字,[\s]表示任意空白符,\h\v水平和垂直空白符,[\w]匹配word,[\R]断行符

                                 反义简写,[^]或者大写,[\D],[\W]等。

                 2:锚,^行首,$行尾,\A字符串首,\z字符串尾,字符串可以分为多行,所以行首比字符串首更多。

                                 再匹配后加/m可以将^/$变为串首/串尾。

                 3:修饰符: *匹配零次或多次前一字符。

                                  +匹配一次或多次前一字符。

                                  ?匹配零次或一次前边的字符,一般用在匹配单个字符。

                                  .匹配任意字符,除了换行符。

                                  \<\>匹配单词边界。

                                  \n 第n个捕获变量的值。

                                  \{\}  前边正则表达式匹配的次数。

                                 |  择一匹配。

 

gvim中的查找命令的匹配:   1:字符集,[]表示,

                                     2:锚,^行首,$行尾,\A字符串首,\z字符串尾,字符串可以分为多行,所以行首比字符串首更多。

                                          再匹配后加/m可以将^/$变为串首/串尾。

                                     3:修饰符: *匹配零次或多次前一字符。

                                                      +匹配一次或多次前一字符。

                                                     ?匹配零次或一次前边的字符,一般用在匹配单个字符。(需要反义字符\)

                                                      . 匹配任意字符,除了换行符。

                                                      \<\>匹配单词边界。

                                                      \n 第n个捕获变量的值。

                                                      \{}  前边正则表达式匹配的次数。

                                                      |  择一匹配。

 

grep命令中的匹配,与正则表达式中的查找相同。

*表示匹配任意个前一字符;

. 表示匹配一个非换行的任意字符;

\<表示匹配一个单词的首字符;

\>表示匹配一个单词的末尾字符;

[]表示匹配一个指定范围内的字符;

 

nl:将文件中的内容输出,并自动加上行号。

      nl log2012.log

      输出:1   2012-1

               2   2012 -2

 

shell中的一些快捷键:

    ctrl + a,跳转到命令行首

    ctrl + e,跳转到命令行尾

    ctrl + f,向前跳转一个字符

    ctrl + b,向后跳转一个字符

    alt + f,向前跳转到一个字的第一个字符

    alt + b,向后跳转到一个字的第一个字符

 

    ctrl+w,删除当前光标之前的字符

    ctrl+k,删除当前光标之后的字符

    ctrl+u,删除shell中的命令字符

    ctrl+d,删除当前位置字符

    alt+d,删除光标所在字

    ctrl+y,粘帖最后一个被删除的字

 

  !?string?:p,向前搜索命令中包含的字符,加p只打印,不支持

  通过history打开命令之后,可以通过!+num的形式,再次执行

  !$可以将上一次命令的输入参数传递给这次的命令

  !*表示上一次命令的所有输入参数,!cmd:num表示上一次命令的第几个参数, !cp:2  上一次cp命令的第二个参数

  !!表示最近一次执行的命令

     !(file),表示不对文件做接下来的访问,rm !(*.pdf) 删除除了pdf之外的文件

 

terminal提示符的设置:

alias setprmp "set prompt = "%B%m%3c%b""

alias cd   cd ; setprmp; ls

%B开始粗体模式,%b结束粗体模式

%nc,显示当前目录的后n个组成部分,%m机器名称,%t12进制表示时间,%n用户名

其他还可以设置颜色等

 

linux中path的设置:

1)通过IBM的module load工具,自动加载tools,自动更新相应的bin到PATH变量中。

 2)手动添加bin到PATH变量中,以":"为间隔

module load/add  添加tools,module unload/rm 移除tools

module list显示目前加载的tools,module av显示目前系统中加载的tools

 

在 gnome-terminal 的菜单栏中选 "Edit" -] "Keyboard Shortcuts ..."打开 "Keyboard Shortcuts" 对话框,并勾选下面两个复选项

"Disable all menu access keys (such as Alt+f to open File menu)"

"Disable menu shortcut key (F10 by default)"

 

kill向指定的进程发送信号的函数,kill -l 可以列出所有的信号类型。

  1------SIGHUP,terminal结束时,发出,来通知这个terminal的前后台进程组,来终止进程,或者继续进程。

  2------SIGINT,用户通过ctrl-c来输入的,用来通知前台进程终止程序。

  9------SIGKILL,该信号不能被阻塞,处理,用来杀掉进程

  13----SIGPIPE,通常在进程间通信时产生,

  15----SIGTERM,通常用来要求程序自己正常退出,该信号可以被阻塞和处理,kill命令默认产生该信号,之后进程可能做资源处理,然后终止,或者继续。

  19----SIGSTOP,让一个进程暂停执行,该信号不能被阻塞,用户通过ctrl-z来发送该信号

所以一般的kill命令都是 kill -9 pid,直接发送SIGKILL,否则,发送SIGTERM命令。

ctrl-z将当前的进程,放在后台运行,并暂停。使用命令jobs可以查看当前后台有多少运行中的程序,

  fg %jobnum,将后台执行的某个进程,调至前台继续运行。

  bg %jobnum,将后台暂停执行的某个进程,变为继续执行,

linux中这些signal信号在应用程序中的捕捉,通过signal信号完成,signal_handle signal(int signum, sighandler_t handle),

在c中加入signal.h的头文件,

  signal(SIGHUP, sigrout);

  signal(SIGINT, sigrout);

  sigrout(int num),num的值为每次signal被触发的信号的值。

 

显示当前cpu的信息:

  1) lscpu命令,CPU表示logic cpu(可并行执行线程的core)的个数。

          Thread per core,每个core中可以支持的hardware context个数,多线程技术。

          Core per socket,每个chip中有的core的个数;

          Socket,系统中有几个chip个数;