Linux学习心得-常见命令及概念

个人用户变量登记文件

  • ~/.bashrc #一般会把个人设定(定义别名,各种路径等等)存放在这里面,因为每次在执行shell script的时候都会被执行一次
  • ~/.bash_profile #也可以存放个人设定,但是之后再登录用户的时候执行一次
  • 最好先备份一份
  • 改好之后执行下后面的命令,使其生效 source ~./bashrc or source ~/.bash_profile(你改的哪个文件,就source哪个文件)

stty -a显示所有快捷键内容,同时设置快捷键也可以通过此命令(建议选择默认,改了也没有多大的意义)

  • [root@Rendering6 ~]# stty --help #更多用法 help一下

常用字符

  • 0或者多个字符 ? 单个字符 # 注释 \ 跳脱符号(用于命令太长的时候) | 管道 ; 连续命令(不会管你前面那个执行成功还是失败)

  • ~家目录 $ 变量取代值 (ac=ab ;echo $ac ) & 调入后台工作(nohup command &) !非(判断为否的意思)

  • / 路劲分隔符 ' ' 里面字符不具有特殊含义 " "特殊字符保留它的特殊含义 `指令` 优先执行的指令

  • ()子shell也是优先执行 [字符]匹配其中一个字符 {命令}命令快的组合

  • > >> < < <<(这些字符都与标准输入,标准输出,错误输出有关)
    输出重定向: > >> 都是起到输出重定向的功能,但是>会覆盖文件文里面的内容,>> 是在文件最后面进行追加
    示例: >
    $ echo “ac” > test.1
    $ echo “bc” > test.1
    $ cat test.1
    bc
    注:根据上述结果,最后面显示的是bc,也就是起到覆盖前面内容的效果,我一般是在进行文件初始化的时候,清空文件 >test.txt 如果使用echo > test.txt 这种方式清空文件就会多出一个$符号。
    $ echo > test.1
    $ cat -A test.1
    $
    示例:>>
    $ echo “bc” >> test.2
    $ echo “cc” >> test.2
    $ cat test.2
    bc
    cc
    注:>>使用场景还是蛮多,如果你需要文件的输出结果就得使用>>,便于进行文件分析等等

输入重定向(应该是这么叫把,我自己也不确定):< 是从文件中获取标准输入 << 是从交互式程序获取标准输入 <<< 把从后面获取标准输入当做前面命令的参数(看起来有些拗口,还是直接上实例:)
示例:<<
$ echo “23456” >>passwd.txt
$ passwd --stdin test < passwd.txt
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。
$ mysql -uroot -p < /data/mybak/ac.sql
$ passwd --stdin test < “123456”
bash: 123456: 没有那个文件或目录
注:"<" 只能从文件中获取标准输入

示例:<<
#第一种用法,直接显示在屏幕
$ cat << EOF
> 1
> 2
> 3
> EOF
1
2
3

#第二种用法,将输入写进某一个文件(也是在脚本中的最多的用法)
$ cat << EOF >> test.3
> 1
> 2
> 3
> EOF
$ cat test.3
1
2
3
注:默认情况下>前面是没有,为了显示效果额外加的

示例:<<< 语法: command <<< “WORD”
$ passwd --stdin test <<< “123456”
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。
$ mysql -u root -p <<< “select user,host from mysql.user;”
Enter password:
user host
root 127.0.0.1
root localhost
$ mysql -u root -p -e “select user,host from mysql.user;”
Enter password:
±-----±----------+
| user | host |
±-----±----------+
| root | 127.0.0.1 |
| root | localhost |
±-----±----------+
$ nginx -t <<< “/usr/local/nginx/conf/nginx.conf”
nginx: the configuration file /opt/app/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/app/nginx/conf/nginx.conf test is successful
注:感觉用处也不是很大的,知道这么个作用把

