Linux最近常用命令

1.Linux_shell条件判断if中的-a到-z的意思

https://www.cnblogs.com/liupuLearning/p/6206415.html
[ -a FILE ] 如果 FILE 存在则为真。
[ -z STRING ] “STRING” 的长度为零则为真。
复杂逻辑判断:
-a    与
-o   或
!    非

2.shell中的${},##和%%的使用

https://blog.csdn.net/liangxiaoxi7/article/details/80649301
https://www.cnblogs.com/nkwy2012/p/9171408.html
https://blog.csdn.net/u013402321/article/details/80333272
(2) ${var:+string}
规则和上面的完全相反
即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量var的值,即空值

[root@bogon ~]# a=ajax
[root@bogon ~]# echo $a
ajax
[root@bogon ~]# echo ${a:+bbc}
bbc
[root@bogon ~]# echo $a
ajax
[root@bogon ~]# unset a
[root@bogon ~]# echo $a

[root@bogon ~]# echo ${a:+bbc}

[root@bogon ~]# 
mkdir ./ll
affix=1a
dir=./ll
dir=$dir${affix:+_$affix}
echo $dir
显示输出:./ll_1a

3. cat–EOF

  cat <<EOF 
This script is intended to be used with GPUs but you have not compiled Kaldi with CUDA
If you want to use GPUs (and have them), go to src/, and configure and make on a machine
where "nvcc" is installed.
EOF  && echo 0
显示输出:
This script is intended to be used with GPUs but you have not compiled Kaldi with CUDA
If you want to use GPUs (and have them), go to src/, and configure and make on a machine
where "nvcc" is installed.
EOF  && echo 0
  cat <<EOF && echo 0
This script is intended to be used with GPUs but you have not compiled Kaldi with CUDA
If you want to use GPUs (and have them), go to src/, and configure and make on a machine
where "nvcc" is installed.
EOF
显示输出:
This script is intended to be used with GPUs but you have not compiled Kaldi with CUDA
If you want to use GPUs (and have them), go to src/, and configure and make on a machine
where "nvcc" is installed. 
EOF  
0

4.grep命令详解

https://www.cnblogs.com/wangcp-2014/p/5146335.html

  -v或--revert-match   反转查找。
  -V或--version   显示版本信息。
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files  即可显示行号信息

grep -c pattern files  即可查找总行数

这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,

5. awk命令详解

https://blog.csdn.net/jin970505/article/details/79056457

-v var=value or –asign var=value 
赋值一个用户定义变量。
cat <<EOF > log.txt
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
EOF

echo haha
cat log.txt

awk '{print $1,$4}' log.txt

结果:

haha
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
2 a
3 like
This's 
10 orange,apple,mongo

awk ‘{[pattern] action}’ {filenames} # 行匹配语句 awk ” 只能用单引号
awk ‘{print $1,$4}’ log.txt $1 $4代表每一行的第一列和第四列
待完善。。。

6. split

split -l row_num raw_filename
row_num 每个文件要拆分的行数
raw_filename 要使用split进行拆分的大文件

$ split -6 README       #将README文件每六行分割成一个文件 

以上命令执行后,指令"split"会将原来的大文件"README"切割成多个以"x"开头的小文件。而在这些小文件中,每个文件都只有6行内容。

$ ls                                #执行ls指令  
#获得当前目录结构  
README xaa xad xag xab xae xah xac xaf xai    

https://www.runoob.com/linux/linux-comm-split.html

7. shell表达式 ${file##*/}"

file=/dir1/dir2/dir3/my.file.txt

#可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 .  及其左边的字符串:file.txt
${file##*.}:删掉最后一个 .  及其左边的字符串:txt
${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)
${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my
target=${source_dir%?}   # 去掉字符串最后一个字符
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
?表示零个或一个任意字符
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

原文:https://blog.csdn.net/yifansj/article/details/78354365
https://blog.csdn.net/yuchunhai321/article/details/82585847

8. while read line

while read line
do
...
done < var
# 从var变量中按行遍历读取, line是保存一行数据的变量

https://blog.csdn.net/qq_22083251/article/details/80484176

9. shell 字符串索引

#  获取变量source_str的最后一个字符
last_char=${source_str: -1}

https://www.jb51.net/article/121290.htm
https://baijiahao.baidu.com/s?id=1606425493933114713&wfr=spider&for=pc
https://blog.csdn.net/qq_36741436/article/details/78733348

10. echo -en

echo -n 不换行输出
echo -e 处理特殊字符
    若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
    \a 发出警告声;
    \b 删除前一个字符;
    \c 最后不加上换行符号;
    \f 换行但光标仍旧停留在原来的位置;
    \n 换行且光标移至行首;
    \r 光标移至行首,但不换行;
    \t 插入tab;
    \v 与\f相同;
    \\ 插入\字符;
    \nnn 插入nnn(八进制)所代表的ASCII字符;

原文:https://blog.51cto.com/13673885/2117635

11. echo 给显示文字添加颜色

SETCOLOR_SUCCESS="echo -en \\033[1;32m"   # 成功 绿色32
SETCOLOR_FAILURE="echo -en \\033[1;31m"   # 失败 红色31
SETCOLOR_NORMAL="echo -en \\033[0;39m"    # 正常 清除设置的颜色
SETCOLOR_WARNING="echo -en \\033[1;33m"   # 33-黄色
echo -n 不换行输出
echo -e 处理特殊字符
        \\ 插入\字符;
 echo -e "\033[颜色1;颜色2m 要展示的文字 \033[0m"  给要显示的内容添加颜色
 m:转义序列的终止标志。
 \033[0m:表示将颜色恢复回原来的配色

http://c.biancheng.net/linux/echo.html

12. vim编辑器多行注释多行取消注释

1. 插入注释
(1)首先按键盘上的ESC进入命令行模式
(2)再按Ctrl+V进入VISUAL BLOCK模式
(3)利用上下左右键调整需要注释多少行以及行的宽度
(4)再按Shift+i或s进入插入模式
(5)输入代表注释的符号,比如#
(6)再次按ESC键,这时就可完成多行注释(可能需要等上一会,不要着急)
2. 去注释
前三步与加注释相同。
(1)首先按键盘上的ESC进入命令行模式
(2)再按Ctrl+V进入VISUAL BLOCK模式
(3)利用上下左右键调整需要去注释多少行以及行的宽度
(4)再按d即可完成去注释

原文:https://blog.csdn.net/step_ma/article/details/76474864

13. shell变量使用双引号

  • 单引号
    使用单引号的情况下,不管里面的是否有变量或者其他的表达是都是原样子输出
  • 双引号
    如果其定义变量的时候使用双引号的话,则里面的变量或者函数会通过解析,解析完成后再输出内容,而不是把双引号中的变量名以及命令原样子输出。
    https://www.cnblogs.com/lonecloud/p/9066199.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值