小编Fru*_*uit的帖子

怎么可能分配了 8 个块但文件大小为 0?

在其他网站有人问我这个问题,即一个名为“abc.dat”的文件有0个文件大小但有8个块,这是我让他给我的输出(部分文本已从中文翻译成英文):

$ cp abc.dat abc2.dat; ls -ls abc2.dat #try to copy, it still 8 blocks but 0 byte
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:39 abc2.dat 
Run Code Online (Sandbox Code Playgroud)

8 -rw-rw-r-- 1 rokeabbey rokeabbey 0 Sep 18 19:11 abc.dat #sorry,这可能是他添加的额外错误输出

$ stat abc.dat
  File: 'abc.dat'
  Size: 0           Blocks: 16          IO Block: 4096   regular empty file
Device: 32h/50d      Inode: 3715853    Links: 1
Access: (0664/-rw-rw-r--)  Uid?( 1000/rokeabbey)   Gid?( 1000/rokeabbey)
Access: 2018-02-26 21:13:57.640639992 +0800
Modify: 2017-09-18 19:11:42.221533011 +0800
Change: 2017-09-18 19:11:42.221533011 +0800
 Birth: - …
Run Code Online (Sandbox Code Playgroud)

filesystems disk-usage files ecryptfs

9
推荐指数
2
解决办法
1382
查看次数

vim - 如何转义包含单引号和双引号混合的文件名?

假设我用这个创建了一个文件名:

xb@dnxb:/tmp/test$ touch '"i'"'"'m noob.mp4"'
xb@dnxb:/tmp/test$ ls -1
"i'm noob.mp4"
xb@dnxb:/tmp/test$ 
Run Code Online (Sandbox Code Playgroud)

然后vim .进入 Netrw 目录列表。

" ============================================================================
" Netrw Directory Listing                                        (netrw v156)
"   /tmp/test
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:special
" ==============================================================================
../
./
"i'm noob.mp4"
Run Code Online (Sandbox Code Playgroud)

然后按Enter查看文件。类型:

:!ls -l %
Run Code Online (Sandbox Code Playgroud)

它会显示错误:

xb@dnxb:/tmp/test$ vim .

ls: cannot access '/tmp/test/i'\''m noob.mp4': No such file or directory

shell returned 2

Press ENTER or type command …
Run Code Online (Sandbox Code Playgroud)

vim filenames quoting

8
推荐指数
2
解决办法
1578
查看次数

dnf - 如何显示已选择哪个镜像网址?

以下是bash日志的一部分,完整的日志可以在https://gist.github.com/limkokhole/f2a423112aa005f10862获取:

[xiaobai@xiaobai hello]$ dnf --verbose download --source readline
cachedir: /var/cache/dnf
Loaded plugins: noroot, needs-restarting, reposync, copr, playground, kickstart, Query, generate_completion_cache, builddep, download, config-manager, protected_packages, system-upgrade, debuginfo-install
DNF version: 0.6.4
repo: using cache for: spot-chromium
not found deltainfo for: Copr repo for chromium owned by spot
not found updateinfo for: Copr repo for chromium owned by spot
repo: using cache for: rpmfusion-nonfree-updates-testing
not found deltainfo for: RPM Fusion for Fedora 21 - Nonfree - Test Updates
not found updateinfo …
Run Code Online (Sandbox Code Playgroud)

fedora rpm rhel repository dnf

7
推荐指数
2
解决办法
1万
查看次数

notify-send - 当消息超过一行时如何显示完整消息?

假设我使用notify-send这些长消息:

notify-send 'd: title, up/down: zoom, w: win_to_img, </>: rotate, *: orig, Enter/0: blah blah blah'
Run Code Online (Sandbox Code Playgroud)

但它会截断消息,只显示其中的一部分,而没有查看完整消息的选项:

在此处输入图片说明

使用 Fedora 21,我能够查看完整消息(在底部弹出滚动条),但使用 Fedora 24 则无法查看。

版本notify-send是 libnotify-0.7.6-8.fc24.i686。

无论如何要在 Fedora 24 中显示完整消息吗?

notifications gnome-shell libnotify notify-send

7
推荐指数
1
解决办法
4650
查看次数

bash - 为什么 \x0d\x20 擦除该行

这是来自 gedit 编辑器的视图: 在此处输入图片说明

和 vim 编辑器的视图: 在此处输入图片说明

然后我尝试 grep 它,如果我把 Log 而不是 Tog,它确实 grep 成功,但输出已损坏:

[xiaobai@xiaobai grep]$ grep  Tog test
[xiaobai@xiaobai grep]$ grep  Log test
                               Dtring.valueOf
[xiaobai@xiaobai grep]$ 
Run Code Online (Sandbox Code Playgroud)

然后我找到文件,它也损坏了:

[xiaobai@xiaobai grep]$ cat test 
                               Dtring.valueOf
[xiaobai@xiaobai grep]$ 
Run Code Online (Sandbox Code Playgroud)

所以我使用十六进制转储:

