我知道当我运行命令时
chmod +x filename
bash 将使我的文件成为可执行文件。将文件的体系结构更改为可执行文件究竟会发生什么?即内核如何知道这个文件是可执行的?
只是想锻炼我的书呆子肌肉。
这是一个 Linux 发行版 (Solus),其中 bash 还不是很完整。似乎adduser缺少命令。命令adduser是不一样的命令useradd。
在 Ubuntu 中,这两个命令都内置在 bash 中。如何将命令安装adduser到 bash(Solus)中?
在 bash 中,我可以使用 && 和/或 || 制作测试条件 而不是 if/elif/else 块。
适用时,我倾向于使用 && 和/或 || 而不是构建一个 if 块。一种构造相对于另一种构造是否有任何现实世界的优势?
考虑以下示例:
1)
[[ -f /shared_disk/backups/daily.tar.bz2 ]] && echo "the coast is clear" || echo "run the dump"
Run Code Online (Sandbox Code Playgroud)
2)
if [[ -f /shared_disk/backups/daily.tar.bz2 ]]; then
echo "the coast is clear"
else
echo "run the dump"
fi
Run Code Online (Sandbox Code Playgroud) 在 MacOS 机器上的 bash shell 中,我可以通过键入来看到ls有一个 Director Application Support:
$ ls
Accounts FontCollections PreferencePanes
Application Scripts Fonts Preferences
Application Support GameKit Printers
Assistant Google PubSub
Assistants Group Containers Safari
Audio IdentityServices SafariSafeBrowsing
Caches Input Methods Saved Application State
Calendars Internet Plug-Ins Screen Savers
CallServices Keyboard Services
ColorPickers Keyboard Layouts Sharing
Colors KeyboardServices Sounds
Compositions Keychains Spelling
Containers LanguageModeling Suggestions
Cookies LaunchAgents SyncedPreferences
CoreFollowUp Library VirtualBox
Developer Logs Voices
Dictionaries Mail WebKit
F5Networks Messages com.apple.internal.ck
Family Metadata iMovie …Run Code Online (Sandbox Code Playgroud) 当我输入
cd Desktop/Code
Run Code Online (Sandbox Code Playgroud)
然后按Enter,它说
-bash: cd: DesktopCode: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我的桌面上确实有那个文件,但我不确定如何访问它,我不确定它为什么-bash事先说,以及是否与它有关。
怎么了?
编辑:我很困惑,打错了。错误是“-bash:cd:桌面/代码:没有这样的文件或目录”。我正在考虑删除 ubuntu 然后重新安装它,但我不确定这是否太麻烦,是否还有其他方法。另外,感谢所有帮助过我的人!我需要解决这个问题才能完成一项任务,但我无法弄清楚,我非常感谢。
我正在尝试为目录编写一个简单的测试,但一直遇到一个我无法解决的问题。
prompt> if [ -d "./mydir" ] then echo "yes"; fi
-bash: syntax error near unexpected token 'fi'
Run Code Online (Sandbox Code Playgroud)
我尝试了各种引号、分号、换行符等。
但总是遇到这种语法错误。
你能解释一下我在这里做错了什么吗?
我在 sudoers 文件中授予了以下权限。
Cmnd_Alias SUROOT=/bin/su "",\
/bin/su -,\
/bin/su - root,\
/bin/su root,\
/usr/bin/su "",\
/usr/bin/su -,\
/usr/bin/su - root,\
/usr/bin/su root
kj ALL = (ALL) ALL, !SUROOT
Run Code Online (Sandbox Code Playgroud)
当我尝试访问sudo su -其被阻止时
kj@u1804-1:~$ sudo su -
[sudo] password for kj:
Sorry, user kj is not allowed to execute '/bin/su -' as root on u1804-1.
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问sudo sudo su -它时允许。
kj@u1804-1:~$ sudo sudo su -
[sudo] password for kj:
root@u1804-1:~#
Run Code Online (Sandbox Code Playgroud)
我需要阻止对 root 用户的访问如何阻止sudo sudo命令
所以我有一堆编号为1, 2, 3, 4, 5... 150. 我想更改这些文件夹的名称以遵循 3 位数字模式,因此它们变为001, 002, 003, 004,.. 050, 051.. 150. 但是,我不是 Bash 或 Powershell 中的佼佼者,因此我自己在做这件事时遇到了一些困难。我可以使用任何一种,因为我可以使用 PS 或 WSL 来完成任务。有人能指出我正确的方向吗?