将命令放到后台工作

  • 第一种通过:nohup command & 将命令放到后台执行
    [root@Rendering6 ~]# nohup cat anaconda-ks.cfg &
    [3] 1282 #[ job number ] PID 工作号码 注:在Linux中,只要把数据放到后台执行都会给个job number pid是程序一旦产生,bash就会自动分配给你
  • 第二种:command &
    [root@Rendering6 ~]# cat anaconda-ks.cfg &>/dev/null & #直接在命令后面加&也可以丢进后台执行,但是需要把结果输出丢到一个文件里面,不然就会打印到屏幕上。
    [3] 1288

输出与输入

root@test:/opt/scripts/my.scripts 18:07:41
#输出  > 清空文件并且加入内容 >>追加内容
# echo $PATH >>path.txt
root@test:/opt/scripts/my.scripts 18:08:13
# cat path.txt
/opt/app/jdk/bin:/opt/app/jdk/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/src/cmake-3.6.0-Linux-x86_64/bin:/root/bin

#输入 < << 跟 > > 作用相反,特性还是一样
root@test:/opt/scripts/my.scripts 18:10:39
# cat $ac < path.txt
/opt/app/jdk/bin:/opt/app/jdk/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/src/cmake-3.6.0-Linux-x86_64/bin:/root/bin

查询后台命令

  • jobs
    参数:
    -l 除了列出当前的后台运行程序,还能列出pid
    -s 列出当前后台暂停运行的程序
    -r 列出正在运行的操作

    [root@Rendering6 ~]# jobs #默认是列出后台所有的程序
    在这里插入图片描述
    [root@Rendering6 ~]# jobs -s
    在这里插入图片描述
    [root@Rendering6 ~]# jobs -l
    在这里插入图片描述
    将后台命令拿到当前窗口运行

  • fg [%] jobnumber #其中 % 可有可无
    [root@Rendering6 ~]# fg 3
    在这里插入图片描述
    将后台暂停的命令放到后台运行

  • bg [%] jobnumber
    [root@Rendering6 ~]# bg 2

; && ||

  • ;是不管前面的命令执行成功还是失败,后面的命令都会执行
  • &&(and) 前面的命令执行成果才会执行后面的
  • || (or) 跟&&恰好相反
  • 组合使用:command && command2 || command3 #当第一个命令成功就执行后面的&&语句,反之执行||的语句

cut与grep cut是截取数据(我一般是用awk去截取)
#cut常见参数

  • -d 指定分隔符

  • -f根据 -d指定的分隔符截取数据(一般是-d -f联合使用)

  • -c以字符为单位截取字符
    [root@Rendering6 ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@Rendering6 ~]# echo $PATH | cut -d ‘:’ -f 1,2
    /usr/local/sbin:/usr/local/bin

    [root@Rendering6 ~]# export
    declare -x HISTCONTROL=“ignoredups”
    [root@Rendering6 ~]# export | cut -c 1,2,3,4,5,6,7 #有个时候wak截取不出来的数据可以用-c这个参数来截取一下
    cut还是有点玩不懂

    [root@Rendering6 ~]# export | grep '过滤的内容
    [root@Rendering6 ~]# export | grep declare | grep -v grep # -v 取反平时搜索用的最平凡是这2个选项,当然还有更多的选项,后面细讲awk,sed,grep三剑客的时候会着重介绍

**sort wc uniq tr **
sort (默认按照首字母进行排序)
常见指令

  • -n 根据数字大小进行排序(用的多些)
  • -t 指定分隔 默认是TAB键
  • -k 后面接数字,按第几列排序(用的也多)
  • -r 反序列排序(默认是升序,通过r变成降序)(用的多些)
    [root@Rendering6 ~]# sort -t “:” -nk3 -r /etc/shadow
    systemd-network:!!:17976::::::
    sshd:!!:17976::::::
    postfix:!!:17976::::::
    polkitd:!!:17976::::::
    dbus:!!:17976::::::

uniq 去重 一般是直接在命令后面uniq即可,就可以达到去重的效果

  • -i 忽略大小写
  • -c 计数
    [root@Rendering6 ~]# last | cut -d’ ’ -f 1 | uniq -i
    [root@Rendering6 ~]# last | cut -d’ ’ -f 1 | uniq -c #这个-c也是计算,但是是算你的同一个数字,在同列出现的几次
    1 root
    1 reboot
    6 root
    1 reboot