[xiaobai@xiaobai grep]$ hexdump -C test 
00000000  4c 6f 67 2e 64 28 22 6d  75 73 69 63 22 2c 20 22  |Log.d("music", "|
00000010  4e 41 56 49 47 41 54 4f  52 3a 20 22 20 2b 20 53  |NAVIGATOR: " + …
Run Code Online (Sandbox Code Playgroud)

grep bash terminal cat

6
推荐指数
1
解决办法
1970
查看次数

ls 命令:如何在不通配符的情况下忽略大小写

我使用shopt -s nocaseglob命令忽略大小写,但如果我使用没有 glob 的字符串,它似乎不起作用。

在此处输入图片说明

只是出于好奇的一个问题,是否可以在不使用通配符的情况下忽略大小写?即ls a会输出aA

ls bash wildcards

5
推荐指数
1
解决办法
4062
查看次数

为什么没有这样的非交互式版本的 bashrc?

据我了解,守护进程是后台进程,但守护进程需要唯一的配置文件来设置环境变量。

例如,Hadoop守护进程需要hadoop-env.sh来设置环境变量JAVA_HOME,你不能简单地从中获取变量~/.bashrc

原因是因为守护进程作为后台进程意味着它是非交互式的,而 ~/.bashrc 意味着仅在交互式会话中使用,以防止出现alias cp='cp -i'case

最新的~/.bashrc文件顶部有安全防护不允许非交互式调用者,即没有-i选项将提前返回:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
Run Code Online (Sandbox Code Playgroud)

这让我想知道为什么 bashrc 不将配置文件分为 3 组,例如:

  • ~/.bashrc_interactive

  • ~/.bashrc_non_interactive

  • ~/.bashrc_global #(交互式和非交互式)

因此用户只需JAVA_HOME~/.bashrc_non_interactive或中设置即可~/.bashrc_global,无需在每个守护程序文件中一遍又一遍地添加此环境变量。

是否有任何原因或限制 bashrc 不支持这种方式或任何其他方式的非交互式?或者我误解了一些概念?

environment-variables history interactive daemon bashrc

5
推荐指数
1
解决办法
3638
查看次数

如何设置波形符+别名样式?

我注意到存在默认波浪号+别名:

[root@xiaobai ~]# cd ~[press Tab]
~abrt/                ~dbus/                ~lp/                  ~openvpn/             ~root/                ~systemd-network/
~adm/                 ~ftp/                 ~mail/                ~operator/            ~rpc/                 ~systemd-resolve/
~apache/              ~games/               ~mpd/                 ~pkg-build/           ~rpcuser/             ~systemd-timesync/
~avahi/               ~gdm/                 ~mysql/               ~polkitd/             ~rtkit/               ~tcpdump/
~avahi-autoipd        ~geoclue/             ~nfs4user/            ~postfix/             ~saslauth/            ~toranon/
~bin/                 ~gnome-initial-setup  ~nfsnobody/           ~postgres/            ~shutdown/            ~tss
~chrony/              ~halt/                ~nm-openconnect/      ~pulse                ~sshd/                ~unbound/
~colord/              ~iguanair/            ~nobody/              ~qemu/                ~sync/                ~usbmuxd/
~daemon/              ~ldap/                ~ntop/                ~radvd/               ~systemd-bus-proxy/   ~xiaobai/
[root@xiaobai ~]# cd ~halt
[root@xiaobai sbin]# pwd
/sbin
[root@xiaobai sbin]# l ~halt
14 lrwxrwxrwx. 1 root root 8 Nov 18 …
Run Code Online (Sandbox Code Playgroud)

bash directory tilde

3
推荐指数
1
解决办法
1370
查看次数

Bash - 如何在 PS1 中缩短用户名

目前我的提示是:

xiaobai@dnxb:/tmp$
root@dnxb:/tmp# 
Run Code Online (Sandbox Code Playgroud)

我想要的提示:

xb@dnxb:/tmp$
rt@dnxb:/tmp# 
Run Code Online (Sandbox Code Playgroud)

我的想法是用户名的别名,所以我尝试重用相同的 uid 来创建一个新用户:

xiaobai@dnxb:~$ sudo useradd -ou 1000 -g1000 -d /home/xiaobai -s /bin/bash xb
xiaobai@dnxb:~$ su
Password: 
root@dnxb:/home/xiaobai# passwd xb
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@dnxb:/home/xiaobai# exit
xiaobai@dnxb:~$ su xb
Password: 
xiaobai@dnxb:~$ pwd
/home/xiaobai
xiaobai@dnxb:~$ PS1='\u:\W\$ '
xiaobai:~$ exit
xiaobai@dnxb:~$ id
uid=1000(xiaobai) gid=1000(xiaobai) groups=1000(xiaobai),27(sudo)
xiaobai@dnxb:~$ 
Run Code Online (Sandbox Code Playgroud)

对于 PS1 '\u',它不会更改为 xb。如果是这样,如何?

bash users prompt useradd uid

1
推荐指数
2
解决办法
2374
查看次数