wc 计数

  • -l 列出行
  • -w 列出多少个字(英文单字)
  • -m 列出多少个字符
    [root@Rendering6 ~]# cat /etc/passwd | wc
    19 27 846
    注:输出的3个数字中分别代表: 行 字数 字符数 对应参数是:-l -w -m

tr 内容替换,最常用功能是:将一组字符集转换成为另外一种

  • 用法:tr [选项]… SET1 [SET2] #从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

tee #将左边|的结果进行保存,跟 | 一起使用
[root@Rendering home]# cat /etc/selinux/config | grep -v “^$” | tee q.txt |grep -v “^#”
SELINUX=enforcing
SELINUXTYPE=targeted
[root@Rendering home]# cat q.txt
#This file controls the state of SELinux on the system.
#SELINUX= can take one of these three values:

[root@Rendering home]# cat /etc/selinux/config | grep -v “^$”|tee q.txt|grep -v “^#”|tee -a q.txt # -a 累加

tr #可以进行文字替换(有需求的可以了解一下),常用的替换是 sed ‘s/ab/AB/g’
join paste expand有兴趣的可以去了解下,我在使用中没见过

split 文件切割 用法:split [选项]… [需要分割的源文件] [被分割后的文件名] #记得后面一定得加分割后的文件名,不然默认给你弄一堆乱七八的名字

  • -b +文件分割大小 可加单位(KB,M,G)
  • -l 以行数来进行分割
    [root@Rendering6 tmp]# ll -h ac.txt
    -rw-r–r-- 1 root root 1000M 9月 20 23:16 ac.txt
    [root@Rendering6 tmp]# split -b 300M ac.txt ac.txt # -b 以大小来分割
    在这里插入图片描述
    [root@Rendering6 tmp]# split -l 20 ac.txt ab #以行数来分割 其他参数请参考split --help

pr将文件切割为很多分并且打印(r命令将大文件分割成多个页面进行打印,并在每个页面上加上标题。)
更多用法请参考:pr --help

xargs(参数替换)xarge可以读取左边stdin(正确输出),并以空格符或断行符作为分辨,将stdin的值分隔为参数。

  • -o 将特殊字符(, . \ 空格等等)还原为一般字符

  • -e 后面接EOF语句

  • -p 在执行每个参数都要询问一次

  • -n 后面接次数,是使用几个参数的意思

  • xargs 后面没有接任何指令(-o -e -n都是指令),预设以echo的结果进行输出。
    [root@Rendering6 ~]# cat /etc/passwd | cut -d’:’ -f1,2 | head -3 | xargs
    root:x bin:x daemon:x
    [root@Rendering6 ~]# qa=$(cat /etc/passwd | cut -d’:’ -f1,2 | head -3 )
    [root@Rendering6 ~]# echo $qa
    root:x bin:x daemon:x
    #xargs根据上面显示的默认是以echo的结果进行输出的

    [root@Rendering6 ~]# cat /etc/passwd | cut -d’:’ -f1,2 | head -3 | xargs -n 2
    root:x bin:x
    daemon:x
    #根据此实例可以看出,xargs是以空格作为分隔符,进行结果打印输出,我现在打印的是2个参数
    其他参数可以参考:xargs --help

| 管道 是将左边程序或命令的输出作为参数传送给右边作为标准输入

  • | 管道
    [root@Rendering6 src]# ps aux | grep grep
    root 2048 0.0 0.2 112724 988 pts/0 R+ 15:37 0:00 grep --color=auto grep

printf 格式化输出(得看百度的才清楚些)

diff 进行版本差异对比(基于ASCLL编码)

  • diff 旧文件 新文件
  • 更多用法:diff --help

vimddif 进行文件内容对比(我一般喜欢用这个)

其它的:

  • {n,m} 连续n到m个字符 ‘go{2,3}g’ 指go到g之间连续有2到3个字符 例如:gooog goooog等等
  • ’ ‘1’ 以w开头 ‘[^W]’ 反向选择的意思 ’

  1. w ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值